2011-12-15 67 views
2

在Shader Model 3.0的,我敢肯定,这是一个没有但我无论如何要问这个,你可以在顶点着色器中看样本纹理吗?

在着色器模型5.0,您可以品尝到在顶点着色器的纹理?

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

编辑: 显然,这可以做一个顶点纹理拾取,为完成here,但是当我尝试在我的HLSL着色器模型5程序,我得到的错误

错误X4532:不能地图表达式vs_5_0指令集

回答

2

是的,从顶点着色器采样的纹理非常容易在着色器模型5.0完成,任何Texture2D对象上使用operator[ unint2 ]

因此,例如,tex0Texture2D对象中的Shader Model 5 HLSL程序:

Texture2D tex0 : register(t0); 

// in a vertex shader program 
uint2 pos_xy = { 0, 1 } ; 
texelColor = tex0[ pos_xy ] ; 
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

相关问题