ezEngine  Milestone 7
Todo List
Class ezArrayMapBase< KEY, VALUE >::Pair
Custom comparer
Member ezChunkStreamWriter::EndChunk ()
Write Chunk CRC
Member ezComponentId::m_TypeId
ezComponentHandle becomes 8 (6 + padding) bytes large due to this. Was that intended?
Member ezConstantBufferResource::UploadStateToGPU (ezGALContext *pContext)
Does it have benefits to only upload a part of the constant buffer? If yes, it should be easy to track the modified range
Member ezDdsFileFormat::WriteImage (ezStreamWriterBase &stream, const ezImage &image, ezLogInterface *pLog) const override
sub-image size
Member ezGALBufferDX11::InitPlatform (ezGALDevice *pDevice, const void *pInitialData) override
See above
Member ezGALBufferGL::InitPlatform (ezGALDevice *pDevice, const void *pInitialData) override
Introduce helper-function that maps resource access to OpenGL usage.
Member ezGALContext::AssertRenderingThread ()
Member ezGALContext::BeginQuery (ezGALQueryHandle hQuery)
Assert on query support?
Member ezGALContext::BeginStreamOut ()
Assert for streamout support
Member ezGALContext::CopyTextureReadbackResultPlatform (ezGALTexture *pTexture, const ezArrayPtr< ezGALSystemMemoryDescription > *pData)=0
add parameters for mip level & count selection?
Member ezGALContext::CopyTextureRegion (ezGALTextureHandle hDest, const ezGALTextureSubresource &DestinationSubResource, const ezVec3U32 &DestinationPoint, ezGALTextureHandle hSource, const ezGALTextureSubresource &SourceSubResource, const ezBoundingBoxu32 &Box)
Member ezGALContext::Dispatch (ezUInt32 uiThreadGroupCountX, ezUInt32 uiThreadGroupCountY, ezUInt32 uiThreadGroupCountZ)
Assert for compute
Member ezGALContext::DispatchIndirect (ezGALBufferHandle hIndirectArgumentBuffer, ezUInt32 uiArgumentOffsetInBytes)

Assert for compute

Assert for indirect dispatch

Assert offset < buffer size

Assert that the buffer can be used for indirect arguments (flag in desc)

Member ezGALContext::Draw (ezUInt32 uiVertexCount, ezUInt32 uiStartVertex)
If platform indicates that non-indexed rendering is not possible bind a helper index buffer which contains continuous indices (0, 1, 2, ..)
Member ezGALContext::DrawAuto ()
Assert for draw auto support
Member ezGALContext::DrawIndexedInstanced (ezUInt32 uiIndexCountPerInstance, ezUInt32 uiInstanceCount, ezUInt32 uiStartIndex)
Assert for instancing
Member ezGALContext::DrawIndexedInstancedIndirect (ezGALBufferHandle hIndirectArgumentBuffer, ezUInt32 uiArgumentOffsetInBytes)

Assert for instancing

Assert for indirect draw

Assert offset < buffer size

Assert that the buffer can be used for indirect arguments (flag in desc)

Member ezGALContext::DrawInstanced (ezUInt32 uiVertexCountPerInstance, ezUInt32 uiInstanceCount, ezUInt32 uiStartVertex)

Assert for instancing

If platform indicates that non-indexed rendering is not possible bind a helper index buffer which contains continuous indices (0, 1, 2, ..)

Member ezGALContext::DrawInstancedIndirect (ezGALBufferHandle hIndirectArgumentBuffer, ezUInt32 uiArgumentOffsetInBytes)

Assert for instancing

Assert for indirect draw

Assert offset < buffer size

Assert that the buffer can be used for indirect arguments (flag in desc)

Member ezGALContext::EndQuery (ezGALQueryHandle hQuery)

Assert on query support?

Assert on query started

Member ezGALContext::SetConstantBuffer (ezUInt32 uiSlot, ezGALBufferHandle hBuffer)
Get buffer by handle
Member ezGALContext::SetIndexBuffer (ezGALBufferHandle hIndexBuffer)
Assert on index buffer type (if non nullptr)
Member ezGALContext::SetResourceView (ezGALShaderStage::Enum Stage, ezUInt32 uiSlot, ezGALResourceViewHandle hResourceView)
Check if the device supports the stage / the slot index
Member ezGALContext::SetShader (ezGALShaderHandle hShader)
Assert for shader capabilities (supported shader stages etc.)
Member ezGALContext::SetUnorderedAccessView (ezUInt32 uiSlot, ezGALResourceViewHandle hResourceView)
Member ezGALContext::WaitForFence (ezGALFenceHandle hFence)

- make this toggle-able

Spin lock count perhaps?

Member ezGALContextDX11::ClearPlatform (const ezColor &ClearColor, ezUInt32 uiRenderTargetClearMask, bool bClearDepth, bool bClearStencil, float fDepthClear, ezUInt8 uiStencilClear) override
Parameters
Member ezGALContextDX11::FlushDeferredStateChanges ()

Optimize / add other stages

Optimize / add other stages

Member ezGALContextDX11::ReadbackTexturePlatform (ezGALTexture *pTexture) override
Other mip levels etc?
Member ezGALContextDX11::SetConstantBufferPlatform (ezUInt32 uiSlot, ezGALBuffer *pBuffer) override
Check if the device supports the slot index?
Member ezGALContextDX11::SetSamplerStatePlatform (ezGALShaderStage::Enum Stage, ezUInt32 uiSlot, ezGALSamplerState *pSamplerState) override
Check if the device supports the stage / the slot index
Member ezGALContextDX11::SetShaderPlatform (ezGALShader *pShader) override
Optimize (change only shaders which need to be set)
Member ezGALContextGL::FlushDeferredStateChanges ()
GL4 Together with glVertexAttribPointer
Member ezGALContextGL::SetDepthStencilStatePlatform (ezGALDepthStencilState *pDepthStencilState, ezUInt8 uiStencilRefValue) override
Stencil func needs to be implemented
Member ezGALContextGL::SetRasterizerStatePlatform (ezGALRasterizerState *pRasterizerState) override
Member ezGALContextGL::SetResourceViewPlatform (ezGALShaderStage::Enum Stage, ezUInt32 uiSlot, ezGALResourceView *pResourceView) override
GL4 TextureViews
Member ezGALContextGL::UpdateBufferPlatform (ezGALBuffer *pDestination, ezUInt32 uiDestOffset, const void *pSourceData, ezUInt32 uiByteCount) override
All those glGetIntegerv should be avoided! Need to store gl state somewhere
Member ezGALDevice::CreateBlendState (const ezGALBlendStateCreationDescription &Description)
State / resource creation needs to check if multithreaded resource creation is allowed and if not if it is in the render thread
Member ezGALDevice::CreateBuffer (const ezGALBufferCreationDescription &Description, const void *pInitialData)
Platform independent validation (buffer type supported)
Member ezGALDevice::CreateDepthStencilState (const ezGALDepthStencilStateCreationDescription &Description)
Hash description and return potential existing one (including inc. refcount)
Member ezGALDevice::CreateFence ()
Platform independent validation
Member ezGALDevice::CreateQuery (const ezGALQueryCreationDescription &Description)
Platform independent validation
Member ezGALDevice::CreateRasterizerState (const ezGALRasterizerStateCreationDescription &Description)
Hash description and return potential existing one (including inc. refcount)
Member ezGALDevice::CreateRenderTargetView (const ezGALRenderTargetViewCreationDescription &Description)

Platform independent validation

Hash description and return potential existing one (including inc. refcount)

Member ezGALDevice::CreateResourceView (const ezGALResourceViewCreationDescription &Description)

Platform independent validation

Hash description and return potential existing one (including inc. refcount)

Member ezGALDevice::CreateSamplerState (const ezGALSamplerStateCreationDescription &Description)

Platform independent validation

Hash description and return potential existing one (including inc. refcount)

Member ezGALDevice::CreateSwapChain (const ezGALSwapChainCreationDescription &Description)
Platform independent validation
Member ezGALDevice::CreateTexture (const ezGALTextureCreationDescription &Description, const ezArrayPtr< ezGALSystemMemoryDescription > *pInitialData=nullptr)
Platform independent validation (desc width & height < platform maximum, format, etc.)
Member ezGALDevice::CreateVertexDeclaration (const ezGALVertexDeclarationCreationDescription &Description)

Platform independent validation

Hash description and return potential existing one (including inc. refcount)

