unity shader 水中倒影
来源:互联网 发布:centos 6.5 64位下载 编辑:程序博客网 时间:2024/04/29 18:01
效果
=>
原理
- 将原图均分为月亮部分和水面部分两张图,其他区域用透明色填充
- 倒影:就是将uv的v值翻转一下,
- 倒影在水的扭曲效果:就是让图片不同部位uv值的增量不同,如果不太熟悉扭曲效果的,可以参见unity shader 贴图流动
- 最后利用透明度用Lerp操作将原图和倒影图合成到一起
ShaderForege实现
分解
- 倒影
uv值是从(0,0)到(1,1)的二位数组,我们将v值从0到1重映射到1到0,就得到了y方向上的倒影图
font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) - 将水波图与倒影图混合
- 流动效果
原理参见unity shader 贴图流动 - 透过透明度与月亮图混合
到这里已经基本上实现了水中倒影的效果!
final
- 我在以上基础上根据自己的喜好追加了一些细节,开篇的效果的shaderforge节点树如下
手写unity shader实现水中倒影
Shader "Custom/daoying_u"{ Properties { _MainTex ("Shadow Tex", 2D) = "white" {} _WaterTex("Water Tex", 2D) = "white" {} _NoiseTex("Noise Tex", 2D) = "white" {} _MoonTex("Moon Tex", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; sampler2D _WaterTex; sampler2D _NoiseTex; sampler2D _MoonTex; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { // 流动值 fixed4 noise_col = tex2D(_NoiseTex, i.uv + float2(_Time.y*0.1, 0.0)); fixed2 floatUV = float2(noise_col.r*0.03, 0); // uv的v值从0到1重映射到1到0 float2 shadow_uv = float2(i.uv.r+floatUV.r, (i.uv.g+floatUV.g)*-1.0 + 1.0); fixed4 col = tex2D(_MainTex, shadow_uv); fixed4 water_col = tex2D(_WaterTex, i.uv+floatUV); // 混合倒影和水波 fixed4 lerp1 = lerp(col, water_col, 0.5); fixed4 moon_col = tex2D(_MoonTex, i.uv); // 混合月亮图和倒影 fixed4 final = lerp(moon_col, lerp1, 1.0 - moon_col.a); // apply fog UNITY_APPLY_FOG(i.fogCoord, col); return final; } ENDCG } }}
参考:
【Unity Shader】基于UGUI的水波倒影按钮
阅读全文
0 0
- unity shader 水中倒影
- 水中倒影效果制作
- 图片的水中倒影
- 绚丽多彩Photoshop打造水中倒影
- ShaderWeaver使用教程-水中倒影
- 【Unity Shader】基于UGUI的水波倒影按钮
- 使用Silverlight 2实现水中倒影效果
- css+JavaScript实现水中倒影效果
- 利用FLASH MX制作动感的水中倒影
- 第31课 图形图像综合实例:实现水中倒影效果
- unity shader
- Unity Shader
- Unity-Shader
- unity shader
- Unity Shader
- Unity Shader
- Unity Shader
- unity shader
- JavaScript里面三个等号和两个等号的区别
- SQL实战
- intellij与eclipse默认快捷键对比
- xUtils下载
- 记 今日头条广告架构社招面试
- unity shader 水中倒影
- 非常逼真的玻璃破碎特效android
- POJ 2808 校门外的树
- Fruit Baskets 解题报告 Kattis 暴力求解法
- 线程的同步与死锁及解决办法
- ubuntu系统搭建arm
- 学习笔记
- 设计模式(2)——生成器 Builder
- java作业