前言


上一节生成了岸边的泡沫。本节主要梳理水表面的上色过程,这部分涉及半透明渲染和fresnel颜色

颜色


  • 首先,岸边_ShallowCol和远离岸边_DeepCol的颜色应该有所区分。这里依旧利用上一节的RawDepth,稍加处理后变为WaterDepth
float waterDepth = _getNewDepthMask(RawDepth, _DepthRange);


fig1
图1所示,白色为浅水部分,黑色为深水部分。用lerp后的结果如下

  • 其次,加入fresnel的颜色

这段代码为

                // =========Fresnel=========== //real4 base_col = lerp(_DeepCol, _ShallowCol, waterDepth);float F = _getfresnelMask(normalW, viewW);base_col = lerp(base_col, _FresnelCol, F);

半透明


将RenderType从不透明模式改为半透明模式,之后,颜色的alpha通道能够改变mesh的透明度。同样透明度有depth相关的变量控制

        Tags {"RenderPipeline"="UniversalRenderPipeline""RenderType"="Transparent" "Queue" = "Transparent""IgnoreProjector"="True"}Tags {"LightMode"="UniversalForward"}Blend SrcAlpha OneMinusSrcAlphaZWrite Off

地面换上了之前所做的沙漠纹理

加入上一节的岸边泡沫


