2011-12-15 102 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

相關問題