首页 > 编程 > C# > 正文

Unity3D Shader实现扫描显示效果(2)

2020-01-24 00:08:12
字体:
来源:转载
供稿:网友

上一篇使用的方式是对UV进行剪裁,如果用于模型的话,会出现一些问题。本篇使用的方式是对模型进行模型空间的剪裁,可设置剪裁方向。效果如下:

设置界面如下:

mode用于设置剪裁方向。
clip用于设置剪裁值。

shader实现如下:

Shader "XM/ScanEffect2" { Properties {  _Color ("Color", Color) = (1,1,1,1)  _MainTex ("Albedo (RGB)", 2D) = "white" {}  _Glossiness ("Smoothness", Range(0,1)) = 0.5  _Metallic ("Metallic", Range(0,1)) = 0.0  _Clip("Clip", float) = 0  [KeywordEnum(None, Left, Up, Forward)]_Mode("Mode", Float) = 0 } SubShader {  Tags { "RenderType"="Opaque" }  LOD 200  CGPROGRAM  // Physically based Standard lighting model, and enable shadows on all light types  #pragma surface surf Standard fullforwardshadows vertex:vert  // Use shader model 3.0 target, to get nicer looking lighting  #pragma target 3.0  sampler2D _MainTex;  struct Input {   float2 uv_MainTex;   float4 localPos;  };  half _Glossiness;  half _Metallic;  fixed4 _Color;  float _Clip;  float _Mode;  void vert(inout appdata_full i, out Input o)  {   UNITY_INITIALIZE_OUTPUT(Input, o);   o.localPos = i.vertex;  }  void surf (Input i, inout SurfaceOutputStandard o) {   if(i.localPos.x >= _Clip && _Mode == 1 || i.localPos.y >= _Clip && _Mode == 2|| i.localPos.z >= _Clip && _Mode == 3)   {    clip(-1);   }   // Albedo comes from a texture tinted by color   fixed4 c = tex2D (_MainTex, i.uv_MainTex) * _Color;   o.Albedo = c.rgb;   // Metallic and smoothness come from slider variables   o.Metallic = _Metallic;   o.Smoothness = _Glossiness;   o.Alpha = c.a;  }  ENDCG } FallBack "Diffuse"}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表