1

我目前正在尝试实现锥形跟踪软阴影,如本文第 8.3.1 节所述

我在 3D 纹理中获得了分层 mip 映射体素结构,通过在片段着色器中绘制 Sponza 场景进行体素化,并将“体素片段”存储到 3D 纹理中。mip-mapping 在计算着色器中完成。

作者解释了如何为点光源和区域光源创建柔和的阴影,这很容易理解,但他没有解释 Sponza 场景使用的定向光源。

对于点光源,锥体是从点光源开始追踪的,当它穿过场景的每个部分时,它的半径会增加,在场景中被描述为“体积”。但是,定向灯没有特定的光源点,只有一个方向。我如何将这个概念转化为与定向灯一起使用?圆锥体必须是不同的形状,不是吗?

4

3 回答 3

0

如果我太天真了,请原谅我,但也许你可以为场景计算一个边界球体,并考虑一个以相同半径穿过球体中心的单个圆柱体,根据光的方向定向。然后您继续使用点光源(或聚光灯),但保持半径不变(即,圆柱体而不是圆锥体)。

于 2013-01-20T03:13:33.570 回答
0

如果尚未修复,您可以尝试从查询点(所以一个锥形)行进,直到到达 3D 纹理的边缘。由于纹理可能具有较大的尺寸,您可以考虑使用可参数化的步长进行行进。要生成软阴影,请在查询点附近生成额外的随机样本。

于 2016-06-28T18:47:34.030 回答
0

在(无限)定向光的情况下,您希望将一个紧密的锥形跟踪到光并累积不透明度。如果不透明度达到 1.0,它将被完全阻挡。如果圆锥退出场景范围的 AABB,您还可以安全地终止圆锥跟踪并返回遮挡,该遮挡将用于确定有多少阴影落在圆锥的原点。

此处的锥形孔径将控制阴影的柔和程度。

于 2019-12-04T16:41:45.113 回答