ezEngine  Release 25.03
ezRenderContext Class Reference

Classes

class  CommandEncoderScope
 
struct  Statistics
 

Public Types

using RenderingScope = CommandEncoderScope< 0 >
 
using ComputeScope = CommandEncoderScope< 1 >
 

Public Member Functions

Statistics GetAndResetStatistics ()
 
void BeginRendering (const ezGALRenderingSetup &renderingSetup, const ezRectFloat &viewport, const char *szName="", bool bStereoRendering=false)
 
void EndRendering ()
 
void BeginCompute (const char *szName="")
 
void EndCompute ()
 
EZ_ALWAYS_INLINE ezGALCommandEncoderGetCommandEncoder ()
 
void SetShaderPermutationVariable (const char *szName, const ezTempHashedString &sValue)
 
void SetShaderPermutationVariable (const ezHashedString &sName, const ezHashedString &sValue)
 
void BindMaterial (const ezMaterialResourceHandle &hMaterial)
 
void BindTexture2D (const ezTempHashedString &sSlotName, const ezTexture2DResourceHandle &hTexture, ezResourceAcquireMode acquireMode=ezResourceAcquireMode::AllowLoadingFallback)
 
void BindTexture3D (const ezTempHashedString &sSlotName, const ezTexture3DResourceHandle &hTexture, ezResourceAcquireMode acquireMode=ezResourceAcquireMode::AllowLoadingFallback)
 
void BindTextureCube (const ezTempHashedString &sSlotName, const ezTextureCubeResourceHandle &hTexture, ezResourceAcquireMode acquireMode=ezResourceAcquireMode::AllowLoadingFallback)
 
void BindTexture2D (const ezTempHashedString &sSlotName, ezGALTextureResourceViewHandle hResourceView)
 
void BindTexture3D (const ezTempHashedString &sSlotName, ezGALTextureResourceViewHandle hResourceView)
 
void BindTextureCube (const ezTempHashedString &sSlotName, ezGALTextureResourceViewHandle hResourceView)
 
void BindUAV (const ezTempHashedString &sSlotName, ezGALTextureUnorderedAccessViewHandle hUnorderedAccessViewHandle)
 Binds a read+write texture or buffer.
 
void BindUAV (const ezTempHashedString &sSlotName, ezGALBufferUnorderedAccessViewHandle hUnorderedAccessViewHandle)
 
void BindSamplerState (const ezTempHashedString &sSlotName, ezGALSamplerStateHandle hSamplerSate)
 
void BindBuffer (const ezTempHashedString &sSlotName, ezGALBufferResourceViewHandle hResourceView)
 
void BindConstantBuffer (const ezTempHashedString &sSlotName, ezGALBufferHandle hConstantBuffer)
 
void BindConstantBuffer (const ezTempHashedString &sSlotName, ezConstantBufferStorageHandle hConstantBufferStorage)
 
void SetPushConstants (const ezTempHashedString &sSlotName, ezArrayPtr< const ezUInt8 > data)
 Sets push constants to the given data block. Note that for platforms that don't support push constants, this is emulated via a constant buffer. Thus, a slot name must be provided as well which matches the name of the BEGIN_PUSH_CONSTANTS block in the shader. More...
 
template<typename T >
EZ_ALWAYS_INLINE void SetPushConstants (const ezTempHashedString &sSlotName, const T &constants)
 
void BindShader (const ezShaderResourceHandle &hShader, ezBitflags< ezShaderBindFlags > flags=ezShaderBindFlags::Default)
 Sets the currently active shader on the given render context. More...
 
void BindMeshBuffer (const ezDynamicMeshBufferResourceHandle &hDynamicMeshBuffer)
 
void BindMeshBuffer (const ezMeshBufferResourceHandle &hMeshBuffer)
 
void BindMeshBuffer (ezGALBufferHandle hVertexBuffer, ezGALBufferHandle hIndexBuffer, const ezVertexDeclarationInfo *pVertexDeclarationInfo, ezGALPrimitiveTopology::Enum topology, ezUInt32 uiPrimitiveCount, ezGALBufferHandle hVertexBuffer2={}, ezGALBufferHandle hVertexBuffer3={}, ezGALBufferHandle hVertexBuffer4={})
 
EZ_ALWAYS_INLINE void BindNullMeshBuffer (ezGALPrimitiveTopology::Enum topology, ezUInt32 uiPrimitiveCount)
 
ezResult DrawMeshBuffer (ezUInt32 uiPrimitiveCount=0xFFFFFFFF, ezUInt32 uiFirstPrimitive=0, ezUInt32 uiInstanceCount=1)
 
ezResult Dispatch (ezUInt32 uiThreadGroupCountX, ezUInt32 uiThreadGroupCountY=1, ezUInt32 uiThreadGroupCountZ=1)
 
ezResult ApplyContextStates (bool bForce=false)
 
void ResetContextState ()
 
ezGlobalConstants & WriteGlobalConstants ()
 
const ezGlobalConstants & ReadGlobalConstants () const
 
void SetDefaultTextureFilter (ezTextureFilterSetting::Enum filter)
 Sets the texture filter mode that is used by default for texture resources. More...
 
ezTextureFilterSetting::Enum GetDefaultTextureFilter () const
 Returns the texture filter mode that is used by default for textures.
 
