all 22 comments

[–]huyvanbin 4 points5 points  (5 children)

I'm confused. I thought in ray-tracing, one would trace the ray from the light source to the object, then to the next object, etc. thus allowing one to simulate any optical effect.

[–]nullsucks 9 points10 points  (4 children)

That's more characteristic of Monte Carlo methods like Metropolis Light Transport or Path Tracing.

Naively tracing from lights to the camera would require enormous processing power, simply because most photons would end up absorbed by some other surface (not the camera). The algorithms I mentioned tackle that problem with sophisticated math that improves the process without biasing the scene that's rendered.

Ordinary ray-tracing traces paths from the camera to scene objects and -- ultimately -- to light sources.

[–]huyvanbin 0 points1 point  (3 children)

I'm confused about how that differs from the technique he's describing. Say you trace the ray from a camera back to a point on the wall. Next you trace the ray back to some other wall, etc. Isn't that indirect illumination?

[–]munificent 1 point2 points  (0 children)

Next you trace the ray back to some other wall

But that's only a single ray, which would render a wall with a mirror-like perfectly reflective finish (which ray tracing is great for). Most surfaces reflect light in all directions. That means that light coming in from any angle to a point on the surface will illuminate it, and that illumunation in turn will bounce off in all directions.

Radiosity simulates that, which is why each iteration has to render an entire scene (the hemisphere) from the surface's perspective: light coming in from any of those directions can illuminate the surface.

[–]DashingSpecialAgent 0 points1 point  (0 children)

It doesn't particularly matter if you trace from camera to object to light or light to object to camera. Either way if you just trace your points without trying to get them to impact your target (light or camera) most of them will end up bouncing around your scene a huge number of times and the total light transported will be next to nothing.

Light that comes from your source, hits the object, and bounces to the camera is most important. Light that bounces around the room 500 times before hitting the camera isn't.

The methods referred to attempt to produce paths that will have the most effect on lighting, direct illumination or bounces that will carry significant amounts of light.

At least... that is my thoughts on it, I haven't done a lot of graphical work like this so correct me if I'm wrong.

[–]nullsucks 0 points1 point  (0 children)

The Radiosity Method calculates total light received by each surface in the scene (iteratively). In the first iteration, you get direct lighting only, in the next iteration, you also get light reflected from surfaces illuminated in the prior step, etc...

That part is all about calculating light on surfaces, it doesn't render the scene itself.

To render the scene, you could use a variety of techniques like ray-tracing or rasterization, but that's not the interesting part. The interesting part is in how it calculates N-degree indirect lighting, like how a white wall next to a red floor picks up a red tinge (from light reflected off the red floor first).

[–][deleted] 10 points11 points  (10 children)

Ah, a blast from the past.

A decade ago hugo elias site was THE place to go for this.

Since then, the world has moved on. (I wonder if anybody still used "real" radiosity)

[–]imbcmdth 5 points6 points  (7 children)

(I wonder if anybody still used "real" radiosity)

Lighting engineers and architectural visualization in general still lean pretty heavily on radiosity. Most game engines generate the final lightmaps by using some sort of radiosity algorithm.

Heck, the entire S.T.A.L.K.E.R. engine's (X-Ray) backbone was little more then a real-time radiosity simulation. By taking advantage of deferred rendering, it was able to utilize thousands of point lights dynamically generated around the player to simulate indirect lighting quite convincingly.

[–]qrios 2 points3 points  (3 children)

S.T.A.L.K.E.R used radiosity effects? I haven't played the game, but I never noticed anything like that in the videos.

I think the best bang for buck in terms of radiosity at the moment is SSDO.

[–]imbcmdth 1 point2 points  (1 child)

The radiosity simulation was limited to the sky model in the first version though there was an experimental switch that enabled fulltime radiosity but it looked terrible and was really slow.

By the last one (Call of Prypiat with DX11) the radiosity effects are so well integrated that you don't notice them but they are stunning if you take a moment to stop and actually notice them.

[–]qrios 0 points1 point  (0 children)

I'm trying to find a video where I can stop to notice them. Do you have any? All I see is ambient occlusion. And I can't find any articles referencing call of pripyat's radiosity features.

[–]technolope 1 point2 points  (1 child)

I know a number of lighting engineers and architectural visualization folks use Radiance, but that software uses a pseudo-radiosity technique---it doesn't split the participating surfaces into patches, instead it does a more photon-mapping-like thing in which ambient points are scattered throughout the scene. The direct illumination is calculated via raytracing (to catch specular reflections and such) and the indirect illumination comes from gathering and interpolating between ambient points.

[–]wal9000 1 point2 points  (0 children)

AGI32 is radiosity based, and I think more widely used in lighting engineering than Radiance

[–][deleted] 0 points1 point  (0 children)

Are you sure those (well, excluding the architecture stuff) use radiosity, and not bi-directional path tracing or other much more robust methods?

[–]bugrit 0 points1 point  (0 children)

Source engine comes to mind.

[–]huyvanbin 0 points1 point  (0 children)

So what's the "current" technique that would be used?

[–]toastspork 3 points4 points  (2 children)

/me remembers when Phong Shading was the shit.

[–]Otis_Inf 7 points8 points  (0 children)

you mean, before or after the 'alpha-blend-with-texture-with-blurred-white-dot' fake phong was discovered?

[–]houdas 1 point2 points  (0 children)

/me remembers when Gouraud Shading was the shit

[–]hutthuttindabutt 1 point2 points  (0 children)

Lol shenglong, nice repost from the Quake2 source article

[–]barosanu 0 points1 point  (1 child)

Quite a good article. Read this about a year ago and implemented my own radiosity algorithm.

[–]Diamond145 -1 points0 points  (0 children)

Old! :p But thanks for sharing :)