本文主要是介绍Unity Shader 漫反射光照模型-逐像素-半兰伯特模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
半兰伯特模型
Shader "MyShader/HalfLambertLevel"
{Properties{_Diffuse("Diffuse",Color) = (1,1,1,1)}SubShader{Pass{Tags{"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "Lighting.cginc"fixed4 _Diffuse;struct a2v{float4 vertex : POSITION;float3 normal : NORMAL;};struct v2f{float4 pos : SV_POSITION;fixed3 worldNormal : TEXCOORD0;};v2f vert(a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);return o;}fixed4 frag(v2f i) :SV_Target{fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;fixed3 worldNormal = normalize(i.worldNormal);fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz);fixed halfLambert = dot(worldNormal, worldLight)*0.5 + 0.5;fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb *halfLambert;fixed3 color = ambient + diffuse;return fixed4(color,1.0);}ENDCG}}Fallback "Diffuse"
}
效果,最右边那个
参考 我买的 unity shader 入门精要
这篇关于Unity Shader 漫反射光照模型-逐像素-半兰伯特模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!