Unity shader學習之逐頂點漫反射光照模型

2022-03-04 08:22:02 字數 858 閱讀 8793

公式如下:

cdiffuse = clight * mdiffuse * max(0, dot(n,l));

其中,n為表面法線,l為指向光源的單位向量,mdiffuse為材質溫反射顏色,cdiffuse為光源顏色。

需要注意的是,需要防止法線與光源方向點積為負,因些使用max函式。

shader如下:

shader "

custom/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

"}

view code

效果如下:

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的時候,在驚嘆...