Darkplaces lighting

From Blood Wiki
Revision as of 16:52, 29 July 2012 by VorteX (Talk | contribs)

Jump to: navigation, search
This page is not finished
You can help by editing and extending it.

Darkplaces engine uses combined lighting model. Several lighting methods are implemented to give best results at cases they are aimed for.

Contents

Light models

Darkplaces using several lighting models, most of them are set globally:

  • Phong lighting model - generic and default lighting model
  • Fake light - a developer-only mode which is forced on non-lit maps (ones which was compiled and didnt get LIGHT phase). This is infinite realtime light that is cast from eye position.
  • Cel shading - a phong lighting model with altered shading.
  • Fullbright - no lighting applied

Light methods and effects

There is 4 lighting methods used in Darkplaces:

  • Vertex lighting - static lighting, aimed at big counts of simple surfaces
  • Lightmaps - static lighting, aimed at surfaces that receives shadows from static objects
  • Lightgrid - static lighting, aimed at moving entities
  • Realtime lighting - full dynamic lighting (each light is a separate pass), aimed at switchable and moving lightsources that lights moving entities

Additionaly, Darkplaces supports a number of lighting effects:

  • Coronas - aimed to simulate glow around lights, which looks good on small and medium size lights
  • Planar shadows - each entity cast one shadow on the floor (or by global vector)
  • Customized modellight - lightgrid-sampled model lighting could be replaced with QuakeC
  • Fog - global fog and global volumeric fog (with height set) are suppored

Shadow mapping vs Stencil shadows

Stencil shadow volumes is a shadow rendering method Darkplaces used in pre-2010. Since 2010 shadow mapping was implemented by Eihrul.

Shadowmapping have a number of advantages over shadow volume rendering and is considered to replace it:

  • It is faster to render (especially on complex area maps)
  • Takes less CPU time (as construction of shadow volumes is not required)
  • Distance-based LOD (far lights rendered with lower shadowmap resolution)
  • Shadow edges are not sharp

Comparison of different lighting methods

Task Vertex
lighting
Lightmap Lightgrid Realtime lighting
Details Low Medium Low High
Render speed Fastest Fast Fastest Slow
Precomputation time Short Long Medium N/A
RAM usage Low High Low Low
Shadows No Yes No Yes
Penumbra N/A Yes N/A Partial
Number of lights Large Large Large Small
Surface-based effects
Bumpmapping Yes Yes Yes Yes
Specular Yes Yes Yes Yes
Cubemap filters No Partial No Yes
Per-light diffuse/ambient/specular scale No No No Yes
Non-point 'area' lights Yes Yes Yes No
Light styles No No No Yes
Moving lights No No No Yes
Global illumination
Precomputation time Long Very long Long N/A
Rendering speed N/A N/A N/A Slow
Quality High High High Low
Used to light
Map surfaces Yes Yes No Yes
Static BModels Yes Yes Optional Yes
Moving/rotating BModels No No Optional Yes
Animated models No No Yes Yes

Console variables

 r_shadow_realtime_world : Enabled realtime lighting of world lights (stored in external .rtlights file)
 r_shadow_realtime_dlight : Enabled realtime lighting of dynamic lights (created by entities)
 r_shadow_* : A group of cvars to control realtime lighting
 r_shadow_shadowmapping : Enables shadowmapping which replaces default shadow volume-based lighting
 r_shadow_shadowmapping_* : A group of cvars to control shadowmapping
 r_shadows_* : A group of cvars to control planar shadows
 r_showlighting : Show areas lit by dynamic lightsources. Useful for finding out why some areas of the map render slowly (bright orange = lots of passes, slow)
 r_showshadows : Show areas covered by shadow volumes. Useful for finding out why some areas of the map render slowly (bright blue = lots of passes, slow). Only matters if using shadow volumes.
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox