当前位置: 首页 > news >正文

【URP】Unity[后处理]色彩偏移,中间调,高光增强-Lift,Gamma,Gain

【从UnityURP开始探索游戏渲染】专栏-直达

Lift、Gamma和Gain是Unity URP后处理系统中基于ASC CDL(美国电影摄影师协会色彩决策列表)标准的色彩分级工具,用于分别控制暗调、中间调和高光的色彩偏移与明度调整。以下是详细解析:

核心功能与参数含义

Lift

  • 作用:控制暗调区域(Dark Tones)的色彩偏移和明度
  • 参数:
    • 轨迹球:选择暗调色调偏移目标颜色
    • 滑块:调整轨迹球颜色的明度值
  • 用例:增强阴影的冷色调(如电影感蓝色阴影)

Gamma

  • 作用:通过幂函数调整中间调(Mid-range Tones)
  • 参数:
    • 轨迹球:选择中间调色调偏移目标颜色
    • 滑块:控制中间调明度
  • 用例:修正肤色偏黄问题

Gain

  • 作用:增强高光(Highlights)信号强度
  • 参数:
    • 轨迹球:选择高光色调偏移目标颜色
    • 滑块:调整高光明度
  • 用例:模拟阳光照射的暖色高光

发展历史与技术背景

该技术源自电影工业的ASC CDL标准,用于跨平台色彩分级一致性。Unity HDRP/URP通过Volume系统将其引入实时渲染,替代了传统分离色调(Split Toning)的非标准化操作。Gamma校正则源于CRT显示器的非线性响应曲线(gamma≈2.2),现代渲染管线通过线性工作流(Linear Space)避免计算失真。

原理

Lift、Gamma和Gain是Unity URP后处理中基于ASC CDL标准的色彩分级工具,其底层原理涉及色彩空间转换与影调分离控制:

底层原理

  • Lift
    • 原理:通过向量乘法调整暗调区域(RGB值<0.18),公式为output = input + (liftColor * (1 - input)),其中liftColor为轨迹球选择的HDR颜色
    • 示例:设置lift为(0.1, 0, -0.05)会使阴影偏蓝且降低暗部密度
  • Gamma
    • 原理:对中间调(0.18<RGB值<0.8)应用幂函数output = pow(input, 1/gammaValue),gammaValue通过滑块与轨迹球颜色混合计算
    • 示例:gamma设为(0.9, 1.1, 1.0)会使红色通道更亮、绿色更暗
  • Gain
    • 原理:对高光(RGB值>0.8)进行线性增强output = input * gainColor,gainColor包含轨迹球色相和滑块明度
    • 示例:gain设为(1.2, 1.0, 0.8)会创建暖色高光效果

