compute shaders
This commit is contained in:
@@ -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" };
|
||||
|
||||
Reference in New Issue
Block a user