shader學習筆記(二)

2021-10-05 05:04:53 字數 1061 閱讀 5717

//shader名字=材質shader下選擇的目錄

//shader "unlit/newunlitshader"

//// }

// subshader

// // lod 100

//// pass

// ;

//// struct v2f

// ;

//// sampler2d _maintex;

// float4 _maintex_st;

//

//

//

// fixed4 frag (v2f i) : sv_target

//

// //渲染結束

// endcg

// }

// }

//}

既然是頂點片斷著色器,那麼就要先定義好頂點著色器與片斷著色器(也可以叫做畫素著色器),告訴unity分別在**去執行它們。

#pragma是unity內建的編繹指令用的命令,在pass中我們就利用此命令來宣告所需要的頂點著色器與片斷著色器。

#pragma vertex name

定義頂點著色器為name,通常情況下會起名為vert。

#pragma fragment name

定義片斷著色器為name,通常情況下會起名為frag。

簡單地說position語義是用於頂點著色器,用來指定模型的頂點位置,是在變換前的頂點的本地空間座標。sv_position語義則用於畫素著色器,用來標識經過頂點著色器變換之後的頂點座標。

在頂點著色器中處理頂點時,我們首先需要獲取到模型的頂點資料(比如頂點位置、法線資訊、頂點顏色等等),那麼這些資料都是直接儲存在模型中的,我們在shader中只需要通過標識語義就可以自動獲得。

頂點著色器與片斷著色器的執行並不是1:1的,舉個例子,乙個三角麵片,只有三個頂點,頂點著色器只需執行3次,而片斷著色器由最終的畫素數來決定,執行幾百上千都是很正常的。所以從效能的角度來考慮,我們要盡量把計算放在頂點著色器中去執行。其次在片斷著色器中也要盡量的簡化演算法,節省開支。

Shader學習筆記

direct和opengl兩種程式設計標準,前者是微軟提供的,一般用於windows平台,而後者是linux android ios等都共同支援的標準。由這兩種標準就衍生出來了集中gpu程式語言,諸如hlsl cg glsl等,在unity裡面,並不直接使用者三種語言去編寫,而是用自己自定義的sha...

Shader 學習筆記 20151031

閱讀了unity shaders and effects cookboot的 custom light model一節。page 17 閱讀了unity online manual關於 custom light model兩段文章 閱讀了博文 unity shaders 初探su ce shader...

Shader 學習筆記 20151102

計算光源法線點乘,也就是它們之間的夾角余弦 float diflight dot s.normal,lightdir 計算視點法線點乘,也就是它們之間的夾角余弦 float rimlight dot s.normal,viewdir 給光源法線點乘搞了乙個hlambert效果 就是讓非光照面也有明暗...