实现流程示例

  • 通过Volume系统访问LiftGammaGain覆盖层

  • 使用Vector4传递参数(RGB分量+Alpha保留)

  • 实时修改参数会立即影响渲染管线

  • LiftGammaGainExample.cs

    using UnityEngine.Rendering;
    using UnityEngine.Rendering.Universal;public class LiftGammaGainController : MonoBehaviour {public VolumeProfile profile;void Update() {if(profile.TryGet(out LiftGammaGain lgg)) {// 动态调整Lift(时间变化的蓝色阴影)lgg.lift.value = new Vector4(0.1f, 0.05f * Mathf.Sin(Time.time), -0.1f, 1f);// Gamma中间调增强lgg.gamma.value = new Vector4(1.1f, 1.1f, 1.1f, 1f);// 高光增益(金色高光)lgg.gain.value = new Vector4(1.5f, 1.3f, 0.8f, 1f);}}
    }
    

技术细节

  • 色彩空间‌:所有计算在线性空间(Linear Color Space)执行,需在Player Settings中启用
  • 性能优化‌:每个参数的轨迹球计算在Shader中通过mix()函数插值实现,避免分支判断
  • 混合模式‌:与Color Grading其他效果(如Tonemapping)按URP渲染顺序叠加处理

典型应用场景

  • 电影感调色‌:Lift(-0.1,0,0.1)冷阴影 + Gamma中性 + Gain(1.3,1.2,1.0)暖高光
  • 风格化渲染‌:Gamma(0.8,0.8,1.5)增强蓝色中间调,配合高对比度Lift/Gain
  • 昼夜转换‌:通过脚本动态插值Lift值实现阴影色调随时间变化

URP实现流程

基础配置

  • 启用URP管线的Post Processing功能
  • 摄像机勾选Rendering > Post Processing选项

Volume系统设置

csharp
// 创建Global Volume并添加Lift Gamma Gain覆盖
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;public class SetupPostProcessing : MonoBehaviour {void Start() {var volume = gameObject.AddComponent<Volume>();volume.profile = ScriptableObject.CreateInstance<VolumeProfile>();volume.profile.Add<LiftGammaGain>(true);}
}

参数动态控制示例

csharp
// 运行时调整Gain参数
VolumeProfile profile = GetComponent<Volume>().profile;
if(profile.TryGet(out LiftGammaGain lgg)) {lgg.gain.value = new Vector4(1.2f, 1.1f, 0.9f, 1f);// RGB增益
}

完整示例项目配置

场景搭建

  • 创建URP项目(2021.3+版本)
  • 安装Universal RPPost Processing

Volume配置步骤

  • Hierarchy右键 > Volume > Global Volume
  • Inspector中点击Add Override > Color Adjustments > Lift Gamma Gain

参数联动案例

  • 电影化调色‌:Lift偏蓝(-0.1, -0.05, 0.1),Gamma中性(0,0,0),Gain偏橙(0.1, 0.05, -0.05)
  • 风格化场景‌:提升Gain亮度(1.5,1.5,1.5)增强卡通感

技术注意事项

  • 线性空间(Linear Color Space)下效果更准确,需在Project Settings > Player > Other Settings中设置
  • Shadow/Midtones/Highlights效果类似,但Lift Gamma Gain遵循工业标准,调色更可控

通过轨迹球和滑块的组合控制,开发者可实现从自然色彩校正到艺术化风格渲染的全流程控制


【从UnityURP开始探索游戏渲染】专栏-直达
(欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)

http://www.jsqmd.com/news/35204/

相关文章:

  • 2025年有实力的刮板蒸发器厂家权威推荐榜单:新型刮板蒸发器/耐用的刮板蒸发器/高品质的刮板蒸发器源头厂家精选
  • 引用非当前解决方案sln的项目csproj编译报错
  • 从“内存容器”到“对象标签”:解构C到Python的编程认知迁移
  • 我的书库(书单)
  • Redis-用户签到(BitMap) - 指南
  • 2025年油溶性染料订做厂家权威推荐榜单:PET染料/透明红B/水性荧光示踪剂源头厂家精选
  • nginx 1.29.2 发布:AWS-LC 帮助、QUIC及SSL优化等重要更新
  • 永远的落寞
  • 31.高可用-Keepalived 全解析 - 教程
  • (生活001 便签)
  • JavaScript性能优化:我从50ms降到5ms的7个关键技巧
  • 数据库存储中的哈希表和B+树 - 详解
  • 哥德尔不完备定理,其实为哥德尔不结束定理
  • 一个挺好用的SLM,ARPA格式
  • 程序员的第二成长曲线:从技术深度到认知广度
  • 实用指南:如何在 Linux_Ubuntu 上安装 Qt 5:详细教程
  • *题解:P2824 [HEOI2016/TJOI2016] 排序
  • 事务方法失效情况
  • Nginx是干嘛用的?nginx服务器配置
  • 2025年疏浚挖泥船实力厂家权威推荐榜单:绞吸清淤船/河道清淤船/清淤挖泥船源头厂家精选
  • 开源 C++ QT QML 开发(十三)多线程 - 实践
  • PyCharm 配置 PySide6
  • 《密码系统设计》第十周预习
  • 从容器到云原生:开发者需要掌握的核心思维
  • 从零开始学Flink:实时流处理实战 - 教程
  • 【STM32方案开源】基于STM32的智能语音台灯框架
  • 2025年实验室全钢通风橱订制厂家权威推荐榜单:实验室全钢排风柜/全钢结构步入式通风柜/全钢台式通风柜源头厂家精选
  • flask: 对Flask-SQLAlchemy查询得到的数据遍历处理
  • go 工作区(workspace)模式
  • # [NOIP 2016 提高组] 天天爱跑步 题解