当前位置:丝路教程网 > Unity3D >

【U3D教程】Shader实现物体淡入淡出

游戏场景中淡入淡出的效果经常会用在往前走的场景中,越往前场景越模糊,事实上这种效果就是物体从实变透明的渐变过程。针对这样的游戏场景效果,丝路小编也为你找到了如何实
学设计来丝路教程网

黑发不知勤学早,白发方悔读书迟! —— 颜真卿 开始学习

  游戏场景中淡入淡出的效果经常会用在往前走的场景中,越往前场景越模糊,事实上这种效果就是物体从实变透明的渐变过程。针对这样的游戏场景效果,丝路小编也为你找到了如何实现的教程,用Shader来做这样的效果是非常简单的。

  Unity 3D教程

  1 设置淡入的起始距离和结束距离

  2 在vertex阶段计算物体顶点与相机的距离

  3 根据距离计算alpha

  具体代码如下:

  Shader "Custom/Fade" {

  Properties {

  _MainTex ("Texture", 2D) = "white" { }

  _FadeDistanceNear ("Near fadeout dist (View Space)", float) = 35

  _FadeDistanceFar ("Far fadeout dist (View Space)", float) = 40

  }

  SubShader

  {

  Tags { "Queue"="Transparent" "RenderType"="Transparent"}

  ZWrite On

  Blend SrcAlpha OneMinusSrcAlpha

  pass

  {

  CGPROGRAM

  #pragma vertex vert

  #pragma fragment frag

  #include "UnityCG.cginc"

  sampler2D _MainTex;

  float4 _MainTex_ST;

  struct v2f {

  float4 pos : SV_POSITION;

  float2 uv : TEXCOORD0;

  float fade:TEXCOORD1;

  } ;

  float _FadeDistanceNear;

  float _FadeDistanceFar;

  v2f vert (appdata_base v)

  {

  v2f o;

  o.pos = mul(UNITY_MATRIX_MVP,v.vertex);

  o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);

  //相机坐标系的物体坐标

  float3 posView = mul(UNITY_MATRIX_MV,v.vertex).xyz;

  //计算与相机距离

  float dis = length(posView);

  //计算fade

  o.fade = 1 - saturate((dis - _FadeDistanceNear)/(_FadeDistanceFar - _FadeDistanceNear));

  return o;

  }

  float4 frag (v2f i) : COLOR

  {

  float4 texCol = tex2D(_MainTex,i.uv);

  float4 outp = texCol;

  //fade作为alpha

  return float4(outp.rgb,i.fade);

  }

  ENDCG

  }

  }

  }

  教程是非常简单的,只要大家能深入学习,就能达到举一反三的效果。初学Unity 3D是有一定难度,但是经过丝路教育专业老师的教学,是可以完美的做出优秀的作品并成功就业的。

还有什么问题没解决的?点击【咨询专业老师想要咨询相关课程点击【课程咨询

首发地址: 【U3D教程】Shader实现物体淡入淡出_室内设计教程|Ui设计教程|Cad、3Dmax软件教程-丝路教程网

资源地址: http://blog.silucg.com/unity/7688.html(分享请保留)


丝路教程网先学习后付款

相关热词: Unity Unity 3D教程 3d教程

免费获取最新教程

姓名
手机号
QQ
需求资料
 
Copyright © 2008-2017 blog.silucg.com 丝路教程网 版权所有 网站地图 PS软件 | 3DMAX软件 | Revit软件 | Maya软件 | CAD软件 | AI软件 | BIM软件 | VRay渲染器 |
点击这里给我发消息
0元免费学设计
姓名:
电话:
微信:
QQ:
课程: