asset manager

This commit is contained in:
2026-02-24 21:38:34 +02:00
parent 003106a4d7
commit e83f7cd448
9 changed files with 205 additions and 42 deletions

View File

@@ -23,7 +23,6 @@ class CFunnyMeshInstance;
class CFunnyMesh: public IMesh
{
public:
virtual void ConfigureShader( IShader *pShader ) override;
virtual void SetVertices( IVertexBuffer *pBuffer ) override;
virtual void SetIndicies( IIndexBuffer *pBuffer, EIndexFormat eIndexFormat ) override;
@@ -36,22 +35,6 @@ public:
IVertexBuffer *m_pVertexBuffer;
};
void CFunnyMesh::ConfigureShader( IShader *pShader )
{
pShader->AddLayout(0, 32);
pShader->AddAttribute(0, 0, VERTEX_FORMAT_XYZ32_SFLOAT, 0);
pShader->AddAttribute(0, 1, VERTEX_FORMAT_XY32_SFLOAT, 12);
pShader->AddAttribute(0, 2, VERTEX_FORMAT_XYZ32_SFLOAT, 20);
// albedo
pShader->AddOutputImage(0, IMAGE_FORMAT_RGBA8_UNORM);
pShader->AddOutputImage(1, IMAGE_FORMAT_RGBA16_SFLOAT);
pShader->AddOutputImage(2, IMAGE_FORMAT_RGBA32_SFLOAT);
pShader->SetMultisampling(MULTISAMPLE_TYPE_4_SAMPLES);
pShader->SetDepthImage(IMAGE_FORMAT_D32_SFLOAT);
}
void CFunnyMesh::SetVertices( IVertexBuffer *pBuffer )
{
m_pVertexBuffer = pBuffer;
@@ -137,6 +120,8 @@ public:
virtual IMesh *CreateMesh( const char *szName ) override;
virtual IMeshInstance *CreateInstance( IMesh *pMesh ) override;
virtual void ConfigureShader( IShader *pShader ) override;
private:
CUtlVector<CFunnyMesh*> m_pMeshes;
IImage *m_pOutputImage = NULL;
@@ -154,6 +139,23 @@ private:
versor m_vRot;
};
void CFunnyWorldRenderer::ConfigureShader( IShader *pShader )
{
pShader->AddLayout(0, 32);
pShader->AddAttribute(0, 0, VERTEX_FORMAT_XYZ32_SFLOAT, 0);
pShader->AddAttribute(0, 1, VERTEX_FORMAT_XY32_SFLOAT, 12);
pShader->AddAttribute(0, 2, VERTEX_FORMAT_XYZ32_SFLOAT, 20);
// albedo
pShader->AddOutputImage(0, IMAGE_FORMAT_RGBA8_UNORM);
pShader->AddOutputImage(1, IMAGE_FORMAT_RGBA16_SFLOAT);
pShader->AddOutputImage(2, IMAGE_FORMAT_RGBA32_SFLOAT);
pShader->SetMultisampling(MULTISAMPLE_TYPE_4_SAMPLES);
pShader->SetDepthImage(IMAGE_FORMAT_D32_SFLOAT);
}
static CFunnyWorldRenderer s_renderer;
IWorldRenderer *g_pWorldRenderer = &s_renderer;