Vulkan stuff

This commit is contained in:
2025-09-20 12:39:42 +03:00
parent ab404bf672
commit 287102dcea
19 changed files with 137 additions and 152 deletions

View File

@@ -1,25 +0,0 @@
#ifndef MATERIAL_COMPUTE_SHADER_H
#define MATERIAL_COMPUTE_SHADER_H
#include "ishader.h"
enum EShaderOutput {
SHADER_TEXTURE0,
SHADER_TEXTURE1,
SHADER_TEXTURE2,
SHADER_TEXTURE3,
SHADER_TEXTURE4,
SHADER_TEXTURE5,
SHADER_TEXTURE6,
SHADER_TEXTURE7,
SHADER_DEPTH,
};
abstract_class IComputeShader : public IShader
{
public:
virtual void SetShaderSource( const char *szPath ) = 0;
};
#endif

View File

@@ -1,44 +1,9 @@
#ifndef MATERIAL_SYSTEM_H
#define MATERIAL_SYSTEM_H
#include "iappsystem.h"
#include "tier2/iappsystem.h"
#include "tier0/platform.h"
abstract_class IRenderingObject
{
public:
virtual void SetDebugName( const char *szName ) = 0;
};
abstract_class IBuffer : public IRenderingObject
{
public:
virtual void Lock() = 0;
virtual void Unlock() = 0;
virtual void *Map() = 0;
virtual void Unmap() = 0;
virtual uint32_t GetSize() = 0;
};
abstract_class IVertexBuffer : public IBuffer
{
public:
};
abstract_class IIndexBuffer : public IBuffer
{
public:
};
abstract_class IMesh
{
public:
};
enum EImageFormat
{
IMAGE_FORMAT_R8_UINT,
@@ -73,6 +38,26 @@ enum EMultisampleType
MULTISAMPLE_TYPE_8_SAMPLES,
};
abstract_class IRenderingObject
{
public:
virtual void SetDebugName( const char *szName ) = 0;
};
abstract_class IBuffer : public IRenderingObject
{
public:
virtual void Lock() = 0;
virtual void Unlock() = 0;
virtual void *Map() = 0;
virtual void Unmap() = 0;
virtual uint32_t GetSize() = 0;
};
typedef IBuffer IVertexBuffer;
typedef IBuffer IIndexBuffer;
abstract_class IImage : public IRenderingObject
{
public:
@@ -81,6 +66,21 @@ public:
virtual EImageFormat GetImageFormat() = 0;
virtual EMultisampleType GetMultisampleType() = 0;
};
abstract_class IShader
{
public:
};
abstract_class IMaterial
{
public:
virtual void SetConstants( void *pData ) = 0;
virtual void SetTexture( const char *szName, IImage *pImage ) = 0;
virtual void SetBuffer( const char *szName, IImage *pImage ) = 0;
};
abstract_class IRenderContext: public IAppSystem
{
public:
@@ -93,14 +93,27 @@ public:
virtual void DestroyBuffer( IBuffer *pBuffer ) = 0;
virtual void DestroyImage( IImage *pImage ) = 0;
virtual IShader *CreateShader( const char *szName );
virtual void DestroyShader( IShader *pMaterial ) = 0;
virtual IMaterial *CreateMaterial( IShader *pShader ) = 0;
virtual void DestroyMaterial( IMaterial *pMaterial ) = 0;
virtual void SetMaterial( IMaterial *pMaterial ) = 0;
virtual void SetVertexBuffer( IVertexBuffer *pBuffer ) = 0;
virtual void SetIndexBuffer( IVertexBuffer *pBuffer ) = 0;
virtual void DrawPrimitives( ) = 0;
virtual void DrawPrimitivesIndexed( ) = 0;
};
abstract_class IMaterialSystem: public IAppSystem
{
public:
virtual void Frame( float fTime ) = 0;
virtual IRenderContext *GetRenderContext( void) = 0;
virtual IRenderContext *GetRenderContext( void ) = 0;
};
IMaterialSystem *Materials( void );

View File

@@ -1,10 +0,0 @@
#ifndef MATERIAL_PIPELINE_H
#define MATERIAL_PIPELINE_H
#include "tier0/platform.h"
abstract_class IPipeline
{
public:
};
#endif

View File

@@ -1,27 +0,0 @@
#ifndef MATERIAL_RASTER_SHADER_H
#define MATERIAL_RASTER_SHADER_H
#include "ishader.h"
enum EShaderOutput {
SHADER_TEXTURE0,
SHADER_TEXTURE1,
SHADER_TEXTURE2,
SHADER_TEXTURE3,
SHADER_TEXTURE4,
SHADER_TEXTURE5,
SHADER_TEXTURE6,
SHADER_TEXTURE7,
SHADER_DEPTH,
};
abstract_class IRasterShader : public IShader
{
public:
virtual void SetVertexShader( const char *szPath ) = 0;
virtual void SetPixelShader( const char *szPath ) = 0;
virtual void EnableTexture( EShaderOutput eTextureID, bool bEnabled ) = 0;
};
#endif

View File

@@ -1,36 +0,0 @@
#ifndef MATERIAL_SHADER_H
#define MATERIAL_SHADER_H
#include "tier0/platform.h"
enum EShaderInputType
{
SHADER_INPUT_TYPE_POINTER,
SHADER_INPUT_TYPE_INT,
SHADER_INPUT_TYPE_FLOAT,
SHADER_INPUT_TYPE_FLOAT2,
SHADER_INPUT_TYPE_FLOAT3,
SHADER_INPUT_TYPE_FLOAT4,
SHADER_INPUT_TYPE_MATRIX,
SHADER_INPUT_TYPE_IMAGE,
SHADER_INPUT_TYPE_TEXTURE,
SHADER_INPUT_TYPE_MODEL,
};
abstract_class IShader
{
public:
virtual void CreateShaderParameter( const char *szName, uint32_t binding, EShaderInputType eType, bool bArray ) = 0;
virtual void CreateMaterialParameter( const char *szName, uint32_t binding, EShaderInputType eType, bool bArray ) = 0;
virtual void CreateConstants( uint32_t nSize ) = 0;
virtual void SetShaderParameter( const char *szName, void *pData ) = 0;
};
#endif