UDN
Search public documentation:

GammaCorrectionCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > Rendering > UE3 中的 Gamma 校正

UE3 中的 Gamma 校正


文档变更记录: 由 Daniel Wright 创建。

概述


在网上有大量的关于gamma校正以及为什么需要进行gamma校正的信息,您可以请参照 Wikipedia 上的Gamma 校正页面来获得相关概述,GPU 精华文章弟 3 章可以了解得更加充分。总的来说,我们把颜色转换到 gamma 空间中有两个原因:

  • 为了补偿各种显示器的非线性响应(输出亮度和输入亮度不成比例)。
  • 为了当需要量子化颜色时,在最重要的黑暗的地方获得更好的精确度。因为,人类的眼睛对暗颜色中的较小改变比在亮颜色中的细节敏感。

UE3 中的 Gamma


UE3 中,用于所有平台上的 gamma 校正(颜色上的所有数学计算都发生在线性空间中)的渲染方法是:

  • 为了在暗的地方获得更好的精确度,把输入颜色贴图存储在 gamma 空间(漫反射、高光等)中。这些贴图使用 sRGB 读取(D3D9 中的 D3DSAMP_SRGBTEXTURE)进行采样,它通过使用图形硬件将 gamma 空间转换为线性空间。这由 SRGB UTexture 属性控制。
  • 只要我们有了线性空间颜色,便可以在各种光照等式中使用它,从而获得期望的线性结果。
  • 场景颜色渲染目标存储线性颜色。这是很重要的,因为它意味着 alpha 混合发生在线性空间中。如果我们把场景颜色存储在 gamma 空间中,alpha 混合将会发生在那个颜色空间中,那么您获得结果和您期望的结果会相差很远。在线性空间中存储场景颜色的劣势是它需要非常高的精确度,为了防止在暗处出现条带,需要一个 FP 16 的渲染目标。
  • 在后期处理链的尾部,在把场景颜色写入到每个像素的8位的渲染目标/缓存之前就对线性场景颜色进行了 Gamma 校正。这是标准的 gamma 校正,用于弥补普通显示器的非线性响应。如果在后期处理链中没有 UberPostProcess 节点,这个过程发生在 UberPostProcessBlendPixelShader.usf 或 GammaCorrectionPixelShader.usf 中。

有一个例外是,由于先前版本的遗传原因,目前 UI 混合在 gamma 空间中。

移动设备上的 Gamma


从 2011 年 6 月起

Gamma 校正在允许通过整个平台上的一致光照创建关卡和内容的移动设备上受支持。

mobile_gamma_results.jpg

要启用移动设备 Gamma 校正

默认情况下不会启用移动设备平台上的 Gamma 校正。要利用移动设备游戏的 gamma 校正,请启用您的地图的 World Properties(世界属性) 中的 Use Gamma Correction(使用 Gamma 校正) 属性。

gamma_enabled.jpg

性能注意事项

移动设备上的 Gamma 校正可能会对性能产生非常明显的影响。它主要指的是一种可以在以后的移动设备上使用的功能。当前。iPad 2 是唯一一种真正可以使用 gamma 校正运行游戏的设备。