ezTextureFilterSetting::Enum GetSpecificTextureFilter (ezTextureFilterSetting::Enum configuration) const
 Returns the 'fixed' texture filter setting that the combination of default texture filter and given configuration defines. More...
 
void SetAllowAsyncShaderLoading (bool bAllow)
 Set async shader loading. During runtime all shaders should be preloaded so this is off by default.
 
bool GetAllowAsyncShaderLoading ()
 Returns async shader loading. During runtime all shaders should be preloaded so this is off by default.
 

Static Public Member Functions

static ezRenderContextGetDefaultInstance ()
 
static ezRenderContextCreateInstance (ezGALCommandEncoder *pCommandEncoder)
 
static void DestroyInstance (ezRenderContext *pRenderer)
 
static EZ_ALWAYS_INLINE RenderingScope BeginRenderingScope (const ezRenderViewContext &viewContext, const ezGALRenderingSetup &renderingSetup, const char *szName="", bool bStereoRendering=false)
 
static EZ_ALWAYS_INLINE RenderingScope BeginCommandsAndRenderingScope (const ezRenderViewContext &viewContext, const ezGALRenderingSetup &renderingSetup, const char *szName, bool bStereoRendering=false)
 
static EZ_ALWAYS_INLINE ComputeScope BeginComputeScope (const ezRenderViewContext &viewContext, const char *szName="")
 
static EZ_ALWAYS_INLINE ComputeScope BeginCommandsAndComputeScope (const ezRenderViewContext &viewContext, const char *szName)
 
template<typename T >
static EZ_ALWAYS_INLINE ezConstantBufferStorageHandle CreateConstantBufferStorage ()
 
template<typename T >
static EZ_FORCE_INLINE ezConstantBufferStorageHandle CreateConstantBufferStorage (ezConstantBufferStorage< T > *&out_pStorage)
 
static EZ_FORCE_INLINE ezConstantBufferStorageHandle CreateConstantBufferStorage (ezUInt32 uiSizeInBytes)
 
static ezConstantBufferStorageHandle CreateConstantBufferStorage (ezUInt32 uiSizeInBytes, ezConstantBufferStorageBase *&out_pStorage)
 
static void DeleteConstantBufferStorage (ezConstantBufferStorageHandle hStorage)
 
template<typename T >
static EZ_FORCE_INLINE bool TryGetConstantBufferStorage (ezConstantBufferStorageHandle hStorage, ezConstantBufferStorage< T > *&out_pStorage)
 
static bool TryGetConstantBufferStorage (ezConstantBufferStorageHandle hStorage, ezConstantBufferStorageBase *&out_pStorage)
 
template<typename T >
static EZ_FORCE_INLINE T * GetConstantBufferData (ezConstantBufferStorageHandle hStorage)
 
static ezGALSamplerStateCreationDescription GetDefaultSamplerState (ezBitflags< ezDefaultSamplerFlags > flags)
 

Friends

class ezMemoryUtils
 

Member Function Documentation

◆ BindShader()

void ezRenderContext::BindShader ( const ezShaderResourceHandle hShader,
ezBitflags< ezShaderBindFlags flags = ezShaderBindFlags::Default 
)

Sets the currently active shader on the given render context.

This function has no effect until the next draw or dispatch call on the context.

◆ GetSpecificTextureFilter()

ezTextureFilterSetting::Enum ezRenderContext::GetSpecificTextureFilter ( ezTextureFilterSetting::Enum  configuration) const

Returns the 'fixed' texture filter setting that the combination of default texture filter and given configuration defines.

If configuration is set to a fixed filter, that setting is returned. If it is one of LowestQuality to HighestQuality, the adjusted default filter is returned. When the default filter is used (with adjustments), the allowed range is Bilinear to Aniso16x, the Nearest filter is never used.

◆ SetDefaultTextureFilter()

void ezRenderContext::SetDefaultTextureFilter ( ezTextureFilterSetting::Enum  filter)

Sets the texture filter mode that is used by default for texture resources.

The built in default is Anisotropic 4x. If the default setting is changed, already loaded textures might not adjust. Nearest filtering is not allowed as a default filter.

◆ SetPushConstants() [1/2]

template<typename T >
EZ_ALWAYS_INLINE void ezRenderContext::SetPushConstants ( const ezTempHashedString sSlotName,
const T &  constants 
)
inline

Templated version of SetPushConstants.

Template Parameters
TType of the push constants struct.
Parameters
sSlotNameName of the BEGIN_PUSH_CONSTANTS block in the shader.
constantsInstance of type T that contains the push constants.

◆ SetPushConstants() [2/2]

void ezRenderContext::SetPushConstants ( const ezTempHashedString sSlotName,
ezArrayPtr< const ezUInt8 >  data 
)

Sets push constants to the given data block. Note that for platforms that don't support push constants, this is emulated via a constant buffer. Thus, a slot name must be provided as well which matches the name of the BEGIN_PUSH_CONSTANTS block in the shader.

Parameters
sSlotNameName of the BEGIN_PUSH_CONSTANTS block in the shader.
dataData of the push constants. If more than 128 bytes, ezGALDeviceCapabilities::m_uiMaxPushConstantsSize should be checked to ensure the data block is not too big for the platform.

The documentation for this class was generated from the following files: