另外,unity3d還內置有一些簡化的用作移動平臺的shader/著色器。
推薦文章 內置shader詳解(帶圖)
著色器性能影響因素較多,最主要有二:
僅做繪制一次,性能只取決于紋理數。
性能僅取決于shader本身和場景中光源。
1.Vertex-Lit:
基于: 基于頂點計算的光照模型
正方體: 【直接照射到的地方不會非常亮】【光照照射不到的平面無效果】
圓形: 【直接照射到的地方非常亮】【光照照射不到的地方有高光效果】
支持: 設備自動選擇【可編程管線】和【固定管線】
參數: 【主色color】【SpecColor光照顏色】【EmissiveColor自發光顏色】【Shininess光照強度】
渲染代價: 比較小
2.Diffuse:
基于: 基于簡單的光照模型 lambertian
正方體: 【直接照射到的地方會非常亮】【光照照攝不到的平面無效果】
圓形: 【直接照射到的地方非常亮】【光照照射不到的地方無效果】
支持: 設備需要支持【可編程管線】如果不支持將自動使用【Vertex-Lit】
參數: 【主色color】
渲染代價: 比較小
3.Specular
基于: 和Diffuse相同的光照模型,多了一個觀察角度相關的反射高光(#PRagmasurface surf BlinnPhong)
正方形: 【直接照射到的地方會非常亮】【光照照攝不到的平面無效果】【觀察角度和光入射角度會產生反射光】
圓形: 【直接照射到的地方非常亮】【光照照射不到的地方無效果】【觀察角度和光入射角度會產生反射光】
支持: 設備需要支持【可編程管線】如果不支持將自動使用【Vertex-Lit】
參數: 【主色color】【SpecularColor反射光照顏色】【Shininess反射光照強度】
渲染代價: 比較大
4.Bumped Diffuse
基于: 和Diffuse相同的光照模型,同時使用了法線貼圖normalmapping技術(UnpackNormal)【灰度圖,白色表示凹起,黑色表示凹進】
正方形: 和【Diffuse】一樣,【多了凹凸感】
圓形: 和【Diffuse】一樣,【多了凹凸感】
支持: 如果設備不支持,將自動使用【Diffuse】
參數: 【主色color】【多了法線貼圖】
渲染代價: 比較大
5.Bumped Specular 凹凸反射
【Bumped Diffuse】與【Specular】的合并
支持: 如果設備不支持,將使用【Specular】
6.Parallax Diffuse
基于: 和BumpedDiffuse一樣的光照模型lambertian,也使用normalmapping技術(UnpackNormal),同時使用HeightMap(ParallaxOffset)實
現更加逼真的凹凸感【高度圖在法線貼圖的alpha通道保存,全黑表示么有高度,白色表示高低】
支持: 設備無法使用,會自動使用【BumpedDiffuse】
參數: 【主色color】【多了法線貼圖】【多了高度貼圖】【height設置高度參數】
渲染代價: 比【Bumped Diffuse】更大
7.Parallax Specular
基于: 使用【BumpedSpecular】+【高度圖】
支持: 設備無法使用,會自動使用【BumpedSpecular】
8.Decal 【貼花】
基于: 與Diffuse一樣基于Lambert,增加第二張貼圖,然后融合色彩(lerp)覆蓋在主紋理之上【注:DiffusDetail的融合是rgb*rgb】
支持: 設備需要支持【可編程管線】如果不支持將自動使用【Vertex-Lit】
參數: 【主色color】【兩張貼圖】
9.Diffuse Detail 【細節貼圖】
基于: 與Diffuse一樣基于Lambert,多了一張貼圖與之融合(rgb*rgb),一般用于地形,攝像機拉近時額外的細節會出現。
說明: Detail 紋理是覆蓋在主紋理上面的。Detail紋理中深色的部分將會使得主紋理變深,而淡色的部分將會使主紋理變亮, Detail 紋
理通常是淺灰色。(與Decal 里面 Decal 紋理不同的是,Decal 紋理是RGBA,通過 alpha 控制 DecalTexture 與 Main Texture 的融合,而Detail
的紋理是 RGB,直接是兩張紋理的rgb 通道分別相乘再*2,就是說,Detail紋理中顏色數值 = 0.5 不會改變主紋理顏色,>0.5 會變亮,<0.5 加深)
參考文章 shader實例(五)如何在unity中更好的運用shader
參考文檔 Usage and Performance of Built-in Shaders
新聞熱點
疑難解答