summaryrefslogtreecommitdiffstats
path: root/Tests/TestApp/assets/BlendStateTest.lua
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-02-15 07:22:18 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-02-15 07:22:18 +0000
commit5c9450e283d0889987e39ebd13b5a29c110d9e88 (patch)
treefc8c9eb710106d57fe0f18816da9948d10ad7832 /Tests/TestApp/assets/BlendStateTest.lua
parentFixed formatting of cmake files + some minor updates (diff)
downloadDiligentEngine-5c9450e283d0889987e39ebd13b5a29c110d9e88.tar.gz
DiligentEngine-5c9450e283d0889987e39ebd13b5a29c110d9e88.zip
Added tests
Diffstat (limited to 'Tests/TestApp/assets/BlendStateTest.lua')
-rw-r--r--Tests/TestApp/assets/BlendStateTest.lua245
1 files changed, 245 insertions, 0 deletions
diff --git a/Tests/TestApp/assets/BlendStateTest.lua b/Tests/TestApp/assets/BlendStateTest.lua
new file mode 100644
index 0000000..45c305c
--- /dev/null
+++ b/Tests/TestApp/assets/BlendStateTest.lua
@@ -0,0 +1,245 @@
+-- Test script file
+
+TestGlobalBS = TestGlobalPSO.GraphicsPipeline.BlendDesc
+
+assert( TestGlobalPSO.Name == "PSO-TestBlendStates");
+
+assert( TestGlobalBS.IndependentBlendEnable == true);
+assert( TestGlobalBS.AlphaToCoverageEnable == false);
+assert( TestGlobalBS.RenderTargets[1].BlendEnable == true);
+assert( TestGlobalBS.RenderTargets[1].SrcBlend == "BLEND_FACTOR_ZERO");
+assert( TestGlobalBS.RenderTargets[1].DestBlend == "BLEND_FACTOR_ONE");
+assert( TestGlobalBS.RenderTargets[1].BlendOp == "BLEND_OPERATION_ADD");
+assert( TestGlobalBS.RenderTargets[1].SrcBlendAlpha == "BLEND_FACTOR_SRC_ALPHA");
+assert( TestGlobalBS.RenderTargets[1].DestBlendAlpha == "BLEND_FACTOR_INV_SRC_ALPHA");
+assert( TestGlobalBS.RenderTargets[1].BlendOpAlpha == "BLEND_OPERATION_SUBTRACT");
+assert( TestGlobalBS.RenderTargets[1].RenderTargetWriteMask[1] == "COLOR_MASK_RED");
+
+assert( TestGlobalBS.RenderTargets[2].BlendEnable == true);
+assert( TestGlobalBS.RenderTargets[2].SrcBlend == "BLEND_FACTOR_SRC_ALPHA");
+assert( TestGlobalBS.RenderTargets[2].DestBlend == "BLEND_FACTOR_INV_SRC_ALPHA");
+assert( TestGlobalBS.RenderTargets[2].BlendOp == "BLEND_OPERATION_REV_SUBTRACT");
+assert( TestGlobalBS.RenderTargets[2].SrcBlendAlpha == "BLEND_FACTOR_DEST_ALPHA");
+assert( TestGlobalBS.RenderTargets[2].DestBlendAlpha == "BLEND_FACTOR_INV_DEST_ALPHA");
+assert( TestGlobalBS.RenderTargets[2].BlendOpAlpha == "BLEND_OPERATION_MIN");
+assert( TestGlobalBS.RenderTargets[2].RenderTargetWriteMask[1] == "COLOR_MASK_GREEN");
+
+assert( TestGlobalBS.RenderTargets[3].BlendEnable == true);
+assert( TestGlobalBS.RenderTargets[3].SrcBlend == "BLEND_FACTOR_DEST_COLOR");
+assert( TestGlobalBS.RenderTargets[3].DestBlend == "BLEND_FACTOR_INV_DEST_COLOR");
+assert( TestGlobalBS.RenderTargets[3].BlendOp == "BLEND_OPERATION_MAX");
+assert( TestGlobalBS.RenderTargets[3].SrcBlendAlpha == "BLEND_FACTOR_SRC_ALPHA_SAT");
+assert( TestGlobalBS.RenderTargets[3].DestBlendAlpha == "BLEND_FACTOR_BLEND_FACTOR");
+assert( TestGlobalBS.RenderTargets[3].BlendOpAlpha == "BLEND_OPERATION_ADD");
+assert( TestGlobalBS.RenderTargets[3].RenderTargetWriteMask[1] == "COLOR_MASK_BLUE");
+
+assert( TestGlobalBS.RenderTargets[4].BlendEnable == true);
+assert( TestGlobalBS.RenderTargets[4].SrcBlend == "BLEND_FACTOR_INV_BLEND_FACTOR");
+assert( TestGlobalBS.RenderTargets[4].DestBlend == "BLEND_FACTOR_SRC_COLOR");
+assert( TestGlobalBS.RenderTargets[4].BlendOp == "BLEND_OPERATION_MAX");
+assert( TestGlobalBS.RenderTargets[4].SrcBlendAlpha == "BLEND_FACTOR_INV_SRC_ALPHA");
+assert( TestGlobalBS.RenderTargets[4].DestBlendAlpha == "BLEND_FACTOR_SRC_ALPHA");
+assert( TestGlobalBS.RenderTargets[4].BlendOpAlpha == "BLEND_OPERATION_ADD");
+assert( TestGlobalBS.RenderTargets[4].RenderTargetWriteMask[1] == "COLOR_MASK_ALPHA");
+
+BSDesc =
+{
+ IndependentBlendEnable = true,
+ AlphaToCoverageEnable = false,
+ RenderTargets =
+ {
+ {
+ BlendEnable = true,
+ SrcBlend = "BLEND_FACTOR_ZERO", DestBlend = "BLEND_FACTOR_SRC_COLOR", BlendOp = "BLEND_OPERATION_ADD",
+ SrcBlendAlpha = "BLEND_FACTOR_SRC_ALPHA", DestBlendAlpha = "BLEND_FACTOR_INV_SRC_ALPHA", BlendOpAlpha = "BLEND_OPERATION_SUBTRACT",
+ RenderTargetWriteMask = {"COLOR_MASK_GREEN", "COLOR_MASK_RED"}
+ },
+
+ [3] = {
+ BlendEnable = true,
+ SrcBlend = "BLEND_FACTOR_INV_DEST_ALPHA", DestBlend = "BLEND_FACTOR_INV_DEST_COLOR", BlendOp = "BLEND_OPERATION_ADD",
+ SrcBlendAlpha = "BLEND_FACTOR_BLEND_FACTOR", DestBlendAlpha = "BLEND_FACTOR_INV_SRC_ALPHA", BlendOpAlpha = "BLEND_OPERATION_SUBTRACT",
+ RenderTargetWriteMask = {"COLOR_MASK_BLUE", "COLOR_MASK_ALPHA"}
+ },
+ }
+}
+
+
+TrivialVS = Shader.Create{
+ Source =
+[[void VSMain(out float4 pos : SV_Position)
+{
+ pos = float4(0,0,0,0);
+}]],
+ EntryPoint = "VSMain",
+ SourceLanguage = "SHADER_SOURCE_LANGUAGE_HLSL",
+ Desc = {
+ ShaderType = "SHADER_TYPE_VERTEX",
+ Name = "TrivialVS"
+ }
+}
+
+TrivialPS = Shader.Create{
+ Source =
+[[void PSMain(out float4 col : SV_TARGET)
+{
+ col = float4(0,0,0,0);
+}]],
+ EntryPoint = "PSMain",
+ SourceLanguage = "SHADER_SOURCE_LANGUAGE_HLSL",
+ Desc = {
+ ShaderType = "SHADER_TYPE_PIXEL",
+ Name = "TrivialPS"
+ }
+}
+
+PSODesc =
+{
+ Name = "TestPSO_FromScript",
+ GraphicsPipeline =
+ {
+ pVS = TrivialVS,
+ pPS = TrivialPS,
+ BlendDesc = BSDesc,
+ RTVFormats = {"TEX_FORMAT_RGBA8_UNORM", "TEX_FORMAT_RGBA8_UNORM"},
+ DSVFormat = "TEX_FORMAT_D32_FLOAT",
+ PrimitiveTopologyType = "PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE",
+ SmplDesc = {Count = 1, Quality = 0 }
+ }
+}
+PSO_TestBlendState = PipelineState.Create(PSODesc)
+Context.SetBlendFactors()
+Context.SetBlendFactors(1)
+Context.SetBlendFactors(1,2)
+Context.SetBlendFactors(1,2,3)
+Context.SetBlendFactors(1,2,3,4)
+
+--TestBS2 = BlendState.Create(BSDesc)
+
+TestBS = PSO_TestBlendState.GraphicsPipeline.BlendDesc
+
+assert( PSO_TestBlendState.Name == "TestPSO_FromScript" )
+assert( TestBS.IndependentBlendEnable == true )
+assert( TestBS.AlphaToCoverageEnable == false )
+RT1 = TestBS.RenderTargets[1]
+assert( RT1.BlendEnable == true)
+assert( RT1.SrcBlend == "BLEND_FACTOR_ZERO")
+assert( RT1.DestBlend == "BLEND_FACTOR_SRC_COLOR")
+assert( RT1.BlendOp == "BLEND_OPERATION_ADD")
+assert( RT1.SrcBlendAlpha == "BLEND_FACTOR_SRC_ALPHA")
+assert( RT1.DestBlendAlpha == "BLEND_FACTOR_INV_SRC_ALPHA")
+assert( RT1.BlendOpAlpha == "BLEND_OPERATION_SUBTRACT")
+assert( RT1.RenderTargetWriteMask[1] == "COLOR_MASK_GREEN" and RT1.RenderTargetWriteMask[2] == "COLOR_MASK_RED" or
+ RT1.RenderTargetWriteMask[2] == "COLOR_MASK_GREEN" and RT1.RenderTargetWriteMask[1] == "COLOR_MASK_RED" )
+
+RT3 = TestBS.RenderTargets[3]
+assert(RT3.BlendEnable == true)
+assert(RT3.SrcBlend == "BLEND_FACTOR_INV_DEST_ALPHA")
+assert(RT3.DestBlend == "BLEND_FACTOR_INV_DEST_COLOR")
+assert(RT3.BlendOp == "BLEND_OPERATION_ADD")
+assert(RT3.SrcBlendAlpha == "BLEND_FACTOR_BLEND_FACTOR")
+assert(RT3.DestBlendAlpha == "BLEND_FACTOR_INV_SRC_ALPHA")
+assert(RT3.BlendOpAlpha == "BLEND_OPERATION_SUBTRACT")
+assert(RT3.RenderTargetWriteMask[1] == "COLOR_MASK_BLUE" and RT3.RenderTargetWriteMask[2] == "COLOR_MASK_ALPHA" or
+ RT3.RenderTargetWriteMask[2] == "COLOR_MASK_BLUE" and RT3.RenderTargetWriteMask[1] == "COLOR_MASK_ALPHA" )
+
+Context.SetPipelineState(PSO_TestBlendState)
+
+
+BlendFactors =
+{
+ "BLEND_FACTOR_ZERO",
+ "BLEND_FACTOR_ONE",
+ "BLEND_FACTOR_SRC_COLOR",
+ "BLEND_FACTOR_INV_SRC_COLOR",
+ "BLEND_FACTOR_SRC_ALPHA",
+ "BLEND_FACTOR_INV_SRC_ALPHA",
+ "BLEND_FACTOR_DEST_ALPHA",
+ "BLEND_FACTOR_INV_DEST_ALPHA",
+ "BLEND_FACTOR_DEST_COLOR",
+ "BLEND_FACTOR_INV_DEST_COLOR",
+ "BLEND_FACTOR_SRC_ALPHA_SAT",
+ "BLEND_FACTOR_BLEND_FACTOR",
+ "BLEND_FACTOR_INV_BLEND_FACTOR"
+}
+
+AlphaBlendFactors =
+{
+ "BLEND_FACTOR_ZERO",
+ "BLEND_FACTOR_ONE",
+ "BLEND_FACTOR_SRC_ALPHA",
+ "BLEND_FACTOR_INV_SRC_ALPHA",
+ "BLEND_FACTOR_DEST_ALPHA",
+ "BLEND_FACTOR_INV_DEST_ALPHA",
+ "BLEND_FACTOR_SRC_ALPHA_SAT",
+ "BLEND_FACTOR_BLEND_FACTOR",
+ "BLEND_FACTOR_INV_BLEND_FACTOR"
+}
+
+BlendOps =
+{
+ "BLEND_OPERATION_ADD",
+ "BLEND_OPERATION_SUBTRACT",
+ "BLEND_OPERATION_REV_SUBTRACT",
+ "BLEND_OPERATION_MIN",
+ "BLEND_OPERATION_MAX"
+}
+
+for rt = 1, 4 do
+ BSDesc.RenderTargets[rt] = BSDesc.RenderTargets[rt] or {}
+
+ RT = BSDesc.RenderTargets[rt]
+ RT.BlendEnable = true
+ for i,v in ipairs(BlendFactors) do
+ RT.SrcBlend = v
+ RT.DestBlend = v
+ PSODesc.GraphicsPipeline.BlendDesc = BSDesc
+ local TestPSO = PipelineState.Create(PSODesc)
+ assert(TestPSO.GraphicsPipeline.BlendDesc.RenderTargets[rt].SrcBlend == v)
+ assert(TestPSO.GraphicsPipeline.BlendDesc.RenderTargets[rt].DestBlend == v)
+ Context.SetPipelineState(TestPSO)
+ end
+
+ for i,v in ipairs(AlphaBlendFactors) do
+ RT.SrcBlendAlpha = v
+ RT.DestBlendAlpha = v
+ PSODesc.GraphicsPipeline.BlendDesc = BSDesc
+ local TestPSO = PipelineState.Create(PSODesc)
+ assert(TestPSO.GraphicsPipeline.BlendDesc.RenderTargets[rt].SrcBlendAlpha == v)
+ assert(TestPSO.GraphicsPipeline.BlendDesc.RenderTargets[rt].DestBlendAlpha == v)
+ Context.SetPipelineState(TestPSO)
+ end
+
+ RT.SrcBlend = "BLEND_FACTOR_SRC_COLOR"
+ RT.DestBlend = "BLEND_FACTOR_INV_SRC_COLOR"
+ RT.SrcBlendAlpha = "BLEND_FACTOR_SRC_ALPHA"
+ RT.DestBlendAlpha = "BLEND_FACTOR_INV_SRC_ALPHA"
+ for i,v in ipairs(BlendOps) do
+ RT.BlendOp = v
+ RT.BlendOpAlpha = v
+ PSODesc.GraphicsPipeline.BlendDesc = BSDesc
+ local TestPSO = PipelineState.Create(PSODesc)
+ assert(TestPSO.GraphicsPipeline.BlendDesc.RenderTargets[rt].BlendOp == v)
+ assert(TestPSO.GraphicsPipeline.BlendDesc.RenderTargets[rt].BlendOpAlpha == v)
+ Context.SetPipelineState(TestPSO)
+ end
+end
+
+function TestPSOArg(PSOArg)
+ assert(PSOArg.Name == "PSO-TestBlendStates" )
+ local BSDesc = PSOArg.GraphicsPipeline.BlendDesc
+ assert(BSDesc.AlphaToCoverageEnable == false)
+ assert(BSDesc.IndependentBlendEnable == false)
+
+ for rt = 1, 8 do
+ local RT = BSDesc.RenderTargets[rt]
+ assert( RT.BlendEnable == false )
+ assert( RT.SrcBlend == "BLEND_FACTOR_ONE" )
+ assert( RT.SrcBlend == "BLEND_FACTOR_ONE" )
+ assert( RT.DestBlend == "BLEND_FACTOR_ZERO" )
+ assert( RT.BlendOp == "BLEND_OPERATION_ADD" )
+ assert( RT.SrcBlendAlpha == "BLEND_FACTOR_ONE" )
+ assert( RT.DestBlendAlpha == "BLEND_FACTOR_ZERO" )
+ assert( RT.BlendOpAlpha == "BLEND_OPERATION_ADD" )
+ end
+end