您的位置:首页 > 移动开发 > Unity3D

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

2018-02-26 14:47 676 查看
先来看下效果:



原理很简单,首先获取顶点到摄像机的观察方向,然后与顶点的法线方向进行点积算出投影的长度最后再乘以我们设置的颜色值即为最终要输出的颜色。这里要注意观察方向与法线方向要进行归一化。
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"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity shader