Unity UV 水效果实现

  • Unity Water Shader
  • 组件搭载
  • 基本参数调节
  • 所需图片
  • 效果呈现

Unity Water Shader

Shader "Custom/SeaWave"
{Properties{_WaterTex("水纹理", 2D) = "black" {}_WaveTex("海浪", 2D) = "black" {} //海浪_BumpTex("碰撞纹理", 2D) = "bump" {}_GTex("海水渐变", 2D) = "white" {} //海水渐变_NoiseTex("海浪躁波", 2D) = "white" {} //海浪躁波_WaterSpeed("海水速度", float) = 0.74  //海水速度_WaveSpeed("海浪速度", float) = -12.64 //海浪速度_WaveRange(" 波动范围", float) = 0.3_NoiseRange("噪声幅度", float) = 6.43_WaveDelta("深水波动", float) = 2.43_Refract("折射", float) = 0.03_Specular("反射", float) = 1.86_Gloss("遮盖", float) = 0.71_SpecColor("标准颜色", color) = (1, 1, 1, 1)_Range("范围", vector) = (0.13, 1.53, 0.37, 0.78)}CGINCLUDEfixed4 LightingWaterLight(SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten) {half3 halfVector = normalize(lightDir + viewDir);float diffFactor = max(0, dot(lightDir, s.Normal)) * 0.8 + 0.2;float nh = max(0, dot(halfVector, s.Normal));float spec = pow(nh, s.Specular * 128.0) * s.Gloss;fixed4 c;c.rgb = (s.Albedo * _LightColor0.rgb * diffFactor + _SpecColor.rgb * spec * _LightColor0.rgb) * (atten);c.a = s.Alpha + spec * _SpecColor.a;return c;}ENDCGSubShader{Tags { "RenderType" = "Transparent" "Queue" = "Transparent"}LOD 200GrabPass{}zwrite offCGPROGRAM#pragma surface surf WaterLight vertex:vert alpha noshadow#pragma target 3.0sampler2D _GTex;sampler2D _WaterTex;sampler2D _BumpTex;sampler2D _CameraDepthTexture;sampler2D _GrabTexture;half4 _GrabTexture_TexelSize;sampler2D _NoiseTex;sampler2D _WaveTex;float4 _Range;half _WaterSpeed;half _WaveSpeed;fixed _WaveDelta;half _WaveRange;fixed _Refract;half _Specular;fixed _Gloss;half _NoiseRange;float4 _WaterTex_TexelSize;struct Input {float2 uv_WaterTex;float2 uv_NoiseTex;float4 proj;float3 viewDir;};void vert(inout appdata_full v, out Input i) {UNITY_INITIALIZE_OUTPUT(Input, i);i.proj = ComputeScreenPos(UnityObjectToClipPos(v.vertex));COMPUTE_EYEDEPTH(i.proj.z);}void surf(Input IN, inout SurfaceOutput o) {float2 uv = IN.proj.xy / IN.proj.w;#if UNITY_UV_STARTS_AT_TOPif (_WaterTex_TexelSize.y < 0)uv.y = 1 - uv.y;#endiffixed4 water = (tex2D(_WaterTex, IN.uv_WaterTex + float2(_WaterSpeed*_Time.x,0)) + tex2D(_WaterTex, float2(1 - IN.uv_WaterTex.y,IN.uv_WaterTex.x) + float2(_WaterSpeed*_Time.x,0))) / 2;float4 offsetColor = (tex2D(_BumpTex, IN.uv_WaterTex + float2(_WaterSpeed*_Time.x,0)) + tex2D(_BumpTex, float2(1 - IN.uv_WaterTex.y,IN.uv_WaterTex.x) + float2(_WaterSpeed*_Time.x,0))) / 2;half2 offset = UnpackNormal(offsetColor).xy * _Refract;half m_depth = LinearEyeDepth(tex2Dproj(_CameraDepthTexture, IN.proj).r);half deltaDepth = m_depth - IN.proj.z;fixed4 noiseColor = tex2D(_NoiseTex, IN.uv_NoiseTex);half4 bott = tex2D(_GrabTexture, uv + offset);fixed4 waterColor = tex2D(_GTex, float2(min(_Range.y, deltaDepth) / _Range.y,1));fixed4 waveColor = tex2D(_WaveTex, float2(1 - min(_Range.z, deltaDepth) / _Range.z + _WaveRange * sin(_Time.x*_WaveSpeed + noiseColor.r*_NoiseRange),1) + offset);waveColor.rgb *= (1 - (sin(_Time.x*_WaveSpeed + noiseColor.r*_NoiseRange) + 1) / 2)*noiseColor.r;fixed4 waveColor2 = tex2D(_WaveTex, float2(1 - min(_Range.z, deltaDepth) / _Range.z + _WaveRange * sin(_Time.x*_WaveSpeed + _WaveDelta + noiseColor.r*_NoiseRange),1) + offset);waveColor2.rgb *= (1 - (sin(_Time.x*_WaveSpeed + _WaveDelta + noiseColor.r*_NoiseRange) + 1) / 2)*noiseColor.r;half water_A = 1 - min(_Range.z, deltaDepth) / _Range.z;half water_B = min(_Range.w, deltaDepth) / _Range.w;float4 bumpColor = (tex2D(_BumpTex, IN.uv_WaterTex + offset + float2(_WaterSpeed*_Time.x,0)) + tex2D(_BumpTex, float2(1 - IN.uv_WaterTex.y,IN.uv_WaterTex.x) + offset + float2(_WaterSpeed*_Time.x,0))) / 2;o.Normal = UnpackNormal(bumpColor).xyz;o.Specular = _Specular;o.Gloss = _Gloss;o.Albedo = bott.rgb * (1 - water_B) + waterColor.rgb * water_B;o.Albedo = o.Albedo * (1 - water.a*water_A) + water.rgb * water.a*water_A;o.Albedo += (waveColor.rgb + waveColor2.rgb) * water_A;o.Alpha = min(_Range.x, deltaDepth) / _Range.x;}ENDCG}//FallBack "Diffuse"
}

组件搭载

在当前 Shader 上创建一个 Material 材质球

新建一个 Plane 并把 刚才新建的 材质球 赋予

基本参数调节

所需图片

↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓ 图片 ↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓

↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑↑↑↑ 图片 ↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑↑↑↑
↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓ 图片 ↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓

↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑↑↑↑ 图片 ↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑↑↑↑

↡↡↡↡↡↡↡↡↡↡ ↡↡↡↡↡↡↡↡↡↡ 下面有一张图片 ↡↡↡↡↡↡↡↡↡↡ ↡↡↡↡↡↡↡↡↡↡

↟↟↟↟↟↟↟↟↟↟ ↟↟↟↟↟↟↟↟↟↟ 上面有一张图片 ↟↟↟↟↟↟↟↟↟↟ ↟↟↟↟↟↟↟↟↟↟

效果呈现

不同角度 展示不同效果


暂时先这样吧,如果有时间的话就会更新,实在看不明白就留言,看到我会回复的。
路漫漫其修远兮,与君共勉。

Unity UV 水效果实现相关推荐

  1. 使用Unity实现动态2D水效果

    http://forum.china.unity3d.com/thread-16044-1-1.html 在这片教程里面我们将会用简单的物理效果来模拟动态的2D水效果.我们将会使用Line Rende ...

  2. Water in Unity 使用Unity提供的水效果

    Water in Unity 使用Unity提供的水效果 需要Standard Asset 和 Pro Standard Asset 使用Standard Assets packages添加白天.夜里 ...

  3. Unity只在一个面片上实现卡通水效果

    概述 因为项目要做广大世界那种水效果.想过用类似九宫格之类的来实现.但是CPU压力比较大. 也试过用通过世界坐标采样河流数据贴图的方式,来不断刷新跟随摄像机的一个面片. 理论上是可以的,但实际上,会有 ...

  4. Unity Shader 卡通水效果(不用深度信息)

    文章目录 效果预览 具体实现 采样贴图替换的深度信息 效果预览 公司需要一个不使用深度信息,不用光照模型的水效果.具体实现参照了:卡通风格的水面效果-ToonWater https://zhuanla ...

  5. Unity Shder Graph 水效果

    Unity Shder Graph 水效果

  6. 关于Unity中水和雾的使用

    水 自己来做水和雾还是有点麻烦的,不过没关系,Unity帮我们做好了很多可以用的. 1.Unity自己实现了水的特效,帮助我们解决游戏中水的问题 2.Unity的水集成在了Environment的环境 ...

  7. Unity 实现贴花效果的制作教程

    c#教程​https://www.cnblogs.com/Yesi/p/15829200.html ​ 有些游戏中的战斗痕迹的效果会通过贴花来实现的,贴花的方式多种多样.而在Unity中,有一种给官方 ...

  8. 用Unity实现景深效果

    用Unity实现景深效果 景深也是一种非常常见的后处理手段,它用来模拟相机拍摄画面的效果.今天我们讨论如何在Unity中实现它. 简单来说,景深效果可以拆分为两个部分,一个部分是聚焦,使画面中指定的区 ...

  9. Unity 翻书效果

    Unity翻书效果 目前做的VR项目中需要一个翻阅魔法书的效果,考虑过使用UnityBookPageCurl-master插件,但是那个插件是纯UI显示的,只有二维效果,在VR里观感不佳,之后在网上找 ...

最新文章

  1. 5G+XR:让视频增强技术在工业领域大有所为
  2. Python开发环境Wing IDE如何设置Python路径
  3. 用户在网站注册,网站通过微信发送验证码,这个操作是怎么实现的?
  4. idea xml文件引入类提示_IntelliJ IDEA:引用XML模式和DTD
  5. mysql 是否为空字符串_MySql判断是否为null或空字符串
  6. java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查
  7. python算法应用(三)——分级聚类
  8. pg批量插入_在PostgreSQL中批量/批量更新/提升
  9. python 获取excel文本框_简单使用python做excel多文件批量搜索(带图形界面)(已更新)...
  10. 项目中js文件修改后浏览器不能及时更新的解决办法
  11. 190111每日一句
  12. 完整的vue-cli3项目创建过程以及各种配置
  13. 全国省市县三级数据库
  14. Xcelsius 访问webservice 需要配置
  15. c++ Beep函数的雪之梦
  16. Unity - Timeline 之 Timeline Setting(Timeline的设置)
  17. 风投Placeholder的区块链价值观,了解一下
  18. 【网页设计】HTML+CSS保护野生动物北极熊介绍网页设计专题
  19. 【复杂网络建模】——Python可视化重要节点识别(PageRank算法)
  20. 2022年总结关于网络安全工程师职业发展方向和职业前景

热门文章

  1. css如何实现多个动画顺序播放
  2. 深度解读CDN高防防御机制,看它如何为服务器保驾护航?
  3. 安卓收费的翅膀一扇,结果中国汽车打了喷嚏?
  4. ACL 2022:梳理视觉语言导航的任务、方法和未来方向|AI Drive
  5. 大型网站技术架构(六)--网站的伸缩性架构
  6. 影响AFE采样精度的因素有哪些?
  7. 解决hotmail无法登陆的问题
  8. windows使用oh-my-posh美化powershell命令提示符
  9. 【视频课】超口碑王圣元的Python课程,基础入门+金融案例+数据分析全套!
  10. difference_type解析