added main menus, improved shading

This commit is contained in:
2025-07-18 20:37:52 +03:00
parent dddf1b5881
commit 070c3ff309
45 changed files with 859 additions and 271 deletions

View File

@@ -106,6 +106,8 @@ enum EBarrierMemoryPermissions
BARRIER_MEMORY_PERMISSIONS_DEPTH_WRITE = 0x100,
BARRIER_MEMORY_PERMISSIONS_COPY_READ = 0x200,
BARRIER_MEMORY_PERMISSIONS_COPY_WRITE = 0x400,
BARRIER_MEMORY_PERMISSIONS_BLIT_READ = 0x800,
BARRIER_MEMORY_PERMISSIONS_BLIT_WRITE = 0x1000,
};
enum EBarrierStage
{
@@ -114,10 +116,14 @@ enum EBarrierStage
BARRIER_STAGE_VERTEX_SHADER = 0x4,
BARRIER_STAGE_GEOMETRY_SHADER = 0x8,
BARRIER_STAGE_FRAGMENT_SHADER = 0x10,
BARRIER_STAGE_COLOR_OUTPUT = 0x20,
BARRIER_STAGE_COMPUTE_SHADER = 0x40,
BARRIER_STAGE_RAY_TRACING_SHADER = 0x80,
BARRIER_STAGE_BOTTOM = 0x100,
BARRIER_STAGE_DEPTH_OUTPUT = 0x20,
BARRIER_STAGE_COLOR_OUTPUT = 0x40,
BARRIER_STAGE_COMPUTE_SHADER = 0x80,
BARRIER_STAGE_RAY_TRACING_SHADER = 0x100,
BARRIER_STAGE_BOTTOM = 0x200,
BARRIER_STAGE_BLIT = 0x400,
BARRIER_STAGE_COPY = 0x800,
BARRIER_STAGE_IMAGE_OUPUT = 0x1000,
};
enum EAttachmentLoadMode
@@ -226,6 +232,8 @@ abstract_class IPipeline
{
public:
EPipelineType type;
virtual void PushBindings() = 0;
virtual void BindData( uint32_t binding, IBuffer *pBuffer, IImage* pImage) = 0;
};
typedef IPipeline IGraphicsPipeline;
typedef IPipeline IComputePipeline;
@@ -258,14 +266,14 @@ public:
struct BufferBarrier_t
{
EBarrierMemoryPermissions in;
EBarrierMemoryPermissions out;
uint32_t in;
uint32_t out;
IBuffer *pBuffer;
};
struct ImageBarrier_t
{
EBarrierMemoryPermissions in;
EBarrierMemoryPermissions out;
uint32_t in;
uint32_t out;
IImage *pImage;
};
@@ -316,18 +324,16 @@ public:
static void SetConstants( uint32_t nSize, void *pData );
static void Barrier( uint32_t stageIn, uint32_t stageOut, CUtlVector<BufferBarrier_t> buffers, CUtlVector<ImageBarrier_t> images );
static void BindData( uint32_t binding, IBuffer *pBuffer, IImage* pImage);
static void BindPipeline( IPipeline *pPipeline );
static void PushBindings();
static void Begin( uint32_t nWidth, uint32_t nHeight, CUtlVector<RenderingColorAttachment_t> attachments, RenderingDepthAttachment_t depth );
static void ResetState();
static void SetDepthMode( EDepthMode mode );
static void Draw( IVertexBuffer *pVertex, IIndexBuffer *pIndex );
static void End();
static void Dispatch( uint32_t x, uint32_t y, uint32_t z );
static void TraceRays( uint32_t x, uint32_t y, uint32_t z );
static void End();
static IGraphicsPipeline *CreateGraphicsPipeline(
CUtlVector<Shader_t> shaders,