Documentation
Public Member Functions |
Private Member Functions |
Private Attributes |
Friends |
List of all members
Urho3D::View Class Reference
Internal structure for 3D rendering work. Created for each backbuffer and texture viewport, but not for shadow cameras. More...
#include <View.h>
Inheritance diagram for Urho3D::View:
Collaboration diagram for Urho3D::View:
Public Member Functions | |
View (Context *context) | |
Construct. | |
virtual | ~View () |
Destruct. | |
bool | Define (RenderSurface *renderTarget, Viewport *viewport) |
Define with rendertarget and viewport. Return true if successful. | |
void | Update (const FrameInfo &frame) |
Update and cull objects and construct rendering batches. | |
void | Render () |
Render batches. | |
Graphics * | GetGraphics () const |
Return graphics subsystem. | |
Renderer * | GetRenderer () const |
Return renderer subsystem. | |
Scene * | GetScene () const |
Return scene. | |
Octree * | GetOctree () const |
Return octree. | |
Camera * | GetCamera () const |
Return camera. | |
const FrameInfo & | GetFrameInfo () const |
Return information of the frame being rendered. | |
RenderSurface * | GetRenderTarget () const |
Return the rendertarget. 0 if using the backbuffer. | |
bool | GetDrawDebug () const |
Return whether should draw debug geometry. | |
const PODVector< Drawable * > & | GetGeometries () const |
Return geometry objects. | |
const PODVector< Drawable * > & | GetOccluders () const |
Return occluder objects. | |
const PODVector< Light * > & | GetLights () const |
Return lights. | |
const Vector< LightBatchQueue > & | GetLightQueues () const |
Return light batch queues. | |
void | SetGlobalShaderParameters () |
Set global (per-frame) shader parameters. Called by Batch and internally by View. | |
void | SetCameraShaderParameters (Camera *camera, bool setProjectionMatrix) |
Set camera-specific shader parameters. Called by Batch and internally by View. | |
void | SetGBufferShaderParameters (const IntVector2 &texSize, const IntRect &viewRect) |
Set G-buffer offset and inverse size shader parameters. Called by Batch and internally by View. | |
Public Member Functions inherited from Urho3D::Object | |
Object (Context *context) | |
Construct. | |
virtual | ~Object () |
Destruct. Clean up self from event sender & receiver structures. | |
virtual Urho3D::StringHash | GetType () const =0 |
Return type hash. | |
virtual Urho3D::StringHash | GetBaseType () const =0 |
Return base class type hash. | |
virtual const Urho3D::String & | GetTypeName () const =0 |
Return type name. | |
virtual void | OnEvent (Object *sender, StringHash eventType, VariantMap &eventData) |
Handle event. | |
void | SubscribeToEvent (StringHash eventType, EventHandler *handler) |
Subscribe to an event that can be sent by any sender. | |
void | SubscribeToEvent (Object *sender, StringHash eventType, EventHandler *handler) |
Subscribe to a specific sender's event. | |
void | UnsubscribeFromEvent (StringHash eventType) |
Unsubscribe from an event. | |
void | UnsubscribeFromEvent (Object *sender, StringHash eventType) |
Unsubscribe from a specific sender's event. | |
void | UnsubscribeFromEvents (Object *sender) |
Unsubscribe from a specific sender's events. | |
void | UnsubscribeFromAllEvents () |
Unsubscribe from all events. | |
void | UnsubscribeFromAllEventsExcept (const PODVector< StringHash > &exceptions, bool onlyUserData) |
Unsubscribe from all events except those listed, and optionally only those with userdata (script registered events.) | |
void | SendEvent (StringHash eventType) |
Send event to all subscribers. | |
void | SendEvent (StringHash eventType, VariantMap &eventData) |
Send event with parameters to all subscribers. More... | |
VariantMap & | GetEventDataMap () const |
Return a preallocated map for event data. Used for optimization to avoid constant re-allocation of event data maps. | |
Context * | GetContext () const |
Return execution context. | |
Object * | GetSubsystem (StringHash type) const |
Return subsystem by type. | |
Object * | GetEventSender () const |
Return active event sender. Null outside event handling. | |
EventHandler * | GetEventHandler () const |
Return active event handler. Null outside event handling. | |
bool | HasSubscribedToEvent (StringHash eventType) const |
Return whether has subscribed to an event without specific sender. | |
bool | HasSubscribedToEvent (Object *sender, StringHash eventType) const |
Return whether has subscribed to a specific sender's event. | |
bool | HasEventHandlers () const |
Return whether has subscribed to any event. | |
template<class T > | |
T * | GetSubsystem () const |
Template version of returning a subsystem. | |
const String & | GetCategory () const |
Return object category. Categories are (optionally) registered along with the object factory. Return an empty string if the object category is not registered. | |
Public Member Functions inherited from Urho3D::RefCounted | |
RefCounted () | |
Construct. Allocate the reference count structure and set an initial self weak reference. | |
virtual | ~RefCounted () |
Destruct. Mark as expired and also delete the reference count structure if no outside weak references exist. | |
void | AddRef () |
Increment reference count. Can also be called outside of a SharedPtr for traditional reference counting. | |
void | ReleaseRef () |
Decrement reference count and delete self if no more references. Can also be called outside of a SharedPtr for traditional reference counting. | |
int | Refs () const |
Return reference count. | |
int | WeakRefs () const |
Return weak reference count. | |
RefCount * | RefCountPtr () |
Return pointer to the reference count structure. | |
Private Member Functions | |
OBJECT (View) | |
void | GetDrawables () |
Query the octree for drawable objects. | |
void | GetBatches () |
Construct batches from the drawable objects. | |
void | ProcessLights () |
Get lit geometries and shadowcasters for visible lights. | |
void | GetLightBatches () |
Get batches from lit geometries and shadowcasters. | |
void | GetBaseBatches () |
Get unlit batches. | |
void | UpdateGeometries () |
Update geometries and sort batches. | |
void | GetLitBatches (Drawable *drawable, LightBatchQueue &lightQueue, BatchQueue *alphaQueue) |
Get pixel lit batches for a certain light and drawable. | |
void | ExecuteRenderPathCommands () |
Execute render commands. | |
void | SetRenderTargets (RenderPathCommand &command) |
Set rendertargets for current render command. | |
bool | SetTextures (RenderPathCommand &command) |
Set textures for current render command. Return whether depth write is allowed (depth-stencil not bound as a texture.) | |
void | RenderQuad (RenderPathCommand &command) |
Perform a quad rendering command. | |
bool | IsNecessary (const RenderPathCommand &command) |
Check if a command is enabled and has content to render. To be called only after render update has completed for the frame. | |
bool | CheckViewportRead (const RenderPathCommand &command) |
Check if a command reads the destination render target. | |
bool | CheckViewportWrite (const RenderPathCommand &command) |
Check if a command writes into the destination render target. | |
bool | CheckPingpong (unsigned index) |
Check whether a command should use pingponging instead of resolve from destination render target to viewport texture. | |
void | AllocateScreenBuffers () |
Allocate needed screen buffers. | |
void | BlitFramebuffer (Texture *source, RenderSurface *destination, bool depthWrite) |
Blit the viewport from one surface to another. | |
void | DrawFullscreenQuad (bool nearQuad) |
Draw a fullscreen quad. Shaders and renderstates must have been set beforehand. | |
void | UpdateOccluders (PODVector< Drawable * > &occluders, Camera *camera) |
Query for occluders as seen from a camera. | |
void | DrawOccluders (OcclusionBuffer *buffer, const PODVector< Drawable * > &occluders) |
Draw occluders to occlusion buffer. | |
void | ProcessLight (LightQueryResult &query, unsigned threadIndex) |
Query for lit geometries and shadow casters for a light. | |
void | ProcessShadowCasters (LightQueryResult &query, const PODVector< Drawable * > &drawables, unsigned splitIndex) |
Process shadow casters' visibilities and build their combined view- or projection-space bounding box. | |
void | SetupShadowCameras (LightQueryResult &query) |
Set up initial shadow camera view(s). | |
void | SetupDirLightShadowCamera (Camera *shadowCamera, Light *light, float nearSplit, float farSplit) |
Set up a directional light shadow camera. | |
void | FinalizeShadowCamera (Camera *shadowCamera, Light *light, const IntRect &shadowViewport, const BoundingBox &shadowCasterBox) |
Finalize shadow camera view after shadow casters and the shadow map are known. | |
void | QuantizeDirLightShadowCamera (Camera *shadowCamera, Light *light, const IntRect &shadowViewport, const BoundingBox &viewBox) |
Quantize a directional light shadow camera view to eliminate swimming. | |
bool | IsShadowCasterVisible (Drawable *drawable, BoundingBox lightViewBox, Camera *shadowCamera, const Matrix3x4 &lightView, const Frustum &lightViewFrustum, const BoundingBox &lightViewFrustumBox) |
Check visibility of one shadow caster. | |
IntRect | GetShadowMapViewport (Light *light, unsigned splitIndex, Texture2D *shadowMap) |
Return the viewport for a shadow map split. | |
void | FindZone (Drawable *drawable) |
Find and set a new zone for a drawable when it has moved. | |
Technique * | GetTechnique (Drawable *drawable, Material *material) |
Return material technique, considering the drawable's LOD distance. | |
void | CheckMaterialForAuxView (Material *material) |
Check if material should render an auxiliary view (if it has a camera attached.) | |
void | AddBatchToQueue (BatchQueue &queue, Batch &batch, Technique *tech, bool allowInstancing=true, bool allowShadows=true) |
Choose shaders for a batch and add it to queue. | |
void | PrepareInstancingBuffer () |
Prepare instancing buffer by filling it with all instance transforms. | |
void | SetupLightVolumeBatch (Batch &batch) |
Set up a light volume rendering batch. | |
void | RenderShadowMap (const LightBatchQueue &queue) |
Render a shadow map. | |
RenderSurface * | GetDepthStencil (RenderSurface *renderTarget) |
Return the proper depth-stencil surface to use for a rendertarget. | |
RenderSurface * | GetRenderSurfaceFromTexture (Texture *texture, CubeMapFace face=FACE_POSITIVE_X) |
Helper function to get the render surface from a texture. 2D textures will always return the first face only. | |
Texture * | FindNamedTexture (const String &name, bool isRenderTarget, bool isVolumeMap=false) |
Get a named texture from the rendertarget list or from the resource cache, to be either used as a rendertarget or texture binding. | |
Zone * | GetZone (Drawable *drawable) |
Return the drawable's zone, or camera zone if it has override mode enabled. | |
unsigned | GetLightMask (Drawable *drawable) |
Return the drawable's light mask, considering also its zone. | |
unsigned | GetShadowMask (Drawable *drawable) |
Return the drawable's shadow mask, considering also its zone. | |
unsigned long long | GetVertexLightQueueHash (const PODVector< Light * > &vertexLights) |
Return hash code for a vertex light queue. | |
Private Attributes | |
WeakPtr< Graphics > | graphics_ |
Graphics subsystem. | |
WeakPtr< Renderer > | renderer_ |
Renderer subsystem. | |
Scene * | scene_ |
Scene to use. | |
Octree * | octree_ |
Octree to use. | |
Camera * | camera_ |
Camera to use. | |
Node * | cameraNode_ |
Camera's scene node. | |
Zone * | cameraZone_ |
Zone the camera is inside, or default zone if not assigned. | |
Zone * | farClipZone_ |
Zone at far clip plane. | |
OcclusionBuffer * | occlusionBuffer_ |
Occlusion buffer for the main camera. | |
RenderSurface * | renderTarget_ |
Destination color rendertarget. | |
RenderSurface * | substituteRenderTarget_ |
Substitute rendertarget for deferred rendering. Allocated if necessary. | |
Texture * | viewportTextures_ [MAX_VIEWPORT_TEXTURES] |
Texture(s) for sampling the viewport contents. Allocated if necessary. | |
RenderSurface * | currentRenderTarget_ |
Color rendertarget active for the current renderpath command. | |
Texture * | currentViewportTexture_ |
Texture containing the latest viewport texture. | |
Texture * | depthOnlyDummyTexture_ |
Dummy texture for D3D9 depth only rendering. | |
IntRect | viewRect_ |
Viewport rectangle. | |
IntVector2 | viewSize_ |
Viewport size. | |
IntVector2 | rtSize_ |
Destination rendertarget size. | |
FrameInfo | frame_ |
Information of the frame being rendered. | |
float | minZ_ |
Minimum Z value of the visible scene. | |
float | maxZ_ |
Maximum Z value of the visible scene. | |
int | materialQuality_ |
Material quality level. | |
int | maxOccluderTriangles_ |
Maximum number of occluder triangles. | |
int | minInstances_ |
Minimum number of instances required in a batch group to render as instanced. | |
int | highestZonePriority_ |
Highest zone priority currently visible. | |
bool | cameraZoneOverride_ |
Camera zone's override flag. | |
bool | drawShadows_ |
Draw shadows flag. | |
bool | deferred_ |
Deferred flag. Inferred from the existence of a light volume command in the renderpath. | |
bool | deferredAmbient_ |
Deferred ambient pass flag. This means that the destination rendertarget is being written to at the same time as albedo/normal/depth buffers, and needs to be RGBA on OpenGL. | |
bool | useLitBase_ |
Forward light base pass optimization flag. If in use, combine the base pass and first light for all opaque objects. | |
bool | hasScenePasses_ |
Has scene passes flag. If no scene passes, view can be defined without a valid scene or camera to only perform quad rendering. | |
bool | noStencil_ |
Whether is using a custom readable depth texture without a stencil channel. | |
bool | drawDebug_ |
Draw debug geometry flag. Copied from the viewport. | |
RenderPath * | renderPath_ |
Renderpath. | |
Vector< PODVector< Drawable * > > | tempDrawables_ |
Per-thread octree query results. | |
Vector< PerThreadSceneResult > | sceneResults_ |
Per-thread geometries, lights and Z range collection results. | |
PODVector< Zone * > | zones_ |
Visible zones. | |
PODVector< Drawable * > | geometries_ |
Visible geometry objects. | |
PODVector< Drawable * > | nonThreadedGeometries_ |
Geometry objects that will be updated in the main thread. | |
PODVector< Drawable * > | threadedGeometries_ |
Geometry objects that will be updated in worker threads. | |
PODVector< Drawable * > | occluders_ |
Occluder objects. | |
PODVector< Light * > | lights_ |
Lights. | |
HashSet< Drawable * > | maxLightsDrawables_ |
Drawables that limit their maximum light count. | |
HashMap< StringHash, Texture * > | renderTargets_ |
Rendertargets defined by the renderpath. | |
Vector< LightQueryResult > | lightQueryResults_ |
Intermediate light processing results. | |
Vector< ScenePassInfo > | scenePasses_ |
Info for scene render passes defined by the renderpath. | |
Vector< LightBatchQueue > | lightQueues_ |
Per-pixel light queues. | |
HashMap< unsigned long long, LightBatchQueue > | vertexLightQueues_ |
Per-vertex light queues. | |
HashMap< unsigned, BatchQueue > | batchQueues_ |
Batch queues by pass index. | |
unsigned | gBufferPassIndex_ |
Index of the GBuffer pass. | |
unsigned | basePassIndex_ |
Index of the opaque forward base pass. | |
unsigned | alphaPassIndex_ |
Index of the alpha pass. | |
unsigned | lightPassIndex_ |
Index of the forward light pass. | |
unsigned | litBasePassIndex_ |
Index of the litbase pass. | |
unsigned | litAlphaPassIndex_ |
Index of the litalpha pass. | |
const RenderPathCommand * | lightVolumeCommand_ |
Pointer to the light volume command if any. | |
Friends | |
void | CheckVisibilityWork (const WorkItem *item, unsigned threadIndex) |
void | ProcessLightWork (const WorkItem *item, unsigned threadIndex) |
Additional Inherited Members | |
Protected Attributes inherited from Urho3D::Object | |
Context * | context_ |
Execution context. | |
Detailed Description
Internal structure for 3D rendering work. Created for each backbuffer and texture viewport, but not for shadow cameras.
The documentation for this class was generated from the following files:
- /home/travis/build/urho3d/Urho3D/Source/Urho3D/Graphics/View.h
- /home/travis/build/urho3d/Urho3D/Source/Urho3D/Graphics/View.cpp