公式如下:
cdiffuse = clight * mdiffuse * max(0, dot(n,l));
其中,n為表面法線,l為指向光源的單位向量,mdiffuse為材質溫反射顏色,cdiffuse為光源顏色。
需要注意的是,需要防止法線與光源方向點積為負,因些使用max函式。
shader如下:
shader "view codecustom/diffuse vertex-level
" subshader
lod
100pass
//只有設定了正確的lightmode,才能訪問一些unity提供的內建變數,如:_lightcolor0
cgprogram
#pragma vertex vert
#pragma fragment frag#include
"unitycg.cginc
"#include
"lighting.cginc
"struct
;struct
v2f ;
float4 _diffuse;
fixed4 frag (v2f i) : sv_target
endcg}}
fallback
"diffuse
"}
效果如下:
Unity shader學習之逐畫素漫反射光照模型
shader如下 shader custom diffuse fragment level subshader lod 100pass 只有設定了正確的lightmode,才能訪問一些unity提供的內建變數,如 lightcolor0 cgprogram pragma vertex vert pr...
unity shader 學習筆記
upgrade note replaced world2object with unity worldtoobject upgrade note replaced mul unity matrix mvp,with unityobjecttoclippos shader unity shader b...
Unity Shader之再談雜訊
對於雜訊其實我還有很多不懂的地方,比如random函式,比如雜訊的實際應用場景等等。於是在搜尋資料的時候我發現了兩個超超超牛b的 可以說是我這種想要去學習相關知識的人的福利 在這裡給自己標記一下同時也分享給大家 1.shadertoy創始人之一的奇淫巧計大集合 之前看shadertoy的時候,在驚嘆...