This commit is contained in:
2026-02-20 19:35:09 +02:00
parent 3ed689f801
commit c00ecf4081
35 changed files with 576 additions and 99 deletions

View File

@@ -11,16 +11,43 @@ class IGameWindowManager;
enum EImageFormat
{
IMAGE_FORMAT_R8_UINT,
IMAGE_FORMAT_RGB8_UINT,
IMAGE_FORMAT_RGB8_SINT,
IMAGE_FORMAT_RGB8_UNORM,
IMAGE_FORMAT_RGB8_SNORM,
IMAGE_FORMAT_RGB8_SFLOAT,
IMAGE_FORMAT_RGB16_UINT,
IMAGE_FORMAT_RGB16_SINT,
IMAGE_FORMAT_RGB16_UNORM,
IMAGE_FORMAT_RGB16_SNORM,
IMAGE_FORMAT_RGB16_SFLOAT,
IMAGE_FORMAT_RGB32_SFLOAT,
IMAGE_FORMAT_RGBA8_UNORM,
IMAGE_FORMAT_BGRA8_UNORM,
IMAGE_FORMAT_RGBA8_UINT,
IMAGE_FORMAT_RGBA8_SINT,
IMAGE_FORMAT_RGBA16_UNORM,
IMAGE_FORMAT_RGBA16_UINT,
IMAGE_FORMAT_RGBA16_SINT,
IMAGE_FORMAT_RGBA16_UNORM,
IMAGE_FORMAT_RGBA16_SNORM,
IMAGE_FORMAT_RGBA16_SFLOAT,
IMAGE_FORMAT_RGBA32_SFLOAT,
IMAGE_FORMAT_BC1,
IMAGE_FORMAT_BC2,
IMAGE_FORMAT_BC3,
IMAGE_FORMAT_BC4,
IMAGE_FORMAT_BC5,
IMAGE_FORMAT_BC6,
IMAGE_FORMAT_BC7,
IMAGE_FORMAT_D32_SFLOAT,
IMAGE_FORMAT_WINDOW,
@@ -132,6 +159,15 @@ public:
virtual EMultisampleType GetMultisampleType() = 0;
};
abstract_class ITextureArray: public IRenderingObject
{
public:
virtual void Build() = 0;
virtual uint32_t LoadTexture( const char *szPath ) = 0;
virtual uint32_t GetTextureID( const char *szPath ) = 0;
virtual void UnloadTexture( uint32_t uTextureID ) = 0;
};
//-----------------------------------------------------------------------------
// Shader object
//-----------------------------------------------------------------------------
@@ -155,8 +191,7 @@ public:
// Material handle
// It allows to specify resources in shaders such as textures, buffers etc.
//
// Resources must be updated prior to the frame, which can be done
// prior to the frame.
// Resources must be updated prior to the frame
//-----------------------------------------------------------------------------
abstract_class IMaterial
{
@@ -166,6 +201,7 @@ public:
virtual void PSSetShaderResource( uint32_t uRegister, IRenderingObject *pResource ) = 0;
virtual void VSSetConstantsBuffer( uint32_t uRegister, IBuffer *pImage ) = 0;
virtual void PSSetConstantsBuffer( uint32_t uRegister, IBuffer *pImage ) = 0;
virtual void PSSetTextureArray( uint32_t uSet, ITextureArray *pArray ) = 0;
};
abstract_class IRenderCommandList
@@ -211,6 +247,7 @@ public:
virtual IBuffer *CreateConstantBuffer( uint32_t nSize ) = 0;
virtual IBuffer *CreateStorageBuffer( uint32_t nSize ) = 0;
virtual IImage *CreateRenderTarget( uint32_t x, uint32_t y, EImageFormat eFormat, EMultisampleType eMultisampleType ) = 0;
virtual IImage *CreateTexture( uint32_t x, uint32_t y, EImageFormat eFormat, EMultisampleType eMultisampleType ) = 0;
virtual IImage *CreateStorageImage( uint32_t x, uint32_t y, EImageFormat eFormat, EMultisampleType eMultisampleType ) = 0;
virtual void DestroyBuffer( IBuffer *pBuffer ) = 0;
@@ -231,6 +268,9 @@ public:
virtual void RenderGameWindow( IGameWindow *pWindow ) = 0;
virtual void RegisterGameWindow( IGameWindow *pWindow ) = 0;
virtual void UnregisterGameWindow( IGameWindow *pWindow ) = 0;
virtual ITextureArray *CreateTextureArray() = 0;
virtual void DestroyTextureArray() = 0;
};
#define RENDER_CONTEXT_INTERFACE_VERSION "RenderContext001"