目前的片元部分的代码

           real4 frag(v2f i) : SV_TARGET{// =========Get necessity=========== //float3 PosW = i.posW;float3 normalW = i.normalW;float3 viewW = i.viewDirW;float4 screenPos = i.scrPos / i.scrPos.w;// screenPos.z = (UNITY_NEAR_CLIP_VALUE >=0)?screenPos.z:screenPos.z* 0.5 + 0.5;float sceneRawDepth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, sampler_CameraDepthTexture,screenPos.xy);float3 worldPos = ComputeWorldSpacePosition(screenPos.xy, sceneRawDepth, UNITY_MATRIX_I_VP);float RawDepth = PosW.y-worldPos.y;float waterDepth = _getNewDepthMask(RawDepth, _DepthRange);// =========Foam=========== //float FoamDepth = smoothstep(_FoamBlend, 1, RawDepth);float wave_noise = SAMPLE_TEXTURE2D(_FoamNoiseMap, sampler_FoamNoiseMap, i.uv.xy).r*  _FoamNoiseStr;real4 sinWave = _getFoamWave(RawDepth, wave_noise) * _FoamCol;// =========Fresnel=========== //real4 base_col = lerp(_DeepCol, _ShallowCol, waterDepth);float F = _getfresnelMask(normalW, viewW);base_col = lerp(base_col, _FresnelCol, F);// =========Mix Results=========== //base_col = lerp(base_col, base_col+sinWave, sinWave.a);// return float4(base_col.xyz, 1);return base_col;}

【unity shader/风格化水表面渲染/基础笔记】urp代码版03-水表面颜色相关推荐

  1. 【unity shader/风格化水表面渲染/基础笔记】urp代码版01-水面与水底的深度判断

    目录 1 场景搭建与实现思路 2 深度图获取与原理 获取方式 深度图计算原理 变换过程 3 重建世界坐标 采样深度图 重建方法1 重建方法2 4 结果 仅做学习,如有错误望指正 涉及的知识点:dept ...

  2. 【unity shader/风格化水表面渲染/基础笔记】urp代码版05-焦散模拟

    前言 前面4章完成了波浪动画.上色.岸边泡沫的生成.本章梳理水底的焦散模拟. 焦散模拟 我们可以使用类似的水纹的贴图作色散分离,或者直接使用分离的三通道贴图. 下面的代码设置了宏_DISPERSION ...

  3. 【unity shader/风格化水表面渲染/基础笔记】urp代码版02-岸边泡沫的生成

    前言 上一节,达成了水面与水底的深度判断,结果用RawDepth表示.这一节梳理利用深度关系生成岸边的泡沫. 设计函数_getFoam(RawDepth) float sinWave = _getFo ...

  4. 《Unity Shader 入门精要》读书笔记

    <Unity Shader 入门精要>读书笔记 --记录一下自己看书时遇到的一下困惑的地方和自己的一些想法,愿明天的我更加强大 1.要正确获得阴影和光照衰减效果,需要#pragma mul ...

  5. Unity Shader 龙珠Z卡通渲染分析

    Unity Shader 龙珠Z卡通渲染分析 一.角色渲染效果整体分析角色渲染效果整体分析 二.轮廓线效果 三.三阶梯度漫反射 四.高光 一.角色渲染效果整体分析角色渲染效果整体分析 渲染效果整体截图 ...

  6. 《Unity Shader入门精要》学习笔记

    简单说明 为控制渲染过程提供一层抽象,避免许多繁琐配置:用ShaderLab编写,使用一些嵌套在{}的语义: 定义了要显示材质所需的全部,不仅仅是着色器代码 Unity Shader != Shade ...

  7. Unity Shader入门精要 | 渲染路径、光源类型和阴影

    目录 渲染路径 前向渲染 (Forward Rendering) 顶点照明渲染 (Vertex Lit Rendering) 延迟渲染 (Deferred Rendering) 光源类型 平行光 (D ...

  8. 《Unity Shader入门精要》学习笔记第11章 让画面动起来

    本文章用于帮助自己学习,因此只记录一些个人认为比较重要或者还不够熟悉的内容. 原作者:http://blog.csdn.net/candycat1992/article/ 第十一章 让画面动起来 11 ...

  9. 《Unity Shader入门精要》学习笔记第5章 开始Unity Shader学习之旅

    本文章用于帮助自己学习,因此只记录一些个人认为比较重要或者还不够熟悉的内容. 原作者:http://blog.csdn.net/candycat1992/article/ 第五章 开始Unity Sh ...

最新文章

  1. mSystem:西农韦革宏组细菌-真菌互作影响微生物多样性-土壤养分循环关系
  2. 基金委最新改革:9大科学部整合为4个板块资助布局
  3. python pip install pipenv失败_pipenv 无法创建依赖情况应该怎么处理?大家有什么好的建议吗?...
  4. 图像分割过分割和欠分割_使用图割的图像分割
  5. java printf 版本_java – PrintStream类型中的printf(String,Object ...
  6. 【安卓开发 】Android初级开发(十二)Android向系统日历中添加事件
  7. Debug和Release 老程序啊 调试之前 区分一下啊
  8. 记录第二次遇到ERROR! MySQL server PID file could not be found!
  9. Swagger 教程
  10. win下编译TNN安卓库(静态或者动态) + android studio ndk调用
  11. 怎么查二手华为手机价格
  12. C语言图形编程中的绘图函数~
  13. php 获取微博cookie,c#获取新浪微博登录cookie
  14. 工具说明书 - Beoplay E8耳机操作及电池更换
  15. Duang一夏,安码企业流程化管控软件优惠季来了! 活动介绍
  16. 理解块存储、文件存储和对象存储的应用场景和选择
  17. win10定时关机怎么设置
  18. C#实现自定义打印文字和图片
  19. STP怎么选根桥和根端口
  20. 教你如何暴力破解wifii密码

热门文章

  1. 夏天的风,我永远记得~
  2. JS 浅谈JavaScript之事件
  3. (18)【WAF绕过】WAF部署、绕过分析和原理、注入绕过WAF方法
  4. sublime Text3 格式化json
  5. this.$router.options.routes
  6. 【商分篇】02 数据指标及指标体系,商业分析的起跑线
  7. Graylog 日志监控系统介绍
  8. 全球及中国医药级葡萄糖酸钙行业投资分析及前景趋势预测报告2022-2028年
  9. 区块链和NGO组织为难民社区带来希望
  10. CentOS7下系统一键安装后报502 Bad Gateway