主題

【Shader 學習筆記】了解Texcoord 和 MainTex_ST

趴趴鼠Loading | 2020-11-25 02:06:28

texcoord熟悉的樣子:

不同引擎原點座標位置不同。
像UE4座標是:

Unity是(0,0)在下


今天終於搞懂這些顏色是甚麼意思:
首先是黑底:
然後x座標代表紅色的值(0~1)
y座標代表綠色的值(0~1)
疊在一起就是:


參考影片:



若想要出現 tilling 和 offset的設定:
需多個 MainTex_ST變數。
例如:
主要是靠在變數後面加 _ST 來辨識,例如有第二個貼圖變數_BumpMap,則多個_BumpMap_ST 變數就會出現該貼圖的tilling和offset設定。

float4是因為 xy代表縮放,zw代表偏移。

ST分別意思是Scale和 Translation。




其他:
  • 分享個完整的Shader教學文:連結
  • 根據這個討論的說法COLORn和TEXCOORDn是一樣的功效,不同變數結構差異不大。
  • 根據這個討論的回答,繪圖卡都用float4存,所以即使宣告float2,也只是後面補兩個0的float4。
  • Saturate(x)和 max(0,x)比較的文章。


好久沒讀Shader,這東西擺在腦中折舊速度超快,感覺一天不讀知識量就打對折了。
98 巴幣: 10
派大星
除了SV_開頭的代表System value硬體會做其他事情要注意 像是SV_POSITION 會幫你做projection 的perspective divide 其他真的隨便青菜用基本沒差~
2020-11-26 17:41:59
派大星
在D3D中確實是需要用SEMANTIC去綁資源跟SHADER對上的,但是實際上更複雜,(除非你勵志當3A Graphics Programmer, 不然可以忽略這塊)Semanticw主要的最大共用還是Decouple 不同Stage的Shader, 我可以用固定VS, PS換來換去,只要Semantic多上,變數名稱不用對上也沒關係
2020-11-28 22:43:09
派大星
https://docs.microsoft.com/en-us/windows/win32/direct3d11/d3d10-graphics-programming-guide-input-assembler-stage-getting-started
2020-11-28 22:43:20
派大星
那個一般叫做IA (INPUT ASSBLER) 階段,不過一般引擎都幫你做掉了,Unity只要乖乖按照ShaderLab規範寫,就會自動產生相關底下的Code
2020-11-28 22:44:44
派大星
(Unity不開源,基本上這邊在Unity是碰不到
2020-11-28 22:45:14

更多創作