From 5c9450e283d0889987e39ebd13b5a29c110d9e88 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Wed, 14 Feb 2018 23:22:18 -0800 Subject: Added tests --- Tests/TestApp/assets/BlendStateTest.lua | 245 ++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 Tests/TestApp/assets/BlendStateTest.lua (limited to 'Tests/TestApp/assets/BlendStateTest.lua') 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 -- cgit v1.2.3