翻译15 Unity Deferred Lights - 延迟光照

自定义灯光渲染
解码LDR颜色
增加独立Pass渲染光
支持方向光、点光源、聚光灯
手动采样阴影纹理
Unity 5.6.6f1

1 Light Shader

在G-Buffers填充完毕后,然后渲染光。本篇先介绍Unity是如何渲染光,以及实现自己Shader的光渲染。在Edit / Project Settings / Graphics 去掉默认的Shader。

1.1 Using a Custom Shader

每个deferred光都是在一个独立的Pass修改屏幕图像(后处理Image)完成渲染。创建一个Shader然后指定到Built-In shader settings

image

图1 修改内置的Shader

1.2 A Second Pass

修改之后,编辑器大量报错.

image

图2 least 2 passes

先简单复制第一个Pass解决错误,结果是屏幕内除了天空盒外所有物体被渲染成黑色了。这是因为使用了stencil-buffer。

报错的原因:为什么需要第二个Pass?
    当HDR禁用时,光照数据会被使用对数编码计算,然后在(第二个)最终的pass解码该数据。所以必须要增加Pass。当禁用HDR时就能调用第二个Pass,但此时天空也变黑了。

1.3 Avoiding the Sky

当在LDR(HDR禁用)模式,天空变黑了。这是因为转换过程中没有正确使用stencil-buffer模板掩码。在第二个Pass配置:应该只渲染不属于背景的片段,可通过_StencilNonBackground提供适当的模板值。

扫描二维码关注公众号,回复: 11220839 查看本文章
Pass
{
    Stencil
    {
        Ref[_StencilNonBackground]
        ReadMask[_StencilNonBackground]
        CompBack Equal
        CompFront Equal
    }
}


1.4 Converting Colors

2 Directional Lights

2.1 G-Buffer UV Coordinates

2.2 World Position

2.3 Reading G-Buffer Data

2.4 Computing BRDF

2.5 Configuring the Light

2.6 Shadows

2.7 Fading Shadows

2.8 Light Cookies

2.9 Supporting LDR

3 Spotlights

3.1 Drawing a Pyramid

3.2 Supporting Multiple Light Types

3.3 World Position Agin

3.4 Cookie Attenuation

3.5 Distance Attenuation

3.6 Shadows

4 Point Lights

4.1 Shadows

4.2 Cookies

4.3 Skipping Shadows

猜你喜欢

转载自www.cnblogs.com/baolong-chen/p/12914812.html
今日推荐