Member ezGALDevice::DestroyDepthStencilState (ezGALDepthStencilStateHandle hDepthStencilState)
Only remove if refcount = 0
Member ezGALDevice::DestroyRasterizerState (ezGALRasterizerStateHandle hRasterizerState)
Only remove if refcount = 0
Member ezGALDevice::DestroyRenderTargetView (ezGALRenderTargetViewHandle hRenderTargetView)
Only remove if refcount = 0
Member ezGALDevice::DestroyResourceView (ezGALResourceViewHandle hResourceView)
Only remove if refcount = 0
Member ezGALDevice::DestroySamplerState (ezGALSamplerStateHandle hSamplerState)
Only remove if refcount = 0
Member ezGALDevice::Get (typename IdTableType::TypeOfId hHandle, const IdTableType &IdTable) const
typeid of incomplete types not allowed. Fix includes or move this away from the inline file.
Member ezGALDevice::GetQueryData (ezGALQueryHandle hQuery, ezUInt64 *puiRendererdPixels)
Assert on query support?
Member ezGALDevice::Present (ezGALSwapChainHandle hSwapChain)
Map functions to save on memcpys
Member ezGALDeviceDX11::CreateSwapChainPlatform (const ezGALSwapChainCreationDescription &Description) override
Move the real code creating things to the implementation files (all?)
Member ezGALDeviceDX11::ezGALDeviceDX11 (const ezGALDeviceCreationDescription &Description)
This shouldn't be accessible, there should be a factory instantiating the correct renderer class via RTTI for example
Member ezGALDeviceDX11::InitPlatform () override
Get features of the device (depending on feature level, CheckFormat* functions etc.)
Member ezGALDeviceGL::EnsureInternOpenGLInit ()
Get features of the device (depending on feature level, CheckFormat* functions etc.)
Member ezGALDeviceGL::ezGALDeviceGL (const ezGALDeviceCreationDescription &Description)
This shouldn't be accessible, there should be a factory instantiating the correct renderer class via RTTI for example
Member ezGALDeviceGL::FillFormatLookupTable ()

glEnable(GL_FRAMEBUFFER_SRGB) should be called to guarantee that all writes to framebuffers with sRGB formats are handled properly

fill out formats.

Member ezGALPrimitiveTopology::ENUM_COUNT
Member ezGALRenderTargetConfigGL::InitPlatform (ezGALDevice *pDevice) override
State handling by primary context. REMOVE ALL glGetIntegerv ANYWHERE!
Member ezGALRenderTargetViewDX11::InitPlatform (ezGALDevice *pDevice) override
Member ezGALResourceFormat::BitsPerElement [ezGALResourceFormat::ENUM_COUNT]
A combination of propertyflags, something like srgb, normalized, ...
Member ezGALResourceViewDX11::InitPlatform (ezGALDevice *pDevice) override
Member ezGALSamplerStateGL::InitPlatform (ezGALDevice *pDevice) override
Member ezGALShaderGL::CompileShader (glProgramId &dstProgram, glShaderId &dstShader, ezUInt32 glShaderType, const void *szRawSource)
We need a name for the shader, otherwise this log message is not very useful!
Member ezGALShaderGL::InitPlatform (ezGALDevice *pDevice) override

Maybe it would be a good idea to check if incoming shaders were already compiled

This won't work as the macro always calls the version that uses vargs.

We need a name for the shader, otherwise this log message is not very useful!

Member ezGALSwapChainDX11::InitPlatform (ezGALDevice *pDevice) override

Get from MSAA value of the m_Description

The mode switch needs to be handled (ResizeBuffers + communication with engine)

Get from enumeration of available modes

(Find via format table)

Member ezGALTextureDX11::InitPlatform (ezGALDevice *pDevice, const ezArrayPtr< ezGALSystemMemoryDescription > *pInitialData) override

Validation if interface of corresponding texture object exists

Marc: Should this maybe use some kind of flags like "IsDepthFormat" ?

Get format info!

Member ezGALTextureGL::InitPlatform (ezGALDevice *pDevice, const ezArrayPtr< ezGALSystemMemoryDescription > *pInitialData) override

Assert for pInitialData[level] sizes? Or is this the job of ezGALDevice::CreateTexture

Member ezGALVertexDeclarationDX11::InitPlatform (ezGALDevice *pDevice) override
Expose step rate?
Member ezGALVertexDeclarationGL::InitPlatform (ezGALDevice *pDevice) override

How to handle exotic formats like GL_INT_2_10_10_10_REV? They need channel count 1!

Member ezGameApplication::UpdateWorldsAndRender ()
: there should also be a clock per world
Class ezGameObject

Implement Clone

Implement switching dynamic and static

