shader遮挡显示
来源:互联网 发布:淘宝海外旗舰店真假 编辑:程序博客网 时间:2024/06/15 07:45
原理:根据深度建立两个pass,小于当前被挡物体的正常显示,大于被挡物体的返回一个纯色
Shader "Custom/XRay" {Properties { _MainTex("Albedo", 2D) = "white" {} _AfterColor ("After Color", Color) = (0.435, 0.851, 1, 0.419) }SubShader {Tags { "RenderType"="transparent" }LOD 200pass{Tags { "LightMode" = "Vertex" } Blend One OneMinusSrcColor Cull Off Lighting Off ZWrite Off Ztest Greater CGPROGRAM#pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 _AfterColor; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; v2f vert (appdata_full v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; return o; }; fixed4 frag(v2f i) : COLOR { return 2.0 * _AfterColor; }ENDCG}pass{ZTest LEqual CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4 _MainTex_ST; struct v2f { float4 pos : SV_POSITION; float4 uv : TEXCOORD0; }; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; return o; } fixed4 frag(v2f i) : COLOR { float4 texCol = tex2D(_MainTex, i.uv); return texCol; } ENDCG}} FallBack "Diffuse"}
当然被挡住的部也可以做得更好看,比如显示成另外的贴图
Shader "Custom/XRay2" {Properties {_Color("Color", Color) = (1,1,1,1) _MainTex("Albedo", 2D) = "white" {} _AfterTex("_AfterTex", 2D) = "white" {} _AfterColor ("After Color", Color) = (0.435, 0.851, 1, 0.419) }SubShader {Tags { "RenderType"="transparent" }LOD 300Blend SrcAlpha OneMinusSrcAlpha pass{Tags { "LightMode" = "Vertex" } Blend One OneMinusSrcColor Cull Off Lighting Off ZWrite Off Ztest Greater CGPROGRAM#pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _AfterTex; float4 _AfterColor; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; v2f vert (appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); half2 coord; float3 normal = mul(UNITY_MATRIX_IT_MV, v.normal); coord.x = normal.x; coord.y = normal.y; o.uv = coord * 0.5 + 0.5; return o; }; fixed4 frag(v2f i) : COLOR { float4 col = tex2D(_AfterTex, i.uv); return col * 2.0 * _AfterColor; }ENDCG}pass{ZTest LEqual CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4 _MainTex_ST; struct v2f { float4 pos : SV_POSITION; float4 uv : TEXCOORD0; }; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; return o; } fixed4 frag(v2f i) : COLOR { float4 texCol = tex2D(_MainTex, i.uv); return texCol; } ENDCG}} }
0 0
- shader遮挡显示
- shader编程学习(2)遮挡显示
- shader实例(四十二)遮挡显示
- Shader遮挡
- Shader之透明遮挡
- Unity Shader-遮挡处理
- Unity里用shader让物体的被遮挡部分显示出提示效果
- Unity Shader-遮挡处理(X-Ray,遮挡描边,遮挡半透,遮挡溶解)
- Unity Shader-遮挡处理(X-Ray,遮挡描边,遮挡半透,遮挡溶解)
- Unity Shader Example 24 (人物遮挡透明效果)
- 编辑器下,显示shader
- Unity3D Shader(14)——Fragment Shader(遮挡、透明效果)
- embed遮挡div层,无法显示
- unity 2d遮挡透明显示整理
- 显示被遮挡的人物或者物体
- 如何实现透明遮挡层显示图片
- 软键盘遮挡ListView后无法显示最后一条数据
- 界面特效中模型显示被遮挡问题
- C语言 关键字、标识符、注释
- [6]姥爷幽默谈Objective-C-文件操作类NSFileManager,NSFileHandle
- (一〇七)第八章复习题
- (一〇八)第八章编程练习
- Java NIO文件复制以及与传统IO效率对比
- shader遮挡显示
- MySQL学习笔记——Windows下的安装与配置
- HDOJ 1407 测试你是否和LTC水平一样高 就是三个数的平方是否等于一个数
- HDU:1879 继续畅通工程(kruskal)
- p243 第六题 (不完整)
- 简易在线投票系统(php)——发布投票页面
- WIFI 信道
- android中关于notification的最新用法
- 抽象工厂模式