我似乎無法自己破解這個螺母,並且在我找到空白處的一些Google搜索之後,我認爲該是轉向社區尋找答案的時候了。hlsl中的一半下標
我在一個我正在使用的項目中有一些代碼,我會提供一個相當簡化的版本,但它應該幫助我展示這個概念。這裏
//hlsl code
...
ps_main(...) {
half mask = function_calculating_mask_and_returning_half();
half3 color = condition ? a_previously_defined_half3 : mask.rrr;
}
的最後一行是什麼困惑我,尤其是mask.rrr
它到底做什麼?據我所知,它會返回half3 (mask, mask, mask)
,但我似乎得到了一個非常高的價值,如果我改變它說mask.r
或簡單地mask
它給了我一個結果值低得多,(據我所知) 。
難道它會做一些像half3(mask^3, mask^3, mask^3)
?因爲這就是看結果時的樣子。
無論如何,我很感激關於代碼如何工作的建議或解釋,以及如何使用.rrr
下標half
以及任何可能的下標可能是聖誕禮物。 :P
你的目標DX和着色器模型版本是什麼?這個着色器的工作原理應該如何? – Netherwire
我實際上對'hlsl'特別有點新,而渲染器一般都在使用它。但它的目標是DX9以上。它確實起作用,並且它似乎完成了預期的任務,唯一的一點是,這個'color'在延遲階段用於着色鏡面反射,當我使用'mask.rrr'時,我得到了超高鏡面度,這就是爲什麼我我懷疑'mask.rrr'做了一些值的乘法。所以主要的失敗部分是我對'mask.rrr'下標的理解。 – qrikko