# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NeL 3d pipeline overview

Author:
Cyril Corvazier
The rendering process is composed of several traversals. Each traversal acts on their models using an observer. The rendering process is done following this pipeline:

  • Transform animation traversal
  • Transform traversal
  • Load ballancing traversal
  • View determination and culling traversal
  • Detail animation traversal
  • Lighting traversal
  • Render traversal

transform's animation Traversal

This traversal must eval the transform's animated value to get the final parent relative world matrix of each model. We must do this pass to know where each model is.

Transform traversal

This traversal composes each transform's matrix with the parent one to get the final world matrix. This pass is used to perform hierarchical animation of models.

Load balancing traversal

For each model traversed this traversal evaluates what rendering resources the model requires. It counts the number of primitives that it needs to have rendered and amount of vram used by their textures.

View determination and culling traversal

This traversal clips models that are not visible. It uses clusters/portals for interiors and a frustrum clipping for exteriors.

Detail animation traversal

This traversal computes the animation for all values not animated in the first pass (transform animation). Animation is done in 2 passes because the first must be done to get models' world bounding box used in view determination. The second pass is done only on visible objects.

Lighting traversal

This traversal computes dynamic lighting for each visible model with non-clipped lights.

Render traversal

Render is the most complex traversal.

  • If the model uses skinning, it will compute bones world matrices. Matrices have been set by second animation pass but they need to be combined with their parents.
  • If the model has an inverse kinematics solver attached, it is evaluated next.
  • If the model supports resource load ballancing, the final count of rendering primitives is ajusted in function of the distance from the camera.
  • The primitives to send to the driver are built.
  • The primitives are rendered by the driver.