I am wondering how professional light visualizer software (like Capture Argo - WYSIWYG - Realizzer - LightConverse) project the lights on the objects (like stage, floor, people), even projecting the various gobos (shapes).

Here are some screenshots:



How do they calculate the various intersections, and project beams for so many light sources in an efficient way? What's the simplest way?

I assume they are projecting a texture but how?

  • 3
    $\begingroup$ These "textures" are called light cookies, which essentially is a texture which shows the strength of light on the projected area. This is actually really simple to implement. When the light attenuation is calculated in the shader, it looks up the cookie texture and returns the strength (which can be stored in the R, G, B, or A channels). $\endgroup$
    – EvilTak
    Jan 3 '16 at 13:13
  • $\begingroup$ I'm not really sure what part of this you don't understand. It's a relatively simple lighting environment and doesn't present any problems for a real-time renderer. Is it the way lights overlap that seems hard, or the shapes of the lights, or something else completely? $\endgroup$
    – Dan Hulme
    Jan 6 '16 at 10:13
  • $\begingroup$ The problem for me is projecting the actual beam, like if the light is passing through fog, from the source to the floor... The simplest way i think would be "projecting" a fake beam, a cone of a fixed lenght, made of triangles, from the lens of the light, towards the direction in which the light is facing, with some alpha blending. $\endgroup$ Feb 17 '16 at 17:28
  • $\begingroup$ But this way the beam would pass through the objects, so i need a way to stop it at the first intersection... a very simple way would be raytracing the distance from the center of the lens to the floor, and then making the cone of that lenght. but its not a good way... $\endgroup$ Feb 17 '16 at 17:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.