Unity中实现一个类似x光扫描效果

发表于2019-01-23
评论0 1.5k浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏程序行业精英群

711501594
要在unity开发过程中实现一个类似x光扫描效果很简单,首先获取顶点到摄像机的观察方向,然后与顶点的法线方向进行点积算出投影的长度最后再乘以我们设置的颜色值即为最终要输出的颜色。这里要注意观察方向与法线方向要进行归一化。

实现效果如下:

shader代码:
Shader "Custom/XLight" {
	Properties {
		_Color ("Color", Color) = (1,1,1,1)
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
	}
	SubShader {
		Tags{"IgnoreProjector"="True" "LightMode" = "ForwardBase" "Queue"="Transparent" "RenderType"="Transparent"}  
        Pass  
        {  
            Blend SrcAlpha OneMinusSrcAlpha  
            ZWrite Off  
            CGPROGRAM  
            #include "Lighting.cginc"  
            #pragma vertex vert  
            #pragma fragment frag 
            fixed4 _Color;  
            struct v2f  
            {  
                float4 pos : SV_POSITION;  
                float3 normal : normal;  
                float3 viewDir : TEXCOORD0;  
            };  
            v2f vert (appdata_base v)  
            {  
                v2f o;  
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);  
                o.viewDir = ObjSpaceViewDir(v.vertex);  
                o.normal = v.normal;  
                return o;  
            }  
            fixed4 frag(v2f i) : SV_Target  
            {  
                float3 normal = normalize(i.normal);  
                float3 viewDir = normalize(i.viewDir);  
                float rim = 1 - dot(normal, viewDir);  
                return _Color * rim;  
            }   
            ENDCG  
        }  
	}
	FallBack "Diffuse"
}

原文链接

著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

游戏学院公众号二维码
腾讯游戏学院
微信公众号

提供更专业的游戏知识学习平台