unity 内置渲染管线 效果调整工作流程
本次工作流程使用的是unity 2021.3.0f1,主要针对表现效果较差的webgl的效果调整,同样适用于pc端的效果调整,只是在shader的表现上有所差异。(不涉及烘焙内容)
webgl效果展示(挂GitHud上,加载会很慢)
以下的工作流程只是个人的经验总结,欢迎指导。
以下图场景为例
第一步.直接光照调整
Directional Light(平行光)
- 决定了漫反射光照强度
- 阴影方向
- 阴影强度
调整说明:
Intensity:光照强度(越高直接光越亮)
Strength:阴影强度
shadow Type(阴影类型)
- soft shadows——阴影边缘比较柔和,但是漏光明显
- hard shadows——阴影边缘比较硬
2.全局光照(环境光)
Window→Rendering→Lighting→Environment
Environment Lighting(光源)
Source
- Skybox - 采用天空球的光线作为环境光源
- Gradient - 自定义环境光的颜色(推荐使用)
Environment Reflections(反射)
- Source
- Skybox - 采用天空球作为反射参数
- Resolution 参数的尺寸
- Custom - 采用自定义天空盒作为反射参数
- Skybox - 采用天空球作为反射参数
调整说明:
1.Skybox模式:
Environment Lighting和Environment Reflections的Source都选Skybox
intensity Multiplier 代表光照的强度
Environment Lighting(环境光源)的强度对Metallic(金属度)越低的材质影响越高
Environment Reflections(反射)的强度是整体影响的。
2. Gradient模式:
Environment Lighting的Source选Gradient;
Environment Reflections的Source选Coustiom;
Environment Lighting分别对color进行调整
Environment Reflections的Intensity Multiplier对强度进行调整
这里的CubeMap用了一张渐变贴图,需要把贴图的Inspector中把TextureShape需改成Cube,贴图可以是彩色的这里主要是天空,反射的光线会加上Cubemap贴图的颜色。
后面的示例延用Gradient模式的效果
- Source
3.渲染模式
内置渲染管线在Main Camera→Camera→Rendering
渲染模式 | 抗锯齿效果 | 支持空间映射 |
---|---|---|
Forward(前向渲染) | 好 | 不支持 |
Deferred(延迟渲染) | 不好 | 支持 |
为了后面的反射效果,牺牲了抗锯齿用了延迟渲染。
4.抗锯齿
使用unity官方提供的PostProcessing。Window→PackagesManager
注意,要在Unity Registy的模式下搜索,安装后右下角会是Remove,否则是Install。
在Main Camera 添加Post-process Layer组件,Main Camera 所在的Layer必须和Post-process Layer里的Layer一致。
Anti-aliasing Mode
- MSAA像素加点采用
- FXAA替换边界
- TAA复用上一帧(推荐)
如果觉得效果不明显还可以叠加抗锯齿的脚本,下面Effect会提到
抗锯齿效果对比
5.Effect
这里没有继续使用PostProcessing,原因是它对webGL的支持不太好,所以使用了很久以前的Effects脚本工具包,效果是一样的。
Tonemapping 色调映射
这里选择Neutral 可以调整的参数多一点
Exposure(曝光度)整体调整场景的明暗
下面的参数都可以调整,对场景的明暗都会有影响
Color Grading 颜色分级
Shadows、Midtones、Highlights(阴影,中间色,高光的色相)
Temperature Shift(色温) ——冷暖色调
Tint(色调)——一般不动
Hue(色相)——和色调一样不动
Saturation(饱和度)——越高颜色越鲜艳,默认1,可以稍微调大一点
Vibrance(自然饱和度)——越高颜色越鲜艳,默认0
Value(明暗度)——默认1
Contrast(对比度)——越高画面越明显,默认1,可以稍微调大一点
Gain(增益)——默认1,轻易不要动
Gamma(伽马校正)——默认1,轻易不动
Screen Space Reflections 屏幕空间反射
必须满足上文提到的渲染模式
Max Distance (最大映射距离)
Iteration Conut(迭代数量)
Step Size(步长)——太高会出现摩尔纹
Width Modifier(宽度修饰)——太低和影响映射的完整度
Reflections Blur(反射模糊)——越低越清晰
Reflections Multiplier(反射乘数)——影响反射的颜色,越低越黑
Fade Distance (消失距离)
Ambient Occlusion 环境光遮蔽
- Intensity(强度)
- Radius(半径)
这里的值都不要太高,画面容易脏
效果对比
使用前
使用后
(该模型在建立时,就进行过贴图的AO烘焙,效果不是很明显)
Depth of Field 景深
- Quality——选择只影响远处
- Focal Piont(焦点)
- Smoothness(平滑度)
效果对比
使用前
使用后
Bloom 辉光
webGL,最好不要使用bloom,使用需要把强度调低
- Threshold (阈值)——越高,辉光越明显
- Soft knee(曲线缓变弯折处)——越高,影响到的色彩范围越大,使用时不要拉到1,留出高光位置
- Radius(影响半径)
- Intensity(强度)
- Dirt Texture(辉光图)——可以赋值一只图片,可以起到类似滤镜的作用
- Dirt Intensity(辉光图的强度)
效果对比
使用前
6.天空球
使用天空球,要回到第二步全局光照(环境光),修改成Skybox模式,后面的调整都是基于全局光照和直接光照固定的情况下。因为全局光照的变化对整个场景的色调影响很大,因此室内和室外的效果调整是完成不一样的,unity的 HDRP 渲染设置引入了Volume的方式重新定义了全局和局部的效果调整,后面会更新unity HDRP 渲染设置。
天空球的模式
天空球有三种模式,6sided,cubemap和HDRI 全景贴图
6sided
是由六张贴图组成的盒子
建立的效果
cubemap
是由一张张贴图组成的盒子
HDRI 全景贴图
这里有几点要注意:使用贴图做天空球,要用高清的图片,导入后也要设置在1024以上;相较起来6张的效果会比一张的好一点。
加入天空盒子球的效果
7.材质
这里以unity 内置渲染管线的Standard为例
Metallic 金属度
0-1代表金属度 ,金属度越低,环境光对材质的影响越大。
再开始调整前,可以适量的将金属度调低,方便颜色调整后进行微调。因为天空的亮度比较高,如果金属度太高,后面整体调整时会出现要么天空曝光,要么模型太暗。
Smoothness 光滑度
0-1代表光滑度,值越大,菲涅耳反射效应越明显。
Smoothness 为0
Smoothness 为1
Emission自发光
配合Bloom 可以实现高光的效果;也是提高材质亮度和颜色的手段
Transparent 透明
渲染模型改为Transparent ,Albedo颜色的alpha值调低。
透明效果
不透明效果