【unity shader/风格化水表面渲染/基础笔记】urp代码版03-水表面颜色
前言
上一节生成了岸边的泡沫。本节主要梳理水表面的上色过程,这部分涉及半透明渲染和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-水表面颜色相关推荐
- 【unity shader/风格化水表面渲染/基础笔记】urp代码版01-水面与水底的深度判断
目录 1 场景搭建与实现思路 2 深度图获取与原理 获取方式 深度图计算原理 变换过程 3 重建世界坐标 采样深度图 重建方法1 重建方法2 4 结果 仅做学习,如有错误望指正 涉及的知识点:dept ...
- 【unity shader/风格化水表面渲染/基础笔记】urp代码版05-焦散模拟
前言 前面4章完成了波浪动画.上色.岸边泡沫的生成.本章梳理水底的焦散模拟. 焦散模拟 我们可以使用类似的水纹的贴图作色散分离,或者直接使用分离的三通道贴图. 下面的代码设置了宏_DISPERSION ...
- 【unity shader/风格化水表面渲染/基础笔记】urp代码版02-岸边泡沫的生成
前言 上一节,达成了水面与水底的深度判断,结果用RawDepth表示.这一节梳理利用深度关系生成岸边的泡沫. 设计函数_getFoam(RawDepth) float sinWave = _getFo ...
- 《Unity Shader 入门精要》读书笔记
<Unity Shader 入门精要>读书笔记 --记录一下自己看书时遇到的一下困惑的地方和自己的一些想法,愿明天的我更加强大 1.要正确获得阴影和光照衰减效果,需要#pragma mul ...
- Unity Shader 龙珠Z卡通渲染分析
Unity Shader 龙珠Z卡通渲染分析 一.角色渲染效果整体分析角色渲染效果整体分析 二.轮廓线效果 三.三阶梯度漫反射 四.高光 一.角色渲染效果整体分析角色渲染效果整体分析 渲染效果整体截图 ...
- 《Unity Shader入门精要》学习笔记
简单说明 为控制渲染过程提供一层抽象,避免许多繁琐配置:用ShaderLab编写,使用一些嵌套在{}的语义: 定义了要显示材质所需的全部,不仅仅是着色器代码 Unity Shader != Shade ...
- Unity Shader入门精要 | 渲染路径、光源类型和阴影
目录 渲染路径 前向渲染 (Forward Rendering) 顶点照明渲染 (Vertex Lit Rendering) 延迟渲染 (Deferred Rendering) 光源类型 平行光 (D ...
- 《Unity Shader入门精要》学习笔记第11章 让画面动起来
本文章用于帮助自己学习,因此只记录一些个人认为比较重要或者还不够熟悉的内容. 原作者:http://blog.csdn.net/candycat1992/article/ 第十一章 让画面动起来 11 ...
- 《Unity Shader入门精要》学习笔记第5章 开始Unity Shader学习之旅
本文章用于帮助自己学习,因此只记录一些个人认为比较重要或者还不够熟悉的内容. 原作者:http://blog.csdn.net/candycat1992/article/ 第五章 开始Unity Sh ...
最新文章
- mSystem:西农韦革宏组细菌-真菌互作影响微生物多样性-土壤养分循环关系
- 基金委最新改革:9大科学部整合为4个板块资助布局
- python pip install pipenv失败_pipenv 无法创建依赖情况应该怎么处理?大家有什么好的建议吗?...
- 图像分割过分割和欠分割_使用图割的图像分割
- java printf 版本_java – PrintStream类型中的printf(String,Object ...
- 【安卓开发 】Android初级开发(十二)Android向系统日历中添加事件
- Debug和Release 老程序啊 调试之前 区分一下啊
- 记录第二次遇到ERROR! MySQL server PID file could not be found!
- Swagger 教程
- win下编译TNN安卓库(静态或者动态) + android studio ndk调用
- 怎么查二手华为手机价格
- C语言图形编程中的绘图函数~
- php 获取微博cookie,c#获取新浪微博登录cookie
- 工具说明书 - Beoplay E8耳机操作及电池更换
- Duang一夏,安码企业流程化管控软件优惠季来了! 活动介绍
- 理解块存储、文件存储和对象存储的应用场景和选择
- win10定时关机怎么设置
- C#实现自定义打印文字和图片
- STP怎么选根桥和根端口
- 教你如何暴力破解wifii密码