2D Splatter Effects in Unity Using the Stencil Buffer
来源:互联网 发布:淘宝代购only是正品吗 编辑:程序博客网 时间:2024/05/28 11:48
Shader "Splatter/Surface"{ Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0 _AlphaCutoff("Alpha Cutoff", Range(0.01, 1.0)) = 0.01 } SubShader { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" "CanUseSpriteAtlas"="True" } Cull Off Lighting Off ZWrite Off Blend One OneMinusSrcAlpha Pass { Stencil { Ref 5 Comp Always Pass Replace } CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile _ PIXELSNAP_ON #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; fixed4 color : COLOR; half2 texcoord : TEXCOORD0; }; fixed4 _Color; fixed _AlphaCutoff; v2f vert(appdata_t IN) { v2f OUT; OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex); OUT.texcoord = IN.texcoord; OUT.color = IN.color * _Color; #ifdef PIXELSNAP_ON OUT.vertex = UnityPixelSnap (OUT.vertex); #endif return OUT; } sampler2D _MainTex; sampler2D _AlphaTex; float _AlphaSplitEnabled; fixed4 SampleSpriteTexture (float2 uv) { fixed4 color = tex2D (_MainTex, uv); if (_AlphaSplitEnabled) color.a = tex2D (_AlphaTex, uv).r; return color; } fixed4 frag(v2f IN) : SV_Target { fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color; c.rgb *= c.a; // Discard pixels below cutoff so that stencil is only updated for visible pixels. clip(c.a - _AlphaCutoff); return c; } ENDCG } }
}
Shader "Splatter/Splatter"{ Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0 } SubShader { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" "CanUseSpriteAtlas"="True" } Cull Off Lighting Off ZWrite Off Blend One OneMinusSrcAlpha Pass { Stencil { Ref 5 Comp Equal } CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile _ PIXELSNAP_ON #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; fixed4 color : COLOR; half2 texcoord : TEXCOORD0; }; fixed4 _Color; v2f vert(appdata_t IN) { v2f OUT; OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex); OUT.texcoord = IN.texcoord; OUT.color = IN.color * _Color; #ifdef PIXELSNAP_ON OUT.vertex = UnityPixelSnap (OUT.vertex); #endif return OUT; } sampler2D _MainTex; sampler2D _AlphaTex; float _AlphaSplitEnabled; fixed4 SampleSpriteTexture (float2 uv) { fixed4 color = tex2D (_MainTex, uv); if (_AlphaSplitEnabled) color.a = tex2D (_AlphaTex, uv).r; return color; } fixed4 frag(v2f IN) : SV_Target { fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color; c.rgb *= c.a; return c; } ENDCG } }}
0 0
- 2D Splatter Effects in Unity Using the Stencil Buffer
- Unity Shader之Stencil Buffer
- Constructive Solid Geometry with the Stencil Buffer
- Stencil Buffer&Stencil Test
- Stencil Buffer&Stencil Test
- Stencil Buffer
- Stencil buffer
- 【Unity Shaders and Effects Cookbook】Using Textures for Effects
- 【Unity Shaders】Using Textures for Effects介绍
- 6 Introduce stencil buffer
- iOS stencil buffer
- Stencil Buffer是什么
- OpenGL.Stencil Buffer
- opengl stencil buffer
- example of stencil buffer
- OpenG:Reflection-Stencil Buffer
- OpenGL.Stencil Buffer
- opengl stencil buffer使用
- You Only Look Once-论文笔记
- 【信源编码作业】4. 基于 LZO 算法的编解码器
- js数组去重
- DAY4——腾讯训练营
- Android 开发之访问网络
- 2D Splatter Effects in Unity Using the Stencil Buffer
- eclipse4.6 svn 插件安装
- HDOJ 4135 Co-prime(容斥原理)
- Unity 录音
- 通用的分页思路
- 有关线程并发的学习(一)
- uva 208 -Firetruck(dfs)
- 【IMWeb训练营作业】用Vue做任务列表To do list
- java的标准输入/输出流