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.

Replication using a Chicago shader

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.

Related HaloScript

Function/global

Type

(rasterizer_active_camouflage_multipass [boolean])

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 [boolean])

Toggles the rendering of transparent shaders in models. For example, the Warthog's windshield.

Global

Structure and fields

FieldTypeComments
numeric counter limituint8
shader transparent generic flagsbitfield
FlagMaskComments
alpha tested0x1
decal0x2
two sided0x4
first map is in screenspace0x8
draw before water0x10
ignore effect0x20
scale first map with distance0x40
numeric0x80
first map typeenum
OptionValueComments
2d map0x0
first map is reflection cube map0x1
first map is object centered cube map0x2
first map is viewer centered cube map0x3
framebuffer blend functionenum
OptionValueComments
alpha blend0x0
multiply0x1
double multiply0x2
add0x3
subtract0x4
component min0x5
component max0x6
alpha multiply add0x7
framebuffer fade modeenum
OptionValueComments
none0x0
fade when perpendicular0x1
fade when parallel0x2
framebuffer fade sourceenum
OptionValueComments
none0x0
a out0x1
b out0x2
c out0x3
d out0x4
lens flare spacingfloat
  • Unit: world units
lens flareTagDependency: lens_flare
extra layersBlock
  • HEK max count: 4
FieldTypeComments
shaderTagDependency: shader
mapsBlock
  • HEK max count: 4
  • Max: 4
FieldTypeComments
flagsbitfield
FlagMaskComments
unfiltered0x1
u clamped0x2
v clamped0x4
map u scalefloat
map v scalefloat
map u offsetfloat
map v offsetfloat
map rotationfloat
  • Unit: degrees
mapmap biasfloat
  • Min: 0
  • Max: 1
mapTagDependency: bitmap
u animation sourceenum?
u animation functionenum
OptionValueComments
one0x0
zero0x1
cosine0x2
cosine variable period0x3
diagonal wave0x4
diagonal wave variable period0x5
slide0x6
slide variable period0x7
noise0x8
jitter0x9
wander0xA
spark0xB
u animation periodfloat
  • Unit: seconds
  • Default: 1
u animation phasefloat
u animation scalefloat
  • Unit: repeats
  • Default: 1
v animation sourceenum?
v animation functionenum?
v animation periodfloat
  • Unit: seconds
  • Default: 1
v animation phasefloat
v animation scalefloat
  • Unit: repeats
  • Default: 1
rotation animation sourceenum?
rotation animation functionenum?
rotation animation periodfloat
  • Unit: seconds
  • Default: 1
rotation animation phasefloat
rotation animation scalefloat
  • Unit: degrees
  • Default: 360
rotation animation centerPoint2D
FieldTypeComments
xfloat
yfloat
stagesBlock
  • HEK max count: 7
  • Max: 7
FieldTypeComments
flagsbitfield
FlagMaskComments
color mux0x1
alpha mux0x2
a out controls color0 animation0x4
color0 sourceenum
OptionValueComments
none0x0
a0x1
b0x2
c0x3
d0x4
color0 animation functionenum?
color0 animation periodfloat
  • Unit: seconds
  • Default: 1
color0 animation lower boundColorARGB
FieldTypeComments
alphafloat
redfloat
greenfloat
bluefloat
color0 animation upper boundColorARGB?
color1ColorARGB?
input aenum
OptionValueComments
zero0x0
one0x1
one half0x2
negative one0x3
negative one half0x4
map color 00x5
map color 10x6
map color 20x7
map color 30x8
vertex color 0 diffuse light0x9
vertex color 1 fade perpendicular0xA
scratch color 00xB
scratch color 10xC
constant color 00xD
constant color 10xE
map alpha 00xF
map alpha 10x10
map alpha 20x11
map alpha 30x12
vertex alpha 0 fade none0x13
vertex alpha 1 fade perpendicular0x14
scratch alpha 00x15
scratch alpha 10x16
constant alpha 00x17
constant alpha 10x18
input a mappingenum
OptionValueComments
clamp x0x0
1 clamp x0x1
20x2
1 20x3
clamp x 1 20x4
1 2 clamp x0x5
x0x6
x 10x7
input benum?
input b mappingenum?
input cenum?
input c mappingenum?
input denum?
input d mappingenum?
output abenum
OptionValueComments
alpha discard0x0
alpha scratch alpha 0 final alpha0x1
alpha scratch alpha 10x2
alpha vertex alpha 0 fog0x3
alpha vertex alpha 10x4
alpha map alpha 00x5
alpha map alpha 10x6
alpha map alpha 20x7
alpha map alpha 30x8
output ab functionenum
OptionValueComments
multiply0x0
dot product0x1
output bcenum?
output cd functionenum?
output ab cd mux sumenum?
output mapping colorenum
OptionValueComments
color identity0x0
color scale by 1 20x1
color scale by 20x2
color scale by 40x3
color bias by 1 20x4
color expand normal0x5
input a alphaenum
OptionValueComments
zero0x0
one0x1
one half0x2
negative one0x3
negative one half0x4
map alpha 00x5
map alpha 10x6
map alpha 20x7
map alpha 30x8
vertex alpha 0 fade none0x9
vertex alpha 1 fade perpendicular0xA
scratch alpha 00xB
scratch alpha 10xC
constant alpha 00xD
constant alpha 10xE
map blue 00xF
map blue 10x10
map blue 20x11
map blue 30x12
vertex blue 0 blue light0x13
vertex blue 1 fade parallel0x14
scratch blue 00x15
scratch blue 10x16
constant blue 00x17
constant blue 10x18
input a mapping alphaenum?
input b alphaenum?
input b mapping alphaenum?
input c alphaenum?
input c mapping alphaenum?
input d alphaenum?
input d mapping alphaenum?
output ab alphaenum?
output cd alphaenum?
output ab cd mux sum alphaenum?
output mapping alphaenum?

Acknowledgements

Thanks to the following individuals for their research or contributions to this topic:

  • Kavawuvi (Invader tag definitions)
  • MosesOfEgypt (Tag structure research)