Class DrawContext
Allows to control how the scene is rendering.
Implements
Inherited Members
Namespace: Evergine.Framework.Graphics
Assembly: Evergine.Framework.dll
Syntax
public abstract class DrawContext : DisposableObject, IDisposable
  Constructors
DrawContext(RenderPipeline, RenderPath, DrawableType)
Initializes a new instance of the DrawContext class.
Declaration
public DrawContext(RenderPipeline renderPipeline, RenderPath renderPath, DrawableType drawableType)
  Parameters
| Type | Name | Description | 
|---|---|---|
| RenderPipeline | renderPipeline | The render pipeline.  | 
      
| RenderPath | renderPath | The render path.  | 
      
| DrawableType | drawableType | The drawable type to render.  | 
      
Fields
CullingResult
The culling result.
Declaration
public readonly CullingResult CullingResult
  Field Value
| Type | Description | 
|---|---|
| CullingResult | 
DrawContextResources
The material collection associated to this draw context.
Declaration
public DrawContextResources DrawContextResources
  Field Value
| Type | Description | 
|---|---|
| DrawContextResources | 
DrawablesToRender
Gets the drawable to render collection.
Declaration
public readonly DrawableType DrawablesToRender
  Field Value
| Type | Description | 
|---|---|
| DrawableType | 
EffectAutoParamSource
Instance used to automatically pass parameters to effects.
Declaration
public EngineShaderParameters EffectAutoParamSource
  Field Value
| Type | Description | 
|---|---|
| EngineShaderParameters | 
ElapsedTime
The elapsed time between the last frame render and the current frame.
Declaration
public TimeSpan ElapsedTime
  Field Value
| Type | Description | 
|---|---|
| TimeSpan | 
ForceBlitAlphaBlending
Indicates that when this camera intermediate buffer will be blit into the target framebuffer, it will be forced to use Alpha blending.
Declaration
public bool ForceBlitAlphaBlending
  Field Value
| Type | Description | 
|---|---|
| bool | 
FrameCount
The frame count.
Declaration
public long FrameCount
  Field Value
| Type | Description | 
|---|---|
| long | 
ID
Gets the identified id.
Declaration
public readonly int ID
  Field Value
| Type | Description | 
|---|---|
| int | 
MultiviewStrategy
The cached multiview strategy of this graphic context device.
Declaration
protected readonly MultiviewStrategy MultiviewStrategy
  Field Value
| Type | Description | 
|---|---|
| MultiviewStrategy | 
RenderPath
The render path.
Declaration
public readonly RenderPath RenderPath
  Field Value
| Type | Description | 
|---|---|
| RenderPath | 
RenderPipeline
The render manager.
Declaration
protected readonly RenderPipeline RenderPipeline
  Field Value
| Type | Description | 
|---|---|
| RenderPipeline | 
TotalTime
The total time since this camera is rendering.
Declaration
public TimeSpan TotalTime
  Field Value
| Type | Description | 
|---|---|
| TimeSpan | 
drawContextGeneration
The draw context generation number.
Declaration
protected int drawContextGeneration
  Field Value
| Type | Description | 
|---|---|
| int | 
passCount
Pass count.
Declaration
protected int passCount
  Field Value
| Type | Description | 
|---|---|
| int | 
Properties
AdditionalEffectDirectives
Gets the additional effect directives that must be included to compile effect techniques.
Declaration
public string[] AdditionalEffectDirectives { get; }
  Property Value
| Type | Description | 
|---|---|
| string[] | 
BoundingFrustum
Gets the boundingFrustum of this camera.
Declaration
public abstract BoundingFrustum BoundingFrustum { get; }
  Property Value
| Type | Description | 
|---|---|
| BoundingFrustum | 
ClearFlags
Gets Clear flags used for clean FrameBuffer, stencilBuffer and ZBuffer.
Declaration
public abstract ClearFlags ClearFlags { get; }
  Property Value
| Type | Description | 
|---|---|
| ClearFlags | 
ClearValue
Gets the Clear value for the camera.
Declaration
public abstract ClearValue ClearValue { get; }
  Property Value
| Type | Description | 
|---|---|
| ClearValue | 
CullingSystem
Gets the culling system used by the Render System. A camera could specify the Culling System that it will use.
Declaration
public virtual CullingSystem CullingSystem { get; }
  Property Value
| Type | Description | 
|---|---|
| CullingSystem | 
DrawContextGeneration
Gets the additional directives generation Id.
Declaration
public int DrawContextGeneration { get; }
  Property Value
