type
Post
status
Published
date
Oct 27, 2023
slug
camera-clear-color-with-gamma
summary
tags
category
疑难杂症
icon
password
对于一个相机渲染结果中无内容的部分,一般设置Background Type去处理。而Background Type中一般是选择Skybox的。
但是在特殊需求相机中,一般会选择为Solid Color模式用于设置特殊的值。设置为Black去做多相机混合是一种常见的方案,但是如果有特殊需求时,color可能不是(0,0,0)
比如用于Distortion的Camera,或者是Lookdown的camera,其最后render target通常是一张全屏flowmap,默认颜色需要给成(0.5, 0.5, 0)。这时如果直接设置Background Color为(0.5, 0.5, 0)的话,结果实际上是接近(0.214, 0.214, 0)的值,这个值可以通过RenderDoc截帧看到
notion image
notion image
这是因为Unity需要反向做一次Gamma以保证最后经过Gamma矫正还原到屏幕上的数值为(0.5, 0.5, 0)。如果在Unity Editor内用截图工具吸色,不论是preview界面、关掉后处理的scene视图,又或是FrameDebugger中的预览,吸取到的颜色都将是(0.5, 0.5, 0)。然而一旦进入Shader计算,这个颜色在-0.214之后会直接变成纯黑色
因此如果是用做数值计算,可以选择在传入color的时候选择在cpu端计算其Gamma空间下的颜色传入,在通过unity强制自动的一次linear转换后可以保证输入值为原值,只不过此时预览结果将会比实际传入参数更亮(输入0.5,取色将会大于0.5)
notion image
 
关于LayerMask与CullingMaskUnity非主相机的渲染Buffer设置