赞
踩
如果代码中有什么不清楚请查看以下基础知识
Shader "Custom/testS" { Properties { _Color ("Color", Color) = (1,1,1,1) } SubShader { Tags { "RenderType"="Opaque"} LOD 200 Pass{ Cull Back CGPROGRAM #pragma vertex vert #pragma fragment frag #include "Lighting.cginc" #include "UnityCG.cginc" #include "AutoLight.cginc" #pragma target 3.0 fixed4 _Color; struct a2v { //顶点位置,法线与贴图 float4 vertex:POSITION; float3 normal:NORMAL; float2 texcoord:TEXCOORD0; }; struct v2f { //传给片元数据 float4 pos:SV_POSITION; float2 uv:TEXCOORD0; float3 worldNormal:TEXCOORD1; float3 worldPos:TEXCOORD2; fixed4 color:COLOR; }; v2f vert(a2v v){ //创建v2f数据 o v2f o; //获取顶点的裁剪坐标 o.pos = UnityObjectToClipPos(v.vertex);//将模型顶点坐标转换为裁剪坐标 //顶点法线 * 世界转模型法线 获取世界法线? o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject); //获取世界顶点 o.worldPos = mul(unity_ObjectToWorld,v.vertex).xyz; //TRANSFER_SHADOW(o) o.color = _Color; return o; } fixed4 frag(v2f i) : COLOR{ //float3 normalDir = normalize(mul(i.worldNormal, (float3x3)unity_ObjectToWorld)); float3 normalDir = normalize(i.worldNormal); float3 lightDir = normalize(_WorldSpaceLightPos0.xyz); //计算法线 float3 diffuse = _LightColor0.rgb * max(dot(normalDir,lightDir),0) * _Color; //获取环境光 float3 ambient = UNITY_LIGHTMODEL_AMBIENT.rgb; //最终颜色 float4 g = float4(diffuse + ambient , 1); return g; } ENDCG } } FallBack "Diffuse" }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。