Unity shader造冰女
来源:互联网 发布:软件开发收费标准 编辑:程序博客网 时间:2024/05/16 09:33
情景
在游戏中有的时候需要角色走到雪地场景,这个时候如果雪飘雪的,角色走角色的就会觉得不是很真实(当然估计没几个玩家会在意),如果角色走到不同的位置(不同的角度,不同的风向),随着时间的加长,角色身上的雪会堆积得越来越多,或者一个刚被杀死的怪物,随着时间越来越长,雪掩盖了他的身体,会不会很真实的感觉呢~这里就要实现这个功能。
效果图
原理
为了实现这个功能,其实主要是利用了法线 和 雪方向来做文章,我们在角色凹凸不平的地方进行对模型向外拉伸,然后着色使用雪的颜色即可。
shader代码
Shader "Custom/SnowShader" { Properties { _MainColor("Main Color", Color) = (1.0,1.0,1.0,1.0) //颜色值(改变亮度和色调用的,这里可以无视) _MainTex("Base (RGB)", 2D) = "white" {} //主纹理 _Bump("Bump", 2D) = "bump" {} //法线图 _Snow("Level of snow", Range(1, -1)) = 1 //雪的凹凸参数 _SnowColor("Color of snow", Color) = (1.0,1.0,1.0,1.0) //雪的颜色 _SnowDirection("Direction of snow", Vector) = (0,1,0) //雪的方向 _SnowDepth("Depth of snow", Range(0,1)) = 0 //雪的厚度 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Standard vertex:vert #pragma target 3.0 struct Input { float2 uv_MainTex; float2 uv_Bump; float3 worldNormal; INTERNAL_DATA }; sampler2D _MainTex; sampler2D _Bump; float _Snow; float4 _SnowColor; float4 _MainColor; float4 _SnowDirection; float _SnowDepth; //这里是处理法线的角度和雪的朝向,如果这里需要显示雪的时候,就把模型向外拉 //拉的规则是: 雪的方向 和 法线的方向和向量 * 雪的厚度 * 凹凸不平的层度 void vert(inout appdata_full v) { float4 sn = mul(UNITY_MATRIX_IT_MV, _SnowDirection); if (dot(v.normal, sn.xyz) >= _Snow) v.vertex.xyz += (sn.xyz + v.normal) * _SnowDepth * _Snow; } void surf(Input IN, inout SurfaceOutputStandard o) { half4 c = tex2D(_MainTex, IN.uv_MainTex); o.Normal = UnpackNormal(tex2D(_Bump, IN.uv_Bump)); //雪的角度如果和法线的角度大于了参数值(_Snow,这里可以理解为凹凸不平的层度)则使用雪的颜色,否则使用贴图的颜色 if (dot(WorldNormalVector(IN, o.Normal), _SnowDirection.xyz) >= _Snow) o.Albedo = _SnowColor.rgb; else o.Albedo = c.rgb * _MainColor; o.Alpha = 1; } ENDCG } FallBack "Diffuse"}
0 0
- Unity shader造冰女
- unity shader
- Unity Shader
- Unity-Shader
- unity shader
- Unity Shader
- Unity Shader
- Unity Shader
- unity shader
- Unity描边[Unity Shader]
- Shader以及Unity中的Shader
- Unity Shader 二 发光Shader
- Unity Shader简单Shader一
- Unity Shader简单Shader二
- Unity Shader修改Shader属性
- Unity Shader--fixed function shader
- [Unity Shader] Fixed Function Shader
- Unity Shader 之Geometry Shader
- 类模板在项目开发中的应用
- sql server 2012 本地数据导入数据库详细步骤
- vector 错误
- hive数据分析
- js中call与apply的妙用
- Unity shader造冰女
- 大数据职位画像–看看你是不是白混了贼多年【指导意义】
- iOS UITextField 限制只能输入中文
- Linux命令
- Ubuntu复制指定目录下的全部文件到另一个目录中
- java基础知识(个人笔记)
- FFmpeg常用推流命令
- 在SQL SERVER中当查询的条件是一个选择范围的SQL语句怎么写?
- Codeforces 429B Working out (动态规划) -- 解题报告