在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