Member ezGameObject::m_Components
small array class to reduce memory overhead
Class ezGenericId< InstanceIndexBits, GenerationBits >
Document this better.
Member ezGeometry::TransformVertices (const ezMat4 &mTransform, ezUInt32 uiFirstVertex)
GeomUtils improvements:
Class ezInternal::SpatialData
: implement a real spatial data structure
Member ezInternal::WorldData::m_ComponentManagers
Member ezJSONParser::ReadString ()
Support escaped Unicode literals? ()
Member ezLuaWrapper::lua_allocator (void *ud, void *ptr, size_t osize, size_t nsize)
Create optimized allocator.
Member ezMeshRenderer::Render (const ezRenderViewContext &renderContext, ezRenderPipelinePass *pPass, const ezArrayPtr< const ezRenderData *const > &renderData) override
Not sure ezMeshRenderer should create the ObjectConstants CB, probably this should be centralized somewhere else
Member ezMeshResourceDescriptor::CalculateBounds ()
submesh bounds
Member ezMeshResourceDescriptor::Load (ezStreamReaderBase &stream)

Material Path (relative to mesh file)

load from file

Member ezMeshResourceDescriptor::Save (ezStreamWriterBase &stream)
Material Path (relative to mesh file)
Class ezMessage
implement serialization
Member ezPreprocessor::HandleDefine (const TokenStream &Tokens, ezUInt32 &uiCurToken)
Make sure the same parameter name is not used twice
Member ezPreprocessor::PassThroughFunctionMacro (MacroDefinition &Macro, const MacroParameters &Parameters, TokenStream &Output)
Maybe the passed through parameters need expansion
Member ezRenderContext::GetMaterialParameterPointer (ezUInt32 uiNameHash)

Array versions of material parameters

Return array, not data pointer ? (only required, if array size may grow later on)

Member ezRenderContext::PreloadSingleShaderPermutation (ezShaderResourceHandle hShader, const ezHybridArray< ezPermutationGenerator::PermutationVar, 16 > &UsedPermVars, ezTime tShouldBeAvailableIn)
Mutex
Member ezRenderContext::SetMaterialParameter (const ezTempHashedString &sName, const ezVariant &value)
Int vector
Member ezRenderContext::SetShaderPermutationVariable (const char *szVariable, const char *szValue)
Could we use hashed variable names here ?
Member ezRenderPipeline::CreateRenderData (ezRenderPassType passType, const ezGameObject *pOwner)
implement sorting
Member ezRenderPipeline::ExtractData (const ezView &view)
use spatial data to do visibility culling etc.
Member ezResourceFlags::ResourceHasFallback
implement NoFileAccessRequired
Member ezResourceManager::m_LoadedResources

Do not unload resources while they are acquired

Resource Type Memory Thresholds

Preload does not load all quality levels

Priority change on acquire not visible in inspector

Member ezResourceManager::UpdateLoadingDeadlines ()

don't do this too often

Allow to tweak kick out time

Make sure resources that are queued here don't get deleted

Member ezResourceManagerWorker::Execute () override
Proper cleanup
Member ezRotorComponent::Update ()

Scripting integration

Scripting integration

This will probably give precision issues pretty quickly

Member ezShaderMaterialParamCB::m_uiMaterialCBSize
All the material cb data must be shareable across shaders, to enable reusing the same buffer if the layouts are identical
Class ezTelemetry
document and test (and finish)
Member ezTelemetry::UpdateNetwork ()

This assumes we only connect to a single client ...

This assumes we only connect to a single client ...

This assumes we only connect to a single client ...

Member ezTextureResource::CreateResource (const ezTextureResourceDescriptor &descriptor) override
HACK
Member ezTextureResource::UpdateContent (ezStreamReaderBase *Stream) override
Figure out the correct order of the arrays/faces/mips
Member ezTextureResourceLoader::OpenDataStream (const ezResourceBase *pResource) override
A conversion to B8G8R8X8_UNORM currently fails
Member ezTokenizer::GetNextLine (ezUInt32 &uiFirstToken, ezHybridArray< const ezToken *, 32 > &Tokens) const
Theoretically, if the line ends with an identifier, and the next directly starts with one again,
Member ezTransformTemplate< Type >::Decompose (ezVec3 &vPos, ezQuat &qRot, ezVec3 &vScale) const
Can we make this more efficient? E.g. ezQuat::SetFromScaledMat3 ?
Member ezWindow::Initialize ()

Expose icon functionality somehow

test & support for multiple windows