- May 31, 2013
- 1,021
- 852
September 10th of last year Valve added the ability to generate lightmaps for static props in Hammer when they began artpassing Asteroid. I don't think a whole lot of people know about it still, so I thought I'd write a little guide on it. If you don't know what lightmaps are, read about them on the VDC or in Shmitz's guide.
So you've compiled with -staticproplighting, -staticproppolys, and -textureshadows. You've reset the lighting origin and disabled vertex lighting but that one barrel still looks like this:
Pre-Asteroid, you'd just have to delete the prop, try to move it to a lower contrast area, or just suck it up. But now you can generate extremely accurate lighting information per-prop depending on the resolution you set for it - just like on brushes - and make your barrel look more like this:
Generating these lightmaps in Hammer is simple:
Now that you've seen the power of prop lightmaps, you may be asking yourself: "Why wouldn't I just use this everywhere?" The answer lies in this famous quote by Voltaire: with great power comes great responsibility. Or in this case, great amounts of file size.
Each prop's lightmap data is stored as a .ppl file in the root directory of your compiled .bsp. The file size added from each prop you give lightmaps is double whatever resolution you set it to. If you set your prop to have lightmaps at 128x128, then the filespace used will be 256.5kb (it seems to add .5kb on any resolution for some reason). The resolution appears to be shaded pixels on top of the models' texture, so lower resolutions will just be blurry versions of higher resolutions as the only thing different is the pixel density.
Doesn't seem like much, but after a few props you'll be adding several mb to your map, especially when using higher resolutions. Be smart and only use prop lightmaps on props that are stuck in shadow transitions and in high-traffic areas where they'll be seen a lot. You can generally skip out on props that are in non-playable areas where people won't look at them too much. Also, UVs with shared space will break lightmaps and cause them to do weird things (image courtesy of Fantasmos), so if something like this appears in your compile you'll just have to disable the lightmaps as getting the modeler to remove the shared space is usually not going to be worth the trouble. Models compiled with phong shading also seem to not respond at all to lightmaps no matter what resolution you give them.
Here is a comparison of various lightmap resolutions used on a few corrugated sheetmetal props in Goldtooth. Starting from 32x32, I increased all 3 props at the same rate.
In this particular example we can also see that higher resolutions won't necessarily look natural, especially when coinciding with brushes with lower res lightmaps.
Also important to note is that compiling with prop lightmaps significantly increases compile time. With just these 3 props, a 32x32 full compile of this cordoned section of Goldtooth with -staticproplighting, -staticproppolys, -textureshadows and LDR+HDR (-both) took 1 minute 58 seconds in total. At 1024x1024 each, the total was 3 minutes 30 seconds. I changed nothing except the lightmap resolutions between compiles.
So you've compiled with -staticproplighting, -staticproppolys, and -textureshadows. You've reset the lighting origin and disabled vertex lighting but that one barrel still looks like this:

Pre-Asteroid, you'd just have to delete the prop, try to move it to a lower contrast area, or just suck it up. But now you can generate extremely accurate lighting information per-prop depending on the resolution you set for it - just like on brushes - and make your barrel look more like this:

Generating these lightmaps in Hammer is simple:
- Select your prop and open its properties.
- Set "Generate (and use) lightmaps for this static prop" to yes.
- Set the X and Y resolutions to a power of 2 value (you can set the values to be different, but there is not really any reason to)
*note - the default lightmap resolution for props is 32x32, increasing the value will increase the accuracy of the lighting calculated
Now that you've seen the power of prop lightmaps, you may be asking yourself: "Why wouldn't I just use this everywhere?" The answer lies in this famous quote by Voltaire: with great power comes great responsibility. Or in this case, great amounts of file size.
Each prop's lightmap data is stored as a .ppl file in the root directory of your compiled .bsp. The file size added from each prop you give lightmaps is double whatever resolution you set it to. If you set your prop to have lightmaps at 128x128, then the filespace used will be 256.5kb (it seems to add .5kb on any resolution for some reason). The resolution appears to be shaded pixels on top of the models' texture, so lower resolutions will just be blurry versions of higher resolutions as the only thing different is the pixel density.

Doesn't seem like much, but after a few props you'll be adding several mb to your map, especially when using higher resolutions. Be smart and only use prop lightmaps on props that are stuck in shadow transitions and in high-traffic areas where they'll be seen a lot. You can generally skip out on props that are in non-playable areas where people won't look at them too much. Also, UVs with shared space will break lightmaps and cause them to do weird things (image courtesy of Fantasmos), so if something like this appears in your compile you'll just have to disable the lightmaps as getting the modeler to remove the shared space is usually not going to be worth the trouble. Models compiled with phong shading also seem to not respond at all to lightmaps no matter what resolution you give them.
Here is a comparison of various lightmap resolutions used on a few corrugated sheetmetal props in Goldtooth. Starting from 32x32, I increased all 3 props at the same rate.


In this particular example we can also see that higher resolutions won't necessarily look natural, especially when coinciding with brushes with lower res lightmaps.
Also important to note is that compiling with prop lightmaps significantly increases compile time. With just these 3 props, a 32x32 full compile of this cordoned section of Goldtooth with -staticproplighting, -staticproppolys, -textureshadows and LDR+HDR (-both) took 1 minute 58 seconds in total. At 1024x1024 each, the total was 3 minutes 30 seconds. I changed nothing except the lightmap resolutions between compiles.
Last edited: