Skip to content

Vertex colours and tint palettes

RAGEMaterialsApplies toGTA V

Vertex colours are shader inputs with several meanings. Treating every RGB channel as a direct albedo multiplier does not reproduce the sampled Enhanced effects: red and green often control ambient occlusion, while blue can select a palette column or contribute to emission. Observed · shader inspection

Input Use Confidence
COLOR0.a Opacity is texture alpha times vertex alpha in 150 of the 336 effects scanned Observed · shader disassembly
COLOR0.r/g Natural/artificial ambient-occlusion inputs in sampled deferred effects Observed · shader evaluation
COLOR0.b Palette column in common _tnt effects Observed · vertex shader inspection
COLOR1.b Palette column in some tree effects Observed · vertex shader inspection
COLOR1.rgb Four-layer terrain blend inputs Observed · pixel shader inspection

Tinted vertex shaders point-sample TintPaletteTex at a column given by the selected colour byte divided by 255. The entity’s tint chooses the row; rows beyond the palette clamp to its edge. The sampled colour multiplies the surface and interpolates between vertices across a triangle. Observed

Palette tint can therefore vary within one primitive. A single mean colour or a single palette column does not describe the authored gradient. Inferred

The sampled cpv_only G-buffer shader writes white albedo; vertex colour supplies ambient occlusion. A grey colour substitution changes the surface colour rather than reproducing that shader. Observed · shader disassembly

In normal_spec_detail, albedo is DiffuseTex * (1 - detailSettings.x * specA * (d1 + d2 - 1)) and vertex colour again supplies only ambient occlusion. Observed · shader disassembly Here specA is the specular map’s alpha and d1, d2 are the two detail-map samples. Inferred

*_geomnightonly vertex shaders collapse the geometry during the day. The stored mesh remains present in the file; its daytime disappearance is shader behaviour. Observed · vertex shader inspection

The sampled deferred emissive shader computes RT3.z = saturate(COLOR0.b * DiffuseTex.a * EmissiveMultiplier * engineGlobal / 16), with colour inputs normalized. Its forward alpha technique adds the corresponding emission to lighting and uses DiffuseTex.a * COLOR0.a for alpha. Observed · shader disassembly

The emissive vertex shader applies engine UV-animation rows to (u,v,1). A material texture and static UVs alone do not specify its animated appearance. Observed · shader disassembly

The foam effects water_terrainfoam and water_riverfoam produce white foam with scrolling texture opacity driven by engine time and globals; their names do not imply a water-surface shading model. Observed · shader disassembly