在Shader Model 3.0的,我敢肯定,这是一个没有但我无论如何要问这个,你可以在顶点着色器中看样本纹理吗?
在着色器模型5.0,您可以品尝到在顶点着色器的纹理?
如果我想为每个顶点提供大量的补充信息,我的选择是什么?
编辑: 显然,这是可以做一个顶点纹理拾取,为完成here,但是当我尝试在我的HLSL着色器模型5程序,我得到的错误
错误X4532:不能地图表达式vs_5_0指令集
在Shader Model 3.0的,我敢肯定,这是一个没有但我无论如何要问这个,你可以在顶点着色器中看样本纹理吗?
在着色器模型5.0,您可以品尝到在顶点着色器的纹理?
如果我想为每个顶点提供大量的补充信息,我的选择是什么?
编辑: 显然,这是可以做一个顶点纹理拾取,为完成here,但是当我尝试在我的HLSL着色器模型5程序,我得到的错误
错误X4532:不能地图表达式vs_5_0指令集
是的,从顶点着色器采样的纹理非常容易在着色器模型5.0完成,任何Texture2D
对象上使用operator[ unint2 ]。
因此,例如,tex0
是Texture2D
对象中的Shader Model 5 HLSL程序:
Texture2D tex0 : register(t0);
// in a vertex shader program
uint2 pos_xy = { 0, 1 } ;
texelColor = tex0[ pos_xy ] ;
是的,但你必须使用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