compute shaders

This commit is contained in:
2026-06-13 01:51:28 +03:00
parent 3b128315e7
commit b8aa36ccc0
28 changed files with 498 additions and 170 deletions

View File

@@ -63,6 +63,9 @@ void CSlangVulkanSpirvShaderCompiler::CompileShaderStage( EShaderStage eStage, c
case SHADER_STAGE_PIXEL:
eSlangStage = SLANG_STAGE_PIXEL;
break;
case SHADER_STAGE_COMPUTE:
eSlangStage = SLANG_STAGE_COMPUTE;
break;
case SHADER_STAGE_RAYGEN:
eSlangStage = SLANG_STAGE_RAY_GENERATION;
break;
@@ -100,25 +103,22 @@ trygetkind:
case slang::TypeReflection::Kind::ConstantBuffer:
input.eDescriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
break;
//V_printf("%s: %i\n", pType->getName(), pType->getResourceShape());
switch(pType->getResourceShape())
{
case SLANG_TEXTURE_2D:
input.eDescriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
break;
case SLANG_STRUCTURED_BUFFER:
input.eDescriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
break;
default:
break;
}
break;
case slang::TypeReflection::Kind::Resource:
//V_printf("%s: %i\n", pType->getName(), pType->getResourceShape());
switch(pType->getResourceShape())
{
case SLANG_TEXTURE_2D:
input.eDescriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
switch (pType->getResourceAccess())
{
case SLANG_RESOURCE_ACCESS_READ:
input.eDescriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
break;
case SLANG_RESOURCE_ACCESS_READ_WRITE:
input.eDescriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
break;
default:
break;
}
break;
case SLANG_STRUCTURED_BUFFER:
input.eDescriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
@@ -131,7 +131,7 @@ trygetkind:
{
size_t uCount = pType->getTotalArrayElementCount();
if (uCount == 0)
input.uCount = 128;
input.uCount = 1024;
else
input.uCount = uCount;
pType = pType->getElementType();
@@ -245,6 +245,10 @@ void CSlangVulkanSpirvShaderCompiler::CompileShader( const char *szInput, CCompi
szMainName = "psMain";
stStageMacroDesc[0] = { "PS_SHADER", "Enabled" };
break;
case SHADER_STAGE_COMPUTE:
szMainName = "csMain";
stStageMacroDesc[0] = { "CS_SHADER", "Enabled" };
break;
case SHADER_STAGE_RAYGEN:
szMainName = "rayMain";
stStageMacroDesc[0] = { "RAY_SHADER", "Enabled" };