显示被遮挡的人物或者物体
2016-02-20 14:52
399 查看
如图,要实现这个效果,再右侧物体上使用下面的shader
// Unlit alpha-cutout shader. // - no lighting // - no lightmap support // - no per-material color Shader "基础/Transparent Cutout ZTest" { Properties{ _MainTex("Base (RGB) Trans (A)", 2D) = "white" {} _Cutoff("Alpha cutoff 1", Range(0,1)) = 0.5 _Color("Text Color", Color) = (1,1,1,1) } SubShader { Tags{ "Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout" } LOD 100 Lighting Off Pass { // Tags { // "Queue"="Transparent" // "IgnoreProjector"="True" // "RenderType"="Transparent" // "PreviewType"="Plane" // } ZWrite off ZTest Greater // Cull Off Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; }; sampler2D _MainTex; uniform float4 _MainTex_ST; uniform fixed4 _Color; v2f vert(appdata_t v) { v2f o; o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); o.color = v.color * _Color; o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); return o; } fixed4 frag(v2f i) : SV_Target { fixed4 col = i.color; // col.a *= tex2D(_MainTex, i.texcoord).a; // col.a *= 0.5; // col = (0.1,0.3,0.4,0.5); col.r = 0.13; col.g = 0.36; col.b = 0.7; col.a = 0.6; return col; } ENDCG } Pass { // Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"} ZTest On ZTest LEqual CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; half2 texcoord : TEXCOORD0; }; sampler2D _MainTex; float4 _MainTex_ST; fixed _Cutoff; v2f vert(appdata_t v) { v2f o; o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag(v2f i) : SV_Target { fixed4 col = tex2D(_MainTex, i.texcoord); clip(col.a - _Cutoff); return col; } ENDCG } } }
整个shader很简单,第一次先绘制被遮住的部分,第二次绘制剩余部分。此shader 来自
陆泽西
相关文章推荐
- 22.2 波形音频 II
- 简单可定制业务的线程类
- Android:requestFeature() must be called before adding content
- hdu 1061 Rightmost Digit
- ActionScript 3.0 学习(十五) 基于as的聊天程序,服务器端和客户端
- iOS学习_Lesson02_分支结构
- hdu 1258和ZJU 1711 Sum It Up(dfs经典索搜)
- linux下VFS
- ReactiveCocoa简介6,添加附加操作(Adding side-effects)
- android Camera 中添加一种场景模式
- 用python写一个简单的爬虫功能
- HDU 2476 String painter(区间dp)
- 2.20存储过程学习笔记
- 异常2
- linux samba安装及配置
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?
- pcie干货系列之-TLP’s size/TLP fail/4K boundary/requs
- CodeForces-630C. Lucky Numbers
- POJ3273 二分
- 初学者github会遇到的错误