Shader "CLF/SetTransparent" { Properties { _Diffuse("Diffuse",Color) = (1,1,1,1) // 漫反射 _MainTex("MainTex",2D) = "white"{} // 2D纹理贴图 _AlphaScale("Alpha Scale",Range(0,1)) = 1 // 控制Alpha参数 } SubShader { Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } // 渲染顺序设置Transparent LOD 100 // 用两个pass通道来处理,防止出现渲染错误,第一个pass通道 每个pass通道都会渲染一次 Pass { ZWrite On // 写入深度 为了确认渲染顺序 ColorMask 0 // 掩码遮罩 代表这个pass通道不写入任何颜色值 } // 第二个pass通道 Pass { Tags{"LightMode" = "ForwardBase"} ZWrite Off // 关闭ZWrite(深度写入) Blend SrcAlpha OneMinusSrcAlpha // 源颜色因子 正常透明混合 CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "Lighting.cginc" struct v2f { float4 vertex :SV_POSITION; // 输出顶点信息 fixed3 worldNormal : TEXCOORD0; float3 worldPos:TEXCOORD1; float2 uv:TEXCOORD2; }; fixed4 _Diffuse; float _AlphaScale; sampler2D _MainTex; float4 _MainTex_ST; // 是MainTex的Tiling和Offset两个属性 不需要在外面定义 v2f vert(appdata_base v) // 顶点着色器 { v2f o; // 用这个结构体 o.vertex = UnityObjectToClipPos(v.vertex); // 顶点信息从模型转到裁剪空间再放到输出结构体 fixed3 worldNormal = UnityObjectToWorldNormal(v.normal); // 法线从模型变换到世界坐标 o.worldNormal = worldNormal; o.worldPos = mul(unity_ObjectToWorld, v.vertex); // 顶点信息从模型转到世界坐标系 //o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw; // 为了让MainTex的Tiling和Offset两个属性能影响到uv o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); // unity纹理函数,和上面效果一样 return o; } fixed4 frag(v2f i) : SV_Target // 片元着色器 片元高光反射 { fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz; // 环境光 fixed4 texColor = tex2D(_MainTex, i.uv); // 采样这个图 // 漫反射 //fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz); fixed3 worldLightDir = UnityWorldSpaceLightDir(i.worldPos); fixed3 diffuse = texColor.rgb * _LightColor0.rgb * _Diffuse.rgb * max(0, dot(worldLightDir,i.worldNormal) * 0.5 + 0.5); // 漫反射公式 图的纹理采样乘进来,纹理属于漫反射 fixed3 color = ambient + diffuse; return fixed4(color, texColor.a * _AlphaScale); // texColor的a值就是颜色通道的值 乘上_AlphaScale来控制 } ENDCG } } FallBack "Transparent/VertexLit" }
标签:MainTex,04,uv,vertex,Shader,fixed3,-------,worldNormal,pass From: https://www.cnblogs.com/clf125800/p/17266176.html