Support compute-only shader authoring variants
This commit is contained in:
@@ -362,6 +362,25 @@ ShaderPass BuildConcretePass(
|
||||
const Containers::String variantSource =
|
||||
BuildKeywordVariantSource(strippedCombinedSource, keywordSet);
|
||||
|
||||
if (!pass.computeEntryPoint.Empty()) {
|
||||
ShaderStageVariant computeVariant = {};
|
||||
computeVariant.stage = ShaderType::Compute;
|
||||
computeVariant.backend = ShaderBackend::Generic;
|
||||
computeVariant.language = ShaderLanguage::HLSL;
|
||||
computeVariant.requiredKeywords = keywordSet;
|
||||
computeVariant.entryPoint =
|
||||
!pass.computeEntryPoint.Empty()
|
||||
? pass.computeEntryPoint
|
||||
: GetDefaultEntryPoint(ShaderLanguage::HLSL, ShaderType::Compute);
|
||||
computeVariant.profile = GetDefaultProfile(
|
||||
ShaderLanguage::HLSL,
|
||||
ShaderBackend::Generic,
|
||||
ShaderType::Compute);
|
||||
computeVariant.sourceCode = variantSource;
|
||||
shaderPass.variants.PushBack(computeVariant);
|
||||
continue;
|
||||
}
|
||||
|
||||
ShaderStageVariant vertexVariant = {};
|
||||
vertexVariant.stage = ShaderType::Vertex;
|
||||
vertexVariant.backend = ShaderBackend::Generic;
|
||||
@@ -535,12 +554,12 @@ Containers::String GetDefaultProfile(
|
||||
ShaderType stage) {
|
||||
if (language == ShaderLanguage::HLSL) {
|
||||
switch (stage) {
|
||||
case ShaderType::Vertex: return "vs_5_0";
|
||||
case ShaderType::Fragment: return "ps_5_0";
|
||||
case ShaderType::Geometry: return "gs_5_0";
|
||||
case ShaderType::Compute: return "cs_5_0";
|
||||
case ShaderType::Hull: return "hs_5_0";
|
||||
case ShaderType::Domain: return "ds_5_0";
|
||||
case ShaderType::Vertex: return "vs_5_1";
|
||||
case ShaderType::Fragment: return "ps_5_1";
|
||||
case ShaderType::Geometry: return "gs_5_1";
|
||||
case ShaderType::Compute: return "cs_5_1";
|
||||
case ShaderType::Hull: return "hs_5_1";
|
||||
case ShaderType::Domain: return "ds_5_1";
|
||||
default: return Containers::String();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user