2025-12-09 14:59:47 -08:00
|
|
|
|
/**
|
|
|
|
|
|
* Per-object-type lighting intensity multipliers.
|
|
|
|
|
|
*
|
|
|
|
|
|
* These allow fine-tuning of directional and ambient light contributions
|
|
|
|
|
|
* for each object type to match Tribes 2's original appearance.
|
|
|
|
|
|
*
|
|
|
|
|
|
* The Torque engine uses distinctly different lighting systems for each object type:
|
|
|
|
|
|
* - Terrain: Pre-baked lightmaps with directional sun dot-product calculation
|
|
|
|
|
|
* - Interiors: Vertex colors or lightmaps with animated light states
|
|
|
|
|
|
* - DTS Shapes: OpenGL hardware lighting with per-material flags
|
|
|
|
|
|
*
|
|
|
|
|
|
* Values are multipliers applied to the global Sun intensity (which is set to 1.0/1.0):
|
|
|
|
|
|
* - directional: Multiplier for directional (sun) light contribution
|
|
|
|
|
|
* - ambient: Multiplier for ambient light contribution (affects shadow darkness)
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
2025-12-10 14:14:51 -08:00
|
|
|
|
/**
|
|
|
|
|
|
* Terrain lighting is handled via custom shader in terrainMaterial.ts.
|
|
|
|
|
|
*
|
|
|
|
|
|
* The shader implements Torque's gamma-space rendering formula (terrLighting.cc):
|
|
|
|
|
|
* output = clamp(lighting × texture, 0, 1)
|
|
|
|
|
|
*
|
|
|
|
|
|
* Where:
|
|
|
|
|
|
* - lighting = clamp(ambient + NdotL × shadowFactor × sunColor, 0, 1)
|
|
|
|
|
|
* - NdotL from pre-computed terrain lightmap (smooth per-pixel normals)
|
|
|
|
|
|
* - shadowFactor from Three.js real-time shadow maps
|
|
|
|
|
|
*
|
|
|
|
|
|
* No intensity multipliers are needed - the shader uses mission sun/ambient
|
|
|
|
|
|
* colors directly and performs gamma-space math to match Torque's output.
|
|
|
|
|
|
*/
|
2025-12-09 14:59:47 -08:00
|
|
|
|
|
2025-12-10 14:14:51 -08:00
|
|
|
|
/**
|
|
|
|
|
|
* Interior lighting is handled via custom shader in interiorMaterial.ts.
|
|
|
|
|
|
*
|
|
|
|
|
|
* The shader implements Torque's gamma-space rendering formula:
|
|
|
|
|
|
* output = clamp((scene_lighting + lightmap) × texture, 0, 1)
|
|
|
|
|
|
*
|
|
|
|
|
|
* Where:
|
|
|
|
|
|
* - Outside surfaces (SurfaceOutsideVisible): scene lighting + lightmap
|
|
|
|
|
|
* - Inside surfaces: lightmap only
|
|
|
|
|
|
*
|
|
|
|
|
|
* No intensity multipliers are needed - the shader extracts lighting values
|
|
|
|
|
|
* from Three.js and performs gamma-space math to match Torque's output.
|
|
|
|
|
|
*/
|
2025-12-09 14:59:47 -08:00
|
|
|
|
|
|
|
|
|
|
export const SHAPE_LIGHTING = {
|
|
|
|
|
|
directional: 1,
|
|
|
|
|
|
ambient: 1.5,
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Note: Water does not use lighting - Tribes 2's Phase 2 (lightmap) is disabled.
|
|
|
|
|
|
// Water textures are rendered directly without scene lighting.
|