Multipass shaders
This commit is contained in:
@@ -23,6 +23,8 @@ ShaderPackage MakeSinglePassPackage()
|
||||
ShaderPassDefinition pass;
|
||||
pass.id = "main";
|
||||
pass.entryPoint = "mainImage";
|
||||
pass.sourcePath = "shader.slang";
|
||||
pass.outputName = "layerOutput";
|
||||
shaderPackage.passes.push_back(pass);
|
||||
return shaderPackage;
|
||||
}
|
||||
@@ -37,19 +39,35 @@ void SupportsSinglePassStatelessPackage()
|
||||
Expect(result.reason.empty(), "supported packages should not report a rejection reason");
|
||||
}
|
||||
|
||||
void RejectsMultipassPackage()
|
||||
void SupportsStatelessNamedPassPackage()
|
||||
{
|
||||
ShaderPackage shaderPackage = MakeSinglePassPackage();
|
||||
shaderPackage.passes.front().outputName = "generatedMask";
|
||||
ShaderPassDefinition secondPass;
|
||||
secondPass.id = "second";
|
||||
secondPass.entryPoint = "mainImage";
|
||||
secondPass.sourcePath = "shader.slang";
|
||||
secondPass.inputNames.push_back("generatedMask");
|
||||
secondPass.outputName = "layerOutput";
|
||||
shaderPackage.passes.push_back(secondPass);
|
||||
|
||||
const RenderCadenceCompositor::ShaderSupportResult result =
|
||||
RenderCadenceCompositor::CheckStatelessSinglePassShaderSupport(shaderPackage);
|
||||
|
||||
Expect(!result.supported, "multipass packages should be rejected");
|
||||
Expect(result.reason.find("single-pass") != std::string::npos, "multipass rejection should explain the single-pass limit");
|
||||
Expect(result.supported, "stateless named-pass packages should be supported");
|
||||
Expect(result.reason.empty(), "supported named-pass packages should not report a rejection reason");
|
||||
}
|
||||
|
||||
void RejectsUnknownPassInput()
|
||||
{
|
||||
ShaderPackage shaderPackage = MakeSinglePassPackage();
|
||||
shaderPackage.passes.front().inputNames.push_back("missingIntermediate");
|
||||
|
||||
const RenderCadenceCompositor::ShaderSupportResult result =
|
||||
RenderCadenceCompositor::CheckStatelessSinglePassShaderSupport(shaderPackage);
|
||||
|
||||
Expect(!result.supported, "packages with unknown pass inputs should be rejected");
|
||||
Expect(result.reason.find("unknown input") != std::string::npos, "unknown input rejection should explain the missing named output");
|
||||
}
|
||||
|
||||
void RejectsTemporalPackage()
|
||||
@@ -97,7 +115,8 @@ void RejectsTextParameters()
|
||||
int main()
|
||||
{
|
||||
SupportsSinglePassStatelessPackage();
|
||||
RejectsMultipassPackage();
|
||||
SupportsStatelessNamedPassPackage();
|
||||
RejectsUnknownPassInput();
|
||||
RejectsTemporalPackage();
|
||||
RejectsTextureAssets();
|
||||
RejectsTextParameters();
|
||||
|
||||
Reference in New Issue
Block a user