Wolfenstein: Enemy Territory Documentation © 2003 Splash Damage, Ltd. All Rights Reserved. |
![]() |
One key feature of foliage is that it will fade out over distance, but this can cause a problem looking at players at a distance. It is suggested that additional trees and tall bushes are added to the landscape to offer other forms of permanent cover.
When creating foliage, there are 3 things to set up: the foliage model, the foliage model's shader(s), and changes to any existing shader where foliage is desired on.
Foliage is compiled into the BSP hence it is static . If you need to change the foliage in your map, it must be recompiled. This is done for performance reasons -- when foliage is loaded by Enemy Territory it is compiled into a list for fast rendering.
To compile foliage into a map, SDMap2 (Q3Map2) 2.3.32 or higher is required.
Adding Foliage to Existing Shaders
There is a new shader directive 'q3map_foliage' that specifies how SDMap2
applies foliage to a surface. It takes this form:
q3map_foliage <model> <scale> <density> <odds> <use
inverse alpha> q3map_foliage models/foliage/grass_5.md3 1.0 16 0.025 0 |
model: | models/foliage/grass_5.md3 |
scale: | 1.0. This is normal size, 0.5 would be half size, 2.0 would be double |
density: | T16 units. This is the smallest chunk Q3Map will divide a surface up into before it tries to place a foliage instance. |
odds: | 0.025. This means that a random 2.5% of the potential spots for foliage will be placed. Typically you want to use small values for this; otherwise you will end up with ridiculously high polygon counts. |
inverse alpha: | 0. this means to use the straight vertex alpha as a scaling factor against the odds of appearing. This is so that terrain shaders with multiple blending layers can have different foliage on each style and have them fade/blend properly together. |
If you have brush on terrain0 and grass on terrain1, then the blend shader would have two q3map_foliage directives like this:
q3map_foliage models/foliage/brush.md3 1.0 16 0.025 1 q3map_foliage models/foliage/grass_5.md3 1.0 16 0.025 0 |
Where the higher-numbered terrain layer/shader uses normal vertex alpha to modulate the odds-of-occurring and the lower-numbered layer uses inverse alpha.
Creating a Foliage Model
Foliage models should be kept simple and small. Since they're entirely
decorative and non-solid, you should avoid making a foliage model that looks as
if it could block the player.
For best results, make your models in Max or Maya as a single object (multiple objects will slow down rendering) with a single texture/shader, and try to keep the polygon count as low as possible. Our initial test foliage models were only 6 triangles apiece. When there are a few thousand foliage instances on-screen, the small numbers can add up, so be thrifty.
Foliage Model Shaders
models/foliage/grass_5 { surfaceparm trans surfaceparm pointlight cull disable // distanceCull <inner&rt; <outer&rt; <alpha threshold&rt; distanceCull 256 1024 0.4 { map models/foliage/grass_tan.tga alphaFunc GE128 rgbGen exactVertex alphaGen vertex } } |