青州住房和城乡建设网站,比较知名的企业,网站排名优化外包公司,阿里云网站建设官方自营店基本概念与作用Shadows, Midtones, Highlights 是 Unity URP 后处理系统中用于颜色分级的重要效果#xff0c;它允许开发者分别控制画面中的阴影、中间色调和高光部分的颜色调整。这种精细控制的优势在于#xff1a;阴影调整#xff1a;可以单独改变画面暗部的色调和亮度…基本概念与作用Shadows, Midtones, Highlights 是 Unity URP 后处理系统中用于颜色分级的重要效果它允许开发者分别控制画面中的阴影、中间色调和高光部分的颜色调整。这种精细控制的优势在于阴影调整可以单独改变画面暗部的色调和亮度常用于营造特定氛围或修正阴影颜色.中间色调控制调整画面中等亮度区域这是大多数视觉信息所在的区域.高光处理专门处理画面最亮部分可以增强或减弱高光效果发展历史这一效果源于专业影视调色技术Unity 在 2018 年左右引入后处理堆栈(Post Processing Stack)时首次包含了类似功能后来在 URP/HDRP 中进一步优化。相比早期的 Lift, Gamma, Gain 调整方式Shadows, Midtones, Highlights 提供了更精确的色调范围定义能力。实现原理与技术细节在 URP 中该效果通过体积框架(Volume Framework)实现使用屏幕空间计算和色调映射技术来分离和调整不同亮度区。核心算法包括亮度分离基于像素亮度值将画面分为三个区域色调映射对每个区域应用独立的颜色变换平滑过渡确保区域间过渡自然避免明显边界底层原理Shadows, Midtones, Highlights 效果基于亮度分离和区域特定颜色变换技术实现。其核心处理流程包括亮度分析阶段通过计算像素的亮度值(Luminance)将画面分为三个区域Shadows亮度低于Shadow Limit阈值的区域Highlights亮度高于Highlight Limit阈值的区域Midtones介于两者之间的区域色调映射阶段对每个区域应用独立的颜色变换矩阵包括色相/饱和度调整亮度/对比度调整颜色偏移(Offset)混合阶段使用平滑过渡函数(通常为Sigmoid或线性插值)混合三个区域的调整结果避免明显的边界效应技术实现细节在URP中该效果通过RenderPass实现主要处理步骤包括屏幕空间处理在像素着色器中计算每个像素的亮度值区域分类使用阈值比较确定像素所属区域颜色变换根据区域应用不同的颜色校正矩阵ACES色调映射可选地与ACES色调映射管线集成增强影视级效果示例实现以下是一个简化的Shader代码示例展示核心处理逻辑代码说明亮度计算使用标准RGB转亮度公式使用smoothstep函数实现区域间的平滑过渡三个区域的颜色调整独立进行后混合阈值参数(_ShadowLimits/_HighlightLimits)控制区域范围ShadowsMidtonesHighlights.shaderShader Hidden/Universal Render Pipeline/ShadowsMidtonesHighlights{Properties{_MainTex (Base (RGB), 2D) white {}_Shadows (Shadows, Color) (1,1,1,1)_Midtones (Midtones, Color) (1,1,1,1)_Highlights (Highlights, Color) (1,1,1,1)_ShadowLimits (Shadow Limits, Vector) (0.0, 0.3, 0, 0)_HighlightLimits (Highlight Limits, Vector) (0.55, 1.0, 0, 0)}SubShader{Pass{HLSLPROGRAM#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlslTEXTURE2D(_MainTex);SAMPLER(sampler_MainTex);float4 _Shadows;float4 _Midtones;float4 _Highlights;float2 _ShadowLimits;float2 _HighlightLimits;float Luminance(float3 color){return dot(color, float3(0.2126, 0.7152, 0.0722));}float4 Frag(Varyings input) : SV_Target{float4 color SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv);float lum Luminance(color.rgb);// 计算各区域权重float shadowWeight smoothstep(_ShadowLimits.x, _ShadowLimits.y, lum);float highlightWeight smoothstep(_HighlightLimits.x, _HighlightLimits.y, lum);float midtoneWeight 1.0 - shadowWeight - highlightWeight;// 应用区域特定调整float3 shadowColor color.rgb * _Shadows.rgb;float3 midtoneColor color.rgb * _Midtones.rgb;float3 highlightColor color.rgb * _Highlights.rgb;// 混合结果color.rgb shadowColor * shadowWeight midtoneColor * midtoneWeight highlightColor * highlightWeight;return color;}ENDHLSL}}}实际应用原理在URP管线中该效果通过Volume框架集成到后处理堆栈中。当相机启用后处理时URP会创建临时渲染纹理存储中间结果执行多个RenderPass完成各种后处理效果将Shadows, Midtones, Highlights作为其中一个Pass插入管线最终结果输出到相机目标纹理这种设计使得效果可以与其他后处理(如Tonemapping、Bloom等)无缝配合共同构成完整的颜色分级管线完整实现流程以下是在 Unity URP 中实现 Shadows, Midtones, Highlights 效果的完整步骤确保项目使用URP管线在Graphics Settings中选择URP Asset创建后处理体积在Hierarchy中右键 - Volume - Global Volume创建Profile在Global Volume组件的Profile字段点击New添加效果在Profile中添加Override: Add Override - Post-processing - Shadows Midtones Highlights启用相机后处理选中主相机 - Rendering - Post Processing勾选参数详解与用例核心参数Shadows功能控制画面暗部色调和亮度实际用例将阴影调为冷蓝色营造寒冷氛围参数色环选择阴影色调滑块调整阴影亮度左暗右亮Midtones功能调整画面中间亮度区域实际用例增强中间色调饱和度使画面更生动参数色环选择中间色调滑块调整中间调亮度Highlights功能控制画面最亮部分实际用例将高光调为暖黄色模拟阳光效果参数色环选择高光色调滑块调整高光亮度高级参数Shadow Limits功能定义阴影范围的开始和结束点实际用例精细控制哪些像素被视为阴影Highlight Limits功能定义高光范围的开始和结束点实际用例避免过亮区域被错误分类性能优化建议该效果属于低开销后处理但仍建议避免过度使用复杂调整在移动平台简化参数调整使用局部体积(Local Volume)而非全局应用与类似效果对比Lift Gamma Gain更简单但控制精度较低Color Grading更全面但开销略高实际应用示例恐怖游戏场景设置将Shadows调为深绿色增强诡异感Midtones略微降低饱和度营造压抑感Highlights保持中性避免分散注意力阳光明媚的户外场景Shadows使用淡蓝色模拟天空反射Midtones增强饱和度使色彩鲜艳Highlights使用暖黄色强化阳光效果通过这种分级控制开发者可以精确塑造游戏视觉风格而无需修改原始材质或光照设置