Class ObjectRenderer
Index
Constructors
Properties
Accessors
Methods
Constructors
constructor
-
Instantiates an object renderer.
Parameters
- name: string
The friendly name of the object renderer
- scene: Scene
The scene the renderer belongs to
Optionaloptions: ObjectRendererOptionsThe options used to create the renderer (optional)
Returns ObjectRenderer
- name: string
Properties
active Camera
Define the camera used to render the objects.
camera For LOD
Define the camera used to calculate the LOD of the objects. If not defined, activeCamera will be used. If not defined nor activeCamera, scene's active camera will be used.
custom Is Ready Function
mesh: AbstractMesh,
refreshRate: number,
preWarm?: boolean,
) => boolean
Override the mesh isReady function with your own one.
custom Render Function
opaqueSubMeshes: SmartArray<SubMesh>,
alphaTestSubMeshes: SmartArray<SubMesh>,
transparentSubMeshes: SmartArray<SubMesh>,
depthOnlySubMeshes: SmartArray<SubMesh>,
beforeTransparents?: () => void,
) => void
Override the render function with your own one.
Optionalcustom Render Transparent Sub Meshes
Custom render function for transparent submeshes.
dont Set Transformation Matrix
If true, the object renderer will not set the view/projection/transformation matrices for the active camera (default: false). By default, the view/projection/transformation matrices are set from the active camera (either ObjectRenderer.activeCamera or scene.activeCamera). Sets this property to true if you want to define your own transformation matrices (use the onInitRenderingObservable observable to set your own matrices, to be sure they will be correctly taken into account)
enable Bounding Box Rendering
Enables the rendering of bounding boxes for meshes (still subject to Mesh.showBoundingBox or scene.forceShowBoundingBoxes). Default is false.
enable Outline Rendering
Enables the rendering of outline/overlay for meshes (still subject to Mesh.renderOutline/Mesh.renderOverlay). Default is true.
force Layer Mask Check
Force checking the layerMask property even if a custom list of meshes is provided (ie. if renderList is not undefined)
get Custom Render List
(
layerOrFace: number,
renderList: Nullable<Immutable<AbstractMesh[]>>,
renderListLength: number,
) => Nullable<AbstractMesh[]>,
> = null
Use this function to overload the renderList array at rendering time. Return null to render with the current renderList, else return the list of meshes to use for rendering. For 2DArray, layerOrFace is the index of the layer that is going to be rendered, else it is the faceIndex of the cube (if the RTT is a cube, else layerOrFace=0). The renderList passed to the function is the current render list (the one that will be used if the function returns null). The length of this list is passed through renderListLength: don't use renderList.length directly because the array can hold dummy elements!
Readonlyon After Rendering Manager Render Observable
An event triggered after the rendering group is processed
Readonlyon After Render Observable
An event triggered after rendering the objects. Note: This observable is also triggered during readiness checks (e.g. when calling scene.isReady()), in which case the render target is not bound to the output. Observers should avoid performing GPU state changes (such as clearing or modifying the framebuffer) unless the render target is actually bound.
Readonlyon Before Rendering Manager Render Observable
An event triggered before the rendering group is processed
Readonlyon Before Render Observable
An event triggered before rendering the objects. Note: This observable is also triggered during readiness checks (e.g. when calling scene.isReady()), in which case the render target is not bound to the output. Observers should avoid performing GPU state changes (such as clearing or modifying the framebuffer) unless the render target is actually bound.
Readonlyon Fast Path Render Observable
An event triggered when fast path rendering is used
Readonlyon Finish Rendering Observable
An event triggered when finishRender is called
Readonlyon Init Rendering Observable
An event triggered when initRender is called
options
The options used by the object renderer
particle System List
Define the list of particle systems to render. If not provided, will render all the particle systems of the scene. Note that the particle systems are rendered only if renderParticles is set to true.
render Alpha Test Meshes
Define if alpha test meshes should be rendered (default is true). No effect if renderMeshes is false.
render Depth Only Meshes
Define if depth only meshes should be rendered (default is true). No effect if renderMeshes is false.
render List Predicate
Use this predicate to dynamically define the list of mesh you want to render. If set, the renderList property will be overwritten.
render Meshes
Define if meshes should be rendered (default is true).
render Opaque Meshes
Define if opaque meshes should be rendered (default is true). No effect if renderMeshes is false.
render Particles
Define if particles should be rendered (default is true).
render Pass Id
Current render pass id. Note it can change over the rendering as there's a separate id for each face of a cube / each layer of an array layer!
render Sprites
Define if sprites should be rendered (default is false).
render Transparent Meshes
Define if transparent meshes should be rendered (default is true). No effect if renderMeshes is false.
sprite Manager List
Define the list of sprite managers to render. If not provided, will render all the sprite managers of the scene. An empty array will render no sprite managers. Note that the sprite managers are rendered only if renderSprites is set to true.
Static ReadonlyREFRESHRATE_ RENDER_ ONCE
Objects will only be rendered once which can be useful to improve performance if everything in your render is static for instance.
Static ReadonlyREFRESHRATE_ RENDER_ ONEVERYFRAME
Objects will be rendered every frame and is recommended for dynamic contents.
Static ReadonlyREFRESHRATE_ RENDER_ ONEVERYTWOFRAMES
Objects will be rendered every 2 frames which could be enough if your dynamic objects are not the central point of your effect and can save a lot of performances.
Accessors
current Refresh Id
-
get currentRefreshId(): number
Gets the current value of the refreshId counter
Returns number
disable Depth Pre Pass
-
get disableDepthPrePass(): boolean
Specifies to disable depth pre-pass if true (default: false)
Returns boolean
-
set disableDepthPrePass(value: boolean): void
Parameters
- value: boolean
Returns void
disable Image Processing
-
get disableImageProcessing(): boolean
If true, the object renderer will render all objects without any image processing applied. If false (default value), the renderer will use the current setting of the scene's image processing configuration.
Returns boolean
-
set disableImageProcessing(value: boolean): void
Parameters
- value: boolean
Returns void
name
-
get name(): string
Friendly name of the object renderer
Returns string
-
set name(value: string): void
Parameters
- value: string
Returns void
refresh Rate
-
get refreshRate(): number
Defines the refresh rate of the rendering or the rendering frequency. Use 0 to render just once, 1 to render on every frame, 2 to render every two frames and so on...
Returns number
-
set refreshRate(value: number): void
Parameters
- value: number
Returns void
rendering Manager
-
Gets the rendering manager
Returns RenderingManager
render List
-
get renderList(): Nullable<AbstractMesh[]>
Use this list to define the list of mesh you want to render.
Returns Nullable<AbstractMesh[]>
-
set renderList(value: Nullable<AbstractMesh[]>): void
Parameters
- value: Nullable<AbstractMesh[]>
Returns void
render Pass Ids
-
get renderPassIds(): readonly number[]
Gets the render pass ids used by the object renderer.
Returns readonly number[]
Methods
clone
dispose
-
Dispose the renderer and release its associated resources.
Returns void
finish Render
-
This method must be called after the "render" call(s), to complete the rendering process.
Returns void
free Rendering Groups
-
Clear the info related to rendering groups preventing retention point in material dispose.
Returns void
get Active Meshes
init Render
-
This method makes sure everything is setup before "render" can be called
Parameters
- viewportWidth: number
Width of the viewport to render to
- viewportHeight: number
Height of the viewport to render to
Returns void
- viewportWidth: number
is Ready For Rendering
-
This function will check if the renderer is ready to render (textures are loaded, shaders are compiled)
Parameters
- viewportWidth: number
defines the width of the viewport
- viewportHeight: number
defines the height of the viewport
Returns boolean
true if all required resources are ready
- viewportWidth: number
prepare Render List
-
Makes sure the list of meshes is ready to be rendered You should call this function before "initRender", but if you know the render list is ok, you may call "initRender" directly
Returns void
render
-
Renders all the objects (meshes, particles systems, sprites) to the currently bound render target texture.
Parameters
- passIndex: number = 0
defines the pass index to use (default: 0)
- skipOnAfterRenderObservable: boolean = false
defines a flag to skip raising the onAfterRenderObservable
Returns void
- passIndex: number = 0
reset Refresh Counter
-
Resets the refresh counter of the renderer and start back from scratch. Could be useful to re-render if it is setup to render only once.
Returns void
set Material For Rendering
-
Sets a specific material to be used to render a mesh/a list of meshes with this object renderer
Parameters
- mesh: any
mesh or array of meshes
Optionalmaterial: anymaterial or array of materials to use for this render pass. If undefined is passed, no specific material will be used but the regular material instead (mesh.material). It's possible to provide an array of materials to use a different material for each rendering pass.
Returns void
- mesh: any
set Rendering Auto Clear Depth Stencil
-
setRenderingAutoClearDepthStencil(
renderingGroupId: number,
autoClearDepthStencil: boolean,
depth?: boolean,
stencil?: boolean,
): voidSpecifies whether or not the stencil and depth buffer are cleared between two rendering groups.
Parameters
- renderingGroupId: number
The rendering group id corresponding to its index
- autoClearDepthStencil: boolean
Automatically clears depth and stencil between groups if true.
- depth: boolean = true
Automatically clears depth between groups if true and autoClear is true.
- stencil: boolean = true
Automatically clears stencil between groups if true and autoClear is true.
Returns void
- renderingGroupId: number
set Rendering Order
-
setRenderingOrder(
renderingGroupId: number,
opaqueSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>,
alphaTestSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>,
transparentSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>,
): voidOverrides the default sort function applied in the rendering group to prepare the meshes. This allowed control for front to back rendering or reversely depending of the special needs.
Parameters
- renderingGroupId: number
The rendering group id corresponding to its index
- opaqueSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null
The opaque queue comparison function use to sort.
- alphaTestSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null
The alpha test queue comparison function use to sort.
- transparentSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number> = null
The transparent queue comparison function use to sort.
Returns void
- renderingGroupId: number
should Render
-
Indicates if the renderer should render the current frame. The output is based on the specified refresh rate. When snapshot rendering is active, this always returns true to ensure render pass topology stays consistent between the recording frame and playback frames.
Returns boolean
true if the renderer should render the current frame
A class that renders objects to the currently bound render target. This class only renders objects, and is not concerned with the output texture or post-processing.