Character2

上次說到很簡(jiǎn)單的shader焰枢,這次來用顏色可視化模擬和頂點(diǎn)相關(guān)的數(shù)據(jù),代碼如下:

Shader "Unity Shaders Book/Chapter 5/False Color" {
    SubShader {
        Pass {
            CGPROGRAM
            
            #pragma vertex vert
            #pragma fragment frag
            
            #include "UnityCG.cginc"
            
            struct v2f {
                float4 pos : SV_POSITION;
                fixed4 color : COLOR0;
            };
            
            v2f vert(appdata_full v) {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                
                // Visualize normal
                o.color = fixed4(v.normal * 0.5 + fixed3(0.5, 0.5, 0.5), 1.0);
                
                // Visualize tangent
                o.color = fixed4(v.tangent.xyz * 0.5 + fixed3(0.5, 0.5, 0.5), 1.0);
                
                // Visualize binormal
                fixed3 binormal = cross(v.normal, v.tangent.xyz) * v.tangent.w;
                o.color = fixed4(binormal * 0.5 + fixed3(0.5, 0.5, 0.5), 1.0);
                
                // Visualize the first set texcoord
                o.color = fixed4(v.texcoord.xy, 0.0, 1.0);
                
                // Visualize the second set texcoord
                o.color = fixed4(v.texcoord1.xy, 0.0, 1.0);
                
                // Visualize fractional part of the first set texcoord
                o.color = frac(v.texcoord);
                if (any(saturate(v.texcoord) - v.texcoord)) {
                    o.color.b = 0.5;
                }
                o.color.a = 1.0;
                
                // Visualize fractional part of the second set texcoord
                o.color = frac(v.texcoord1);
                if (any(saturate(v.texcoord1) - v.texcoord1)) {
                    o.color.b = 0.5;
                }
                o.color.a = 1.0;
                
                // Visualize vertex color
//              o.color = v.color;
                
                return o;
            }
            
            fixed4 frag(v2f i) : SV_Target {
                return i.color;
            }
            
            ENDCG
        }
    }
}

從#include "UnityCG.cginc"說起围来,它是包含了unity的一個(gè)內(nèi)置文件UnityCG.cginc痛垛,在unity的安裝目錄 /Data/CGIncludes/UnityCG.cginc下面能夠找到。而appdata_full 結(jié)構(gòu)體就在其中定義了
v2f和fixed4決定了vert和fragment函數(shù)的輸出類型
vert函數(shù)具體代碼中步清,v.normal 可以通過加權(quán)平均共享該頂點(diǎn)的所有三角形面法線得到要门,因?yàn)関.normal 的各個(gè)分量范圍是[-1,1],而顏色RGB的分量范圍是[01,],于是就要解決這個(gè)范圍映射問題,所以就有了o.color = fixed4(v.normal * 0.5 + fixed3(0.5, 0.5, 0.5), 1.0);這樣的代碼廓啊,切線可視化類似欢搜,但需要主要的是切線是四維向量,具體可在Sahder筆記中查看谴轮,切線和副切線如何計(jì)算的可參照這個(gè)炒瘟。
o.color = fixed4(v.texcoord.xy, 0.0, 1.0);是把頂點(diǎn)的第一組紋理坐標(biāo)存到color中
o.color = frac(v.texcoord1);則是計(jì)算頂點(diǎn)第二組紋理各分量的小數(shù)部分,saturate意為返回一個(gè)[0, 1]范圍內(nèi)的數(shù)第步,如果x<0則返回0疮装,如果x>1則返回1缘琅,否則返回x。
  相信通過添加注釋不同位置的代碼廓推,就能更直觀的看到結(jié)果了刷袍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市樊展,隨后出現(xiàn)的幾起案子呻纹,更是在濱河造成了極大的恐慌,老刑警劉巖专缠,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雷酪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涝婉,警方通過查閱死者的電腦和手機(jī)哥力,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墩弯,“玉大人吩跋,你說我怎么就攤上這事∽钭。” “怎么了钞澳?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)涨缚。 經(jīng)常有香客問我轧粟,道長(zhǎng),這世上最難降的妖魔是什么脓魏? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任兰吟,我火速辦了婚禮,結(jié)果婚禮上茂翔,老公的妹妹穿的比我還像新娘混蔼。我一直安慰自己,他們只是感情好珊燎,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布售滤。 她就那樣靜靜地躺著敛摘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叔扼,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天灸撰,我揣著相機(jī)與錄音哨啃,去河邊找鬼号阿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捌蚊。 我是一名探鬼主播集畅,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼缅糟!你這毒婦竟也來了挺智?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤溺拱,失蹤者是張志新(化名)和其女友劉穎逃贝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迫摔,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年泥从,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了句占。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躯嫉,死狀恐怖纱烘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祈餐,我是刑警寧澤擂啥,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站帆阳,受9級(jí)特大地震影響哺壶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜒谤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一山宾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳍徽,春花似錦资锰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至濒募,卻和暖如春鞭盟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萨咳。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國打工懊缺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓鹃两,卻偏偏與公主長(zhǎng)得像遗座,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俊扳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容