【URP】Unity[后处理]色彩调整ColorAdjustments

news/2025/11/2 16:14:42/文章来源:https://www.cnblogs.com/SmalBox/p/19185074

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

Unity URP中的Color Adjustments后处理效果用于调整最终渲染图像的整体色调、亮度和对比度,是优化视觉表现的核心工具。其发展历史可追溯至Unity 4.X时代的色彩校正曲线和3D查找纹理技术,早期通过手动调节RGB通道曲线实现基础调色功能,而在URP中已整合为标准化体积框架下的模块化组件。

底层原理

Unity URP中的Color Adjustments后处理效果基于渲染管线中的片段着色器操作,其核心原理是通过线性空间下的数学变换调整像素颜色值。该效果在色调映射阶段前执行,作用于HDR颜色缓冲区的数据

  • 曝光调整‌:通过pow(2, postExposure)对RGB通道进行指数级亮度缩放,模拟相机曝光补偿机制。计算过程发生在线性颜色空间,避免伽马校正干扰。
  • 对比度计算‌:采用中间灰值(0.5)作为基准点,使用saturate((color.rgb - 0.5) * contrast + 0.5)公式扩展或压缩动态范围,其中saturate确保结果在[0,1]范围内。
  • 色调/饱和度‌:将RGB转换到HSV色彩空间,调整H分量实现色相旋转,S分量控制颜色纯度,最后转回RGB空间.

实现示例

以下为URP内置着色器中颜色调整的核心代码逻辑:

  • 曝光计算‌:采用2的幂次方实现物理正确的曝光模拟

  • HSV转换‌:通过几何插值法避免三角函数运算提升性能

  • 动态范围保护‌:使用step()saturate()防止数值溢出

  • ColorAdjustment.hlsl

    // 线性空间下的颜色处理函数
    half3 ApplyColorAdjustments(half3 color, float postExposure, float contrast, float hueShift, float saturation)
    {// 曝光调整color *= exp2(postExposure);// 对比度计算color = (color - 0.5h) * contrast + 0.5h;// RGB转HSVhalf4 k = half4(0.0, -1.0/3.0, 2.0/3.0, -1.0);half4 p = lerp(half4(color.bg, k.wz), half4(color.gb, k.xy), step(color.b, color.g));half4 q = lerp(half4(p.xyw, color.r), half4(color.r, p.yzx), step(p.x, color.r));float d = q.x - min(q.w, q.y);float e = 1.0e-10;half3 hsv = half3(abs(q.z + (q.w - q.y)/(6.0 * d + e)), d/(q.x + e), q.x);// 色相/饱和度调整hsv.x += hueShift;hsv.y *= saturation;// HSV转RGBreturn HsvToRgb(hsv);
    }
    

该效果在URP渲染流程中通过Volume系统注入参数,最终由FinalPost.shader在渲染目标上执行全屏绘制。色彩调整的运算顺序遵循:曝光→对比度→色调/饱和度→颜色滤镜,确保各阶段调整互不干扰.

核心参数与功能

  • Post Exposure‌:以EV单位调整场景整体曝光度,作用于HDR效果后、色调映射前,不影响处理链中其他效果。
  • Contrast‌:扩展(正值)或收缩(负值)色调范围,增强视觉层次感。
  • Color Filter‌:通过颜色选择器对渲染结果进行乘法着色,实现整体色调偏移。
  • Hue Shift‌:全局调整所有颜色的色相值,常用于风格化渲染。
  • Saturation‌:控制颜色强度,负值可生成灰度图像。

实现流程示例

创建后处理体积

  • 添加空GameObject并挂载Volume组件
  • 新建配置文件(如ColorProfile),通过Add Override > Post-processing添加Color Adjustments效果

相机配置

  • 启用相机的Post Processing选项
  • Volume Mask中匹配后处理体积的图层(如PostProcessLayer1

参数调试

  • 调整Contrast至1.2增强场景对比度
  • 设置Color Filter为浅蓝色实现冷色调风格化

实际应用案例

  • 恐怖游戏‌:降低饱和度至-30并微调色相,营造压抑氛围
  • 开放世界‌:动态调整曝光度模拟昼夜光照变化

以下为完整URP实现代码示例:

  • 脚本挂载至含Volume组件的对象

  • 通过Inspector动态修改参数值

  • 支持运行时效果切换

  • ColorAdjustmentSetup.cs

    using UnityEngine;
    using UnityEngine.Rendering;
    using UnityEngine.Rendering.Universal;public class ColorAdjustmentSetup : MonoBehaviour
    {[SerializeField] private VolumeProfile profile;[SerializeField] private float contrast = 1.2f;[SerializeField] private Color colorFilter = new Color(0.8f, 0.9f, 1f);void Start(){if (profile.TryGet(out ColorAdjustments adjustments)){adjustments.contrast.value = contrast;adjustments.colorFilter.value = colorFilter;}}
    }
    

该技术通过分离渲染管线与美术控制,实现了非破坏性工作流,成为现代游戏开发的标准实践


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[LangChain] Runnable接口 - 1

在 LCEL 中,几乎所有的模块:提示词模板 模型 解析器都是实现了 Runnable 接口的,可以将这些模块称之为 Runnable 类型。这种类型的模块可以快速插入到链条里面。 RunnableLambda RunnableLambda 是 LangChain.js 提…

MySQL 巡检用户创建脚本(Python 版)

MySQL 巡检用户创建脚本(Python 版)脚本依赖 需先安装 MySQL 官方 Python 连接器,执行以下命令安装: pip install mysql-connector-python完整 Python 脚本 import os import getpass import mysql.connector from…

初识目标检测

一.目前我校主要研究方向就是目标检测,所以首先应对目标检测有初步了解。目标检测属于计算机视觉中的一个热门方向,主要应用于物体、人、动物识别、动作识别等。结合我校农业研究方向,通过目标检测,可以用来检测瓜…

MySQL 8.0 双密码机制:改密码不中断业务,无缝切换的安全方案

MySQL 8.0 双密码机制:改密码不中断业务,无缝切换的安全方案改数据库密码时,你是否总在“安全”和“业务连续性”之间纠结?传统单密码模式下,一旦执行密码修改,现有连接会瞬间失效,应用直接报连接错误;若等业务…

记录Vmware WorkStation下安装的ESXi DCUI下 Resolving Hostname失败

原因未知,只是摸索出了一个方法可以解决实验环境如下: 有三台机器,宿主机Host 安装Vmware Workstation Pro17,虚拟机A 装的是Windows Server,在上面装了dns服务器,虚拟机B 装了EXSi 8,虚拟网卡选择的是NAT模式问…

【为美好CTF献上祝福】python 逆向

pyinstxtractor pyinstxtractor 是一个用于解包由 PyInstaller 打包的 Python 可执行文件的工具。 能把打包后的 .exe 文件还原为原始的项目结构。

MySQL参数优化最佳实践

MySQL参数优化最佳实践作为DBA,是否遇到过这样的糟心场景:云服务器CPU、内存明明还很空闲,可一到业务高峰期,数据库就开始“掉链子”——连接超时、查询卡死不说,CPU还会突然飙到100%;查看日志更是满屏报错:“T…

班级任务数据采集与融合实验第二次报告

数据采集与融合实验第二次报告 作业1 1)实验内容 要求:在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在数据库。 该实验先观察url格式,发现不同城市的页面只和城市代码有关,于是使用…

LVGLSharp:LVGL的C#绑定库介绍

在嵌入式系统和图形用户界面(GUI)开发领域,LVGL(Light and Versatile Graphics Library)是一个广受欢迎的开源图形库,它提供了丰富的UI组件和高效的渲染能力,适用于各种资源受限的设备。而LVGLSharp则是LVGL的一…

Java方法——递归

Java方法——递归递归 A函数调用B函数 递归则是A函数调用A函数 利用递归可以用简单的程序来解决一些复杂问题。它通常把一个大型复杂问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量程序就能…

2025 年 11 月氨糖软骨素厂家哪家好?剂型优化与人群适配双维度测评推荐

氨糖软骨素的服用体验与实际效果,很大程度取决于剂型设计合理性与对不同人群的适配性,市场上部分产品因剂型单一(如仅片剂)、配方未考虑特殊人群需求,导致服用不便、效果不佳。本次推荐基于国际关节健康协会 2025…

论文应该这样读(How to Read a Paper)

August 2, 2013 S. Keshav David R. Cheriton School of Computer Science, University of Waterloo Waterloo, ON, Canada keshav@uwaterloo.ca 摘要:科研人员一般都花费大量时间来阅读论文(下文亦有写作“文章”,…

各省市车牌号记忆 测试游戏

之前用C#写过这个小工具,现在用C++ Builder又试了一下,修正了一些错误。 见附件。打开释放即可以使用,无需其它文件或安装过程。 需要源码的可以留言。 https://files.cnblogs.com/files/blogs/845201/PrjChePaiTes…

2025年11月氨糖软骨素厂家哪家好?原料溯源与临床效果双维度优选推荐

氨糖软骨素产品的品质核心在于原料安全性与临床效果可靠性,但市场上部分产品存在原料来源不明、效果缺乏数据支撑等问题。本次推荐基于国际关节健康产业协会 2025 年第三季度测评数据,采用 “原料溯源完整性 - 临床效…

range()

range() 是 Python 提供的内置函数。 range([start=0,] end[, step=1]) [] 表示可以省略range(end)range(start, end)range(start, end, step)得到一个等差序列 [start, end),这是一个不可变的序列,不支持元素修改,…

2025 年 11 月氨糖软骨素厂家哪家好?提纯工艺与长效养护双核心测评推荐

氨糖软骨素的核心价值取决于提纯工艺带来的成分活性,以及产品能否实现长效关节养护,但市场上部分产品因工艺落后导致活性流失、养护效果短暂。本次推荐基于国际骨健康产品协会 2025 年第三季度测评数据,采用 “提纯…

2025 年 11 月氨糖软骨素厂家哪家好?成分配比与吸收技术双维度测评推荐

关节健康问题已成为全球关注的健康课题,氨糖软骨素作为核心养护补充剂,市场需求持续攀升,但成分虚标、吸收效率低等问题频发。本次推荐基于国际关节健康协会 2025 年第三季度测评数据,采用 “成分配比科学性 - 吸收…

2025 年 11 月氨糖软骨素厂家哪家好?纯度检测与养护效果双核心测评推荐

氨糖软骨素作为关节养护的关键补充剂,其原料纯度与实际养护效果直接决定产品价值,但市场上部分产品存在纯度不达标、效果夸大等问题。本次推荐基于国际骨健康检测协会 2025 年第三季度测评数据,采用 “纯度实验室检…

总是编译不过去,怎么知道下的代码里的依赖的库比如 ffmpeg 、qt这些具体是依赖哪个版本的

一句话结论Olive master 分支目前(2025-10)官方 CI 与多篇实测都锁定在Qt 5.15.x(5.15.2 最稳,6.x 仍可能踩坑)FFmpeg 4.3.x – 5.0.x(4.3.1 / 4.4 / 5.0 均可,7.0 已确认不能用)OpenImageIO 2.1.12+OpenColor…

MySQL数据库常用命令

MySQL数据库常用命令 一、操作数据库命令创建数据库 create database [if not exists] school;删除数据库 drop database [if not exists] school;使用数据库 use school;查看数据库 show databases;注:如果数据库名,…