我正在尝试在用C语言编写的光线跟踪器中实现不同类型的光源。我已经成功实现了点光源,点光源,定向光源和矩形区域光源。
对于矩形区域光,我在空间中定义了两个向量(U和V),并使用它们移动到它们形成的虚拟(定界)矩形中。 根据光的强度,我在矩形上进行几个采样,然后计算到达一个点的光量,就好像每个采样都是一个点光源。
使用矩形很容易找到各种样本的位置,但是当我尝试使用圆盘灯进行相同操作时,事情变得很复杂。 我发现有关此方面的文档很少,而且大多数文档已经使用现成的函数来实现。 我发现的唯一有趣的事情是此文档(https://graphics.pixar.com/library/DiskLightSampling/paper.pdf),但是我无法利用它。
您知道如何使用向量运算来帮助我达到下图的类似结果吗? (例如,具有圆盘的原点,方向,半径和样本数)
在这方面的任何建议或文档都会对我有很大帮助。