made rendering work

This commit is contained in:
2026-02-05 11:10:40 +02:00
parent faae0bdcc7
commit 4bfbcaa4a6
22 changed files with 737 additions and 483 deletions

View File

@@ -12,6 +12,6 @@ public:
virtual void ReadFromFile( CCompiledShader *pShader, const char *szFile ) = 0;
};
ICompiledShaderManager *CompiledShaderManager();
#define COMPILED_SHADER_MANAGER_INTERFACE_VERSION "CompiledShaderManager001"
#endif

View File

@@ -1,23 +1,31 @@
#ifndef GAME_WINDOW_H
#define GAME_WINDOW_H
#include "gamesystem.h"
#include "tier0/platform.h"
#include "materialsystem/imaterialsystem.h"
#include "tier2/iappsystem.h"
abstract_class IGameWindow: public IGameSystem
class IImage;
abstract_class IGameWindow: public IAppSystem
{
public:
virtual void Frame( float fDelta ) = 0;
virtual uint32_t GetRenderWidth() = 0;
virtual uint32_t GetRenderHeight() = 0;
virtual bool BRenderSizeUpdated() = 0;
virtual void SetOutputImage( IImage *pImage ) = 0;
virtual IImage *GetOutputImage() = 0;
virtual void *CreateVulkanSurface( void *pInstance ) = 0;
virtual void DestroyVulkanSurface( void *pInstance ) = 0;
};
abstract_class IGameWindowManager: public IGameSystem
abstract_class IGameWindowManager: public IAppSystem
{
public:
virtual void Frame( float fDelta ) = 0;
virtual IGameWindow *CreateWindow() = 0;
virtual void DestroyWindow( IGameWindow* pWindow ) = 0;
@@ -25,4 +33,7 @@ public:
virtual const char **GetVulkanInstanceExtensions() = 0;
};
IGameWindowManager *GameWindowManager();
#define GAME_WINDOW_MANAGER_INTERFACE_VERSION "GameWindowMgr001"
#endif

View File

@@ -131,12 +131,18 @@ public:
virtual ~IShader() = default;
virtual uint32_t PSGetResourceByName( const char *szName ) = 0;
virtual uint32_t VSGetResourceByName( const char *szName ) = 0;
virtual void AddLayout( int iIndex, int iStride ) = 0;
virtual void AddAttribute( int iBufferIndex, int iLocation, EVertexFormat eFormat, int iOffset ) = 0;
virtual void SetTopology( ETopologyMode eTopology ) = 0;
virtual void AddOutputImage( int iImageIndex, EImageFormat eFormat ) = 0;
virtual void SetDepthImage( EImageFormat eFormat ) = 0;
virtual void Build() = 0;
};
//-----------------------------------------------------------------------------
// 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.
//-----------------------------------------------------------------------------
@@ -154,13 +160,13 @@ abstract_class IRenderCommandList
{
public:
virtual void ResetRendering() = 0;
virtual void SetRenderTarget( uint32_t uIndex, IImage *pImage ) = 0;
virtual void SetClearColor( uint32_t uIndex, float r, float g, float b, float a ) = 0;
virtual void SetDepthTarget( IImage *pDepth ) = 0;
virtual void SetClearDepth( float fVal ) = 0;
virtual void SetRenderResolution( uint32_t iWidth, uint32_t iHeight ) = 0;
virtual void SetScissors( uint32_t uX, uint32_t uY, uint32_t uWidth, uint32_t uHeight ) = 0;
@@ -171,7 +177,7 @@ public:
virtual void SetIndexBuffer( IVertexBuffer *pBuffer ) = 0;
virtual void DrawPrimitives( uint32_t nVertexCount, uint32_t nFirstVertex, uint32_t nInstanceCount, uint32_t nFirstInstance ) = 0;
virtual void DrawPrimitivesIndexed( uint32_t nIndexCount, uint32_t nFirstIndex, uint32_t nVertexOffset, uint32_t nInstanceCount, uint32_t nFirstInstance ) = 0;
virtual void ResolveImage( IImage *pOriginal, IImage *pResolved ) = 0;
virtual void StartRecording() = 0;
@@ -207,7 +213,7 @@ public:
virtual IRenderCommandList *CreateCommandList() = 0;
virtual void DestroyCommandList( IRenderCommandList *pCommandList ) = 0;
virtual void SubmitCommandList(IRenderCommandList *pList) = 0;
virtual void SetMainWindowManager( IGameWindowManager *pWindowManager ) = 0;
virtual void RenderGameWindow( IGameWindow *pWindow ) = 0;