Graphics PBRT光谱toRGB范围

Graphics PBRT光谱toRGB范围,graphics,rendering,raytracing,pbrt,Graphics,Rendering,Raytracing,Pbrt,出于学术目的,我对PBRT进行了调整,以便它写出有关交叉点的数据和一般路径相关数据(我使用了路径曲面积分器) 然而,在获得某个交点处光谱的RGB值时存在一些困难。很明显,我必须使用ToRGB(float*rgb)处理在交叉点生成的光谱类,但随后观察到的数据有点奇怪。RGB值位于0-1范围之间是有意义的。这种情况似乎经常发生,但有时我也会看到三胞胎,比如 (1.851088, 0.882869, 0.772866) 仔细检查后发现,我的一组大约400.000个交叉点的RGB最大值分别为3.77

出于学术目的,我对PBRT进行了调整,以便它写出有关交叉点的数据和一般路径相关数据(我使用了路径曲面积分器)

然而,在获得某个交点处光谱的RGB值时存在一些困难。很明显,我必须使用
ToRGB(float*rgb)
处理在交叉点生成的光谱类,但随后观察到的数据有点奇怪。RGB值位于0-1范围之间是有意义的。这种情况似乎经常发生,但有时我也会看到三胞胎,比如

(1.851088, 0.882869, 0.772866)
仔细检查后发现,我的一组大约400.000个交叉点的RGB最大值分别为3.77 2.00和1.76。下限似乎是正确的,因为它们接近于零。所以问题是PBRT使用的范围是什么,这样我可以将它转换为0.0-1.0


谢谢你

我还没有读过PBRT,也没有详细看过它的源代码,但我不完全相信你的前提是

RGB值位于0-1范围之间是有意义的

实际上,任何一点的光强度都可以是任意大的;太阳肯定比你的显示器能显示的最亮像素还要亮。所以我假设PBRT光谱可以是任意强度的。在这种情况下,要将其映射到有限灯光模型,可以缩小值的比例,或将其钳制为1.0(或两者的某种组合)

缩小尺寸类似于缩小相机的光圈或缩小瞳孔


钳制这些值可以使颜色“褪色”,就像一张太阳数码照片可能有许多像素都与
1.0、1.0、1.0

相关联一样。谢谢,你说得很好。事实上,PBRT通常处理其他光谱,因为它不太受特定于监视器的图形原语的约束,但表示RGB对计算机图形有好处,因为它是通用的。这就是为什么我认为他们会把它缩小到这个“标准化”的RGB范围。我将在不久的将来尝试一下,看看RGB值是否有意义。谢谢,这似乎很管用。我觉得有点傻,这是很明显的。再次感谢!