30 #ifndef __SceneManager_H__
31 #define __SceneManager_H__
104 const Camera* cam,
bool receiver=
true);
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) {}
505 size_t mShadowTextureCountPerType[3];
521 return light == rhs.
light && type == rhs.
type &&
527 return !(*
this == rhs);
631 int xsegments,
int ysegments,
int ySegmentsToKeep,
669 const LightList* pLightList,
bool suppressRenderStateChanges);
717 bool lightScissoringClipping,
bool doLightIteration,
const LightList* manualLightList = 0);
849 Pass* pass,
const LightList *manualLightList,
unsigned long flags,
850 bool secondpass,
bool zfail,
bool twosided);
898 mCasterList(0), mIsLightInFrustum(false), mLightClipVolumeList(0),
906 mCasterList = casterList;
907 mIsLightInFrustum = lightInFrustum;
908 mLightClipVolumeList = lightClipVolumes;
911 mFarDistSquared = farDistSquared;
952 bool doLightIteration,
const LightList* manualLightList = 0);
960 bool doLightIteration,
const LightList* manualLightList = 0);
968 bool suppressShadows,
bool suppressRenderState);
1531 const String& templateName);
1699 { (void)filename;
return 0; }
1715 { (void)stream; (void)typeName;
return 0; }
1747 { (void)strKey; (void)pValue;
return false; }
1763 { (void)strKey; (void)pDestValue;
return false; }
1775 { (void)strKey;
return false; }
1792 { (void)strKey; (void)refValueList;
return false; }
1801 { (void)refKeys;
return false; }
1924 Real tiling = 10,
bool drawFirst =
true,
Real bow = 0,
1925 int xsegments = 1,
int ysegments = 1,
1974 int xsegments = 1,
int ysegments = 1,
2031 bool enable,
const String& materialName,
Real distance = 5000,
2068 bool enable,
const String& materialName,
Real distance = 5000,
2140 bool enable,
const String& materialName,
Real curvature = 10,
2141 Real tiling = 8,
Real distance = 4000,
bool drawFirst =
true,
2143 int xsegments = 16,
int ysegments = 16,
int ysegments_keep = -1,
2193 bool enable,
const String& materialName,
Real curvature = 10,
2196 int xsegments = 16,
int ysegments = 16,
int ysegments_keep = -1,
2237 Real expDensity = 0.001,
Real linearStart = 0.0,
Real linearEnd = 1.0);
2444 bool doBeginEndFrame =
false) ;
2466 const Matrix4& viewMatrix,
const Matrix4& projMatrix,
bool doBeginEndFrame =
false,
bool lightScissoringClipping =
true,
2467 bool doLightIteration =
true,
const LightList* manualLightList = 0);
2763 {
return mDefaultShadowFarDist; }
2765 {
return mDefaultShadowFarDistSquared; }
2795 {
return mShadowIndexBufferSize; }
2816 unsigned short height,
PixelFormat format,
unsigned short fsaa = 0,
uint16 depthBufferPoolId=1);
2869 { mShadowTextureCountPerType[type] = count; }
2872 {
return mShadowTextureCountPerType[type]; }
2919 { mShadowTextureFadeStart = fadeStart; }
2928 { mShadowTextureFadeEnd = fadeEnd; }
2946 {
return mShadowTextureSelfShadow; }
3057 mShadowUseInfiniteFarPlane = enable; }
3175 size_t numInstancesPerBatch,
uint16 flags=0,
3176 unsigned short subMeshIdx=0 );
3210 const String &materialName,
3212 size_t numInstancesPerBatch,
uint16 flags=0,
3213 unsigned short subMeshIdx=0 );
3227 const String &managerName );
3393 bool doLightIteration =
false,
const LightList* manualLightList = 0);
3419 {
return mSuppressRenderStateChanges; }
3434 bool evenIfSuppressed =
false,
bool shadowDerivation =
true);
3461 {
return mSuppressShadows; }
3653 mMetaDataInit =
false;
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Class encapsulating a set of AnimationState objects.
AnimationStateIterator getAnimationStateIterator(void)
Get an iterator over all the animation states in this set.
Represents the state of an animation and the weight of its influence.
This utility class is used to hold the information used to generate the matrices and other informatio...
Specialises the SceneQuery class for querying within an axis aligned box.
A 3D box aligned with the x/y/z axes.
Allows the rendering of a chain of connected billboards.
A collection of billboards (faces which are always facing the given direction) with the same (default...
A viewpoint from which the scene will be rendered.
Class representing colour.
static const ColourValue White
Chain of compositor effects applying to one viewport.
Concrete IteratorWrapper for const access to the underlying container.
Default implementation of AxisAlignedBoxSceneQuery.
DefaultAxisAlignedBoxSceneQuery(SceneManager *creator)
void execute(SceneQueryListener *listener)
See RayScenQuery.
~DefaultAxisAlignedBoxSceneQuery()
Default implementation of IntersectionSceneQuery.
~DefaultIntersectionSceneQuery()
DefaultIntersectionSceneQuery(SceneManager *creator)
void execute(IntersectionSceneQueryListener *listener)
See IntersectionSceneQuery.
Default implementation of PlaneBoundedVolumeListSceneQuery.
DefaultPlaneBoundedVolumeListSceneQuery(SceneManager *creator)
~DefaultPlaneBoundedVolumeListSceneQuery()
void execute(SceneQueryListener *listener)
See SceneQuery.
Default implementation of RaySceneQuery.
DefaultRaySceneQuery(SceneManager *creator)
void execute(RaySceneQueryListener *listener)
See RayScenQuery.
Default implementation of SphereSceneQuery.
DefaultSphereSceneQuery(SceneManager *creator)
void execute(SceneQueryListener *listener)
See SceneQuery.
~DefaultSphereSceneQuery()
Defines an instance of a discrete, movable object based on a Mesh.
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
Defines a program which runs on the GPU such as a vertex or fragment program.
Shared pointer implementation used to share index buffers.
This is the main starting point for the new instancing system.
Pre-transforms and batches up meshes for efficient use as instanced geometry in a scene.
Alternative listener class for dealing with IntersectionSceneQuery.
Separate SceneQuery class to query for pairs of objects which are possibly intersecting one another.
Representation of a dynamic light source in the scene.
LightTypes
Defines the type of light.
A interface class defining a listener which can be used to receive notifications of LOD events.
Class providing a much simplified interface to generating manual objects with custom geometry.
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
Class encapsulates rendering properties of an object.
Class encapsulating a standard 4x4 homogeneous matrix.
Abstract class defining a movable object in a scene.
Utility class to generate a sequentially numbered series of names.
Class defining particle system based special effects.
Class defining a single pass of a Technique (of a Material), i.e.
Specialises the SceneQuery class for querying within a plane-bounded volume.
Defines a plane in 3D space.
Implementation of a Quaternion, i.e.
static const Quaternion IDENTITY
Lowest level collection of renderables.
OrganisationMode
Organisation modes required for this collection.
Visitor interface for items in a QueuedRenderableCollection.
Alternative listener class for dealing with RaySceneQuery.
Specialises the SceneQuery class for querying along a ray.
Representation of a ray in space, i.e.
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 scene manager...
'New' rendering operation using vertex buffers.
A grouping level underneath RenderQueue which groups renderables to be issued at coarsely the same ti...
Class to hold a linear sequence of RenderQueueInvocation objects.
Abstract interface which classes must implement if they wish to receive events from the render queue.
Class to manage the scene object rendering queue.
Defines the functionality of a 3D API.
Abstract class defining the interface all renderable objects must implement.
static String AUTODETECT_RESOURCE_GROUP_NAME
Special resource group name which causes resource group to be automatically determined based on searc...
static String DEFAULT_RESOURCE_GROUP_NAME
Default resource group name.
Subclass of BillboardChain which automatically leaves a trail behind one or more Node instances.
Class which will create instances of a given SceneManager.
SceneManagerMetaData mMetaData
virtual void destroyInstance(SceneManager *instance)=0
Destroy an instance of a SceneManager.
virtual ~SceneManagerFactory()
virtual const SceneManagerMetaData & getMetaData(void) const
Get information about the SceneManager type created by this factory.
virtual void initMetaData(void) const =0
Internal method to initialise the metadata, must be implemented.
virtual SceneManager * createInstance(const String &instanceName)=0
Create a new instance of a SceneManager.
Class that allows listening in on the various stages of SceneManager processing, so that custom behav...
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...
virtual void preFindVisibleObjects(SceneManager *source, IlluminationRenderStage irs, Viewport *v)
Called prior to searching for visible objects in this SceneManager.
virtual bool sortLightsAffectingFrustum(LightList &lightList)
Hook to allow the listener to override the ordering of lights for the entire frustum.
virtual void sceneManagerDestroyed(SceneManager *source)
Event notifying the listener of the SceneManager's destruction.
virtual void shadowTextureReceiverPreViewProj(Light *light, Frustum *frustum)
This event occurs just before the view & projection matrices are set for re-rendering a shadow receiv...
virtual void shadowTexturesUpdated(size_t numberOfShadowTextures)
Event raised after all shadow textures have been rendered into for all queues / targets but before an...
virtual void preUpdateSceneGraph(SceneManager *source, Camera *camera)
Called prior to updating the scene graph in this SceneManager.
virtual void postFindVisibleObjects(SceneManager *source, IlluminationRenderStage irs, Viewport *v)
Called after searching for visible objects in this SceneManager.
virtual void postUpdateSceneGraph(SceneManager *source, Camera *camera)
Called after updating the scene graph in this SceneManager.
Inner helper class to implement the visitor pattern for rendering objects in a queue.
void visit(Renderable *r)
Visit method called once per Renderable on a grouped collection.
SceneMgrQueuedRenderableVisitor()
bool scissoring
Scissoring if requested?
void visit(RenderablePass *rp)
Called when visiting a RenderablePass, i.e.
SceneManager * targetSceneMgr
Target SM to send renderables to.
bool transparentShadowCastersMode
Are we in transparent shadow caster mode?
const LightList * manualLightList
Manual light list.
const Pass * mUsedPass
Pass that was actually used at the grouping level.
~SceneMgrQueuedRenderableVisitor()
bool autoLights
Automatic light handling?
bool visit(const Pass *p)
Inner class to use as callback for shadow caster scene query.
ShadowCasterSceneQueryListener(SceneManager *sm)
void prepare(bool lightInFrustum, const PlaneBoundedVolumeList *lightClipVolumes, const Light *light, const Camera *cam, ShadowCasterList *casterList, Real farDistSquared)
bool queryResult(SceneQuery::WorldFragment *fragment)
Called when a WorldFragment is returned by a query.
const PlaneBoundedVolumeList * mLightClipVolumeList
ShadowCasterList * mCasterList
bool queryResult(MovableObject *object)
Called when a MovableObject is returned by a query.
Manages the organisation and rendering of a 'scene' i.e.
virtual void setWorldGeometry(DataStreamPtr &stream, const String &typeName=StringUtil::BLANK)
Sets the source of the 'world' geometry, i.e.
virtual void initShadowVolumeMaterials(void)
Internal method for setting up materials for shadows.
virtual void renderVisibleObjectsDefaultSequence(void)
Internal method for rendering all objects using the default queue sequence.
virtual void destroyAllAnimations(void)
Removes all animations created using this SceneManager.
static uint32 USER_TYPE_MASK_LIMIT
User type mask limit.
bool mSuppressShadows
Suppress shadows?
IlluminationRenderStage _getCurrentRenderStage()
CameraIterator getCameraIterator(void)
Returns a specialised MapIterator over all cameras in the scene.
virtual void buildScissor(const Light *l, const Camera *cam, RealRect &rect)
Update a scissor rectangle from a single light.
virtual void setFindVisibleObjects(bool find)
Sets whether the SceneManager should search for visible objects, or whether they are being manually h...
vector< MovableObjectLodChangedEvent >::type MovableObjectLodChangedEventList
List of movable object LOD changed events.
virtual void renderTextureShadowCasterQueueGroupObjects(RenderQueueGroup *group, QueuedRenderableCollection::OrganisationMode om)
Render a group rendering only shadow casters.
virtual bool getNormaliseNormalsOnScale() const
Get whether to automatically normalise normals on objects whenever they are scaled.
bool mDisplayNodes
Flag indicating whether SceneNodes will be rendered as a set of 3 axes.
virtual bool hasManualObject(const String &name) const
Returns whether a manual object with the given name exists.
String mShadowTextureCustomCasterFragmentProgram
vector< Listener * >::type ListenerList
MovableObjectCollection * getMovableObjectCollection(const String &typeName)
Gets the movable object collection for the given type name.
virtual void prepareRenderQueue(void)
Internal method for preparing the render queue for use with each render.
virtual void destroyQuery(SceneQuery *query)
Destroys a scene query of any type.
StaticGeometryList mStaticGeometryList
SceneManager(const String &instanceName)
Constructor.
map< String, MovableObjectCollection * >::type MovableObjectCollectionMap
virtual CompositorChain * _getActiveCompositorChain() const
Gets the active compositor chain of the current scene being rendered.
virtual BillboardSet * getBillboardSet(const String &name) const
Retrieves a pointer to the named BillboardSet.
virtual void setShadowFarDistance(Real distance)
Sets the default maximum distance away from the camera that shadows will be visible.
Pass * mShadowTextureCustomCasterPass
virtual void setShadowTechnique(ShadowTechnique technique)
Sets the general shadow technique to be used in this scene.
Real mShadowTextureOffset
virtual bool getDisplaySceneNodes(void) const
Returns true if all scene nodes axis are to be displayed.
String mName
Instance name.
virtual void setShadowTextureConfig(size_t shadowIndex, const ShadowTextureConfig &config)
Set the detailed configuration for a shadow texture.
ColourValue mAmbientLight
Current ambient light, cached for RenderSystem.
virtual void setSpecialCaseRenderQueueMode(SpecialCaseRenderQueueMode mode)
Sets the way the special case render queue list is processed.
String mShadowTextureCustomCasterVertexProgram
virtual Camera * getCamera(const String &name) const
Retrieves a pointer to the named camera.
virtual size_t estimateWorldGeometry(const String &filename)
Estimate the number of loading stages required to load the named world geometry.
virtual Real getFogDensity(void) const
Returns the fog density for the scene.
virtual void destroyAllRibbonTrails(void)
Removes & destroys all RibbonTrails from the SceneManager.
virtual RaySceneQuery * createRayQuery(const Ray &ray, uint32 mask=0xFFFFFFFF)
Creates a RaySceneQuery for this scene manager.
virtual bool hasMovableObject(const String &name, const String &typeName) const
Returns whether a movable object instance with the given name exists.
virtual void destroyBillboardChain(const String &name)
Removes & destroys a BillboardChain from the SceneManager.
Viewport * getCurrentViewport(void) const
Gets the current viewport being rendered (advanced use only, only valid during viewport update.
Real mDefaultShadowFarDist
ManualObject * mSkyBoxObj
virtual void _populateLightList(const Vector3 &position, Real radius, LightList &destList, uint32 lightMask=0xFFFFFFFF)
Populate a light list with an ordered set of the lights which are closest to the position specified.
virtual bool hasStaticGeometry(const String &name) const
Returns whether a static geometry instance with the given name exists.
virtual BillboardSet * createBillboardSet(unsigned int poolSize=20)
Creates a new BillboardSet for use with this scene manager, with a generated name.
virtual void manualRender(RenderOperation *rend, Pass *pass, Viewport *vp, const Matrix4 &worldMatrix, const Matrix4 &viewMatrix, const Matrix4 &projMatrix, bool doBeginEndFrame=false)
Manual rendering method, for advanced users only.
virtual void _setSkyPlane(bool enable, const Plane &plane, const String &materialName, Real scale=1000, Real tiling=10, uint8 renderQueue=RENDER_QUEUE_SKIES_EARLY, Real bow=0, int xsegments=1, int ysegments=1, const String &groupName=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Enables / disables a 'sky plane' i.e.
virtual void destroyInstancedGeometry(InstancedGeometry *geom)
Remove & destroy a InstancedGeometry instance.
virtual void removeRenderQueueListener(RenderQueueListener *delListener)
Removes a listener previously added with addRenderQueueListener.
virtual void destroyAllEntities(void)
Removes & destroys all Entities.
vector< size_t >::type mShadowTextureIndexLightList
Array defining shadow texture index in light list.
virtual void extractAllMovableObjectsByType(const String &typeName)
Extract all injected MovableObjects of a given type.
AxisAlignedBoxSceneQuery * mShadowCasterAABBQuery
virtual ParticleSystem * createParticleSystem(const String &name, const String &templateName)
Creates a particle system based on a template.
virtual void _setSkyBox(bool enable, const String &materialName, Real distance=5000, uint8 renderQueue=RENDER_QUEUE_SKIES_EARLY, const Quaternion &orientation=Quaternion::IDENTITY, const String &groupName=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Enables / disables a 'sky box' i.e.
virtual SceneNode * getRootSceneNode(void)
Gets the SceneNode at the root of the scene hierarchy.
virtual bool getShadowTextureSelfShadow(void) const
Gets whether or not texture shadows attempt to self-shadow.
map< String, InstancedGeometry * >::type InstancedGeometryList
AnimationStateSet mAnimationStates
virtual void setSkyPlaneEnabled(bool enable)
Enables / disables a 'sky plane'.
virtual void destroyAnimationState(const String &name)
Destroys an AnimationState.
MapIterator< CameraList > CameraIterator
virtual void setShadowTextureFadeEnd(Real fadeEnd)
Sets the proportional distance at which texture shadows finish to fading out.
virtual RenderContext * _pauseRendering()
Pause rendering of the frame.
AutoTrackingSceneNodes mAutoTrackingSceneNodes
virtual void _updateSceneGraph(Camera *cam)
Internal method for updating the scene graph ie the tree of SceneNode instances managed by this class...
virtual void setShadowTextureSettings(unsigned short size, unsigned short count, PixelFormat fmt=PF_X8R8G8B8, unsigned short fsaa=0, uint16 depthBufferPoolId=1)
Sets the size and count of textures used in texture-based shadows.
void removeLodListener(LodListener *listener)
Remove a level of detail listener.
virtual void useLights(const LightList &lights, unsigned short limit)
void _notifyEntityMaterialLodChanged(EntityMaterialLodChangedEvent &evt)
Notify that an entity material LOD change event has occurred.
LodListenerSet mLodListeners
virtual void _resumeRendering(RenderContext *context)
Resume rendering of the frame.
vector< EntityMaterialLodChangedEvent >::type EntityMaterialLodChangedEventList
List of entity material LOD changed events.
virtual void updateGpuProgramParameters(const Pass *p)
virtual void _renderScene(Camera *camera, Viewport *vp, bool includeOverlays)
Prompts the class to send its contents to the renderer.
virtual bool getShadowUseLightClipPlanes() const
Gets whether when using a built-in additive shadow mode, user clip planes should be used to restrict ...
virtual const Pass * deriveShadowCasterPass(const Pass *pass)
Internal method for turning a regular pass into a shadow caster pass.
virtual void removeRenderObjectListener(RenderObjectListener *delListener)
Removes a listener previously added with addRenderObjectListener.
virtual void destroyInstancedEntity(InstancedEntity *instancedEntity)
Removes an InstancedEntity,.
virtual void setFlipCullingOnNegativeScale(bool n)
Set whether to automatically flip the culling mode on objects whenever they are negatively scaled.
void addLodListener(LodListener *listener)
Add a level of detail listener.
virtual void destroyAllInstanceManagers(void)
vector< ShadowCaster * >::type ShadowCasterList
size_t getShadowTextureCount(void) const
Get the number of the textures allocated for texture based shadows.
virtual void destroyAllBillboardChains(void)
Removes & destroys all BillboardChains from the SceneManager.
virtual void checkCachedLightClippingInfo()
bool mShadowTextureSelfShadow
As a proportion e.g. 0.9.
virtual bool getOption(const String &strKey, void *pDestValue)
Method for getting the value of an implementation-specific Scene Manager option.
bool mSuppressRenderStateChanges
Suppress render state changes?
Real mShadowTextureFadeStart
Proportion of texture offset in view direction e.g. 0.4.
virtual void renderTextureShadowReceiverQueueGroupObjects(RenderQueueGroup *group, QueuedRenderableCollection::OrganisationMode om)
Render a group rendering only shadow receivers.
bool mShadowCasterRenderBackFaces
virtual void destroyMovableObject(MovableObject *m)
Destroys a MovableObject.
Quaternion mSkyDomeOrientation
virtual void setShadowIndexBufferSize(size_t size)
Sets the maximum size of the index buffer used to render shadow primitives.
virtual bool setOption(const String &strKey, const void *pValue)
Method for setting a specific option of the Scene Manager.
ShadowCasterSceneQueryListener * mShadowCasterQueryListener
static uint32 STATICGEOMETRY_TYPE_MASK
Query type mask which will be used for StaticGeometry.
CullingMode mPassCullingMode
virtual bool isShadowTechniqueStencilBased(void) const
Is there a stencil shadow based shadowing technique in use?
virtual const RealRect & getLightScissorRect(Light *l, const Camera *cam)
Retrieve a scissor rectangle for a given light and camera.
virtual ClipResult buildAndSetLightClip(const LightList &ll)
Build a set of user clip planes from a single non-directional light.
virtual void fireShadowTexturesPreReceiver(Light *light, Frustum *f)
Internal method for firing the pre receiver texture shadows event.
AnimationStateIterator getAnimationStateIterator(void)
Returns a specialised MapIterator over all animation states in the scene.
MapIterator< AnimationList > AnimationIterator
set< LodListener * >::type LodListenerSet
Set of registered LOD listeners.
virtual void setWorldGeometryRenderQueue(uint8 qid)
Sets the render queue that the world geometry (if any) this SceneManager renders will be associated w...
virtual const ColourValue & getShadowColour(void) const
Get the colour used to modulate areas in shadow.
virtual bool getFindVisibleObjects(void)
Gets whether the SceneManager should search for visible objects, or whether they are being manually h...
virtual AnimationState * createAnimationState(const String &animName)
Create an AnimationState object for managing application of animations.
virtual void destroyEntity(const String &name)
Removes & destroys an Entity from the SceneManager by name.
virtual MovableObject * getMovableObject(const String &name, const String &typeName) const
Get a reference to a previously created MovableObject.
virtual Light * createLight()
Creates a light with a generated name.
virtual void destroyCamera(const String &name)
Removes a camera from the scene.
MapIterator< MovableObjectMap > MovableObjectIterator
virtual void fireSceneManagerDestroyed()
Internal method for firing destruction event.
virtual void fireRenderSingleObject(Renderable *rend, const Pass *pass, const AutoParamDataSource *source, const LightList *pLightList, bool suppressRenderStateChanges)
Internal method for firing when rendering a single object.
static uint32 ENTITY_TYPE_MASK
Query type mask which will be used for entities.
set< SceneNode * >::type AutoTrackingSceneNodes
Autotracking scene nodes.
virtual void firePreRenderQueues()
Internal method for firing the queue start event.
virtual void removeListener(Listener *s)
Remove a listener.
virtual bool hasParticleSystem(const String &name) const
Returns whether a particle system with the given name exists.
Matrix4 mCachedViewMatrix
virtual ParticleSystem * getParticleSystem(const String &name) const
Retrieves a pointer to the named ParticleSystem.
Real mShadowDirLightExtrudeDist
virtual const String & getTypeName(void) const =0
Retrieve the type name of this scene manager.
virtual void setDisplaySceneNodes(bool display)
Tells the SceneManager whether it should render the SceneNodes which make up the scene as well as the...
MovableObjectLodChangedEventList mMovableObjectLodChangedEvents
SceneNode * mSceneRoot
Root scene node.
virtual void showBoundingBoxes(bool bShow)
Allows all bounding boxes of scene nodes to be displayed.
virtual bool fireRenderQueueEnded(uint8 id, const String &invocation)
Internal method for firing the queue end event, returns true if queue is to be repeated.
virtual bool hasCamera(const String &name) const
Returns whether a camera with the given name exists.
virtual Real getShadowDirectionalLightExtrusionDistance(void) const
Gets the distance a shadow volume is extruded for a directional light.
SpecialCaseRenderQueueList mSpecialCaseQueueList
virtual BillboardChain * getBillboardChain(const String &name) const
Retrieves a pointer to the named BillboardChain.
virtual void setViewport(Viewport *vp)
Internal method for setting the destination viewport for the next render.
virtual bool fireRenderQueueStarted(uint8 id, const String &invocation)
Internal method for firing the queue start event, returns true if queue is to be skipped.
virtual void setNormaliseNormalsOnScale(bool n)
Set whether to automatically normalise normals on objects whenever they are scaled.
virtual void _injectRenderWithPass(Pass *pass, Renderable *rend, bool shadowDerivation=true, bool doLightIteration=false, const LightList *manualLightList=0)
Render something as if it came from the current queue.
virtual void renderSingleObject(Renderable *rend, const Pass *pass, bool lightScissoringClipping, bool doLightIteration, const LightList *manualLightList=0)
Internal utility method for rendering a single object.
virtual bool isShadowTechniqueInUse(void) const
Is there any shadowing technique in use?
virtual void setSkyDomeEnabled(bool enable)
Enables / disables a 'sky dome'.
virtual InstanceManager * createInstanceManager(const String &customName, const String &meshName, const String &groupName, InstanceManager::InstancingTechnique technique, size_t numInstancesPerBatch, uint16 flags=0, unsigned short subMeshIdx=0)
Creates an InstanceManager interface to create & manipulate instanced entities You need to call this ...
IlluminationRenderStage
Describes the stage of rendering when performing complex illumination.
@ IRS_RENDER_TO_TEXTURE
Render to texture stage, used for texture based shadows.
@ IRS_NONE
No special illumination stage.
virtual void setCameraRelativeRendering(bool rel)
Set whether to use camera-relative co-ordinates when rendering, ie to always place the camera at the ...
virtual void destroyInstanceManager(InstanceManager *instanceManager)
RenderQueue * mRenderQueue
Queue of objects for rendering.
virtual bool getCameraRelativeRendering() const
Get whether to use camera-relative co-ordinates when rendering, ie to always place the camera at the ...
virtual void destroyInstancedGeometry(const String &name)
Remove & destroy a InstancedGeometry instance.
Vector3 mCameraRelativePosition
virtual void destroyStaticGeometry(StaticGeometry *geom)
Remove & destroy a StaticGeometry instance.
virtual StaticGeometry * createStaticGeometry(const String &name)
Creates a StaticGeometry instance suitable for use with this SceneManager.
virtual bool hasLight(const String &name) const
Returns whether a light with the given name exists.
virtual bool hasBillboardSet(const String &name) const
Returns whether a billboardset with the given name exists.
virtual void removeSpecialCaseRenderQueue(uint8 qid)
Removes an item to the 'special case' render queue list.
virtual void destroyBillboardSet(const String &name)
Removes & destroys an BillboardSet from the SceneManager by name.
ulong _getLightsDirtyCounter(void) const
Advance method to gets the lights dirty counter.
virtual void useLightsGpuProgram(const Pass *pass, const LightList *lights)
virtual void _applySceneAnimations(void)
Internal method for applying animations to scene nodes.
SceneMgrQueuedRenderableVisitor * mActiveQueuedRenderableVisitor
The active renderable visitor class - subclasses could override this.
virtual Entity * getEntity(const String &name) const
Retrieves a pointer to the named Entity.
Pass * mShadowReceiverPass
A pass designed to let us render shadow receivers for texture shadows.
virtual void prepareWorldGeometry(DataStreamPtr &stream, const String &typeName=StringUtil::BLANK)
Sets the source of the 'world' geometry, i.e.
bool mLateMaterialResolving
ShadowTextureCameraList mShadowTextureCameras
InstancedGeometryList mInstancedGeometryList
InstanceManagerMap mInstanceManagerMap
virtual void prepareWorldGeometry(const String &filename)
Sets the source of the 'world' geometry, i.e.
virtual void renderVisibleObjectsCustomSequence(RenderQueueInvocationSequence *s)
Internal method for rendering all objects using a custom queue sequence.
virtual void resetViewProjMode(bool fixedFunction)
Internal method used by _renderSingleObject to deal with renderables which override the camera's own ...
ShadowCamLightMapping mShadowCamLightMapping
virtual BillboardChain * createBillboardChain()
Create a BillboardChain, an object which you can use to render a linked chain of billboards,...
virtual ParticleSystem * createParticleSystem(const String &name, size_t quota=500, const String &resourceGroup=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Create a blank particle system.
virtual void destroyAllBillboardSets(void)
Removes & destroys all BillboardSets.
virtual Camera * createCamera(const String &name)
Creates a camera to be managed by this scene manager.
virtual void _suppressShadows(bool suppress)
Indicates to the SceneManager whether it should suppress the active shadow rendering technique until ...
HardwareIndexBufferSharedPtr mShadowIndexBuffer
bool mShadowMaterialInitDone
AutoParamDataSource * mAutoParamDataSource
Utility class for calculating automatic parameters for gpu programs.
virtual void firePreFindVisibleObjects(Viewport *v)
Internal method for firing find visible objects event.
bool mLastRenderQueueInvocationCustom
virtual bool isLateMaterialResolving() const
Gets whether using late material resolving or not.
LightList mLightsAffectingFrustum
virtual void destroyAllStaticGeometry(void)
Remove & destroy all StaticGeometry instances.
virtual bool validatePassForRendering(const Pass *pass)
Internal method to validate whether a Pass should be allowed to render.
virtual MeshPtr createSkydomePlane(BoxPlane bp, Real curvature, Real tiling, Real distance, const Quaternion &orientation, int xsegments, int ysegments, int ySegmentsToKeep, const String &groupName)
virtual void _setActiveCompositorChain(CompositorChain *chain)
Sets the active compositor chain of the current scene being rendered.
virtual PlaneBoundedVolumeListSceneQuery * createPlaneBoundedVolumeQuery(const PlaneBoundedVolumeList &volumes, uint32 mask=0xFFFFFFFF)
Creates a PlaneBoundedVolumeListSceneQuery for this scene manager.
vector< LightInfo >::type LightInfoList
virtual void _suppressRenderStateChanges(bool suppress)
Indicates to the SceneManager whether it should suppress changing the RenderSystem states when render...
GpuProgramParametersSharedPtr mShadowTextureCustomReceiverFPParams
TexturePtr mNullShadowTexture
virtual AxisAlignedBoxSceneQuery * createAABBQuery(const AxisAlignedBox &box, uint32 mask=0xFFFFFFFF)
Creates an AxisAlignedBoxSceneQuery for this scene manager.
virtual ManualObject * createManualObject(const String &name)
Create a ManualObject, an object which you populate with geometry manually through a GL immediate-mod...
virtual void renderModulativeTextureShadowedQueueGroupObjects(RenderQueueGroup *group, QueuedRenderableCollection::OrganisationMode om)
Render a group with the added complexity of modulative texture shadows.
virtual bool hasAnimation(const String &name) const
Returns whether an animation with the given name exists.
SkyDomeGenParameters mSkyDomeGenParameters
SpecialCaseRenderQueueMode
Enumeration of the possible modes allowed for processing the special case render queue list.
@ SCRQM_INCLUDE
Render only the queues in the special case list.
virtual void renderShadowVolumesToStencil(const Light *light, const Camera *cam, bool calcScissor)
Internal method for rendering all the objects for a given light into the stencil buffer.
virtual void addListener(Listener *s)
Add a listener which will get called back on scene manager events.
SkyPlaneGenParameters mSkyPlaneGenParameters
virtual ~SceneManager()
Default destructor.
virtual bool hasOption(const String &strKey) const
Method for verifying whether the scene manager has an implementation-specific option.
virtual void extractMovableObject(const String &name, const String &typeName)
Extract a previously injected MovableObject.
virtual bool hasSceneNode(const String &name) const
Returns whether a scene node with the given name exists.
virtual void destroyRibbonTrail(const String &name)
Removes & destroys a RibbonTrail from the SceneManager.
vector< RenderQueueListener * >::type RenderQueueListenerList
void setShadowTextureCountPerLightType(Light::LightTypes type, size_t count)
Set the number of shadow textures a light type uses.
virtual Real getShadowDirLightTextureOffset(void) const
Gets the proportional distance which a texture shadow which is generated from a directional light wil...
virtual ShadowTechnique getShadowTechnique(void) const
Gets the current shadow technique.
virtual void firePostFindVisibleObjects(Viewport *v)
Internal method for firing find visible objects event.
virtual void destroyAllLights(void)
Removes and destroys all lights in the scene.
InstanceManagerVec mDirtyInstanceManagers
void _handleLodEvents()
Handle LOD events.
LightInfoList mTestLightInfos
virtual void setShadowTextureFadeStart(Real fadeStart)
Sets the proportional distance at which texture shadows begin to fade out.
virtual void initRenderQueue(void)
Internal method for initialising the render queue.
virtual SceneNode * createSceneNode(const String &name)
Creates an instance of a SceneNode with a given name.
size_t mShadowIndexBufferSize
virtual Entity * createEntity(const String &meshName)
Create an Entity (instance of a discrete mesh) with an autogenerated name.
size_t mShadowIndexBufferUsedSize
virtual void destroyManualObject(ManualObject *obj)
Removes & destroys a ManualObject from the SceneManager.
ShadowTextureConfigList mShadowTextureConfigList
virtual void setShadowVolumeStencilState(bool secondpass, bool zfail, bool twosided)
Internal utility method for setting stencil state for rendering shadow volumes.
virtual void setShadowTextureConfig(size_t shadowIndex, unsigned short width, unsigned short height, PixelFormat format, unsigned short fsaa=0, uint16 depthBufferPoolId=1)
Set the detailed configuration for a shadow texture.
virtual void renderBasicQueueGroupObjects(RenderQueueGroup *pGroup, QueuedRenderableCollection::OrganisationMode om)
Render a group in the ordinary way.
virtual const ShadowCasterList & findShadowCastersForLight(const Light *light, const Camera *camera)
Internal method for locating a list of shadow casters which could be affecting the frustum for a give...
virtual void updateRenderQueueSplitOptions(void)
Update the state of the global render queue splitting based on a shadow option change.
virtual InstancedEntity * createInstancedEntity(const String &materialName, const String &managerName)
Creates an InstancedEntity based on an existing InstanceManager (.
virtual void destroyAnimation(const String &name)
Destroys an Animation.
ShadowTechnique mShadowTechnique
virtual void renderAdditiveStencilShadowedQueueGroupObjects(RenderQueueGroup *group, QueuedRenderableCollection::OrganisationMode om)
Render a group with the added complexity of additive stencil shadows.
virtual void setShadowTextureCount(size_t count)
Set the number of textures allocated for texture-based shadows.
virtual Entity * createEntity(const String &entityName, const String &meshName, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Create an Entity (instance of a discrete mesh).
void setAmbientLight(const ColourValue &colour)
Sets the ambient light level to be used for the scene.
virtual bool getOptionKeys(StringVector &refKeys)
Method for getting all the implementation-specific options of the scene manager.
AnimationList mAnimationsList
virtual void setSkyPlane(bool enable, const Plane &plane, const String &materialName, Real scale=1000, Real tiling=10, bool drawFirst=true, Real bow=0, int xsegments=1, int ysegments=1, const String &groupName=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Enables / disables a 'sky plane' i.e.
virtual void addSpecialCaseRenderQueue(uint8 qid)
Adds an item to the 'special case' render queue list.
virtual void destroySceneNode(const String &name)
Destroys a SceneNode with a given name.
virtual size_t getNumInstancesPerBatch(const String &meshName, const String &groupName, const String &materialName, InstanceManager::InstancingTechnique technique, size_t numInstancesPerBatch, uint16 flags=0, unsigned short subMeshIdx=0)
const ColourValue & getAmbientLight(void) const
Returns the ambient light level to be used for the scene.
virtual bool validateRenderableForRendering(const Pass *pass, const Renderable *rend)
Internal method to validate whether a Renderable should be allowed to render.
RenderSystem * mDestRenderSystem
The rendering system to send the scene to.
virtual bool isShadowTechniqueAdditive(void) const
Is there an additive shadowing technique in use?
virtual void _populateLightList(const SceneNode *sn, Real radius, LightList &destList, uint32 lightMask=0xFFFFFFFF)
Populates a light list with an ordered set of the lights which are closest to the position of the Sce...
virtual void setShadowUseLightClipPlanes(bool enabled)
Sets whether when using a built-in additive shadow mode, user clip planes should be used to restrict ...
virtual void firePostUpdateSceneGraph(Camera *camera)
Internal method for firing post update scene graph event.
uint8 mSkyPlaneRenderQueue
virtual void _queueSkiesForRendering(Camera *cam)
Internal method for queueing the sky objects with the params as previously set through setSkyBox,...
virtual FogMode getFogMode(void) const
Returns the fog mode for the scene.
virtual void destroyBillboardSet(BillboardSet *set)
Removes & destroys an BillboardSet from the SceneManager.
virtual void setLateMaterialResolving(bool isLate)
Sets whether to use late material resolving or not.
OGRE_MUTEX(mAnimationsListMutex)
virtual void extractMovableObject(MovableObject *m)
Extract a previously injected MovableObject.
virtual void bindGpuProgram(GpuProgram *prog)
virtual void setShadowTexturePixelFormat(PixelFormat fmt)
Set the pixel format of the textures used for texture-based shadows.
virtual const SkyDomeGenParameters & getSkyDomeGenParameters(void) const
Get the parameters used to generate the current SkyDome, if any.
EntityMaterialLodChangedEventList mEntityMaterialLodChangedEvents
virtual void setShadowDirLightTextureOffset(Real offset)
Sets the proportional distance which a texture shadow which is generated from a directional light wil...
virtual Animation * getAnimation(const String &name) const
Looks up an Animation object previously created with createAnimation.
virtual void destroyInstanceManager(const String &name)
Destroys an InstanceManager if it was created with createInstanceManager()
MovableObjectCollectionMap mMovableObjectCollectionMap
virtual Entity * createEntity(const String &entityName, const MeshPtr &pMesh)
Create an Entity (instance of a discrete mesh).
virtual void destroyAllMovableObjectsByType(const String &typeName)
Destroy all MovableObjects of a given type.
virtual RenderQueue * getRenderQueue(void)
Retrieves the internal render queue, for advanced users only.
virtual MeshPtr createSkyboxPlane(BoxPlane bp, Real distance, const Quaternion &orientation, const String &groupName)
virtual InstancedGeometry * getInstancedGeometry(const String &name) const
Retrieve a previously created InstancedGeometry instance.
OGRE_MUTEX(mMovableObjectCollectionMapMutex)
Mutex over the collection of MovableObject types.
void _addDirtyInstanceManager(InstanceManager *dirtyManager)
Called by an InstanceManager when it has at least one InstanceBatch that needs their bounds to be upd...
virtual bool isShadowTechniqueIntegrated(void) const
Is the shadow technique integrated into primary materials?
virtual void setShadowTextureSelfShadow(bool selfShadow)
Sets whether or not texture shadows should attempt to self-shadow.
map< const Camera *, const Light * >::type ShadowCamLightMapping
ShadowCamera to light mapping.
Pass * mShadowTextureCustomReceiverPass
Real mShadowTextureFadeEnd
As a proportion e.g. 0.6.
virtual void manualRender(Renderable *rend, const Pass *pass, Viewport *vp, const Matrix4 &viewMatrix, const Matrix4 &projMatrix, bool doBeginEndFrame=false, bool lightScissoringClipping=true, bool doLightIteration=true, const LightList *manualLightList=0)
Manual rendering method for rendering a single object.
virtual Animation * createAnimation(const String &name, Real length)
Creates an animation which can be used to animate scene nodes.
virtual void renderAdditiveTextureShadowedQueueGroupObjects(RenderQueueGroup *group, QueuedRenderableCollection::OrganisationMode om)
Render a group with additive texture shadows.
virtual void ensureShadowTexturesCreated()
Internal method for creating shadow textures (texture-based shadows)
virtual MovableObject * createMovableObject(const String &typeName, const NameValuePairList *params=0)
Create a movable object of the type specified without a name.
virtual SceneNode * createSceneNodeImpl(void)
Subclasses can override this to ensure their specialised SceneNode is used.
virtual const Pass * deriveShadowReceiverPass(const Pass *pass)
Internal method for turning a regular pass into a shadow receiver pass.
virtual const Pass * _setPass(const Pass *pass, bool evenIfSuppressed=false, bool shadowDerivation=true)
Internal method for setting up the renderstate for a rendering pass.
RenderObjectListenerList mRenderObjectListeners
CompositorChain * mActiveCompositorChain
bool mShadowAdditiveLightClip
virtual void renderModulativeStencilShadowedQueueGroupObjects(RenderQueueGroup *group, QueuedRenderableCollection::OrganisationMode om)
Render a group with the added complexity of modulative stencil shadows.
virtual size_t getShadowIndexBufferSize(void) const
Get the size of the shadow index buffer.
virtual void prepareShadowTextures(Camera *cam, Viewport *vp, const LightList *lightList=0)
Method for preparing shadow textures ready for use in a regular render Do not call manually unless be...
virtual IntersectionSceneQuery * createIntersectionQuery(uint32 mask=0xFFFFFFFF)
Creates an IntersectionSceneQuery for this scene manager.
Pass * mShadowStencilPass
uint32 _getCombinedVisibilityMask(void) const
Internal method for getting the combination between the global visibility mask and the per-viewport v...
virtual SceneNode * getSkyBoxNode(void) const
Get the skybox node, if enabled.
virtual void destroyBillboardChain(BillboardChain *obj)
Removes & destroys a BillboardChain from the SceneManager.
virtual void destroyAllParticleSystems(void)
Removes & destroys all ParticleSystems from the SceneManager.
Quaternion mSkyBoxOrientation
Camera * mCameraInProgress
Camera in progress.
OGRE_MUTEX(sceneGraphMutex)
Mutex to protect the scene graph from simultaneous access from multiple threads.
virtual void findLightsAffectingFrustum(const Camera *camera)
Internal method for locating a list of lights which could be affecting the frustum.
virtual bool hasRibbonTrail(const String &name) const
Returns whether a ribbon trail with the given name exists.
LightClippingInfoMap mLightClippingInfoMap
virtual void destroyAllCameras(void)
Removes (and destroys) all cameras from the scene.
virtual SphereSceneQuery * createSphereQuery(const Sphere &sphere, uint32 mask=0xFFFFFFFF)
Creates a SphereSceneQuery for this scene manager.
virtual void setShadowDirectionalLightExtrusionDistance(Real dist)
Sets the distance a shadow volume is extruded for a directional light.
virtual Entity * createEntity(const String &entityName, PrefabType ptype)
Create an Entity (instance of a discrete mesh) from a range of prefab shapes.
virtual Real getShadowFarDistance(void) const
Gets the default maximum distance away from the camera that shadows will be visible.
virtual void setShadowTextureCasterMaterial(const String &name)
Sets the default material to use for rendering shadow casters.
map< String, MovableObject * >::type MovableObjectMap
vector< RenderObjectListener * >::type RenderObjectListenerList
virtual ParticleSystem * createParticleSystem(size_t quota=500, const String &resourceGroup=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Create a blank particle system with a generated name.
Pass * mShadowModulativePass
Texture * mCurrentShadowTexture
GpuProgramParametersSharedPtr mInfiniteExtrusionParams
SceneNode * mSkyPlaneNode
unsigned long mLastFrameNumber
virtual void setShadowUseInfiniteFarPlane(bool enable)
Sets whether we should use an inifinite camera far plane when rendering stencil shadows.
void updateDirtyInstanceManagers(void)
Updates all instance managaers with dirty instance batches.
virtual void _renderVisibleObjects(void)
Sends visible objects found in _findVisibleObjects to the rendering engine.
virtual Real getFogEnd(void) const
Returns the fog end distance for the scene.
virtual void clearScene(void)
Empties the entire scene, inluding all SceneNodes, Entities, Lights, BillboardSets etc.
RenderSystem * getDestinationRenderSystem()
Get the rendersystem subclass to which the output of this Scene Manager gets sent.
virtual bool getShowBoundingBoxes() const
Returns if all bounding boxes of scene nodes are to be displayed.
virtual void destroyAllAnimationStates(void)
Removes all animation states created using this SceneManager.
virtual void destroySceneNode(SceneNode *sn)
Destroys a SceneNode.
SceneNodeList mSceneNodes
Central list of SceneNodes - for easy memory management.
virtual bool _areShadowsSuppressed(void) const
Are shadows suppressed?
virtual void _setSkyDome(bool enable, const String &materialName, Real curvature=10, Real tiling=8, Real distance=4000, uint8 renderQueue=RENDER_QUEUE_SKIES_EARLY, const Quaternion &orientation=Quaternion::IDENTITY, int xsegments=16, int ysegments=16, int ysegments_keep=-1, const String &groupName=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Enables / disables a 'sky dome' i.e.
virtual bool getShowDebugShadows(void) const
Are debug shadows shown?
CameraList mCameras
Central list of cameras - for easy memory management and lookup.
bool mShadowTextureConfigDirty
vector< Camera * >::type ShadowTextureCameraList
const String & getName(void) const
Return the instance name of this SceneManager.
map< String, Camera * >::type CameraList
void renderShadowVolumeObjects(ShadowCaster::ShadowRenderableListIterator iShadowRenderables, Pass *pass, const LightList *manualLightList, unsigned long flags, bool secondpass, bool zfail, bool twosided)
Render a set of shadow renderables.
virtual bool isShadowTechniqueModulative(void) const
Is there a modulative shadowing technique in use?
Pass * mShadowCasterPlainBlackPass
A pass designed to let us render shadow colour on white for texture shadows.
virtual Real getShadowFarDistanceSquared(void) const
virtual void _notifyAutotrackingSceneNode(SceneNode *node, bool autoTrack)
Internal method for notifying the manager that a SceneNode is autotracking.
virtual void destroyEntity(Entity *ent)
Removes & destroys an Entity from the SceneManager.
const MovableObjectCollection * getMovableObjectCollection(const String &typeName) const
Gets the movable object collection for the given type name.
virtual void setShadowCasterRenderBackFaces(bool bf)
Sets whether or not shadow casters should be rendered into shadow textures using their back faces rat...
virtual InstancedGeometry * createInstancedGeometry(const String &name)
Creates a InstancedGeometry instance suitable for use with this SceneManager.
virtual Light * createLight(const String &name)
Creates a light for use in the scene.
virtual void _setDestinationRenderSystem(RenderSystem *sys)
Notifies the scene manager of its destination render system.
AnimationIterator getAnimationIterator(void)
Returns a specialised MapIterator over all animations in the scene.
virtual SceneNode * createSceneNode(void)
Creates an instance of a SceneNode.
const AnimationList & getAnimations() const
Returns a const version of the animation list.
virtual void destroyAllManualObjects(void)
Removes & destroys all ManualObjects from the SceneManager.
NameGenerator mMovableNameGenerator
PrefabType
Prefab shapes available without loading a model.
virtual void updateRenderQueueGroupSplitOptions(RenderQueueGroup *group, bool suppressShadows, bool suppressRenderState)
Update the state of the render queue group splitting based on a shadow option change.
virtual void setViewMatrix(const Matrix4 &m)
vector< InstanceManager * >::type InstanceManagerVec
const VisibleObjectsBoundsInfo & getShadowCasterBoundsInfo(const Light *light, size_t iteration=0) const
Returns the shadow caster AAB for a specific light-camera combination.
String mShadowTextureCustomReceiverFragmentProgram
virtual void addRenderObjectListener(RenderObjectListener *newListener)
Registers a new Render Object Listener which will be notified when rendering an object.
virtual bool hasBillboardChain(const String &name) const
Returns whether a billboard chain with the given name exists.
void setFog(FogMode mode=FOG_NONE, const ColourValue &colour=ColourValue::White, Real expDensity=0.001, Real linearStart=0.0, Real linearEnd=1.0)
Sets the fogging mode applied to the scene.
virtual ClipResult buildAndSetScissor(const LightList &ll, const Camera *cam)
Set up a scissor rectangle from a group of lights.
GpuProgramParametersSharedPtr mFiniteExtrusionParams
virtual void buildLightClip(const Light *l, PlaneList &planes)
map< Light *, LightClippingInfo >::type LightClippingInfoMap
CamVisibleObjectsMap mCamVisibleObjectsMap
virtual void destroyParticleSystem(const String &name)
Removes & destroys a ParticleSystem from the SceneManager.
map< String, StaticGeometry * >::type StaticGeometryList
virtual uint32 getVisibilityMask(void)
Gets a mask which is bitwise 'and'ed with objects own visibility masks to determine if the object is ...
virtual void _findVisibleObjects(Camera *cam, VisibleObjectsBoundsInfo *visibleBounds, bool onlyShadowCasters)
Internal method which parses the scene to find visible objects to render.
uint16 mGpuParamsDirty
Gpu params that need rebinding (mask of GpuParamVariability)
virtual const PlaneList & getLightClippingPlanes(Light *l)
Retrieve a set of clipping planes for a given light.
virtual void destroyParticleSystem(ParticleSystem *obj)
Removes & destroys a ParticleSystem from the SceneManager.
virtual bool isRenderQueueToBeProcessed(uint8 qid)
Returns whether or not the named queue will be rendered based on the current 'special case' render qu...
virtual void destroyAllInstancedGeometry(void)
Remove & destroy all InstancedGeometry instances.
virtual Entity * createEntity(const MeshPtr &pMesh)
Create an Entity (instance of a discrete mesh) with an autogenerated name.
virtual const TexturePtr & getShadowTexture(size_t shadowIndex)
Get a reference to the shadow texture currently in use at the given index.
InstanceManagerVec mDirtyInstanceMgrsTmp
map< String, SceneNode * >::type SceneNodeList
virtual bool isSkyDomeEnabled(void) const
Return whether a skydome is enabled.
static uint32 FX_TYPE_MASK
Query type mask which will be used for effects like billboardsets / particle systems.
uint32 mLastLightHash
Last light sets.
SpecialCaseRenderQueueMode mSpecialCaseQueueMode
virtual bool isShadowTechniqueTextureBased(void) const
Is there a texture shadow based shadowing technique in use?
set< uint8 >::type SpecialCaseRenderQueueList
vector< EntityMeshLodChangedEvent >::type EntityMeshLodChangedEventList
List of entity mesh LOD changed events.
virtual RibbonTrail * createRibbonTrail(const String &name)
Create a RibbonTrail, an object which you can use to render a linked chain of billboards which follow...
virtual void setShadowTextureSize(unsigned short size)
Set the size of the texture used for all texture-based shadows.
uint8 mSkyDomeRenderQueue
GpuProgramParametersSharedPtr mShadowTextureCustomCasterFPParams
virtual void _markGpuParamsDirty(uint16 mask)
Method to allow you to mark gpu parameters as dirty, causing them to be updated according to the mask...
virtual RibbonTrail * createRibbonTrail()
Create a RibbonTrail, an object which you can use to render a linked chain of billboards which follow...
virtual void resetLightClip()
unsigned long mLightClippingInfoMapFrameNumber
virtual bool getFlipCullingOnNegativeScale() const
Get whether to automatically flip the culling mode on objects whenever they are negatively scaled.
virtual bool hasInstanceManager(const String &managerName) const
Returns whether an InstanceManager with the given name exists.
virtual void destroyMovableObject(const String &name, const String &typeName)
Destroys a MovableObject with the name specified, of the type specified.
virtual void destroyCamera(Camera *cam)
Removes a camera from the scene.
map< const Camera *, VisibleObjectsBoundsInfo >::type CamVisibleObjectsMap
Visible objects bounding box list.
String mShadowTextureCustomReceiverVertexProgram
virtual void setWorldGeometry(const String &filename)
Sets the source of the 'world' geometry, i.e.
virtual const LightList & _getLightsAffectingFrustum(void) const
Get the list of lights which could be affecting the frustum.
virtual void destroyLight(Light *light)
Removes the light from the scene and destroys it based on a pointer.
uint32 mLastLightHashGpuProgram
virtual SceneNode * getSceneNode(const String &name) const
Retrieves a named SceneNode from the scene graph.
ulong mLightsDirtyCounter
virtual bool isSkyPlaneEnabled(void) const
Return whether a key plane is enabled.
virtual void firePostRenderQueues()
Internal method for firing the queue end event.
const CameraList & getCameras() const
Returns a const version of the camera list.
virtual void clearSpecialCaseRenderQueues(void)
Clears the 'special case' render queue list.
virtual BillboardChain * createBillboardChain(const String &name)
Create a BillboardChain, an object which you can use to render a linked chain of billboards.
void _notifyEntityMeshLodChanged(EntityMeshLodChangedEvent &evt)
Notify that an entity mesh LOD change event has occurred.
RenderQueueListenerList mRenderQueueListeners
virtual RibbonTrail * getRibbonTrail(const String &name) const
Retrieves a pointer to the named RibbonTrail.
virtual AutoParamDataSource * createAutoParamDataSource(void) const
Internal method for creating the AutoParamDataSource instance.
virtual const ShadowCameraSetupPtr & getShadowCameraSetup() const
Get the shadow camera setup in use for all lights which don't have their own shadow camera setup.
virtual void fireShadowTexturesPreCaster(Light *light, Camera *camera, size_t iteration)
Internal method for firing the pre caster texture shadows event.
Viewport * mCurrentViewport
Current Viewport.
virtual void destroyManualObject(const String &name)
Removes & destroys a ManualObject from the SceneManager.
const VisibleObjectsBoundsInfo & getVisibleObjectsBoundsInfo(const Camera *cam) const
Returns a visibility boundary box for a specific camera.
virtual void setShadowTextureFSAA(unsigned short fsaa)
Set the level of multisample AA of the textures used for texture-based shadows.
unsigned short mLastLightLimit
virtual void fireShadowTexturesUpdated(size_t numberOfShadowTextures)
Internal method for firing the texture shadows updated event.
map< String, Animation * >::type AnimationList
Storage of animations, lookup by name.
bool mNormaliseNormalsOnScale
virtual void setShadowColour(const ColourValue &colour)
Set the colour used to modulate areas in shadow.
virtual void setSkyBoxEnabled(bool enable)
Enables / disables a 'sky box'.
LightInfoList mCachedLightInfos
static uint32 WORLD_GEOMETRY_TYPE_MASK
Query type mask which will be used for world geometry.
virtual void setShadowCameraSetup(const ShadowCameraSetupPtr &shadowSetup)
Set the shadow camera setup to use for all lights which don't have their own shadow camera setup.
bool mCameraRelativeRendering
Whether to use camera-relative rendering.
GpuProgramParametersSharedPtr mShadowTextureCustomCasterVPParams
virtual Real getFogStart(void) const
Returns the fog start distance for the scene.
Rectangle2D * mFullScreenQuad
virtual ViewPoint getSuggestedViewpoint(bool random=false)
Asks the SceneManager to provide a suggested viewpoint from which the scene should be viewed.
virtual void setSkyDome(bool enable, const String &materialName, Real curvature=10, Real tiling=8, Real distance=4000, bool drawFirst=true, const Quaternion &orientation=Quaternion::IDENTITY, int xsegments=16, int ysegments=16, int ysegments_keep=-1, const String &groupName=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Enables / disables a 'sky dome' i.e.
EntityMeshLodChangedEventList mEntityMeshLodChangedEvents
SceneMgrQueuedRenderableVisitor * getQueuedRenderableVisitor(void) const
Gets the current visitor object which processes queued renderables.
virtual const SkyBoxGenParameters & getSkyBoxGenParameters(void) const
Get the parameters used to generate the current SkyBox, if any.
virtual void setShadowTextureReceiverMaterial(const String &name)
Sets the default material to use for rendering shadow receivers.
virtual AnimationState * getAnimationState(const String &animName) const
Retrieves animation state as previously created using createAnimationState.
static uint32 FRUSTUM_TYPE_MASK
Query type mask which will be used for frusta and cameras.
GpuProgramParametersSharedPtr mShadowTextureCustomReceiverVPParams
virtual bool getOptionValues(const String &strKey, StringVector &refValueList)
Method for getting all possible values for a specific option.
virtual void setShowDebugShadows(bool debug)
Enables / disables the rendering of debug information for shadows.
virtual const SkyPlaneGenParameters & getSkyPlaneGenParameters(void) const
Get the parameters used to construct the SkyPlane, if any.
void _notifyMovableObjectLodChanged(MovableObjectLodChangedEvent &evt)
Notify that a movable object LOD change event has occurred.
virtual BillboardSet * createBillboardSet(const String &name, unsigned int poolSize=20)
Creates a new BillboardSet for use with this scene manager.
virtual void destroyStaticGeometry(const String &name)
Remove & destroy a StaticGeometry instance.
virtual void renderTransparentShadowCasterObjects(const QueuedRenderableCollection &objs, QueuedRenderableCollection::OrganisationMode om, bool lightScissoringClipping, bool doLightIteration, const LightList *manualLightList=0)
Render those objects in the transparent pass list which have shadow casting forced on.
virtual SceneNode * getSkyPlaneNode(void) const
Get the sky plane node, if enabled.
virtual void addRenderQueueListener(RenderQueueListener *newListener)
Registers a new RenderQueueListener which will be notified when render queues are processed.
ShadowCasterList mShadowCasterList
bool mShadowUseInfiniteFarPlane
virtual void _renderQueueGroupObjects(RenderQueueGroup *group, QueuedRenderableCollection::OrganisationMode om)
Render the objects in a given queue group.
virtual void resetScissor()
virtual bool isSkyBoxEnabled(void) const
Return whether a skybox is enabled.
virtual void renderObjects(const QueuedRenderableCollection &objs, QueuedRenderableCollection::OrganisationMode om, bool lightScissoringClipping, bool doLightIteration, const LightList *manualLightList=0)
Render a set of objects, see renderSingleObject for param definitions.
virtual SceneNode * getSkyDomeNode(void) const
Get the sky dome node, if enabled.
static uint32 LIGHT_TYPE_MASK
Query type mask which will be used for lights.
uint8 mWorldGeometryRenderQueue
map< String, InstanceManager * >::type InstanceManagerMap
virtual void _notifyLightsDirty(void)
Advance method to increase the lights dirty counter due lights changed.
virtual StaticGeometry * getStaticGeometry(const String &name) const
Retrieve a previously created StaticGeometry instance.
ConstShadowTextureConfigIterator getShadowTextureConfigIterator() const
Get an iterator over the current shadow texture settings.
bool mShowBoundingBoxes
Flag that indicates if all of the scene node's bounding boxes should be shown as a wireframe.
virtual SpecialCaseRenderQueueMode getSpecialCaseRenderQueueMode(void)
Gets the way the special case render queue list is processed.
ShadowCameraSetupPtr mDefaultShadowCameraSetup
default shadow camera setup
SceneMgrQueuedRenderableVisitor mDefaultQueuedRenderableVisitor
Storage for default renderable visitor.
virtual MovableObject * createMovableObject(const String &name, const String &typeName, const NameValuePairList *params=0)
Create a movable object of the type specified.
virtual void destroyShadowTextures(void)
Internal method for destroying shadow textures (texture-based shadows)
ShadowTextureList mShadowTextures
virtual size_t estimateWorldGeometry(DataStreamPtr &stream, const String &typeName=StringUtil::BLANK)
Estimate the number of loading stages required to load the named world geometry.
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 getShadowCasterRenderBackFaces() const
Gets whether or not shadow casters should be rendered into shadow textures using their back faces rat...
virtual void destroyLight(const String &name)
Removes the named light from the scene and destroys it.
virtual uint8 getWorldGeometryRenderQueue(void)
Gets the render queue that the world geometry (if any) this SceneManager renders will be associated w...
SphereSceneQuery * mShadowCasterSphereQuery
virtual void injectMovableObject(MovableObject *m)
Inject a MovableObject instance created externally.
virtual MovableObjectIterator getMovableObjectIterator(const String &typeName)
Get an iterator over all MovableObect instances of a given type.
virtual Light * getLight(const String &name) const
Returns a pointer to the named Light which has previously been added to the scene.
uint32 mVisibilityMask
Visibility mask used to show / hide objects.
virtual ManualObject * createManualObject()
Create a ManualObject, an object which you populate with geometry manually through a GL immediate-mod...
virtual void useRenderableViewProjMode(const Renderable *pRend, bool fixedFunction)
Internal method used by _renderSingleObject to deal with renderables which override the camera's own ...
virtual void setSkyBox(bool enable, const String &materialName, Real distance=5000, bool drawFirst=true, const Quaternion &orientation=Quaternion::IDENTITY, const String &groupName=ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)
Enables / disables a 'sky box' i.e.
void setQueuedRenderableVisitor(SceneMgrQueuedRenderableVisitor *visitor)
Advanced method for supplying an alternative visitor, used for parsing the render queues and sending ...
virtual SceneNode * createSceneNodeImpl(const String &name)
Subclasses can override this to ensure their specialised SceneNode is used.
size_t getShadowTextureCountPerLightType(Light::LightTypes type) const
Get the number of shadow textures is assigned for the given light type.
virtual bool _areRenderStateChangesSuppressed(void) const
Are render state changes suppressed?
ColourValue mShadowColour
virtual InstanceManager * getInstanceManager(const String &managerName) const
Retrieves an existing InstanceManager by it's name.
virtual void destroyAllMovableObjects(void)
Destroy all MovableObjects.
virtual void destroyRibbonTrail(RibbonTrail *obj)
Removes & destroys a RibbonTrail from the SceneManager.
virtual const ColourValue & getFogColour(void) const
Returns the fog colour for the scene.
virtual Entity * createEntity(PrefabType ptype)
Create an Entity (instance of a discrete mesh) from a range of prefab shapes, generating the name.
virtual bool hasEntity(const String &name) const
Returns whether an entity with the given name exists.
SkyBoxGenParameters mSkyBoxGenParameters
bool mFlipCullingOnNegativeScale
IlluminationRenderStage mIlluminationStage
Real mDefaultShadowFarDistSquared
LightList mShadowTextureCurrentCasterLightList
virtual ManualObject * getManualObject(const String &name) const
Retrieves a pointer to the named ManualObject.
virtual void firePreUpdateSceneGraph(Camera *camera)
Internal method for firing pre update scene graph event.
virtual bool hasAnimationState(const String &name) const
Returns whether an animation state with the given name exists.
Class representing a node in the scene graph.
This optional class allows you to receive per-result callbacks from SceneQuery executions instead of ...
A class for performing queries on a scene.
Specialises the SceneQuery class for querying within a sphere.
A sphere primitive, mostly used for bounds checking.
Pre-transforms and batches up meshes for efficient use as static geometry in a scene.
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
Abstract class representing a Texture resource.
Standard 3-dimensional vector.
Concrete IteratorWrapper for nonconst access to the underlying container.
An abstraction of a viewport, i.e.
vector< String >::type StringVector
ClipResult
Generic result of clipping.
ShadowTechnique
An enumeration of broad shadow techniques.
CullingMode
Hardware culling modes based on vertex winding.
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
@ SHADOWDETAILTYPE_TEXTURE
Mask for texture shadows (not for direct use, use SHADOWTYPE_ enum instead)
@ SHADOWDETAILTYPE_ADDITIVE
Mask for additive shadows (not for direct use, use SHADOWTYPE_ enum instead)
@ SHADOWDETAILTYPE_MODULATIVE
Mask for modulative shadows (not for direct use, use SHADOWTYPE_ enum instead)
@ SHADOWDETAILTYPE_STENCIL
Mask for stencil shadows (not for direct use, use SHADOWTYPE_ enum instead)
@ SHADOWDETAILTYPE_INTEGRATED
Mask for integrated shadows (not for direct use, use SHADOWTYPE_ enum instead)
@ SHADOWTYPE_NONE
No shadows.
PixelFormat
The pixel format used for images, textures, and render surfaces.
@ PF_X8R8G8B8
32-bit pixel format, 8 bits for red, 8 bits for green, 8 bits for blue like PF_A8R8G8B8,...
vector< PlaneBoundedVolume >::type PlaneBoundedVolumeList
vector< Plane >::type PlaneList
bool operator!=(STLAllocator< T, P > const &, STLAllocator< T2, P > const &)
determine equality, can memory from another allocator be released by this allocator,...
bool operator==(STLAllocator< T, P > const &, STLAllocator< T2, P > const &)
determine equality, can memory from another allocator be released by this allocator,...
@ RENDER_QUEUE_SKIES_EARLY
First queue (after backgrounds), used for skyboxes if rendered first.
vector< ShadowTextureConfig >::type ShadowTextureConfigList
SceneType
Classification of a scene to allow a decision of what type of SceenManager to provide back to the app...
vector< TexturePtr >::type ShadowTextureList
uint16 SceneTypeMask
Bitmask containing scene types.
float Real
Software floating point type.
Struct containing information about a material LOD change event for entities.
Struct containing information about a mesh LOD change event for entities.
Struct containing information about a LOD change event for movable objects.
Struct associating a single Pass with a single Renderable.
Struct for caching light clipping information for re-use in a frame.
unsigned long clipPlanesValid
Cached light information, used to tracking light's changes.
int type
Just a pointer for comparison, the light might destroyed for some reason.
uint32 lightMask
Sets to zero if directional light.
Vector3 position
Sets to zero if directional light.
Real range
Use int instead of Light::LightTypes to avoid header file dependence.
Simple structure to hold MovableObject map and a mutex to go with it.
RenderSystem::RenderSystemContext * rsContext
RenderQueue * renderQueue
CompositorChain * activeChain
int skyDomeYSegments_keep
Comparator for sorting lights relative to a point.
_OgreExport bool operator()(const Light *a, const Light *b) const
Default sorting routine which sorts lights which cast shadows to the front of a list,...
_OgreExport bool operator()(const Light *l1, const Light *l2) const
Comparator for material map, for sorting materials into render order (e.g.
_OgreExport bool operator()(const Material *x, const Material *y) const
Represents part of the world geometry that is a result of a SceneQuery.
Structure containing the configuration for one shadow texture.
Structure for holding a position & orientation pair.
Structure collecting together information about the visible objects that have been discovered in a sc...
void merge(const AxisAlignedBox &boxBounds, const Sphere &sphereBounds, const Camera *cam, bool receiver=true)
Real maxDistance
The farthest a visible objects is from the camera.
VisibleObjectsBoundsInfo()
void mergeNonRenderedButInFrustum(const AxisAlignedBox &boxBounds, const Sphere &sphereBounds, const Camera *cam)
Merge an object that is not being rendered because it's not a shadow caster, but is a shadow receiver...
AxisAlignedBox receiverAabb
The axis-aligned bounds of the visible shadow receiver objects.
Real maxDistanceInFrustum
The farthest object in the frustum regardless of visibility / shadow caster flags.
AxisAlignedBox aabb
The axis-aligned bounds of the visible objects.
Real minDistance
The closest a visible object is to the camera.
Real minDistanceInFrustum
The closest a object in the frustum regardless of visibility / shadow caster flags.