在顶点着色器中指定3D rendertarget的目标图层?[HLSL]

詹姆士

在HLSL / Directx11中工作时,我看到有两种绑定3D渲染目标的方法:要么绑定整个目标,要么在指定图层时绑定它。

如果绑定整个目标,应如何在HLSL代码中指定要应用输出颜色的图层?

我怀疑这需要几何着色器...对吗?

是否有其他方法可以在顶点着色器或其他地方完成此操作?

卡特彼勒

如果绑定整个体积纹理(或TextureArray),则确实需要使用Geometry Shader写入特定的切片。

您的GS输出结构如下所示:

struct GSOutput
{
    float4 pos : SV_Position;
    uint slice : SV_RenderTargetArrayIndex;
    //Add anything else you need for your triangle
};

请不要对该片进行插值,因此,如果需要发射多个片,则需要为每个片推一个基元。

第二种情况是您不想使用Geometry Shader。

使用与上一个参数相同的参数创建一个rendertargetview描述,但是对于每个切片,更改这些参数(这是针对Texture2DArray的,但是如果使用Texture3D,则几乎是相同的):

D3D11_RENDER_TARGET_VIEW_DESC rtvd;

rtvd.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
rtvd.Texture2DArray.ArraySize = 1;
rtvd.Texture2DArray.FirstArraySlice = yourslice;

现在,您只有切片的渲染目标,因此可以直接在管道中绑定单个切片。

请注意,这仅在事先(在CPU中)知道绘图调用将呈现到哪个切片的情况下才有效。同样,您只能为此绘制调用渲染为单个切片。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OpenGL-GLSL绘制3D GL_LINES顶点着色器与顶点

来自分类Dev

DirectX HLSL-像素着色器中恒定缓冲区为空,但顶点着色器中为空

来自分类Dev

Specifying the target layer of a 3D rendertarget in vertex shader? [HLSL]

来自分类Dev

HLSL着色器的优化

来自分类Dev

OpenGL-从顶点着色器访问缓冲区中的下3个顶点

来自分类Dev

如何从顶点着色器中的vec3获取值?OpenGL 3.3

来自分类Dev

顶点着色器中的边界框

来自分类Dev

顶点着色器无法编译。找不到错误

来自分类Dev

OpenglES 2.0顶点着色器属性

来自分类Dev

没有属性的顶点着色器

来自分类Dev

无法在Maya插件中编译顶点着色器

来自分类Dev

glsl顶点着色器glGetUniformLocation失败

来自分类Dev

“构造函数”的参数过多[顶点着色器]

来自分类Dev

顶点着色器的OpenGL属性名称

来自分类Dev

在顶点着色器中移动/旋转形状

来自分类Dev

WebGL-丢弃顶点着色器标记的片段

来自分类Dev

GPU如何处理顶点着色器?

来自分类Dev

如何为GPGPU扩展顶点着色器功能

来自分类Dev

顶点着色器中对复数的运算

来自分类Dev

OpenGL奇怪的顶点着色器问题

来自分类Dev

无法读取传递给顶点着色器的值

来自分类Dev

GLSL顶点着色器gl_Position值

来自分类Dev

OpenGL调试,如何查看顶点着色器的结果

来自分类Dev

在Threejs中使用顶点着色器旋转几何

来自分类Dev

顶点着色器旋转ThreeJS对象

来自分类Dev

顶点着色器属性位置中的损坏数据

来自分类Dev

顶点着色器中的边界框

来自分类Dev

顶点着色器中的Phong照明

来自分类Dev

OpenGL顶点着色器变换,对象消失