5

在着色器模型 3.0 中,我很确定这是否定的,但我还是想问这个,

在着色器模型 5.0 中,您可以在顶点着色器中对纹理进行采样吗?

如果我想为每个顶点提供大量补充信息,我有什么选择?

编辑:显然可以进行顶点纹理提取,如此,但是当我在我的 hlsl 着色器模型 5 程序中尝试它时,我得到了错误

错误 X4532:无法将表达式映射到 vs_5_0 指令集
4

2 回答 2

5

是的,在 Shader Model 5.0 中很容易从顶点着色器中采样纹理,在任何对象上使用operator[unint2] 。Texture2D

例如,tex0Texture2D着色器模型 5 hlsl 程序中的对象:

Texture2D tex0 : register( t0 );

// in a vertex shader program
uint2 pos_xy = { 0, 1 } ;
texelColor = tex0[ pos_xy ] ;
于 2011-12-15T04:56:35.210 回答
0

是的,但您必须使用SampleLevel采样。您也可以直接从纹理加载值,使用mytexture[xy_coord]texture.Load(...)提供没有“采样”的值(例如双线性插值)。

您可以使用该函数在顶点着色器中对纹理进行采样SampleLevel,您还必须在其中指定要采样的 mip 映射级别。您可以想象该Sample函数在内部使用该SampleLevel函数,另外还有一个好处是,通过在屏幕空间中获取纹理坐标查找的局部导数,自动为您选择 mip 映射级别(这允许 GPU 选择要使用的 mip 级别)。

https://msdn.microsoft.com/en-us/library/windows/desktop/bb509699(v=vs.85).aspx

于 2016-10-31T05:56:27.457 回答