Java 光线跟踪器中的光衰减

Java 光线跟踪器中的光衰减,java,raytracing,light,Java,Raytracing,Light,我正在写一个光线跟踪器,但是我有一些问题,光线是如何随着到光源的距离而衰减的。 似乎距离的值太高了,所以当我将它们平方,然后将强度除以它们时,我得到的只是一个黑屏。 我将如何改变像素上光源的不敏感度,而不使其覆盖场景。现在我的代码是 finalColour.r += (diffuseColour.r * light.intensity.r * x /(distance*distance)); finalColour.g += (diffuseColour.g * light.in

我正在写一个光线跟踪器,但是我有一些问题,光线是如何随着到光源的距离而衰减的。 似乎距离的值太高了,所以当我将它们平方,然后将强度除以它们时,我得到的只是一个黑屏。 我将如何改变像素上光源的不敏感度,而不使其覆盖场景。现在我的代码是

    finalColour.r += (diffuseColour.r * light.intensity.r * x /(distance*distance));
    finalColour.g += (diffuseColour.g * light.intensity.g * x /(distance*distance));
    finalColour.b += (diffuseColour.b * light.intensity.b * x /(distance*distance));

什么是x?数学看起来是正确的。您确定场景的配置没有问题:使灯光强度/漫反射颜色更高,或使距离更小。或者,当光线衰减为距离的平方为物理准确度时,您不需要在光线跟踪器中使用它。您可以将非平方距离用于不太真实但更明亮的场景。

x是朗伯系数。我认为问题是,RGB和x都在0-1的范围内,而距离是实际距离,所以应该在100到1000的范围内。你可能需要使
光强度
更大