30 #ifndef __SceneManager_H__ 31 #define __SceneManager_H__ 104 const Camera* cam,
bool receiver=
true);
108 void mergeNonRenderedButInFrustum(
const AxisAlignedBox& boxBounds,
180 IRS_RENDER_RECEIVER_PASS
235 { (void)source; (void)camera; }
244 { (void)source; (void)camera; }
257 { (void)source; (void)irs; (void)v; }
271 { (void)source; (void)irs; (void)v; }
288 { (void)numberOfShadowTextures; }
304 Camera* camera,
size_t iteration)
305 { (void)light; (void)camera; (void)iteration; }
322 { (void)light; (void)frustum; }
347 { (void)lightList;
return false; }
364 :transparentShadowCastersMode(false) {}
367 bool visit(
const Pass* p);
388 virtual SceneNode* createSceneNodeImpl(
void);
505 size_t mShadowTextureCountPerType[3];
522 return light == rhs.
light && type == rhs.
type &&
529 return !(*
this == rhs);
568 virtual void initRenderQueue(
void);
582 virtual const Pass* deriveShadowCasterPass(
const Pass* pass);
591 virtual const Pass* deriveShadowReceiverPass(
const Pass* pass);
599 virtual bool validatePassForRendering(
const Pass* pass);
607 virtual bool validateRenderableForRendering(
const Pass* pass,
const Renderable* rend);
621 virtual MeshPtr createSkyboxPlane(
629 virtual MeshPtr createSkydomePlane(
633 int xsegments,
int ysegments,
int ySegmentsToKeep,
648 virtual void useRenderableViewProjMode(
const Renderable* pRend,
bool fixedFunction);
652 virtual void resetViewProjMode(
bool fixedFunction);
662 virtual void firePreRenderQueues();
664 virtual void firePostRenderQueues();
666 virtual bool fireRenderQueueStarted(
uint8 id,
const String& invocation);
668 virtual bool fireRenderQueueEnded(
uint8 id,
const String& invocation);
671 const LightList* pLightList,
bool suppressRenderStateChanges);
674 virtual void fireShadowTexturesUpdated(
size_t numberOfShadowTextures);
676 virtual void fireShadowTexturesPreCaster(
Light* light,
Camera* camera,
size_t iteration);
678 virtual void fireShadowTexturesPreReceiver(
Light* light,
Frustum* f);
680 virtual void firePreUpdateSceneGraph(
Camera* camera);
682 virtual void firePostUpdateSceneGraph(
Camera* camera);
684 virtual void firePreFindVisibleObjects(
Viewport* v);
686 virtual void firePostFindVisibleObjects(
Viewport* v);
688 virtual void fireSceneManagerDestroyed();
690 virtual void setViewport(
Viewport *vp);
696 virtual void renderVisibleObjectsDefaultSequence(
void);
700 virtual void prepareRenderQueue(
void);
718 virtual void renderSingleObject(
Renderable* rend,
const Pass* pass,
719 bool lightScissoringClipping,
bool doLightIteration,
const LightList* manualLightList = 0);
793 virtual void findLightsAffectingFrustum(
const Camera* camera);
795 virtual void initShadowVolumeMaterials(
void);
797 virtual void ensureShadowTexturesCreated();
799 virtual void destroyShadowTextures(
void);
806 void updateDirtyInstanceManagers(
void);
841 virtual void renderShadowVolumesToStencil(
const Light* light,
const Camera* cam,
848 virtual void setShadowVolumeStencilState(
bool secondpass,
bool zfail,
bool twosided);
851 Pass* pass,
const LightList *manualLightList,
unsigned long flags,
852 bool secondpass,
bool zfail,
bool twosided);
900 mCasterList(0), mIsLightInFrustum(false), mLightClipVolumeList(0),
908 mCasterList = casterList;
909 mIsLightInFrustum = lightInFrustum;
910 mLightClipVolumeList = lightClipVolumes;
913 mFarDistSquared = farDistSquared;
933 virtual void renderAdditiveStencilShadowedQueueGroupObjects(
RenderQueueGroup* group,
936 virtual void renderModulativeStencilShadowedQueueGroupObjects(
RenderQueueGroup* group,
939 virtual void renderTextureShadowCasterQueueGroupObjects(
RenderQueueGroup* group,
942 virtual void renderTextureShadowReceiverQueueGroupObjects(
RenderQueueGroup* group,
945 virtual void renderModulativeTextureShadowedQueueGroupObjects(
RenderQueueGroup* group,
949 virtual void renderAdditiveTextureShadowedQueueGroupObjects(
RenderQueueGroup* group,
954 bool doLightIteration,
const LightList* manualLightList = 0);
962 bool doLightIteration,
const LightList* manualLightList = 0);
966 virtual void updateRenderQueueSplitOptions(
void);
970 bool suppressShadows,
bool suppressRenderState);
976 virtual void resetScissor();
980 virtual void resetLightClip();
981 virtual void checkCachedLightClippingInfo();
1000 virtual void useLights(
const LightList& lights,
unsigned short limit);
1001 virtual void setViewMatrix(
const Matrix4& m);
1002 virtual void useLightsGpuProgram(
const Pass* pass,
const LightList* lights);
1003 virtual void bindGpuProgram(
GpuProgram* prog);
1004 virtual void updateGpuProgramParameters(
const Pass* p);
1075 virtual const String& getTypeName(
void)
const = 0;
1093 virtual bool hasCamera(
const String& name)
const;
1103 virtual void destroyCamera(
Camera *cam);
1110 virtual void destroyCamera(
const String& name);
1120 virtual void destroyAllCameras(
void);
1135 virtual Light* createLight();
1140 virtual Light* getLight(
const String& name)
const;
1144 virtual bool hasLight(
const String& name)
const;
1158 virtual void destroyLight(
const String& name);
1164 virtual void destroyLight(
Light* light);
1167 virtual void destroyAllLights(
void);
1179 virtual void _notifyLightsDirty(
void);
1201 virtual const LightList& _getLightsAffectingFrustum(
void)
const;
1273 virtual SceneNode* createSceneNode(
void);
1297 virtual void destroySceneNode(
const String& name);
1305 virtual void destroySceneNode(
SceneNode* sn);
1321 virtual SceneNode* getRootSceneNode(
void);
1334 virtual bool hasSceneNode(
const String& name)
const;
1385 virtual Entity* createEntity(
const String& entityName, PrefabType ptype);
1390 virtual Entity* createEntity(PrefabType ptype);
1397 virtual bool hasEntity(
const String& name)
const;
1407 virtual void destroyEntity(
Entity* ent);
1417 virtual void destroyEntity(
const String& name);
1428 virtual void destroyAllEntities(
void);
1446 virtual bool hasManualObject(
const String& name)
const;
1453 virtual void destroyManualObject(
const String& name);
1456 virtual void destroyAllManualObjects(
void);
1473 virtual bool hasBillboardChain(
const String& name)
const;
1480 virtual void destroyBillboardChain(
const String& name);
1483 virtual void destroyAllBillboardChains(
void);
1500 virtual bool hasRibbonTrail(
const String& name)
const;
1504 virtual void destroyRibbonTrail(
RibbonTrail* obj);
1507 virtual void destroyRibbonTrail(
const String& name);
1510 virtual void destroyAllRibbonTrails(
void);
1533 const String& templateName);
1582 virtual bool hasParticleSystem(
const String& name)
const;
1589 virtual void destroyParticleSystem(
const String& name);
1592 virtual void destroyAllParticleSystems(
void);
1599 virtual void clearScene(
void);
1634 virtual void prepareWorldGeometry(
const String& filename);
1668 virtual void setWorldGeometry(
const String& filename);
1701 { (void)filename;
return 0; }
1717 { (void)stream; (void)typeName;
return 0; }
1733 virtual ViewPoint getSuggestedViewpoint(
bool random =
false);
1749 { (void)strKey; (void)pValue;
return false; }
1765 { (void)strKey; (void)pDestValue;
return false; }
1777 { (void)strKey;
return false; }
1794 { (void)strKey; (void)refValueList;
return false; }
1803 { (void)refKeys;
return false; }
1813 virtual void _updateSceneGraph(
Camera* cam);
1832 virtual void _applySceneAnimations(
void);
1836 virtual void _renderVisibleObjects(
void);
1851 virtual void _renderScene(
Camera* camera,
Viewport* vp,
bool includeOverlays);
1856 virtual void _queueSkiesForRendering(
Camera* cam);
1868 virtual void _setDestinationRenderSystem(
RenderSystem* sys);
1923 virtual void setSkyPlane(
1926 Real tiling = 10,
bool drawFirst =
true,
Real bow = 0,
1927 int xsegments = 1,
int ysegments = 1,
1972 virtual void _setSkyPlane(
1976 int xsegments = 1,
int ysegments = 1,
2032 virtual void setSkyBox(
2033 bool enable,
const String& materialName,
Real distance = 5000,
2069 virtual void _setSkyBox(
2070 bool enable,
const String& materialName,
Real distance = 5000,
2141 virtual void setSkyDome(
2142 bool enable,
const String& materialName,
Real curvature = 10,
2143 Real tiling = 8,
Real distance = 4000,
bool drawFirst =
true,
2145 int xsegments = 16,
int ysegments = 16,
int ysegments_keep = -1,
2194 virtual void _setSkyDome(
2195 bool enable,
const String& materialName,
Real curvature = 10,
2198 int xsegments = 16,
int ysegments = 16,
int ysegments_keep = -1,
2239 Real expDensity = 0.001,
Real linearStart = 0.0,
Real linearEnd = 1.0);
2243 virtual FogMode getFogMode(
void)
const;
2247 virtual const ColourValue& getFogColour(
void)
const;
2251 virtual Real getFogStart(
void)
const;
2255 virtual Real getFogEnd(
void)
const;
2259 virtual Real getFogDensity(
void)
const;
2279 virtual BillboardSet* createBillboardSet(
const String& name,
unsigned int poolSize = 20);
2287 virtual BillboardSet* createBillboardSet(
unsigned int poolSize = 20);
2294 virtual bool hasBillboardSet(
const String& name)
const;
2310 virtual void destroyBillboardSet(
const String& name);
2321 virtual void destroyAllBillboardSets(
void);
2330 virtual void setDisplaySceneNodes(
bool display);
2362 virtual bool hasAnimation(
const String& name)
const;
2369 virtual void destroyAnimation(
const String& name);
2372 virtual void destroyAllAnimations(
void);
2409 virtual bool hasAnimationState(
const String& name)
const;
2416 virtual void destroyAnimationState(
const String& name);
2419 virtual void destroyAllAnimationStates(
void);
2446 bool doBeginEndFrame =
false) ;
2468 const Matrix4& viewMatrix,
const Matrix4& projMatrix,
bool doBeginEndFrame =
false,
bool lightScissoringClipping =
true,
2469 bool doLightIteration =
true,
const LightList* manualLightList = 0);
2510 virtual void addSpecialCaseRenderQueue(
uint8 qid);
2516 virtual void removeSpecialCaseRenderQueue(
uint8 qid);
2520 virtual void clearSpecialCaseRenderQueues(
void);
2525 virtual void setSpecialCaseRenderQueueMode(SpecialCaseRenderQueueMode mode);
2527 virtual SpecialCaseRenderQueueMode getSpecialCaseRenderQueueMode(
void);
2534 virtual bool isRenderQueueToBeProcessed(
uint8 qid);
2551 virtual void setWorldGeometryRenderQueue(
uint8 qid);
2562 virtual uint8 getWorldGeometryRenderQueue(
void);
2565 virtual void showBoundingBoxes(
bool bShow);
2568 virtual bool getShowBoundingBoxes()
const;
2571 virtual void _notifyAutotrackingSceneNode(
SceneNode* node,
bool autoTrack);
2601 createSphereQuery(
const Sphere& sphere,
uint32 mask = 0xFFFFFFFF);
2631 createRayQuery(
const Ray& ray,
uint32 mask = 0xFFFFFFFF);
2645 createIntersectionQuery(
uint32 mask = 0xFFFFFFFF);
2648 virtual void destroyQuery(
SceneQuery* query);
2721 virtual void setShadowColour(
const ColourValue& colour);
2728 virtual const ColourValue& getShadowColour(
void)
const;
2740 virtual void setShadowDirectionalLightExtrusionDistance(
Real dist);
2743 virtual Real getShadowDirectionalLightExtrusionDistance(
void)
const;
2760 virtual void setShadowFarDistance(
Real distance);
2765 {
return mDefaultShadowFarDist; }
2767 {
return mDefaultShadowFarDistSquared; }
2794 virtual void setShadowIndexBufferSize(
size_t size);
2797 {
return mShadowIndexBufferSize; }
2806 virtual void setShadowTextureSize(
unsigned short size);
2817 virtual void setShadowTextureConfig(
size_t shadowIndex,
unsigned short width,
2818 unsigned short height,
PixelFormat format,
unsigned short fsaa = 0,
uint16 depthBufferPoolId=1);
2824 virtual void setShadowTextureConfig(
size_t shadowIndex,
2841 virtual void setShadowTexturePixelFormat(
PixelFormat fmt);
2848 virtual void setShadowTextureFSAA(
unsigned short fsaa);
2857 virtual void setShadowTextureCount(
size_t count);
2871 { mShadowTextureCountPerType[type] = count; }
2874 {
return mShadowTextureCountPerType[type]; }
2883 virtual void setShadowTextureSettings(
unsigned short size,
unsigned short count,
2892 virtual const TexturePtr& getShadowTexture(
size_t shadowIndex);
2921 { mShadowTextureFadeStart = fadeStart; }
2930 { mShadowTextureFadeEnd = fadeEnd; }
2944 virtual void setShadowTextureSelfShadow(
bool selfShadow);
2948 {
return mShadowTextureSelfShadow; }
2969 virtual void setShadowTextureCasterMaterial(
const String& name);
2991 virtual void setShadowTextureReceiverMaterial(
const String& name);
3059 mShadowUseInfiniteFarPlane = enable; }
3109 virtual void addListener(Listener* s);
3112 virtual void removeListener(Listener* s);
3129 virtual bool hasStaticGeometry(
const String& name)
const;
3133 virtual void destroyStaticGeometry(
const String& name);
3135 virtual void destroyAllStaticGeometry(
void);
3152 virtual void destroyInstancedGeometry(
const String& name);
3154 virtual void destroyAllInstancedGeometry(
void);
3177 size_t numInstancesPerBatch,
uint16 flags=0,
3178 unsigned short subMeshIdx=0 );
3186 virtual bool hasInstanceManager(
const String &managerName )
const;
3194 virtual void destroyInstanceManager(
const String &name );
3195 virtual void destroyInstanceManager(
InstanceManager *instanceManager );
3197 virtual void destroyAllInstanceManagers(
void);
3211 virtual size_t getNumInstancesPerBatch(
const String &meshName,
const String &groupName,
3212 const String &materialName,
3214 size_t numInstancesPerBatch,
uint16 flags=0,
3215 unsigned short subMeshIdx=0 );
3229 const String &managerName );
3235 virtual void destroyInstancedEntity(
InstancedEntity *instancedEntity );
3270 virtual void destroyMovableObject(
const String& name,
const String& typeName);
3278 virtual void destroyAllMovableObjectsByType(
const String& typeName);
3280 virtual void destroyAllMovableObjects(
void);
3286 virtual bool hasMovableObject(
const String& name,
const String& typeName)
const;
3312 virtual void extractMovableObject(
const String& name,
const String& typeName);
3326 virtual void extractAllMovableObjectsByType(
const String& typeName);
3344 uint32 _getCombinedVisibilityMask(
void)
const;
3394 virtual void _injectRenderWithPass(
Pass *pass,
Renderable *rend,
bool shadowDerivation =
true,
3395 bool doLightIteration =
false,
const LightList* manualLightList = 0);
3415 virtual void _suppressRenderStateChanges(
bool suppress);
3421 {
return mSuppressRenderStateChanges; }
3435 virtual const Pass* _setPass(
const Pass* pass,
3436 bool evenIfSuppressed =
false,
bool shadowDerivation =
true);
3445 virtual void _markGpuParamsDirty(
uint16 mask);
3457 virtual void _suppressShadows(
bool suppress);
3463 {
return mSuppressShadows; }
3486 void setQueuedRenderableVisitor(SceneMgrQueuedRenderableVisitor* visitor);
3489 SceneMgrQueuedRenderableVisitor* getQueuedRenderableVisitor(
void)
const;
3549 void _handleLodEvents();
3645 virtual void initMetaData(
void)
const = 0;
3655 mMetaDataInit =
false;
3665 virtual void destroyInstance(
SceneManager* instance) = 0;
vector< Plane >::type PlaneList
RenderSystem::RenderSystemContext * rsContext
virtual void shadowTextureCasterPreViewProj(Light *light, Camera *camera, size_t iteration)
This event occurs just before the view & projection matrices are set for rendering into a shadow text...
Mask for modulative shadows (not for direct use, use SHADOWTYPE_ enum instead)
size_t mShadowIndexBufferSize
Viewport * mCurrentViewport
Current Viewport.
unsigned short mLastLightLimit
Separate SceneQuery class to query for pairs of objects which are possibly intersecting one another.
Concrete IteratorWrapper for nonconst access to the underlying container.
Mask for integrated shadows (not for direct use, use SHADOWTYPE_ enum instead)
EntityMaterialLodChangedEventList mEntityMaterialLodChangedEvents
Default sorting routine which sorts lights which cast shadows to the front of a list,...
ShadowCamLightMapping mShadowCamLightMapping
bool mShowBoundingBoxes
Flag that indicates if all of the scene node's bounding boxes should be shown as a wireframe.
size_t getShadowTextureCount(void) const
Get the number of the textures allocated for texture based shadows.
Mask for stencil shadows (not for direct use, use SHADOWTYPE_ enum instead)
Real mDefaultShadowFarDistSquared
bool scissoring
Scissoring if requested?
Abstract class defining the interface all renderable objects must implement.
Viewport * getCurrentViewport(void) const
Gets the current viewport being rendered (advanced use only, only valid during viewport update.
virtual void setSkyBoxEnabled(bool enable)
Enables / disables a 'sky box'.
const AnimationList & getAnimations() const
Returns a const version of the animation list.
virtual bool isSkyPlaneEnabled(void) const
Return whether a key plane is enabled.
Class defining a single pass of a Technique (of a Material), i.e.
InstancedGeometryList mInstancedGeometryList
Render only the queues in the special case list.
Render to texture stage, used for texture based shadows.
vector< Camera * >::type ShadowTextureCameraList
CompositorChain * mActiveCompositorChain
virtual Real getShadowFarDistanceSquared(void) const
String mShadowTextureCustomReceiverFragmentProgram
Quaternion mSkyBoxOrientation
MovableObjectLodChangedEventList mMovableObjectLodChangedEvents
PrefabType
Prefab shapes available without loading a model.
MapIterator< CameraList > CameraIterator
SceneNode * mSceneRoot
Root scene node.
InstanceManagerVec mDirtyInstanceManagers
Abstract class defining a movable object in a scene.
GpuProgramParametersSharedPtr mInfiniteExtrusionParams
const PlaneBoundedVolumeList * mLightClipVolumeList
RenderObjectListenerList mRenderObjectListeners
Camera * mCameraInProgress
Camera in progress.
Shared pointer implementation used to share index buffers.
virtual void sceneManagerDestroyed(SceneManager *source)
Event notifying the listener of the SceneManager's destruction.
String mShadowTextureCustomReceiverVertexProgram
AnimationStateSet mAnimationStates
virtual void setShadowUseLightClipPlanes(bool enabled)
Sets whether when using a built-in additive shadow mode, user clip planes should be used to restrict ...
Specialises the SceneQuery class for querying within an axis aligned box.
Default implementation of SphereSceneQuery.
LightInfoList mTestLightInfos
virtual AutoParamDataSource * createAutoParamDataSource(void) const
Internal method for creating the AutoParamDataSource instance.
SceneManager * targetSceneMgr
Target SM to send renderables to.
Default implementation of PlaneBoundedVolumeListSceneQuery.
virtual void setShadowCasterRenderBackFaces(bool bf)
Sets whether or not shadow casters should be rendered into shadow textures using their back faces rat...
Implementation of a Quaternion, i.e.
Real mShadowTextureOffset
Vector3 position
Sets to zero if directional light.
A sphere primitive, mostly used for bounds checking.
Real maxDistanceInFrustum
The farthest object in the frustum regardless of visibility / shadow caster flags.
static uint32 FX_TYPE_MASK
Query type mask which will be used for effects like billboardsets / particle systems.
Struct for caching light clipping information for re-use in a frame.
virtual SceneNode * getSkyPlaneNode(void) const
Get the sky plane node, if enabled.
vector< LightInfo >::type LightInfoList
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
virtual void postFindVisibleObjects(SceneManager *source, IlluminationRenderStage irs, Viewport *v)
Called after searching for visible objects in this SceneManager.
const Pass * mUsedPass
Pass that was actually used at the grouping level.
static uint32 LIGHT_TYPE_MASK
Query type mask which will be used for lights.
~SceneMgrQueuedRenderableVisitor()
virtual void setShadowDirLightTextureOffset(Real offset)
Sets the proportional distance which a texture shadow which is generated from a directional light wil...
bool mShadowMaterialInitDone
MovableObjectCollectionMap mMovableObjectCollectionMap
LightList mLightsAffectingFrustum
Utility class to generate a sequentially numbered series of names.
AnimationStateIterator getAnimationStateIterator(void)
Returns a specialised MapIterator over all animation states in the scene.
virtual void setFindVisibleObjects(bool find)
Sets whether the SceneManager should search for visible objects, or whether they are being manually h...
static String AUTODETECT_RESOURCE_GROUP_NAME
Special resource group name which causes resource group to be automatically determined based on searc...
vector< ShadowCaster * >::type ShadowCasterList
Class which will create instances of a given SceneManager.
bool mNormaliseNormalsOnScale
set< uint8 >::type SpecialCaseRenderQueueList
ShadowTextureList mShadowTextures
virtual void preFindVisibleObjects(SceneManager *source, IlluminationRenderStage irs, Viewport *v)
Called prior to searching for visible objects in this SceneManager.
Real minDistance
The closest a visible object is to the camera.
Class representing colour.
float Real
Software floating point type.
SceneManagerMetaData mMetaData
IlluminationRenderStage mIlluminationStage
const CameraList & getCameras() const
Returns a const version of the camera list.
Real mShadowTextureFadeEnd
As a proportion e.g. 0.6.
map< Light *, LightClippingInfo >::type LightClippingInfoMap
virtual const SkyPlaneGenParameters & getSkyPlaneGenParameters(void) const
Get the parameters used to construct the SkyPlane, if any.
Alternative listener class for dealing with IntersectionSceneQuery.
Class to manage the scene object rendering queue.
32-bit pixel format, 8 bits for red, 8 bits for green, 8 bits for blue like PF_A8R8G8B8,...
vector< String >::type StringVector
bool transparentShadowCastersMode
Are we in transparent shadow caster mode?
ulong _getLightsDirtyCounter(void) const
Advance method to gets the lights dirty counter.
PixelFormat
The pixel format used for images, textures, and render surfaces.
Real minDistanceInFrustum
The closest a object in the frustum regardless of visibility / shadow caster flags.
InstanceManagerVec mDirtyInstanceMgrsTmp
Pass * mShadowStencilPass
AutoParamDataSource * mAutoParamDataSource
Utility class for calculating automatic parameters for gpu programs.
ShadowCameraSetupPtr mDefaultShadowCameraSetup
default shadow camera setup
Class representing a node in the scene graph.
ClipResult
Generic result of clipping.
const String & getName(void) const
Return the instance name of this SceneManager.
HardwareIndexBufferSharedPtr mShadowIndexBuffer
virtual Real getShadowDirLightTextureOffset(void) const
Gets the proportional distance which a texture shadow which is generated from a directional light wil...
virtual void setShowDebugShadows(bool debug)
Enables / disables the rendering of debug information for shadows.
Abstract class representing a Texture resource.
ShadowTextureConfigList mShadowTextureConfigList
IlluminationRenderStage
Describes the stage of rendering when performing complex illumination.
virtual SceneNode * getSkyBoxNode(void) const
Get the skybox node, if enabled.
static String DEFAULT_RESOURCE_GROUP_NAME
Default resource group name.
virtual uint32 getVisibilityMask(void)
Gets a mask which is bitwise 'and'ed with objects own visibility masks to determine if the object is ...
ShadowTechnique
An enumeration of broad shadow techniques.
An abstraction of a viewport, i.e.
CullingMode mPassCullingMode
bool mShadowTextureConfigDirty
uint32 mLastLightHash
Last light sets.
Real range
Use int instead of Light::LightTypes to avoid header file dependence.
Structure containing the configuration for one shadow texture.
static uint32 STATICGEOMETRY_TYPE_MASK
Query type mask which will be used for StaticGeometry.
No special illumination stage.
virtual bool isShadowTechniqueModulative(void) const
Is there a modulative shadowing technique in use?
static uint32 WORLD_GEOMETRY_TYPE_MASK
Query type mask which will be used for world geometry.
static uint32 FRUSTUM_TYPE_MASK
Query type mask which will be used for frusta and cameras.
vector< MovableObjectLodChangedEvent >::type MovableObjectLodChangedEventList
List of movable object LOD changed events.
static uint32 USER_TYPE_MASK_LIMIT
User type mask limit.
Class providing a much simplified interface to generating manual objects with custom geometry.
SphereSceneQuery * mShadowCasterSphereQuery
virtual bool getNormaliseNormalsOnScale() const
Get whether to automatically normalise normals on objects whenever they are scaled.
virtual bool isSkyDomeEnabled(void) const
Return whether a skydome is enabled.
bool mShadowUseInfiniteFarPlane
Defines a plane in 3D space.
Class that allows listening in on the various stages of SceneManager processing, so that custom behav...
IlluminationRenderStage _getCurrentRenderStage()
GpuProgramParametersSharedPtr mShadowTextureCustomCasterVPParams
virtual bool getCameraRelativeRendering() const
Get whether to use camera-relative co-ordinates when rendering, ie to always place the camera at the ...
LightClippingInfoMap mLightClippingInfoMap
virtual void shadowTexturesUpdated(size_t numberOfShadowTextures)
Event raised after all shadow textures have been rendered into for all queues / targets but before an...
virtual bool getOptionKeys(StringVector &refKeys)
Method for getting all the implementation-specific options of the scene manager.
uint8 mSkyDomeRenderQueue
bool mLastRenderQueueInvocationCustom
Subclass of BillboardChain which automatically leaves a trail behind one or more Node instances.
Specialises the SceneQuery class for querying within a sphere.
String mName
Instance name.
map< String, Camera * >::type CameraList
static const ColourValue White
virtual CompositorChain * _getActiveCompositorChain() const
Gets the active compositor chain of the current scene being rendered.
virtual size_t estimateWorldGeometry(DataStreamPtr &stream, const String &typeName=StringUtil::BLANK)
Estimate the number of loading stages required to load the named world geometry.
RenderQueueListenerList mRenderQueueListeners
uint16 SceneTypeMask
Bitmask containing scene types.
Class encapsulating a set of AnimationState objects.
InstanceManagerMap mInstanceManagerMap
vector< EntityMeshLodChangedEvent >::type EntityMeshLodChangedEventList
List of entity mesh LOD changed events.
unsigned long clipPlanesValid
SkyDomeGenParameters mSkyDomeGenParameters
virtual bool setOption(const String &strKey, const void *pValue)
Method for setting a specific option of the Scene Manager.
RenderSystem * mDestRenderSystem
The rendering system to send the scene to.
SceneType
Classification of a scene to allow a decision of what type of SceenManager to provide back to the app...
virtual bool getFindVisibleObjects(void)
Gets whether the SceneManager should search for visible objects, or whether they are being manually h...
map< const Camera *, const Light * >::type ShadowCamLightMapping
ShadowCamera to light mapping.
virtual SceneNode * getSkyDomeNode(void) const
Get the sky dome node, if enabled.
Class encapsulating a standard 4x4 homogeneous matrix.
Standard 3-dimensional vector.
uint32 lightMask
Sets to zero if directional light.
Real mDefaultShadowFarDist
virtual ~SceneManagerFactory()
Class to hold a linear sequence of RenderQueueInvocation objects.
RenderQueue * mRenderQueue
Queue of objects for rendering.
bool mShadowAdditiveLightClip
virtual size_t estimateWorldGeometry(const String &filename)
Estimate the number of loading stages required to load the named world geometry.
Pre-transforms and batches up meshes for efficient use as instanced geometry in a scene.
map< String, Animation * >::type AnimationList
Storage of animations, lookup by name.
CullingMode
Hardware culling modes based on vertex winding.
NameGenerator mMovableNameGenerator
CameraIterator getCameraIterator(void)
Returns a specialised MapIterator over all cameras in the scene.
Lowest level collection of renderables.
AxisAlignedBoxSceneQuery * mShadowCasterAABBQuery
A grouping level underneath RenderQueue which groups renderables to be issued at coarsely the same ti...
bool mLateMaterialResolving
virtual bool isShadowTechniqueIntegrated(void) const
Is the shadow technique integrated into primary materials?
AnimationIterator getAnimationIterator(void)
Returns a specialised MapIterator over all animations in the scene.
Comparator for sorting lights relative to a point.
virtual void _setActiveCompositorChain(CompositorChain *chain)
Sets the active compositor chain of the current scene being rendered.
static uint32 ENTITY_TYPE_MASK
Query type mask which will be used for entities.
virtual bool getOption(const String &strKey, void *pDestValue)
Method for getting the value of an implementation-specific Scene Manager option.
LodListenerSet mLodListeners
GpuProgramParametersSharedPtr mShadowTextureCustomReceiverFPParams
ShadowCasterList mShadowCasterList
AxisAlignedBox receiverAabb
The axis-aligned bounds of the visible shadow receiver objects.
virtual bool sortLightsAffectingFrustum(LightList &lightList)
Hook to allow the listener to override the ordering of lights for the entire frustum.
ManualObject * mSkyBoxObj
virtual bool getShadowTextureSelfShadow(void) const
Gets whether or not texture shadows attempt to self-shadow.
Pass * mShadowReceiverPass
A pass designed to let us render shadow receivers for texture shadows.
CompositorChain * activeChain
virtual const SkyBoxGenParameters & getSkyBoxGenParameters(void) const
Get the parameters used to generate the current SkyBox, if any.
map< String, MovableObjectCollection * >::type MovableObjectCollectionMap
Pass * mShadowTextureCustomCasterPass
RenderQueue * renderQueue
Defines the functionality of a 3D API.
vector< PlaneBoundedVolume >::type PlaneBoundedVolumeList
Quaternion mSkyDomeOrientation
bool operator!=(STLAllocator< T, P > const &, STLAllocator< T2, P > const &)
determine equality, can memory from another allocator be released by this allocator,...
virtual void setShadowTextureFadeStart(Real fadeStart)
Sets the proportional distance at which texture shadows begin to fade out.
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
Specialises the SceneQuery class for querying along a ray.
Struct containing information about a mesh LOD change event for entities.
map< String, InstancedGeometry * >::type InstancedGeometryList
SceneMgrQueuedRenderableVisitor * mActiveQueuedRenderableVisitor
The active renderable visitor class - subclasses could override this.
virtual size_t getShadowIndexBufferSize(void) const
Get the size of the shadow index buffer.
bool mSuppressShadows
Suppress shadows?
Structure collecting together information about the visible objects that have been discovered in a sc...
MapIterator< AnimationList > AnimationIterator
virtual bool _areShadowsSuppressed(void) const
Are shadows suppressed?
SceneNodeList mSceneNodes
Central list of SceneNodes - for easy memory management.
uint32 mVisibilityMask
Visibility mask used to show / hide objects.
Abstract interface which classes must implement if they wish to receive events from the scene manager...
void prepare(bool lightInFrustum, const PlaneBoundedVolumeList *lightClipVolumes, const Light *light, const Camera *cam, ShadowCasterList *casterList, Real farDistSquared)
unsigned long mLightClippingInfoMapFrameNumber
Specialises the SceneQuery class for querying within a plane-bounded volume.
vector< Listener * >::type ListenerList
map< String, SceneNode * >::type SceneNodeList
vector< RenderQueueListener * >::type RenderQueueListenerList
Default implementation of RaySceneQuery.
CamVisibleObjectsMap mCamVisibleObjectsMap
virtual void setFlipCullingOnNegativeScale(bool n)
Set whether to automatically flip the culling mode on objects whenever they are negatively scaled.
Real mShadowDirLightExtrudeDist
virtual bool isLateMaterialResolving() const
Gets whether using late material resolving or not.
This is the main starting point for the new instancing system.
AxisAlignedBox aabb
The axis-aligned bounds of the visible objects.
SpecialCaseRenderQueueList mSpecialCaseQueueList
ColourValue mShadowColour
bool mShadowCasterRenderBackFaces
virtual bool getShadowUseLightClipPlanes() const
Gets whether when using a built-in additive shadow mode, user clip planes should be used to restrict ...
GpuProgramParametersSharedPtr mShadowTextureCustomReceiverVPParams
Simple structure to hold MovableObject map and a mutex to go with it.
SkyPlaneGenParameters mSkyPlaneGenParameters
unsigned long mLastFrameNumber
Rectangle2D * mFullScreenQuad
bool mCameraRelativeRendering
Whether to use camera-relative rendering.
virtual void shadowTextureReceiverPreViewProj(Light *light, Frustum *frustum)
This event occurs just before the view & projection matrices are set for re-rendering a shadow receiv...
A viewpoint from which the scene will be rendered.
virtual void preUpdateSceneGraph(SceneManager *source, Camera *camera)
Called prior to updating the scene graph in this SceneManager.
Chain of compositor effects applying to one viewport.
A class for performing queries on a scene.
Inner class to use as callback for shadow caster scene query.
virtual void setSkyDomeEnabled(bool enable)
Enables / disables a 'sky dome'.
Inner helper class to implement the visitor pattern for rendering objects in a queue.
ColourValue mAmbientLight
Current ambient light, cached for RenderSystem.
virtual void setShadowUseInfiniteFarPlane(bool enable)
Sets whether we should use an inifinite camera far plane when rendering stencil shadows.
GpuProgramParametersSharedPtr mShadowTextureCustomCasterFPParams
map< String, MovableObject * >::type MovableObjectMap
virtual bool getShadowCasterRenderBackFaces() const
Gets whether or not shadow casters should be rendered into shadow textures using their back faces rat...
virtual bool isShadowTechniqueTextureBased(void) const
Is there a texture shadow based shadowing technique in use?
Allows the rendering of a simple 2D rectangle This class renders a simple 2D rectangle; this rectangl...
Abstract interface which classes must implement if they wish to receive events from the render queue.
virtual bool getShowDebugShadows(void) const
Are debug shadows shown?
vector< EntityMaterialLodChangedEvent >::type EntityMaterialLodChangedEventList
List of entity material LOD changed events.
This optional class allows you to receive per-result callbacks from SceneQuery executions instead of ...
Mask for additive shadows (not for direct use, use SHADOWTYPE_ enum instead)
Defines a program which runs on the GPU such as a vertex or fragment program.
virtual void setCameraRelativeRendering(bool rel)
Set whether to use camera-relative co-ordinates when rendering, ie to always place the camera at the ...
Default implementation of IntersectionSceneQuery.
ShadowTextureCameraList mShadowTextureCameras
virtual bool isSkyBoxEnabled(void) const
Return whether a skybox is enabled.
virtual void setNormaliseNormalsOnScale(bool n)
Set whether to automatically normalise normals on objects whenever they are scaled.
virtual bool isShadowTechniqueAdditive(void) const
Is there an additive shadowing technique in use?
Struct associating a single Pass with a single Renderable.
size_t getShadowTextureCountPerLightType(Light::LightTypes type) const
Get the number of shadow textures is assigned for the given light type.
Class encapsulates rendering properties of an object.
First queue (after backgrounds), used for skyboxes if rendered first.
SceneNode * mSkyPlaneNode
Texture * mCurrentShadowTexture
EntityMeshLodChangedEventList mEntityMeshLodChangedEvents
uint32 mLastLightHashGpuProgram
void setShadowTextureCountPerLightType(Light::LightTypes type, size_t count)
Set the number of shadow textures a light type uses.
LightList mShadowTextureCurrentCasterLightList
Pre-transforms and batches up meshes for efficient use as static geometry in a scene.
virtual bool getDisplaySceneNodes(void) const
Returns true if all scene nodes axis are to be displayed.
LightTypes
Defines the type of light.
Vector3 mCameraRelativePosition
A interface class defining a listener which can be used to receive notifications of LOD events.
Concrete IteratorWrapper for const access to the underlying container.
SpecialCaseRenderQueueMode
Enumeration of the possible modes allowed for processing the special case render queue list.
virtual bool getOptionValues(const String &strKey, StringVector &refValueList)
Method for getting all possible values for a specific option.
virtual const SkyDomeGenParameters & getSkyDomeGenParameters(void) const
Get the parameters used to generate the current SkyDome, if any.
bool mDisplayNodes
Flag indicating whether SceneNodes will be rendered as a set of 3 axes.
virtual void setVisibilityMask(uint32 vmask)
Sets a mask which is bitwise 'and'ed with objects own visibility masks to determine if the object is ...
virtual bool isShadowTechniqueInUse(void) const
Is there any shadowing technique in use?
Struct containing information about a material LOD change event for entities.
StaticGeometryList mStaticGeometryList
Pass * mShadowModulativePass
map< const Camera *, VisibleObjectsBoundsInfo >::type CamVisibleObjectsMap
Visible objects bounding box list.
MapIterator< MovableObjectMap > MovableObjectIterator
bool operator==(STLAllocator< T, P > const &, STLAllocator< T2, P > const &)
determine equality, can memory from another allocator be released by this allocator,...
set< SceneNode * >::type AutoTrackingSceneNodes
Autotracking scene nodes.
set< LodListener * >::type LodListenerSet
Set of registered LOD listeners.
AnimationStateIterator getAnimationStateIterator(void)
Get an iterator over all the animation states in this set.
vector< ShadowTextureConfig >::type ShadowTextureConfigList
ShadowTechnique mShadowTechnique
vector< size_t >::type mShadowTextureIndexLightList
Array defining shadow texture index in light list.
TexturePtr mNullShadowTexture
Real mShadowTextureFadeStart
Proportion of texture offset in view direction e.g. 0.4.
uint16 mGpuParamsDirty
Gpu params that need rebinding (mask of GpuParamVariability)
Structure for holding a position & orientation pair.
'New' rendering operation using vertex buffers.
Defines an instance of a discrete, movable object based on a Mesh.
virtual bool getFlipCullingOnNegativeScale() const
Get whether to automatically flip the culling mode on objects whenever they are negatively scaled.
A collection of billboards (faces which are always facing the given direction) with the same (default...
Comparator for material map, for sorting materials into render order (e.g.
vector< TexturePtr >::type ShadowTextureList
ulong mLightsDirtyCounter
vector< RenderObjectListener * >::type RenderObjectListenerList
String mShadowTextureCustomCasterVertexProgram
Class defining particle system based special effects.
Represents the state of an animation and the weight of its influence.
virtual void postUpdateSceneGraph(SceneManager *source, Camera *camera)
Called after updating the scene graph in this SceneManager.
Alternative listener class for dealing with RaySceneQuery.
AnimationList mAnimationsList
uint8 mWorldGeometryRenderQueue
virtual void setLateMaterialResolving(bool isLate)
Sets whether to use late material resolving or not.
map< String, InstanceManager * >::type InstanceManagerMap
bool autoLights
Automatic light handling?
vector< InstanceManager * >::type InstanceManagerVec
SceneMgrQueuedRenderableVisitor()
static const Quaternion IDENTITY
Matrix4 mCachedViewMatrix
bool castsShadows
Light mask.
bool mSuppressRenderStateChanges
Suppress render state changes?
This utility class is used to hold the information used to generate the matrices and other informatio...
uint8 mSkyPlaneRenderQueue
ShadowCasterSceneQueryListener(SceneManager *sm)
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
virtual bool isShadowTechniqueStencilBased(void) const
Is there a stencil shadow based shadowing technique in use?
Visitor interface for items in a QueuedRenderableCollection.
virtual void setSkyPlaneEnabled(bool enable)
Enables / disables a 'sky plane'.
A 3D box aligned with the x/y/z axes.
Manages the organisation and rendering of a 'scene' i.e.
Pass * mShadowCasterPlainBlackPass
A pass designed to let us render shadow colour on white for texture shadows.
bool mShadowTextureSelfShadow
As a proportion e.g. 0.9.
ShadowCasterList * mCasterList
LightInfoList mCachedLightInfos
Represents part of the world geometry that is a result of a SceneQuery.
SkyBoxGenParameters mSkyBoxGenParameters
virtual ShadowTechnique getShadowTechnique(void) const
Gets the current shadow technique.
Pass * mShadowTextureCustomReceiverPass
virtual bool _areRenderStateChangesSuppressed(void) const
Are render state changes suppressed?
virtual const SceneManagerMetaData & getMetaData(void) const
Get information about the SceneManager type created by this factory.
SpecialCaseRenderQueueMode mSpecialCaseQueueMode
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
ShadowCasterSceneQueryListener * mShadowCasterQueryListener
OrganisationMode
Organisation modes required for this collection.
Struct containing information about a LOD change event for movable objects.
int type
Just a pointer for comparison, the light might destroyed for some reason.
virtual Real getShadowFarDistance(void) const
Gets the default maximum distance away from the camera that shadows will be visible.
CameraList mCameras
Central list of cameras - for easy memory management and lookup.
Representation of a dynamic light source in the scene.
GpuProgramParametersSharedPtr mFiniteExtrusionParams
Allows the rendering of a chain of connected billboards.
SceneMgrQueuedRenderableVisitor mDefaultQueuedRenderableVisitor
Storage for default renderable visitor.
virtual bool hasOption(const String &strKey) const
Method for verifying whether the scene manager has an implementation-specific option.
Cached light information, used to tracking light's changes.
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Representation of a ray in space, i.e.
map< String, StaticGeometry * >::type StaticGeometryList
int skyDomeYSegments_keep
bool mFlipCullingOnNegativeScale
AutoTrackingSceneNodes mAutoTrackingSceneNodes
size_t mShadowIndexBufferUsedSize
Default implementation of AxisAlignedBoxSceneQuery.
String mShadowTextureCustomCasterFragmentProgram
const LightList * manualLightList
Manual light list.
Mask for texture shadows (not for direct use, use SHADOWTYPE_ enum instead)
Real maxDistance
The farthest a visible objects is from the camera.
virtual void setShadowTextureFadeEnd(Real fadeEnd)
Sets the proportional distance at which texture shadows finish to fading out.