Lambertian Shader не работает
Я пытаюсь сделать ламбертовский шейдер для моего трассировщика лучей, но у меня проблемы. Сцена все еще кажется затененной, лишь немного темнее. Как на этой картинке
Это мой класс шейдеров:
public class LambertianShader {
public Colour diffuseColour;
public LambertianShader(Colour diffuseColour){
this.diffuseColour = diffuseColour;
}
public Colour shade(Intersection intersection, Light light){
Vector3D lightDirection = light.location.subtract(intersection.point);
lightDirection.normalise();
Colour finalColour = new Colour();
float lambCoef = (float) intersection.normal.dot(lightDirection);
if(lambCoef>0){
finalColour.r = Math.max(0.0f, diffuseColour.r * lambCoef * light.intensity.r);
finalColour.g = Math.max(0.0f, diffuseColour.g * lambCoef * light.intensity.g);
finalColour.b = Math.max(0.0f, diffuseColour.b * lambCoef * light.intensity.b);
}
return finalColour;
}
}
Если вы хотите увидеть больше моего кода, дайте мне знать.