Project

General

Profile

« Previous | Next » 

Revision c0375eda

Added by danij almost 16 years ago

Redesigned sky fix logic. There are now two world-wide sky fix heights (floor/ceiling) rather than seperate offsets for each sector. It was found that the old approach was unnecessary and made dynamic updates of the sky fix very costly. Also, implemented support for a DOOM.exe rendering trick; non-clipping of middle textures on two sided linedefs by sky surface planes.

Continued work on the materials system and refined related systems in the process:
  • Materials are now accessible via the DMU interface.
  • Added material stages. Currently only the first stage is utilized/read but necessary in order to complete the Material definition syntax.
  • Redefined materials as playsim objects. As they include more than just paramaters for render it seemed inappropriate to prefix the interface methods 'R_'.
  • Seperated the concepts of material and gltextures (the abstract interface). Previously they were co-dependant.
  • Texture manager is now initialized even earlier; just before the definitions are read.
  • Implemented a new instancing mechanism built in to the texture manager. Now when loading a texture a series of paramaters can be set which govern any post processing that is done to the texture data. These paramaters are then stored alongside the texture instance record for future use. This provides a single mechanism for managing multiple instances of a given texture.
  • Make use of the new texture instance management in the texture manager with detail textures and translated sprites.
  • When loading masked DOOM textures, call colorOutlines (if enabled) to remove the black outlines.
  • Began refactoring the pipeline from texture load to GL upload so that we have one logic path (other than the initial load of the "raw" texture data from the lumps/files themselves).
  • Refactored detail, shiny and shiny mask texture management and bookkeeping so that they are interfaced via the gltexture abstract interface.
  • Revised book keeping of shiny textures and their masks so that the reflection definitions can be considered 'static'.
  • Revised book keeping of detail textures so that the reflection definitions can be considered 'static'.
  • Redesigned R_MaterialPrepare. Rather than duplicate logic each time a material is prepared in the caller, instead let R_MaterialPrepare update a "material snapshot" struct passed by the caller. This makes the logic in renderWorldPoly much simpler in that even with smooth texture animation enabled; all it needs to do is to tween between two material snapshots.
  • The material manager itself now gets to tick (fractionally). It in turn then updates the materials (still at 35hz) which currently just entails calling R_AnimateAnimGroups.
  • Fixed a problem in R_InitFlats which resulted in materials being registered for marker lumps between F_START/F_END (e.g., F2_START).
  • Sky layers can now use any texture type (was previously limited to textures only).
  • Changed the public name of ddtextures from "ddtex" to "system" i.e., system textures.
  • Big clean up of a lot of the new code I've introduced since 1.9.0-beta5, hopefully the main render paths are now (once again) easy to follow.

Part 1 of 3.

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences