Shader linking i guess

This commit is contained in:
2026-04-12 14:52:33 +03:00
parent 79ceac1005
commit 457b455042
38 changed files with 12534 additions and 114 deletions

View File

@@ -7,6 +7,7 @@
#include "vk_mem_alloc.h"
#include "tier0/platform.h"
#include "tier1/utlvector.h"
#include "tier1/utlstring.h"
#include "tier2/iappsystem.h"
#include "materialsystem/imaterialsystem.h"
#include "materialsystem/shaderinternals.h"
@@ -268,7 +269,7 @@ public:
virtual void AddOutputImage( int iImageIndex, EImageFormat eFormat ) override;
virtual void SetDepthImage( EImageFormat eFormat ) override;
virtual void SetMultisampling( EMultisampleType eFormat ) override;
virtual void DisablePixelShader( bool bDisable) override;
virtual void DisablePixelShader( bool bDisable ) override;
virtual void Build() override;
VkPipeline m_hPipeline = NULL;
@@ -285,7 +286,57 @@ private:
EMultisampleType m_eMultiSampling;
VkFormat m_eDepthFormat;
bool m_bIsFragmentEnabled;
};
class CVkComputeShader : public IComputeShader
{
public:
virtual void Build() override;
void BuildCompute();
void BuildTrace();
VkDevice m_hDevice;
CCompiledShader m_shader;
VkPipeline m_hPipeline = NULL;
VkPipelineLayout m_hPipelineLayout;
CUtlVector<VkDescriptorSetLayout> m_setLayouts;
CUtlVector<VulkanDescriptor_t> m_bindings;
private:
struct ShaderBinding_t
{
CUtlString m_szName;
CCompiledShader m_shader;
};
CUtlVector<ShaderBinding_t> m_callableShaders = {};
};
class CVkRayTracingShader : public IRayTracingShader
{
public:
virtual uint32_t GetMissShaderBinding( const char *szName ) override;
virtual uint32_t GetClosestHitShaderBinding( const char *szName ) override;
virtual uint32_t GetCallableShaderBinding( const char *szName ) override;
virtual void AddShader( const char *szName, const char *szPath ) override;
virtual void RemoveShader( const char *szName ) override;
virtual void Build() override;
void BuildCompute();
void BuildTrace();
VkDevice m_hDevice;
CCompiledShader m_shader;
VkPipeline m_hPipeline = NULL;
VkPipelineLayout m_hPipelineLayout;
CUtlVector<VkDescriptorSetLayout> m_setLayouts;
CUtlVector<VulkanDescriptor_t> m_bindings;
private:
struct ShaderBinding_t
{
CUtlString m_szName;
CCompiledShader m_shader;
};
CUtlVector<ShaderBinding_t> m_callableShaders = {};
};
class CVkTextureArray: public ITextureArray