| Type | Description | 
|---|---|
| int | 
FarPlane
Gets the frustum far plane.
Declaration
public abstract float FarPlane { get; }
  Property Value
| Type | Description | 
|---|---|
| float | 
FrameBuffer
Gets or sets the framebuffer.
Declaration
public FrameBuffer FrameBuffer { get; set; }
  Property Value
| Type | Description | 
|---|---|
| FrameBuffer | 
HighResolutionIntermediateFrameBuffer
Gets or sets the intermediate framebuffer. Is used whether the framebuffer came from swapchain, then the renderPath will use this intermediateFramebuffer to render before to transfer the intermediateFrameBuffer to Framebuffer.
Declaration
public FrameBuffer HighResolutionIntermediateFrameBuffer { get; protected set; }
  Property Value
| Type | Description | 
|---|---|
| FrameBuffer | 
IntermediateFrameBuffer
Gets the intermediate framebuffer depending of whether super resolution is enable or not.
Declaration
public FrameBuffer IntermediateFrameBuffer { get; }
  Property Value
| Type | Description | 
|---|---|
| FrameBuffer | 
IsGammaColorSpace
Gets or sets a value indicating whether this draw context will draw in a gamma color space framebuffer.
Declaration
public bool IsGammaColorSpace { get; protected set; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsMultiview
Gets or sets a value indicating whether this draw context will draw in a stereo display.
Declaration
public bool IsMultiview { get; protected set; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
LowResolutionIntermediateFrameBuffer
Gets or sets the low resolution intermediate framebuffer. This buffer is used by the render after that will be upsampling and copy to the IntermediateFramebuffer before to transfer to FrameBuffer swapchain.
Declaration
public FrameBuffer LowResolutionIntermediateFrameBuffer { get; protected set; }
  Property Value
| Type | Description | 
|---|---|
| FrameBuffer | 
MultiviewEyeCount
Gets the number of views of this drawcontext.
Declaration
public abstract int MultiviewEyeCount { get; }
  Property Value
| Type | Description | 
|---|---|
| int | 
MultiviewInstancingCount
Gets the number of instance count to render all views.
Declaration
public abstract int MultiviewInstancingCount { get; }
  Property Value
| Type | Description | 
|---|---|
| int | 
Remarks
In a Multiview with RenderTargetIndex strategy the number is MultiviewEyeCount, but in ViewIndex strategy the instanceCount is 1.
MultiviewPosition
Gets the Multiview position array.
Declaration
public abstract Vector4[] MultiviewPosition { get; }
  Property Value
| Type | Description | 
|---|---|
| Vector4[] | 
MultiviewProjection
Gets the Multiview projection transform array.
Declaration
public abstract Matrix4x4[] MultiviewProjection { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4[] | 
MultiviewProjectionInverse
Gets the Multiview view projection inverse transform array.
Declaration
public abstract Matrix4x4[] MultiviewProjectionInverse { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4[] | 
MultiviewView
Gets the Multiview view transform array.
Declaration
public abstract Matrix4x4[] MultiviewView { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4[] | 
MultiviewViewProjection
Gets the Multiview view projection transform array.
Declaration
public abstract Matrix4x4[] MultiviewViewProjection { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4[] | 
NearPlane
Gets the frustum near plane.
Declaration
public abstract float NearPlane { get; }
  Property Value
| Type | Description | 
|---|---|
| float | 
Position
Gets the position.
Declaration
public abstract Vector3 Position { get; }
  Property Value
| Type | Description | 
|---|---|
| Vector3 | 
Projection
Gets the projection transform.
Declaration
public abstract Matrix4x4 Projection { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
ProjectionInverse
Gets the projection inverse matrix.
Declaration
public abstract Matrix4x4 ProjectionInverse { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
RenderFramebuffer
Gets the framebuffer used to render the scene.
Declaration
public FrameBuffer RenderFramebuffer { get; }
  Property Value
| Type | Description | 
|---|---|
| FrameBuffer | 
Remarks
If the draw context has intermediate buffer, return the intermediate buffer. If the IntermediateBuffer is disabled, return the default Framebuffer.
RenderManager
Gets the render manager.
Declaration
public RenderManager RenderManager { get; }
  Property Value
| Type | Description | 
|---|---|
| RenderManager | 
RenderProjection
Gets the render projection transform.
Declaration
public abstract Matrix4x4 RenderProjection { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
RenderViewProjection
Gets the render view projection transform.
Declaration
public abstract Matrix4x4 RenderViewProjection { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
SuperResolutionEnabled
Gets or sets a value indicating whether the super resolution is enabled.
Declaration
public bool SuperResolutionEnabled { get; set; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
SuperResolutionScaleFactor
Gets or sets Scale Factor for FidelityFX 1.0 Performance 2.0, Balance 1.7, Quality 1.5, UltraQuality 1.7.
Declaration
public float SuperResolutionScaleFactor { get; set; }
  Property Value
| Type | Description | 
|---|---|
| float | 
Transform
Gets the view object transform.
Declaration
public abstract Transform3D Transform { get; }
  Property Value
| Type | Description | 
|---|---|
| Transform3D | 
View
Gets the view transform.
Declaration
public abstract Matrix4x4 View { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
ViewCount
Gets the number of views of this draw context.
Declaration
public abstract int ViewCount { get; }
  Property Value
| Type | Description | 
|---|---|
| int | 
Remarks
A draw context can contains several views (cascade shadows, point light shadows, reflection probe, etc...).
ViewIndex
Gets the View index of this draw context.
Declaration
public abstract int ViewIndex { get; }
  Property Value
| Type | Description | 
|---|---|
| int | 
Remarks
A draw context can contains several views (cascade shadows, point light shadows, reflection probe, etc...).
ViewInverse
Gets the view inverse matrix.
Declaration
public abstract Matrix4x4 ViewInverse { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
ViewProjection
Gets the view projection transform.
Declaration
public abstract Matrix4x4 ViewProjection { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
ViewProjectionInverse
Gets the view projection inverse transform.
Declaration
public abstract Matrix4x4 ViewProjectionInverse { get; }
  Property Value
| Type | Description | 
|---|---|
| Matrix4x4 | 
Methods
BeforeCollect()
Before collect method. Used to process drawables and cull objects.
Declaration
protected virtual void BeforeCollect()
  BeforeRender()
Execute actions needed before camera render.
Declaration
public abstract bool BeforeRender()
  Returns
| Type | Description | 
|---|---|
| bool | True if the camera should be rendered.  | 
      
Collect()
Collect resources to perform the render.
Declaration
protected virtual void Collect()
  CollectBatch(ref RenderBatch)
Collect a batch.
Declaration
public virtual void CollectBatch(ref RenderBatch batch)
  Parameters
| Type | Name | Description | 
|---|---|---|
| RenderBatch | batch | The batch info to be collected.  | 
      
CollectBatches()
Collect render batches from the visible meshes.
Declaration
protected virtual void CollectBatches()
  CollectMaterials()
Update all per view constant buffers.
Declaration
protected virtual void CollectMaterials()
  CollectMeshSources()
Gets the mesh sources.
Declaration
public virtual RenderObjectSource[] CollectMeshSources()
  Returns
| Type | Description | 
|---|---|
| RenderObjectSource[] | Mesh collection.  | 
      
CouldBatch(int, RenderObjectInfo, int, RenderObjectInfo)
Method that indicates if this drawContext could batch this meshes.
Declaration
protected virtual bool CouldBatch(int idxA, RenderObjectInfo meshA, int idxB, RenderObjectInfo meshB)
  Parameters
| Type | Name | Description | 
|---|---|---|
| int | idxA | Mesh Index A.  | 
      
| RenderObjectInfo | meshA | Mesh A.  | 
      
| int | idxB | Mesh Index B.  | 
      
| RenderObjectInfo | meshB | Mesh B.  | 
      
Returns
| Type | Description | 
|---|---|
| bool | True if all is OK.  | 
      
CullLights()
Cull non visible meshes.
Declaration
protected virtual void CullLights()
  CullObjects()
Cull non visible meshes.
Declaration
protected virtual void CullObjects()
  Destroy()
Destroy the resources.
Declaration
protected override void Destroy()
  Overrides
EmitBatch(ref RenderBatch)
Collect a batch.
Declaration
protected virtual void EmitBatch(ref RenderBatch batch)
  Parameters
| Type | Name | Description | 
|---|---|---|
| RenderBatch | batch | The batch info to be collected.  | 
      
FilterObjects(RenderObjectInfo)
Indicates if this object must be filtered.
Declaration
public abstract bool FilterObjects(RenderObjectInfo renderObjectInfo)
  Parameters
| Type | Name | Description | 
|---|---|---|
| RenderObjectInfo | renderObjectInfo | The object info to filter.  | 
      
Returns
| Type | Description | 
|---|---|
| bool | True if the object must be filtered.  | 
      
FireOnFrameBufferProcessed()
Fire OnFrameBufferProcessed event.
Declaration
protected void FireOnFrameBufferProcessed()
  GetAdditionalDirectives()
Refresh the additional directives.
Declaration
protected virtual List<string> GetAdditionalDirectives()
  Returns
| Type | Description | 
|---|---|
| List<string> | The additional directives.  | 
      
GetPassFramebuffer(int)
Gets the framebuffer associated to the specified pass.
Declaration
public virtual FrameBuffer GetPassFramebuffer(int passID)
  Parameters
| Type | Name | Description | 
|---|---|---|
| int | passID | The pass ID.  | 
      
Returns
| Type | Description | 
|---|---|
| FrameBuffer | The framebuffer.  | 
      
GetTexture(TextureSemantic, int)
Gets the texture.
Declaration
public virtual Texture GetTexture(TextureInfo.TextureSemantic textureSemantic, int textureIndex)
  Parameters
| Type | Name | Description | 
|---|---|---|
| TextureInfo.TextureSemantic | textureSemantic | Texture semantic.  | 
      
| int | textureIndex | Texture index.  | 
      
Returns
| Type | Description | 
|---|---|
| Texture | The found texture.  | 
      
PrepareBatches(CommandBuffer)
Prepare batches to be rendered.
Declaration
public void PrepareBatches(CommandBuffer commandBuffer)
  Parameters
| Type | Name | Description | 
|---|---|---|
| CommandBuffer | commandBuffer | The command buffer.  | 
      
PrepareBatches(CommandBuffer, int, int)
Prepare batches to be rendered.
Declaration
public virtual void PrepareBatches(CommandBuffer commandBuffer, int count, int offset)
  Parameters
| Type | Name | Description | 
|---|---|---|
| CommandBuffer | commandBuffer | The command buffer.  | 
      
| int | count | The number of batches to prepare.  | 
      
| int | offset | The offset index of the batch to be draw.  | 
      
ProcessDrawables()
Execute the Draw() method to each drawable.
Declaration
protected virtual void ProcessDrawables()
  RefreshAdditionalDirectives()
Refresh the additional directives.
Declaration
protected bool RefreshAdditionalDirectives()
  Returns
| Type | Description | 
|---|---|
| bool | True if the directives has changed.  | 
      
Render(CommandBuffer)
Execute the draw action of draw context.
Declaration
public abstract void Render(CommandBuffer commandBuffer)
  Parameters
| Type | Name | Description | 
|---|---|---|
| CommandBuffer | commandBuffer | The command buffer used to render.  | 
      
RenderBatches(int, CommandBuffer)
Batches the render passes.
Declaration
public void RenderBatches(int passId, CommandBuffer commandBuffer)
  Parameters
| Type | Name | Description | 
|---|---|---|
| int | passId | Pass id.  | 
      
| CommandBuffer | commandBuffer | Command buffer.  | 
      
RenderBatches(int, CommandBuffer, int, int)
Batches the render passes.
Declaration
public virtual void RenderBatches(int passId, CommandBuffer commandBuffer, int count, int offset)
  Parameters
| Type | Name | Description | 
|---|---|---|
| int | passId | Pass id.  | 
      
| CommandBuffer | commandBuffer | Command buffer.  | 
      
| int | count | Pass count.  | 
      
| int | offset | Pass offset.  | 
      
SetPerViewEngineParameters()
Collect shader resources per view.
Declaration
protected abstract void SetPerViewEngineParameters()
  SortObjects()
Sort the meshes.
Declaration
protected virtual void SortObjects()
  Events
OnCollect
OnCollect is called before a camera starts collecting resources.
Declaration
public event EventHandler OnCollect
  Event Type
| Type | Description | 
|---|---|
| EventHandler | 
OnFrameBufferProcessed
OnProcessFrameBuffer is called when the framebuffer is refreshed.
Declaration
public event EventHandler OnFrameBufferProcessed
  Event Type
| Type | Description | 
|---|---|
| EventHandler | 
OnPostRender
OnPostRender is called after a camera finished rendering the scene.
Declaration
public event DrawContext.DrawContextEventHandler OnPostRender
  Event Type
| Type | Description | 
|---|---|
| DrawContext.DrawContextEventHandler | 
OnPreRender
OnPreRender is called before a camera starts rendering the scene.
Declaration
public event DrawContext.DrawContextEventHandler OnPreRender
  Event Type
| Type | Description | 
|---|---|
| DrawContext.DrawContextEventHandler |