ericw-tools icon indicating copy to clipboard operation
ericw-tools copied to clipboard

[Idea] func_detail_null

Open SirYodaJedi opened this issue 10 months ago • 1 comments

Or just func_null. An internal entity that has its bmodel written to a separate compiler-only BSP, saving bmodel slots and clipnodes/brushsides for when a brush is only needed by the lighting compiler and not the game proper. The func_detail_null's KVs would be handled however you usually pass func_detail's KVs to the lighting compiler.

Examples of where this would make sense:

  • Casting shadows from nothing (see https://github.com/ericwa/ericw-tools/issues/247#issuecomment-455035550 )
  • Using texlights to accentuate the lighting that comes through a window (similar to https://developer.valvesoftware.com/wiki/Window_lighting )
  • Texlights that are made to appear like they're cast by models (not of much use for Quake, but useful for compatible higher-fidelity games like Day of Defeat or Condition Zero)

It might be a good idea to still light the extra bmodel alongside the actual map, so that it can affect bouncing when colored bouncing is enabled.

SirYodaJedi avatar Apr 23 '25 17:04 SirYodaJedi

Implementation wise what I'm thinking of is:

  • new (compile-tool private) BSPX lump, EWT_TOOLFACES. meaning "faces that are only intended to be used by the compile tools, not the game".

The format would be:

for i in 0..bsp->nummodels:
    int32_t modeli_firsttoolface;
    int32_t modeli_numtoolfaces;

This lets them be associated with a specifc bmodel if needed; this could come in handy for making switchable shadow bmodels with invisible faces, for example.

The EWT_TOOLFACES lump would be the only place these faces would be referenced in the bsp, so they wouldn't appear in any node's face ranges or marksurfaces/leaffaces lists.

The interpretation of the faces (i.e. whether they cast shadows, bounce light off, etc.) would be out of scope of the EWT_TOOLFACES lump, and would be using our existing mechanism (extended json texinfo).

ericwa avatar Apr 26 '25 19:04 ericwa