The Render traversal. More...
#include <render_trav.h>
Inherits NL3D::CTravCameraScene.
Classes | |
| struct | CWaterModelDump |
Public Member Functions | |
| CRenderTrav () | |
| Constructor. | |
| void | setDriver (IDriver *drv) |
| IDriver * | getDriver () |
| IDriver * | getAuxDriver () |
| void | setViewport (const CViewport &viewport) |
| CViewport | getViewport () const |
| bool | isCurrentPassOpaque () |
| void | setLayersRenderingOrder (bool directOrder=true) |
| Set the order or rendering for transparent objects. | |
| bool | getLayersRenderingOrder () const |
| void | setupTransparencySorting (uint8 maxPriority=0, uint NbDistanceEntries=1024) |
| Setup transparency sorting. | |
| void | setMeshSkinManager (CVertexStreamManager *msm) |
| Set/Replace the MeshSkinManager. | |
| CVertexStreamManager * | getMeshSkinManager () const |
| get the MeshSkinManager | |
| CShadowMapManager & | getShadowMapManager () |
| get the CShadowMapManager | |
| const CShadowMapManager & | getShadowMapManager () const |
| void | setShadowMeshSkinManager (CVertexStreamManager *msm) |
| the MeshSkinManager for Shadow. Same Behaviour than std MeshSkinManager. NB: the Shadow MSM is inited with AuxDriver. | |
| CVertexStreamManager * | getShadowMeshSkinManager () const |
| void | addRenderLandscape (CLandscapeModel *model) |
| void | setupDriverCamera () |
ITravScene Implementation. | |
| void | traverse (UScene::TRenderPart renderPart, bool newRender) |
| First traverse the root (if any), then render the render list. | |
RenderList. | |
| void | clearRenderList () |
| Clear the list of rendered models. | |
| void | addRenderModel (CTransform *m) |
| Add a model to the list of rendered models. | |
| void | reserveRenderList (uint numModels) |
| void | removeRenderModel (CTransform *m) |
| void | clearWaterModelList () |
| Special for water (list of water to render). | |
Public Attributes | |
| CWaterModel * | _FirstWaterModel |
MeshBlock Manager. FOR MODEL TRAVERSING AND MESHS ONLY. | |
| CMeshBlockManager | MeshBlockManager |
| The manager of meshBlock. Used to add instances. | |
Private Attributes | |
| std::vector< CTransform * > | RenderList |
| uint32 | _CurrentNumVisibleModels |
| COrderingTable< CTransform > | OrderOpaqueList |
| std::vector < CLayeredOrderingTable < CTransform > > | _OrderTransparentListByPriority |
| uint8 | _MaxTransparencyPriority |
| IDriver * | Driver |
| CViewport | _Viewport |
| bool | _CurrentPassOpaque |
| bool | _LayersRenderingOrder |
| CVertexStreamManager * | _MeshSkinManager |
| The manager of skin. NULL by default. | |
| CShadowMapManager | _ShadowMapManager |
| The ShadowMap Manager. | |
| CVertexStreamManager * | _ShadowMeshSkinManager |
| The SkinManager, but For Shadow rendering. | |
Render Lighting Setup. FOR MODEL TRAVERSING ONLY. | |
|
| |
| enum | { MaxVPLight = 4 } |
| void | resetLightSetup () |
| reset the lighting setup in the driver (all lights are disabled). | |
| void | changeLightSetup (CLightContribution *lightContribution, bool useLocalAttenuation) |
| setup the driver to the given lightContribution. | |
| void | beginVPLightSetup (uint ctStart, bool supportSpecular, const CMatrix &invObjectWM) |
| setup the driver VP constants to get info from current LightSetup. | |
| void | changeVPLightSetupMaterial (const CMaterial &mat, bool excludeStrongest) |
| change the driver VP LightSetup constants which depends on material. | |
| const CLight & | getDriverLight (sint index) const |
| This returns a reference to a driver light, by its index. | |
| sint | getStrongestLightIndex () const |
| return an index to the current strongest settuped light (or -1 if there's none) | |
| void | getStrongestLightColors (NLMISC::CRGBA &diffuse, NLMISC::CRGBA &specular) |
| Get current color, diffuse and specular of the strongest light in the scene. | |
| uint | getNumVPLights () const |
| return the number of VP lights currently activated (sunlight included) Value correct after beginVPLightSetup() only | |
| static std::string | getLightVPFragment (uint numActivePointLights, uint ctStart, bool supportSpecular, bool normalize) |
tool to get a VP fragment which compute lighting with following rules: IN:
| |
Render Lighting Setup. | |
|
| |
| bool | LightingSystemEnabled |
| NLMISC::CRGBA | AmbientGlobal |
| NLMISC::CRGBA | SunAmbient |
| NLMISC::CRGBA | SunDiffuse |
| NLMISC::CRGBA | SunSpecular |
| CLightContribution * | _CacheLightContribution |
| bool | _LastLocalAttenuation |
| uint | _NumLightEnabled |
| uint | _LastSunFactor |
| NLMISC::CRGBA | _LastFinalAmbient |
| CPointLight * | _LastPointLight [NL3D_MAX_LIGHT_CONTRIBUTION] |
| uint8 | _LastPointLightFactor [NL3D_MAX_LIGHT_CONTRIBUTION] |
| bool | _LastPointLightLocalAttenuation [NL3D_MAX_LIGHT_CONTRIBUTION] |
| CVector | _SunDirection |
| CLight | _DriverLight [NL3D_MAX_LIGHT_CONTRIBUTION+1] |
| uint | _StrongestLightIndex |
| bool | _StrongestLightTouched |
| uint | _VPCurrentCtStart |
| uint | _VPNumLights |
| bool | _VPSupportSpecular |
| NLMISC::CRGBAF | _VPFinalAmbient |
| NLMISC::CRGBAF | _VPLightDiffuse [MaxVPLight] |
| NLMISC::CRGBAF | _VPLightSpecular [MaxVPLight] |
| NLMISC::CRGBA | _StrongestLightDiffuse |
| NLMISC::CRGBA | _StrongestLightSpecular |
| bool | _VPMaterialCacheDirty |
| uint32 | _VPMaterialCacheEmissive |
| uint32 | _VPMaterialCacheAmbient |
| uint32 | _VPMaterialCacheDiffuse |
| uint32 | _VPMaterialCacheSpecular |
| float | _VPMaterialCacheShininess |
| void | setSunDirection (const CVector &dir) |
| const CVector | getSunDirection () const |
Special Landscape RenderList. | |
The Landscape list is separated from std render List for optimisation purpose. See Doc in traverse() method. | |
| std::vector< CLandscapeModel * > | _LandscapeRenderList |
| void | clearRenderLandscapeList () |
| void | renderLandscapes () |
Temp Debug | |
|
| |
| std::vector< CWaterModelDump > | _DebugWaterModelList |
| void | debugWaterModelMemory (const char *tag, bool dumpList=false) |
The Render traversal.
The purpose of this traversal is to render a list of models. This traversals is tightly linked to the cliptraversal. The clipTraversals insert directly the models with CRenderTrav::addRenderModel(m). The traverse() method should render all the render models with IDriver.
This traversal has no graph of models
USER RULES: Before using traverse() on a render traversal, you should:
NB: see CScene for 3d conventions (orthonormal basis...)
Definition at line 99 of file render_trav.h.
| anonymous enum |
Definition at line 234 of file render_trav.h.
| NL3D::CRenderTrav::CRenderTrav | ( | ) |
Constructor.
Definition at line 68 of file render_trav.cpp.
References _CacheLightContribution, _CurrentNumVisibleModels, _CurrentPassOpaque, _FirstWaterModel, _LayersRenderingOrder, _MaxTransparencyPriority, _MeshSkinManager, _ShadowMeshSkinManager, _StrongestLightTouched, _SunDirection, AmbientGlobal, NLMISC::CRGBA::Black, Driver, NL3D::COrderingTable< T >::init(), LightingSystemEnabled, NLMISC::CVector::normalize(), OrderOpaqueList, RenderList, NLMISC::CVector::set(), setupTransparencySorting(), SunAmbient, SunDiffuse, SunSpecular, and NLMISC::CRGBA::White.
| void NL3D::CRenderTrav::addRenderLandscape | ( | CLandscapeModel * | model | ) |
Definition at line 1252 of file render_trav.cpp.
References _LandscapeRenderList.
Referenced by NL3D::CLandscapeModel::traverseRender().
| void NL3D::CRenderTrav::addRenderModel | ( | CTransform * | m | ) | [inline] |
Add a model to the list of rendered models.
DOESN'T CHECK if already inserted.
Definition at line 122 of file render_trav.h.
References _CurrentNumVisibleModels, NL3D::CTransform::_IndexLSBInRenderList, and RenderList.
Referenced by NL3D::CParticleSystemModel::traverseAnimDetail(), and NL3D::CTransform::traverseClip().
| void NL3D::CRenderTrav::beginVPLightSetup | ( | uint | ctStart, | |
| bool | supportSpecular, | |||
| const CMatrix & | invObjectWM | |||
| ) |
setup the driver VP constants to get info from current LightSetup.
Only 0..3 Light + SunLights are supported. The VP do NOT support distance/Spot attenuation Also it does not handle World Matrix with non uniform scale correctly since lighting is made in ObjectSpace
| ctStart | the program use ctes from ctStart to ctStart+NumCtes. | |
| supportSpecular | asitsounds. PointLights and dirLight are localViewer | |
| invObjectWM | the inverse of object matrix: lights are mul by this. Vp compute in object space. |
Definition at line 772 of file render_trav.cpp.
References _DriverLight, _NumLightEnabled, _VPCurrentCtStart, _VPFinalAmbient, _VPLightDiffuse, _VPLightSpecular, _VPMaterialCacheDirty, _VPNumLights, _VPSupportSpecular, AmbientGlobal, NLMISC::CRGBA::Black, NL3D::CTravCameraScene::CamPos, Driver, NL3D::CLight::getAmbiant(), NL3D::CLight::getDiffuse(), NL3D::CLight::getPosition(), NL3D::CLight::getSpecular(), MaxVPLight, min, NLMISC::CMatrix::mulVector(), nlassert, NLMISC::CVector::normalize(), and NL3D::IDriver::setConstant().
Referenced by NL3D::CMeshVPPerPixelLight::begin(), and NL3D::CMeshVPWindTree::setupLighting().
| void NL3D::CRenderTrav::changeLightSetup | ( | CLightContribution * | lightContribution, | |
| bool | useLocalAttenuation | |||
| ) |
setup the driver to the given lightContribution.
if lightContribution==NULL, then all currently enabled lights are disabled. NB: lightContribution is cached, so if same than preceding, no-op. cache cleared at each frame with resetLightSetup(). NB: models which are sticked or skinned on a skeleton have same lightContribution because lightSetup is made on the skeleton only. Hence the interest of this cache.
| useLocalAttenuation | if true, use Hardware Attenuation, else use global one (attenuation with AttFactor) |
Definition at line 624 of file render_trav.cpp.
References _CacheLightContribution, _DriverLight, _LastFinalAmbient, _LastLocalAttenuation, _LastPointLight, _LastPointLightFactor, _LastPointLightLocalAttenuation, _LastSunFactor, _NumLightEnabled, _StrongestLightTouched, _SunDirection, NLMISC::CRGBA::A, NLMISC::CRGBA::addRGBOnly(), NL3D::CLightContribution::AttFactor, NL3D::CLightContribution::computeCurrentAmbient(), Driver, NL3D::IDriver::enableLight(), NL3D::CLightContribution::Factor, LightingSystemEnabled, NL3D::CLightContribution::MergedPointLight, NLMISC::CRGBA::modulateFromuiRGBOnly(), NL3D_MAX_LIGHT_CONTRIBUTION, NL3D::CLightContribution::PointLight, NL3D::IDriver::setLight(), NL3D::CLight::setupDirectional(), NL3D::CPointLight::setupDriverLight(), NL3D::CPointLight::setupDriverLightUserAttenuation(), SunAmbient, NL3D::CLightContribution::SunContribution, SunDiffuse, SunSpecular, and NL3D::CLightContribution::UseMergedPointLight.
Referenced by NL3D::CTransformShape::changeLightSetup().
change the driver VP LightSetup constants which depends on material.
| excludeStrongest | This remove the strongest light from the setup. The typical use is to have it computed by using perpixel lighting. |
Definition at line 868 of file render_trav.cpp.
References _StrongestLightDiffuse, _StrongestLightSpecular, _VPCurrentCtStart, _VPFinalAmbient, _VPLightDiffuse, _VPLightSpecular, _VPMaterialCacheAmbient, _VPMaterialCacheDiffuse, _VPMaterialCacheDirty, _VPMaterialCacheEmissive, _VPMaterialCacheShininess, _VPMaterialCacheSpecular, _VPNumLights, _VPSupportSpecular, NLMISC::CRGBAF::A, NLMISC::CRGBAF::B, Driver, NLMISC::CRGBAF::G, NL3D::CMaterial::getAmbient(), NL3D::CMaterial::getDiffuse(), NL3D::CMaterial::getEmissive(), NLMISC::CRGBA::getPacked(), NL3D::CMaterial::getShininess(), NL3D::CMaterial::getSpecular(), getStrongestLightIndex(), NLMISC::CRGBAF::R, NLMISC::CRGBA::set(), and NL3D::IDriver::setConstant().
Referenced by NL3D::CMeshGeom::renderPass(), NL3D::SetupForMaterial(), and NL3D::CMeshVPPerPixelLight::setupForMaterial().
| void NL3D::CRenderTrav::clearRenderLandscapeList | ( | ) | [private] |
Definition at line 1246 of file render_trav.cpp.
References _LandscapeRenderList.
Referenced by traverse().
| void NL3D::CRenderTrav::clearRenderList | ( | ) |
Clear the list of rendered models.
Definition at line 508 of file render_trav.cpp.
References _CurrentNumVisibleModels.
Referenced by NL3D::CClipTrav::traverse().
| void NL3D::CRenderTrav::clearWaterModelList | ( | ) |
Special for water (list of water to render).
Definition at line 1281 of file render_trav.cpp.
References _FirstWaterModel, and NL3D::CWaterModel::unlink().
Referenced by NL3D::CScene::renderPart(), and traverse().
| void NL3D::CRenderTrav::debugWaterModelMemory | ( | const char * | tag, | |
| bool | dumpList = false | |||
| ) |
Definition at line 1290 of file render_trav.cpp.
References _DebugWaterModelList, _FirstWaterModel, NL3D::CWaterModel::_Next, NL3D::CRenderTrav::CWaterModelDump::Address, NL3D::CRenderTrav::CWaterModelDump::ClippedPolyBegin, NL3D::CRenderTrav::CWaterModelDump::ClippedPolyEnd, NL3D::CWaterModel::debugDumpMem(), nlassert, and nlwarning.
| IDriver* NL3D::CRenderTrav::getAuxDriver | ( | ) | [inline] |
Definition at line 148 of file render_trav.h.
References Driver.
Referenced by NL3D::CSkeletonModel::generateShadowMap(), NL3D::CMeshInstance::generateShadowMap(), NL3D::CShadowMapManager::renderGenerate(), NL3D::CSkeletonModel::renderIntoSkeletonShadowMap(), NL3D::CMeshInstance::renderIntoSkeletonShadowMap(), NL3D::CSkeletonModel::renderShadowSkins(), and traverse().
| IDriver* NL3D::CRenderTrav::getDriver | ( | void | ) | [inline] |
Definition at line 146 of file render_trav.h.
References Driver.
Referenced by NL3D::CLandscapeModel::clipAndRenderLandscape(), NL3D::CLandscapeModel::receiveShadowMap(), NL3D::CSkeletonModel::renderCLod(), NL3D::CScene::renderOcclusionTestMeshs(), NL3D::CScene::renderOcclusionTestMeshsWithCurrMaterial(), NL3D::CShadowMapManager::renderProject(), NL3D::CMeshMRMGeom::renderSkin(), NL3D::CMeshGeom::renderSkin(), NL3D::CMeshMRMSkinnedGeom::renderSkinGroupGeom(), NL3D::CMeshMRMGeom::renderSkinGroupGeom(), NL3D::CMeshMRMSkinnedGeom::renderSkinGroupPrimitives(), NL3D::CMeshMRMGeom::renderSkinGroupPrimitives(), NL3D::CMeshMRMSkinnedGeom::renderSkinGroupSpecularRdrPass(), NL3D::CMeshMRMGeom::renderSkinGroupSpecularRdrPass(), NL3D::CSkeletonModel::renderSkinList(), NL3D::CSkeletonModel::renderSkins(), setupDriverCamera(), traverse(), NL3D::CWaterModel::traverseRender(), NL3D::CVegetableBlendLayerModel::traverseRender(), NL3D::CTransformShape::traverseRender(), and NL3D::CFlareModel::traverseRender().
This returns a reference to a driver light, by its index.
Definition at line 314 of file render_trav.h.
References _DriverLight, NL3D_MAX_LIGHT_CONTRIBUTION, and nlassert.
Referenced by NL3D::CMeshVPPerPixelLight::begin().
| bool NL3D::CRenderTrav::getLayersRenderingOrder | ( | ) | const [inline] |
Definition at line 167 of file render_trav.h.
References _LayersRenderingOrder.
Referenced by NL3D::CScene::getLayersRenderingOrder().
| std::string NL3D::CRenderTrav::getLightVPFragment | ( | uint | numActivePointLights, | |
| uint | ctStart, | |||
| bool | supportSpecular, | |||
| bool | normalize | |||
| ) | [static] |
tool to get a VP fragment which compute lighting with following rules: IN:
NB: BF0 and BF1 not computed/setuped. Scratch:
For information, constant mapping is (add ctStart):
== Strongest light included ==
if !supportSpecular:
NB: the number of active light does not change the number of constantes used. But the VP code returned is modified accordingly.
| numActivePoinLights | tells how many point light from 0 to 3 this VP must handle. NB: the Sun directionnal is not option NB: nlassert(numActiveLights<=MaxVPLight-1). |
Definition at line 1179 of file render_trav.cpp.
References NL3D::LightingVPFragmentNormalize, NL3D::LightingVPFragmentNoSpecular_Begin, NL3D::LightingVPFragmentNoSpecular_End, NL3D::LightingVPFragmentNoSpecular_PL, NL3D::LightingVPFragmentSpecular_Begin, NL3D::LightingVPFragmentSpecular_End, NL3D::LightingVPFragmentSpecular_PL, MaxVPLight, nlassert, and NL3D::strReplaceAll().
Referenced by NL3D::CMeshVPWindTree::initInstance(), and NL3D::CMeshVPPerPixelLight::initInstance().
| CVertexStreamManager* NL3D::CRenderTrav::getMeshSkinManager | ( | ) | const [inline] |
get the MeshSkinManager
Definition at line 205 of file render_trav.h.
References _MeshSkinManager.
Referenced by NL3D::CSkeletonModel::renderSkinList().
| uint NL3D::CRenderTrav::getNumVPLights | ( | ) | const [inline] |
return the number of VP lights currently activated (sunlight included) Value correct after beginVPLightSetup() only
Definition at line 332 of file render_trav.h.
References _VPNumLights.
Referenced by NL3D::CMeshVPWindTree::begin(), and NL3D::CMeshVPWindTree::beginMBRInstance().
| const CShadowMapManager& NL3D::CRenderTrav::getShadowMapManager | ( | ) | const [inline] |
Definition at line 209 of file render_trav.h.
References _ShadowMapManager.
| CShadowMapManager& NL3D::CRenderTrav::getShadowMapManager | ( | ) | [inline] |
get the CShadowMapManager
Definition at line 208 of file render_trav.h.
References _ShadowMapManager.
Referenced by NL3D::CClipTrav::clipShadowCasters(), NL3D::CScene::enableShadowPolySmooth(), NL3D::CSkeletonModel::generateShadowMap(), NL3D::CMeshInstance::generateShadowMap(), NL3D::CScene::getEnableShadowPolySmooth(), NL3D::CScene::renderPart(), and NL3D::CLandscapeModel::traverseRender().
| CVertexStreamManager* NL3D::CRenderTrav::getShadowMeshSkinManager | ( | ) | const [inline] |
Definition at line 213 of file render_trav.h.
References _ShadowMeshSkinManager.
Referenced by NL3D::CSkeletonModel::renderShadowSkins().
| void NL3D::CRenderTrav::getStrongestLightColors | ( | NLMISC::CRGBA & | diffuse, | |
| NLMISC::CRGBA & | specular | |||
| ) |
Get current color, diffuse and specular of the strongest light in the scene.
These values are modulated by the current material color, so these values are valid only after changeVPLightSetupMaterial() has been called
Definition at line 993 of file render_trav.cpp.
References _StrongestLightDiffuse, _StrongestLightSpecular, NLMISC::CRGBA::Black, and getStrongestLightIndex().
Referenced by NL3D::CMeshVPPerPixelLight::setupForMaterial().
| sint NL3D::CRenderTrav::getStrongestLightIndex | ( | ) | const |
return an index to the current strongest settuped light (or -1 if there's none)
Definition at line 976 of file render_trav.cpp.
References _NumLightEnabled, _StrongestLightTouched, _VPLightDiffuse, _VPLightSpecular, NLMISC::CRGBAF::A, NLMISC::CRGBAF::B, NLMISC::CRGBAF::G, MaxVPLight, min, and NLMISC::CRGBAF::R.
Referenced by NL3D::CMeshVPPerPixelLight::begin(), changeVPLightSetupMaterial(), and getStrongestLightColors().
| const CVector NL3D::CRenderTrav::getSunDirection | ( | ) | const [inline] |
Definition at line 193 of file render_trav.h.
References _SunDirection.
Referenced by NL3D::CScene::getSunDirection().
| CViewport NL3D::CRenderTrav::getViewport | ( | ) | const [inline] |
Definition at line 153 of file render_trav.h.
References _Viewport.
Referenced by NL3D::CScene::renderOcclusionTestMeshs().
| bool NL3D::CRenderTrav::isCurrentPassOpaque | ( | ) | [inline] |
Definition at line 158 of file render_trav.h.
References _CurrentPassOpaque.
Referenced by NL3D::CTransformShape::profileRender(), NL3D::CSkeletonModel::renderCLod(), NL3D::CSkeletonModel::renderSkins(), NL3D::CTransformShape::traverseRender(), and NL3D::CFlareModel::traverseRender().
| void NL3D::CRenderTrav::removeRenderModel | ( | CTransform * | m | ) |
Definition at line 543 of file render_trav.cpp.
References _CurrentNumVisibleModels, NL3D::CTransform::_IndexLSBInRenderList, and RenderList.
Referenced by NL3D::CScene::deleteModel().
| void NL3D::CRenderTrav::renderLandscapes | ( | ) | [private] |
Definition at line 1258 of file render_trav.cpp.
References _LandscapeRenderList.
Referenced by traverse().
| void NL3D::CRenderTrav::reserveRenderList | ( | uint | numModels | ) |
Definition at line 535 of file render_trav.cpp.
References RenderList.
Referenced by NL3D::CScene::createModel().
| void NL3D::CRenderTrav::resetLightSetup | ( | ) |
reset the lighting setup in the driver (all lights are disabled).
called at begining of traverse(). Must be called by any model (before and after rendering) that wish to use CDriver::setLight() instead of the standard behavior with changeLightSetup()
Definition at line 570 of file render_trav.cpp.
References _CacheLightContribution, _DriverLight, _LastFinalAmbient, _LastPointLight, _LastSunFactor, _NumLightEnabled, _StrongestLightTouched, _SunDirection, AmbientGlobal, NLMISC::CRGBA::Black, Driver, NL3D::IDriver::enableLight(), NL3D::IDriver::getMaxLight(), LightingSystemEnabled, NL3D_MAX_LIGHT_CONTRIBUTION, NLMISC::CVector::normalize(), NLMISC::CRGBA::set(), NL3D::IDriver::setAmbientColor(), NL3D::IDriver::setLight(), and NL3D::CLight::setupDirectional().
Referenced by NL3D::CShadowMapManager::renderProject(), and traverse().
| void NL3D::CRenderTrav::setDriver | ( | IDriver * | drv | ) | [inline] |
Definition at line 145 of file render_trav.h.
References Driver.
Referenced by NL3D::CScene::setDriver().
| void NL3D::CRenderTrav::setLayersRenderingOrder | ( | bool | directOrder = true |
) | [inline] |
Set the order or rendering for transparent objects.
In real case, with direct order, we have:
Definition at line 166 of file render_trav.h.
References _LayersRenderingOrder.
Referenced by NL3D::CScene::setLayersRenderingOrder().
| void NL3D::CRenderTrav::setMeshSkinManager | ( | CVertexStreamManager * | msm | ) |
Set/Replace the MeshSkinManager.
NULL by default => skinning is slower. The ptr is handled but not deleted. There should be one MeshSkinManager per driver.
Definition at line 523 of file render_trav.cpp.
References _MeshSkinManager.
Referenced by NL3D::CDriverUser::createScene(), and NL3D::CNELU::initScene().
| void NL3D::CRenderTrav::setShadowMeshSkinManager | ( | CVertexStreamManager * | msm | ) |
the MeshSkinManager for Shadow. Same Behaviour than std MeshSkinManager. NB: the Shadow MSM is inited with AuxDriver.
Definition at line 529 of file render_trav.cpp.
References _ShadowMeshSkinManager.
Referenced by NL3D::CDriverUser::createScene().
| void NL3D::CRenderTrav::setSunDirection | ( | const CVector & | dir | ) |
Definition at line 515 of file render_trav.cpp.
References _SunDirection, and NLMISC::CVector::normalize().
Referenced by NL3D::CScene::setSunDirection().
| void NL3D::CRenderTrav::setupDriverCamera | ( | ) |
Definition at line 500 of file render_trav.cpp.
References NL3D::CTravCameraScene::Bottom, NL3D::CTravCameraScene::CamPos, NL3D::CTravCameraScene::Far, getDriver(), NL3D::CTravCameraScene::Left, NL3D::CTravCameraScene::Near, NL3D::CTravCameraScene::Perspective, NL3D::CTravCameraScene::Right, NL3D::IDriver::setFrustum(), NL3D::IDriver::setupViewMatrixEx(), NL3D::CTravCameraScene::Top, and NL3D::CTravCameraScene::ViewMatrix.
Referenced by NL3D::CShadowMapManager::renderGenerate(), and traverse().
| void NL3D::CRenderTrav::setupTransparencySorting | ( | uint8 | maxPriority = 0, |
|
| uint | NbDistanceEntries = 1024 | |||
| ) |
Setup transparency sorting.
| maxPriority | Defines the valid range for priority in the [0, n] interval. By default, there's no prioriy sorting (0 -> single priority, 255 -> 256 possible priorities) Objects with highers priority are displayed before any other object with lower priority, whatever their distance is. | |
| NbDistanceEntries | Defines the granularity for distance sorting. A value of N with a view distance of D meters means that the sorting accuracy will be of D / N meters at worst (when visible objects occupy the whole distance range) NB : The memory allocated is a multiple of NumPriority * NbDistanceEntries * 2 (2 if because of water ordering) |
Definition at line 1268 of file render_trav.cpp.
References _MaxTransparencyPriority, _OrderTransparentListByPriority, and NLMISC::contReset().
Referenced by CRenderTrav(), and NL3D::CSceneUser::setupTransparencySorting().
| void NL3D::CRenderTrav::setViewport | ( | const CViewport & | viewport | ) | [inline] |
Definition at line 149 of file render_trav.h.
References _Viewport.
Referenced by NL3D::CScene::renderPart().
| void NL3D::CRenderTrav::traverse | ( | UScene::TRenderPart | renderPart, | |
| bool | newRender | |||
| ) |
First traverse the root (if any), then render the render list.
NB: no Driver clear buffers (color or ZBuffer) are done....
| renderPart | : The part of the scene that must be rendered | |
| newRender | true If scene render is beginning. Otherwise other parts of the scene have already been rendered. |
Definition at line 102 of file render_trav.cpp.
References _CurrentNumVisibleModels, _CurrentPassOpaque, _FirstWaterModel, _LayersRenderingOrder, _MaxTransparencyPriority, _MeshSkinManager, NL3D::CWaterModel::_Next, _OrderTransparentListByPriority, _ShadowMapManager, _ShadowMeshSkinManager, _Viewport, NL3D::COrderingTable< T >::begin(), NL3D::ILandscapePolyDrawingCallback::beginPolyDrawing(), NL3D::CLodCharacterManager::beginRender(), NL3D::CTravCameraScene::CamPos, clearRenderLandscapeList(), clearWaterModelList(), Driver, NL3D::ILandscapePolyDrawingCallback::endPolyDrawing(), NL3D::CLodCharacterManager::endRender(), NL3D::CTravCameraScene::Far, NL3D::CWaterModel::fillVB(), NL3D::CMeshBlockManager::flush(), NL3D::CCoarseMeshManager::flushRender(), NL3D::COrderingTable< T >::get(), getAuxDriver(), NL3D::CScene::getCoarseMeshManager(), NL3D::CVertexStreamManager::getDriver(), getDriver(), NL3D::CScene::getLandscapePolyDrawingCallback(), NL3D::CScene::getLodCharacterManager(), NL3D::CWaterModel::getNumWantedVertices(), NL3D::CTransform::getOrderingLayer(), NLMISC::CMatrix::getPos(), NL3D::CScene::getShapeBank(), NL3D::CShapeBank::getShapeNameFromShapePtr(), NL3D::COrderingTable< T >::getSize(), NL3D::CTransform::getTransparencyPriority(), NL3D::CVertexBufferReadWrite::getVertexCoordPointer(), NL3D::CScene::getWaterVB(), NL3D::CTransform::getWorldMatrix(), H_AUTO, NL3D::CVertexStreamManager::init(), NL3D::COrderingTable< T >::insert(), NL3D::CScene::isNextRenderProfile(), NL3D::CTransform::isOpaque(), NL3D::CTransform::isTransparent(), NL3D::CVertexBuffer::lock(), MeshBlockManager, min, NL3D::COrderingTable< T >::next(), NL3D_MESH_SKIN_MANAGER_MAXVERTICES, NL3D_MESH_SKIN_MANAGER_NUMVB, NL3D_MESH_SKIN_MANAGER_VERTEXFORMAT, NL3D_SHADOW_MESH_SKIN_MANAGER_MAXVERTICES, NL3D_SHADOW_MESH_SKIN_MANAGER_NUMVB, NL3D_SHADOW_MESH_SKIN_MANAGER_VERTEXFORMAT, nlassert, nlwarning, NLMISC::OptFastFloor(), NLMISC::OptFastFloorBegin(), NLMISC::OptFastFloorEnd(), OrderOpaqueList, NL3D::CTransform::profileRender(), NL3D::CVertexStreamManager::release(), NL3D::UScene::RenderFlare, NL3D::CShadowMapManager::renderGenerate(), renderLandscapes(), RenderList, NL3D::UScene::RenderOpaque, NL3D::CShadowMapManager::renderProject(), NL3D::UScene::RenderTransparent, NL3D::COrderingTable< T >::reset(), resetLightSetup(), NL3D::CTraversal::Scene, setupDriverCamera(), NL3D::CWaterModel::setupVertexBuffer(), NL3D::IDriver::setupViewport(), NL3D::CTransformShape::Shape, NL3D::CTransform::traverseRender(), and NL3D::CTravCameraScene::update().
Referenced by NL3D::CScene::renderPart().
Definition at line 370 of file render_trav.h.
Referenced by changeLightSetup(), CRenderTrav(), and resetLightSetup().
Definition at line 352 of file render_trav.h.
Referenced by addRenderModel(), clearRenderList(), CRenderTrav(), removeRenderModel(), and traverse().
bool NL3D::CRenderTrav::_CurrentPassOpaque [private] |
Definition at line 363 of file render_trav.h.
Referenced by CRenderTrav(), isCurrentPassOpaque(), and traverse().
std::vector<CWaterModelDump> NL3D::CRenderTrav::_DebugWaterModelList [private] |
Definition at line 450 of file render_trav.h.
Referenced by debugWaterModelMemory().
CLight NL3D::CRenderTrav::_DriverLight[NL3D_MAX_LIGHT_CONTRIBUTION+1] [private] |
Definition at line 385 of file render_trav.h.
Referenced by beginVPLightSetup(), changeLightSetup(), getDriverLight(), and resetLightSetup().
Definition at line 454 of file render_trav.h.
Referenced by clearWaterModelList(), CRenderTrav(), debugWaterModelMemory(), NL3D::CWaterModel::link(), and traverse().
std::vector<CLandscapeModel*> NL3D::CRenderTrav::_LandscapeRenderList [private] |
Definition at line 438 of file render_trav.h.
Referenced by addRenderLandscape(), clearRenderLandscapeList(), and renderLandscapes().
Definition at line 377 of file render_trav.h.
Referenced by changeLightSetup(), and resetLightSetup().
bool NL3D::CRenderTrav::_LastLocalAttenuation [private] |
Definition at line 371 of file render_trav.h.
Referenced by changeLightSetup().
CPointLight* NL3D::CRenderTrav::_LastPointLight[NL3D_MAX_LIGHT_CONTRIBUTION] [private] |
Definition at line 378 of file render_trav.h.
Referenced by changeLightSetup(), and resetLightSetup().
uint8 NL3D::CRenderTrav::_LastPointLightFactor[NL3D_MAX_LIGHT_CONTRIBUTION] [private] |
Definition at line 379 of file render_trav.h.
Referenced by changeLightSetup().
bool NL3D::CRenderTrav::_LastPointLightLocalAttenuation[NL3D_MAX_LIGHT_CONTRIBUTION] [private] |
Definition at line 380 of file render_trav.h.
Referenced by changeLightSetup().
uint NL3D::CRenderTrav::_LastSunFactor [private] |
Definition at line 376 of file render_trav.h.
Referenced by changeLightSetup(), and resetLightSetup().
bool NL3D::CRenderTrav::_LayersRenderingOrder [private] |
Definition at line 364 of file render_trav.h.
Referenced by CRenderTrav(), getLayersRenderingOrder(), setLayersRenderingOrder(), and traverse().
Definition at line 357 of file render_trav.h.
Referenced by CRenderTrav(), setupTransparencySorting(), and traverse().
The manager of skin. NULL by default.
Definition at line 418 of file render_trav.h.
Referenced by CRenderTrav(), getMeshSkinManager(), setMeshSkinManager(), and traverse().
uint NL3D::CRenderTrav::_NumLightEnabled [private] |
Definition at line 373 of file render_trav.h.
Referenced by beginVPLightSetup(), changeLightSetup(), getStrongestLightIndex(), and resetLightSetup().
std::vector<CLayeredOrderingTable<CTransform> > NL3D::CRenderTrav::_OrderTransparentListByPriority [private] |
Definition at line 356 of file render_trav.h.
Referenced by setupTransparencySorting(), and traverse().
The ShadowMap Manager.
Definition at line 422 of file render_trav.h.
Referenced by getShadowMapManager(), and traverse().
The SkinManager, but For Shadow rendering.
Definition at line 424 of file render_trav.h.
Referenced by CRenderTrav(), getShadowMeshSkinManager(), setShadowMeshSkinManager(), and traverse().
Definition at line 403 of file render_trav.h.
Referenced by changeVPLightSetupMaterial(), and getStrongestLightColors().
uint NL3D::CRenderTrav::_StrongestLightIndex [mutable, private] |
Definition at line 388 of file render_trav.h.
Definition at line 404 of file render_trav.h.
Referenced by changeVPLightSetupMaterial(), and getStrongestLightColors().
bool NL3D::CRenderTrav::_StrongestLightTouched [mutable, private] |
Definition at line 389 of file render_trav.h.
Referenced by changeLightSetup(), CRenderTrav(), getStrongestLightIndex(), and resetLightSetup().
CVector NL3D::CRenderTrav::_SunDirection [private] |
Definition at line 382 of file render_trav.h.
Referenced by changeLightSetup(), CRenderTrav(), getSunDirection(), resetLightSetup(), and setSunDirection().
CViewport NL3D::CRenderTrav::_Viewport [private] |
Definition at line 360 of file render_trav.h.
Referenced by getViewport(), setViewport(), and traverse().
uint NL3D::CRenderTrav::_VPCurrentCtStart [private] |
Definition at line 392 of file render_trav.h.
Referenced by beginVPLightSetup(), and changeVPLightSetupMaterial().
Definition at line 398 of file render_trav.h.
Referenced by beginVPLightSetup(), and changeVPLightSetupMaterial().
NLMISC::CRGBAF NL3D::CRenderTrav::_VPLightDiffuse[MaxVPLight] [private] |
Definition at line 400 of file render_trav.h.
Referenced by beginVPLightSetup(), changeVPLightSetupMaterial(), and getStrongestLightIndex().
NLMISC::CRGBAF NL3D::CRenderTrav::_VPLightSpecular[MaxVPLight] [private] |
Definition at line 401 of file render_trav.h.
Referenced by beginVPLightSetup(), changeVPLightSetupMaterial(), and getStrongestLightIndex().
Definition at line 409 of file render_trav.h.
Referenced by changeVPLightSetupMaterial().
Definition at line 410 of file render_trav.h.
Referenced by changeVPLightSetupMaterial().
bool NL3D::CRenderTrav::_VPMaterialCacheDirty [private] |
Definition at line 407 of file render_trav.h.
Referenced by beginVPLightSetup(), and changeVPLightSetupMaterial().
Definition at line 408 of file render_trav.h.
Referenced by changeVPLightSetupMaterial().
Definition at line 412 of file render_trav.h.
Referenced by changeVPLightSetupMaterial().
Definition at line 411 of file render_trav.h.
Referenced by changeVPLightSetupMaterial().
uint NL3D::CRenderTrav::_VPNumLights [private] |
Definition at line 394 of file render_trav.h.
Referenced by beginVPLightSetup(), changeVPLightSetupMaterial(), and getNumVPLights().
bool NL3D::CRenderTrav::_VPSupportSpecular [private] |
Definition at line 396 of file render_trav.h.
Referenced by beginVPLightSetup(), and changeVPLightSetupMaterial().
Definition at line 188 of file render_trav.h.
Referenced by beginVPLightSetup(), CRenderTrav(), NL3D::CScene::getAmbientGlobal(), resetLightSetup(), and NL3D::CScene::setAmbientGlobal().
IDriver* NL3D::CRenderTrav::Driver [private] |
Definition at line 359 of file render_trav.h.
Referenced by beginVPLightSetup(), changeLightSetup(), changeVPLightSetupMaterial(), CRenderTrav(), getAuxDriver(), getDriver(), resetLightSetup(), setDriver(), and traverse().
Definition at line 185 of file render_trav.h.
Referenced by changeLightSetup(), CRenderTrav(), NL3D::CScene::enableLightingSystem(), and resetLightSetup().
The manager of meshBlock. Used to add instances.
Definition at line 341 of file render_trav.h.
Referenced by traverse(), and NL3D::CTransformShape::traverseRender().
Definition at line 355 of file render_trav.h.
Referenced by CRenderTrav(), and traverse().
std::vector<CTransform*> NL3D::CRenderTrav::RenderList [private] |
Definition at line 351 of file render_trav.h.
Referenced by addRenderModel(), CRenderTrav(), removeRenderModel(), reserveRenderList(), and traverse().
Definition at line 190 of file render_trav.h.
Referenced by changeLightSetup(), CRenderTrav(), NL3D::CScene::getSunAmbient(), and NL3D::CScene::setSunAmbient().
Definition at line 190 of file render_trav.h.
Referenced by changeLightSetup(), CRenderTrav(), NL3D::CScene::getSunDiffuse(), and NL3D::CScene::setSunDiffuse().
Definition at line 190 of file render_trav.h.
Referenced by changeLightSetup(), CRenderTrav(), NL3D::CScene::getSunSpecular(), and NL3D::CScene::setSunSpecular().
1.6.1