Unity shader学习之Alpha Test的阴影
2017-07-18 09:55
465 查看
Alpha Test的阴影,
shader如下:
效果如下:
shader如下:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Custom/Alpha Test Shadow" { Properties { _Color ("Main Color", Color) = (1,1,1,1) // 必需 _MainTex("Main Texture", 2D) = "white" {} _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 // 必需 } SubShader { Tags { "Queue" = "AlphaTest" "RenderType" = "TransparentCutout" } Pass { Tags { "LightMode" = "ForwardBase" } Cull Off // 背面 CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase #include "UnityCG.cginc" #include "Lighting.cginc" #include "AutoLight.cginc" float4 _Color; sampler2D _MainTex; float _Cutoff; struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; float3 normal : NORMAL; }; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float3 worldNormal : TEXCOORD1; float3 worldPos : TEXCOORD2; SHADOW_COORDS(3) }; v2f vert(appdata v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = v.uv; o.worldNormal = UnityObjectToWorldNormal(v.normal); o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; TRANSFER_SHADOW(o); return o; } fixed4 frag(v2f i) : SV_TARGET { fixed4 albedo = tex2D(_MainTex, i.uv) * _Color; clip(albedo.a - _Cutoff); fixed3 ambient = albedo.rgb * UNITY_LIGHTMODEL_AMBIENT.rgb; float3 worldLight = UnityWorldSpaceLightDir(i.worldPos); fixed3 diff = albedo.rgb * _LightColor0.rgb * max(0, dot(i.worldNormal, worldLight)); UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos); fixed3 col = ambient + diff * atten; return fixed4(col, 1); } ENDCG } } Fallback "Transparent/Cutout/VertexLit" // 必需,阴影投射pass }
效果如下:
![](https://images2015.cnblogs.com/blog/509915/201707/509915-20170718095455005-1777140238.png)
相关文章推荐
- Unity shader学习之Alpha Test
- [置顶] 神临的 unity shader 学习之alphatest(六)
- Unity Shader 学习笔记(14) 阴影
- UnityShader入门精要学习笔记(十三):光照衰减与Unity阴影
- Unity shader学习之阴影,衰减统一处理
- Unity shader学习之阴影
- UnityShader入门精要学习笔记(十七):顶点动画
- Unity优化大全(六)之 GPU-动态阴影和Shader
- Unity Shader 学习笔记(十二)漫反射卷积光照模型
- 基础差不得不学啊(unity shader中的矩阵学习一)
- Unity怎样获得 shader 为 Self-Illumin/Diffuse 的alpha值
- unity之shader学习笔记(五)--纹理
- UnityShader入门精要学习笔记(九):基础纹理之渐变纹理与遮罩纹理
- unity shader 学习 (1)渲染管线
- unity shader 学习一
- 【猫猫的Unity Shader之旅】之Unity Shader概述及学习环境搭建
- 【UnityShader】学习笔记 纹理寻址
- Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)
- Unity Shader学习笔记:变换
- Unity Shader学习2——第一个Shader程序解析