This article's documentation is for the "GoldSrc" engine. Click here for more information.
Quake1-16px.png

BSP flags (Quake and GoldSrc): Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 7: Line 7:
{| class="wikitable"
{| class="wikitable"
|-
|-
! Flag !! Name !! Dev comment !! Notes
! Bit !! Name !! Dev comment !! Notes
|-
|-
| 0x00000001 || TEX_SPECIAL || sky or slime, no lightmap or 256 subdivision || Surface does not have a lightmap.
| 0x00000001 || TEX_SPECIAL || sky or slime, no lightmap or 256 subdivision || Surface does not have a lightmap.

Revision as of 08:58, 6 June 2024

Icon-under construction-blue.png
This is a draft page. It is a work in progress open to editing by anyone.
Remember to check for any notes left by the tagger at this article's talk page.
Note.pngNote:These aren't actually flags, except for the surface flags; the page title is for consistency so that the tabs work.

Surface flags

Despite having a 32-bit integer available to be used, most flags go unused. Vanilla Quake engines and GoldSrc only use TEX_SPECIAL.

Bit Name Dev comment Notes
0x00000001 TEX_SPECIAL sky or slime, no lightmap or 256 subdivision Surface does not have a lightmap.

Used by Quake QBSP to tell LIGHT to not generate lightmaps for sky and liquid surfaces, which are not subdivided to account for maximum lightmap size (15x15 luxels, or 240x240 texels). ericw-tools additionally uses this on surfaces textured with TRIGGER. GoldSrc QCSG and HLCSG don't use this, instead always subdividing surfaces regardless of if they need ligthmaps. Therefore, QRAD and HLRAD will always lightmap all textured surfaces, unless they are flagged in some other manner, such as using newbspguy newbspguy.

0x00000002 TEX_MISSING johnfitz -- this texinfo does not have a texture Used by fitzquake and derivatives to indicate a missing texture
0x00000800 ??? N/A Used by VERTEXNORMALS BSPX lump to indicate a face that should have smooth shading based upon its vertex normals.

Contents types

Contents are stored as a signed 32-bit integer, and are always negative.

Ambient Types

Ambients are stored as an array of 4 unsigned bytes, indicating volume. Only Quake uses them, and it only uses AMBIENT_SKY and AMBIENT_WATER, which are hardcoded in the engine to play specific sounds when a visleaf containing the given ambient type is in the current PVS.

Index Header text Header text
0 AMBIENT_WATER
1 AMBIENT_SKY
2 AMBIENT_SLIME
3 AMBIENT_LAVA