POV-Ray : Newsgroups : povray.off-topic : This is another "free" unbiased engine: Indigo Render : Re: This is another "free" unbiased engine: Indigo Render Server Time
11 Oct 2024 15:21:35 EDT (-0400)
  Re: This is another "free" unbiased engine: Indigo Render  
From: Darren New
Date: 28 Oct 2007 17:16:36
Message: <47250a44@news.povray.org>
Warp wrote:
> it seemed clear to me that you were talking about the lightmap resolution.

Given your definition of lightmap, yes, I think that's what I was 
talking about. When I learned it, it was with the term "chips", which 
were basically 3D polygons in space, each of which had a particular 
reflectivity spectrum and emission spectrum (for glowing places like 
lightbulbs).

>   The basic radiosity algorithm is basically calculating the illumination
> of surfaces into lightmaps (which can be applied to those surfaces).

Yes. Good so far.

> A lightmap is basically just an image map, but instead of telling the
> color of the surface at that point (which is something a texture map does)
> it tells the lighting (ie. brightness and coloration) of the surface at
> that point. A rendering engine filters the texture map with the light map
> in order to get the final surface color.

The version I learned had each chip having a particular color. There 
weren't any surfaces big enough to apply a texture to. You applied the 
texture to the wall, and the resolution of the texture gave you the 
resolution of the chips, basically.

>   Radiosity is an algorithm for calculating such lightmaps. For each pixel
> in the lightmap, the "camera" is put onto the surface of the object
> corresponding to that lightmap pixel, facing outwards, and the half-world
> seen from that point of view is averaged into that lightmap pixel. This is
> done multiple times in order to get diffuse inter-reflection of light
> between surfaces.

Hmmmm... What you describe might be isomorphic to what I learned. What I 
remember is this:

You start with your 3D surface and break it down into "chips": 
triangles, for convenience, each with a normal and an 
emissive/reflective color.

Then, for each chip, you calculate how much of each other chip it can 
see, and at what angle, and add the reflection of that into the chip 
under consideration.

The nice thing was you could do this with one giant matrix multiply (one 
row and column for each chip) with everything but the diagonal being 
zero to start with (IIRC). And once you've taken it to the precision you 
want, you have the color of each chip, and you can redraw from different 
angles without recalculating the lighting.

The bad thing, of course, is that you don't have reflection because each 
chip's contribution is 100% diffuse over the surface of that chip.


And, having written that, yes, I think what you described and what I 
described are describing the same thing.

I think maybe your "lightmap bitmap" concept is assigning one pixel of a 
bitmap to each of the "chips" in the algorithm I know.

I was thinking it could be adaptive because if you made some chips 
larger (like, a smooth plain wall with inch-square chips) and some chips 
smaller (like the surfaces of the paintings on the walls) your matrix 
would be smaller. If you're already assuming you're calculating a bitmap 
to be layered over a surface, it would be difficult to have 
variable-sized pixels in it.

>   The great thing about radiosity is that calculating the lightmaps can
> be done with 3D hardware, making it quite fast (although still not
> real-time).

Yeah, it seemed the kind of algorithm that one could put in hardware 
rather easily.

-- 
   Darren New / San Diego, CA, USA (PST)
     Remember the good old days, when we
     used to complain about cryptography
     being export-restricted?


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.