I'm currently coding a raytracer. I wonder how to blend a primitive color with a light color. I've seen many combinations.

Some just add the two colors. This gives me very strange results.

Some mutiply each components. It looks ok, but in the primitive is blue ({0, 0, 1}) and the light is red ({1, 0, 0}), it is just black. Is it the normal behavior ?

I've also seen the screen blending mode (screen(C1, C2) = C1 + C2 - C1 * C2)) which is more logical for me since in the above case, colors will actually blend.

Same question for reflected rays colors : how to blend them with the local color ?

Bonus question: should a point on a primitive that it not illuminated be black ? I've seen stuff like "the half of the color".

Edit
Report