shader_transparent_generic
The shader_transparent_generic tag is a powerful transparent shader used for jackal shields, teleporters, control panels, Cortana, and more.
Instances of this tag were replaced with shader_transparent_chicago and shader_transparent_chicago_extended when the game was ported to PC, but these shader types cannot fully replicate original appearances. Only the original Xbox version of the game and H1A in MCC support this shader; it is invisible in the Gearbox PC port.
For H1CE and H1PC, most of these shaders can be accurately recreated using extra layers and/or 4x4 "tint" bitmaps for recoloring the output of the shader.
Some other shaders will need small 256x4 gradient tint bitmaps that are animated to slide back and forth to tint the shaders output a blend of two different colors.
The most complex of the shaders can only be recreated using very large animated bitmaps that have had all their output pre-computed for each frame of the animation, however these can't be timed properly and are inefficient.
The Refined project attempts to recreate classic Xbox visuals by improving transparent shaders using these techniques.
| Function/global | Type |
|---|
| (rasterizer_active_camouflage_multipass )
Toggles whether or not transparent shaders are shown through active camouflage. If disabled, shaders like glass or lights will not be visible through a camouflaged unit. | Global |
| (rasterizer_model_transparents )
Toggles the rendering of transparent shaders in models. For example, the Warthog's windshield. | Global |
| Field | Type | Comments |
|---|
| uint8 |
| bitfield |
| Flag | Mask | Comments |
|---|
| 0x1 | | | 0x2 | Makes the shader render with a slight depth bias toward the camera to prevent Z-fighting. Use this flag for light planes that will be placed at very small offsets from the surface behind them. Avoid using shaders with this flag where they're placed behind greates or embedded within geometric details, as it will sometimes sort incorrectly against them when viewed at a distance. | | 0x4 | | | 0x8 | | | 0x10 | | | 0x20 | | | 0x40 | | | 0x80 | |
|
| enum |
| Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | |
|
| enum |
| Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | |
|
| enum |
| Option | Value | Comments |
|---|
| 0x0 | The faces do not fade by viewing angle. | | 0x1 | The faces fade out when viewed edge-on. | | 0x2 | The faces fade out when viewed flat to the camera. |
|
| enum |
| Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | |
|
| float |
| TagDependency: lens_flare |
| Block |
| Field | Type | Comments |
|---|
| TagDependency: shader |
|
| Block |
| Field | Type | Comments |
|---|
| bitfield | | Flag | Mask | Comments |
|---|
| 0x1 | | | 0x2 | | | 0x4 | |
| | float | | float | | float | | float | | float | | float | | TagDependency: bitmap | | enum? | | enum | | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | | | 0x8 | | | 0x9 | | | 0xA | | | 0xB | |
| | float | | float | | float | | enum? | | enum? | | float | | float | | float | | enum? | | enum? | | float | | float | | float | | Point2D | | Field | Type | Comments |
|---|
| float | | float |
|
|
| Block |
| Field | Type | Comments |
|---|
| bitfield | | Flag | Mask | Comments |
|---|
| 0x1 | | | 0x2 | | | 0x4 | |
| | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | |
| | enum? | | float | | ColorARGB | | Field | Type | Comments |
|---|
| float | | float | | float | | float |
| | ColorARGB? | | ColorARGB? | | enum | | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | | | 0x8 | | | 0x9 | | | 0xA | | | 0xB | | | 0xC | | | 0xD | | | 0xE | | | 0xF | | | 0x10 | | | 0x11 | | | 0x12 | | | 0x13 | | | 0x14 | | | 0x15 | | | 0x16 | | | 0x17 | | | 0x18 | |
| | enum | | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | |
| | enum? | | enum? | | enum? | | enum? | | enum? | | enum? | | enum | | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | | | 0x8 | |
| | enum | | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | |
| | enum? | | enum? | | enum? | | enum | | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | |
| | enum | | Option | Value | Comments |
|---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | | | 0x8 | | | 0x9 | | | 0xA | | | 0xB | | | 0xC | | | 0xD | | | 0xE | | | 0xF | | | 0x10 | | | 0x11 | | | 0x12 | | | 0x13 | | | 0x14 | | | 0x15 | | | 0x16 | | | 0x17 | | | 0x18 | |
| | enum? | | enum? | | enum? | | enum? | | enum? | | enum? | | enum? | | enum? | | enum? | | enum? | | enum? |
|
Thanks to the following individuals for their research or contributions to this topic:
- Kavawuvi (Invader tag definitions)
- MosesOfEgypt (Tag structure research)