Unreal3 DirectX 11 中的延迟着色

 

概述

延迟着色是一项可以更加高效地渲染动态光源的技术,但是它的功能设置具有局限性。在着色之前调用传统的 UE3 光照,因为动态光照计算会与场景的网格物体渲染同时进行。采用延迟着色后,渲染这些网格物体的时候会将诸如漫反射颜色这样的材质属性存储在渲染目标(被称为 GBuffer)中,但是没有进行光照。这样,在后续的‘延迟’渲染中,每束光源都会在 Gbuffer 中查找给定像素的材质属性,然后根据这些属性计算光照。

存储在 GBuffer 中的材质属性可视化。

Unreal3 DirectX 11 中的延迟着色_第1张图片

使用延迟着色渲染的光源要比使用直向光照渲染的光源快 10 倍。在 GDC 2011 技术演示中,其中演示的场景里有 123 个动态光源,使用延迟着色对所有光照进行渲染,角色皮肤和头发上的光照除外。注意,延迟着色不会加速动态阴影,它已经在 UE3 中延迟,所以它不允许您具有上百上千的动态阴影光源。

GDC 2011 技术演示的屏幕截图,其中显示了 123 个用来照亮角色和环境的动态光源的漫反射部分。

Unreal3 DirectX 11 中的延迟着色_第2张图片

GDC 2011 技术演示的屏幕截图,其中使用延迟着色照亮的像素已经被涂抹为绿色。

Unreal3 DirectX 11 中的延迟着色_第3张图片

大体说来,延迟着色的目的是进行透明优化使其可以与标准直向光照结合使用。目前还没有可以显示场景中哪些部分使用延迟着色以及哪些部分使用直向渲染的工具,但是这些事实上很有用,我们计划添加此类工具。

限制

目前,仅在满足以下条件后使用延迟着色:

材质是透明的,使用的是 Phong 光照模式,没有使用次表面散射网格物体使用的是其中一个受支持的光照通道 (Dynamic, Cinematic 1-3)光源是一个可移动的点,使用其中一个受支持的光照通道 (Dynamic, Cinematic 1-3) 的点光源或方向型光源

此外,在使用延迟着色照亮的情况下材质属性会受到限制:

材质漫反射值限定在 0 到 1 之间材质高光值限定在 0 到 1 之间材质高光强度限定在 0 到 500 之间

过场动画光照

通常使用光照通道进行过场动画光照以控制哪些光源作用于哪些对象,其中有一组单独的光源作用于环境中的过场动画角色。角色和环境光源仍然可以延迟进行渲染,前提是只使用了 Dynamic 和 Cinematic 1-3 光照通道。

此外,使用 bNonModulatedSelfShadowing 或 bSelfShadowOnly 的光源具有使用延迟着色的快速方法。


你可能感兴趣的:(Unreal3 DirectX 11 中的延迟着色)