Hey, it has been a little while.
I was remaking some of the volumetric light effects I have, and came across this little CryEngine tutorial below. The article says you can create volumetric light for pointlights without needing a shadowMap. Really?
Unless I'm missing something, there are 2 ways to do volumetric lighting in general:
A- Raymarch through a volume, for each position test if that coordinate would be litten or not, by using a shadowMap test
B- Post-screen FX: Render lightsources to a buffer, generate blurry streaks into the direction of that light
Possibly that tutorial uses method B, which is very cheap but doesn't work very well as soon as the lightsource is invisible for the camera (= nothing to smear out). But maybe there are some other smart tricks nowadays?
Furthermore, I believe UDK has some sort of volumes you can use for well, a volumetric effect (render a 3D texture, local fog, et cetera). So you would place a cube or something, and then a shader renders the "inside". I assume that works with raymarching as well. But how to determine where to start or end the ray?
With the lightshafts, I render the backsides of a light volume (a cone or sphere for example). Then a ray flies from the camera towards the backside. I can skip the gap between the camera and the actual volume a bit by approximating where the volume (foreground triangles) could start, but I still have to test for each sample if it really falls inside the volume.
It works, but I bet there are faster/smarter ways. Maybe by rendering both fore- and backsides to a buffer so I have 2 coordinates? But that won't work very well if volumes overlap each other...
Edited by spek, 01 February 2014 - 11:02 AM.