4

I'm implementing a simple Lamberitan BRDF in GLSL, using a point light source. My fragment shader simply returns light_colour * 1.0/PI * cosine, which should model a fully diffuse white material.

However, it looks rather dark... If I have a point light with colour (1,1,1), and no attenuation with distance, the maximum brightness of the material (at normal incidence) will be 1/3 (dark grey).

Is this just because I am using a physically incorrect point light with zero size? Is there any "correct" value for the light colour in this case, if I want the surface to be white at its brightest parts?

Supernormal
  • 480
  • 2
  • 9

1 Answers1

2

It doesn’t matter that it’s a point light; the 1/π normalization factor is what’s causing your surface to be 1/π as bright as you’d like it to be. You can either up your light intensity so the maximum brightness is π or just get rid of the normalization factor. There’s a good article with some notes about this and how it interacts with more complex lighting techniques here.

Noah Witherspoon
  • 2,062
  • 10
  • 21