Original Post
Hi, I'm rendering with lightMaps (with the radiosity technique for normalMapping from Valve) for quite some time now. That all works, but I'm not very pleased with the detail quality, and the time needed to create such a lightMap. I have enough detail (enough pixels per surface) for acceptable quality lightMaps, but my scenes are small. For example, now I have 2 chambers from ~10 x 10 metres, and a couple of hallways between them. And there are some pipes and other details inside. But when I build larger / more detailed scenes, I'm afraid the quality is just too low. I know the lightMap detail in old games such Quake 2 and Halflife 1 was low, but then again, their scenes could be relative big. So, I'm looking for some tricks and tips to get more out of my lightMaps. Compiling: When I compile my scene, it will calculate atlas texture coordinates for 1 texture. Yes, all the surfaces are placed on only 1 texture. Don't know if that's a good idea for the detail, but its nice for rendering and stuff since the lightMap texture only needs to be activated once. I know its important to make good usage of the available space inside the texture, so I try to spread out the surfaces as good as possible. Probably this can be done better (gaps between polygons, complex shapes sometimes take too much space), but its not that bad either if I look at the percentage filled. I wonder if I get that much more detail if the lightMap texture was ~100% used anyway. To make it a little bit better, I can give materials an "importance" factor. For example, ceilings ussually don't catch that much light, so they take less space than the average wall in the lightMap. The lightMap itself: When the compiling is done, I generate the lightMap. I can adjust the lightMap resolution, but I ussually take 2048 x 1024. Well, its actually a little bit smaller. The "normalMapping radiosity" technique places 3 lightMaps in one texture next to each other (3 light directions, each with its own lightMap), so 1 lightMap actually has a resolution of 682 x 1024 pixels. I have no idea if that's enough, but I wonder how old games with larger scenes or games such as Halflife2 keep sufficient detail in their lightMaps, because my lightMap certainly lacks detail when the scene gets bigger. And another annyoing things, is that rendering a lightMap with this size, takes me nearly 8 hours! I wonder how the generators in editors such as Valve Hammer do it much faster. I don't use ray-tracing for the generation, I render the world for each patch and measure how much light is incoming. For the radiosity part, I ussually take 3 or 4 passes. The scene is rendered on a low resolution and simple, but it still takes awfull much time! Ok, the scene is also rendered on a FBO with a floating point format (the lightMap is "HDR", not limited to 0..255 values), so that makes the rendering somewhat slower. Another important point is that the final pass is rendered actually 3 times. Like I said, there are 3 lightMaps for the "radiosity normalMapping" technique. Each patch needs to measure the incoming light from 3 different directions. Maybe this could be done smarter. What am I doing wrong compared to other games that make use of lightMaps? Greetings, Ow, excuse if I don't reply in the next days, probably I'm far away from internet! Rick