summaryrefslogtreecommitdiffstats
path: root/Tests/TestApp/assets/LuaTest.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/LuaTest.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/LuaTest.lua')
-rw-r--r--Tests/TestApp/assets/LuaTest.lua698
1 files changed, 698 insertions, 0 deletions
diff --git a/Tests/TestApp/assets/LuaTest.lua b/Tests/TestApp/assets/LuaTest.lua
new file mode 100644
index 0000000..f932693
--- /dev/null
+++ b/Tests/TestApp/assets/LuaTest.lua
@@ -0,0 +1,698 @@
+-- Test script file
+
+assert( TestGlobalBool == true )
+assert( TestGlobalInt == 19 )
+assert( TestGlobalFloat == 139.25 )
+assert( TestGlobalString == "Test Global String" )
+
+assert(TestGlobalBuffer.uiSizeInBytes == 256)
+assert(TestGlobalBuffer.Name == "TestGlobalBuff")
+assert(TestGlobalBuffer.Usage == "USAGE_DYNAMIC")
+assert(TestGlobalBuffer.BindFlags[1] == "BIND_UNIFORM_BUFFER")
+assert(TestGlobalBuffer.CPUAccessFlags[1] == "CPU_ACCESS_WRITE")
+
+
+assert( TestGlobalSampler.Name == "Test Sampler" )
+assert( TestGlobalSampler.MinFilter == "FILTER_TYPE_COMPARISON_POINT" )
+assert( TestGlobalSampler.MagFilter == "FILTER_TYPE_COMPARISON_LINEAR" )
+assert( TestGlobalSampler.MipFilter == "FILTER_TYPE_COMPARISON_LINEAR" )
+assert( TestGlobalSampler.AddressU == "TEXTURE_ADDRESS_WRAP" )
+assert( TestGlobalSampler.AddressV == "TEXTURE_ADDRESS_MIRROR" )
+assert( TestGlobalSampler.AddressW == "TEXTURE_ADDRESS_CLAMP" )
+assert( TestGlobalSampler.MipLODBias == 4 )
+assert( TestGlobalSampler.MinLOD == 1.5 )
+assert( TestGlobalSampler.MaxLOD == 4 )
+assert( TestGlobalSampler.MaxAnisotropy == 2 )
+assert( TestGlobalSampler.ComparisonFunc == "COMPARISON_FUNC_LESS" )
+assert( TestGlobalSampler.BorderColor.r == 1.5 )
+assert( TestGlobalSampler.BorderColor.g == 2.25 )
+assert( TestGlobalSampler.BorderColor.b == 3.125 )
+assert( TestGlobalSampler.BorderColor.a == 4.0625 )
+
+assert( TestGlobalBuffer2UAV.ViewType == "BUFFER_VIEW_UNORDERED_ACCESS" )
+assert( TestGlobalBuffer2UAV.ByteOffset == 0 )
+assert( TestGlobalBuffer2UAV.ByteWidth == 64 )
+
+function CheckTextureAttribs(Texture)
+ assert( Texture.Type == "RESOURCE_DIM_TEX_2D" )
+ assert( Texture.Name == "Test Global Texture 2D" )
+ assert( Texture.Width == 1024 )
+ assert( Texture.Height == 512 )
+ assert( Texture.MipLevels == 1 )
+ assert( Texture.Format == "TEX_FORMAT_RGBA8_UNORM" )
+ assert( Texture.Usage == "USAGE_DYNAMIC" )
+ assert( Texture.BindFlags[1] == "BIND_SHADER_RESOURCE" )
+ assert( Texture.CPUAccessFlags[1] == "CPU_ACCESS_WRITE" )
+end
+CheckTextureAttribs( TestGlobalTexture )
+
+TestSampler = Sampler.Create{
+ Name = "Test Sampler",
+ MinFilter = "FILTER_TYPE_POINT",
+ MagFilter = "FILTER_TYPE_LINEAR",
+ MipFilter = "FILTER_TYPE_POINT",
+ AddressU = "TEXTURE_ADDRESS_WRAP",
+ AddressV = "TEXTURE_ADDRESS_MIRROR",
+ AddressW = "TEXTURE_ADDRESS_CLAMP",
+ MipLODBias = 2,
+ MinLOD = 0.5,
+ MaxLOD = 10,
+ MaxAnisotropy = 6,
+ ComparisonFunc = "COMPARISON_FUNC_GREATER_EQUAL",
+ BorderColor = {r = 0.5, g = 0.25, b=0.125, a=0.0625},
+}
+assert( TestSampler.Name == "Test Sampler" )
+assert( TestSampler.MinFilter == "FILTER_TYPE_POINT" )
+assert( TestSampler.MagFilter == "FILTER_TYPE_LINEAR" )
+assert( TestSampler.MipFilter == "FILTER_TYPE_POINT" )
+assert( TestSampler.AddressU == "TEXTURE_ADDRESS_WRAP" )
+assert( TestSampler.AddressV == "TEXTURE_ADDRESS_MIRROR" )
+assert( TestSampler.AddressW == "TEXTURE_ADDRESS_CLAMP" )
+assert( TestSampler.MipLODBias == 2 )
+assert( TestSampler.MinLOD == 0.5 )
+assert( TestSampler.MaxLOD == 10 )
+assert( TestSampler.MaxAnisotropy == 6 )
+assert( TestSampler.ComparisonFunc == "COMPARISON_FUNC_GREATER_EQUAL" )
+assert( TestSampler.BorderColor.r == 0.5 )
+assert( TestSampler.BorderColor.g == 0.25 )
+assert( TestSampler.BorderColor.b == 0.125 )
+assert( TestSampler.BorderColor.a == 0.0625 )
+
+
+
+TestSampler2 = Sampler.Create{
+ Name = TestSampler.Name,
+ MinFilter = TestSampler.MinFilter,
+ MagFilter = TestSampler.MagFilter,
+ MipFilter = TestSampler.MipFilter,
+ AddressU = TestSampler.AddressU,
+ AddressV = TestSampler.AddressV,
+ AddressW = TestSampler.AddressW,
+ MipLODBias = TestSampler.MipLODBias,
+ MinLOD = TestSampler.MinLOD,
+ MaxLOD = TestSampler.MaxLOD,
+ MaxAnisotropy = TestSampler.MaxAnisotropy,
+ ComparisonFunc = TestSampler.ComparisonFunc,
+ BorderColor = TestSampler.BorderColor,
+}
+assert( TestSampler2.Name == "Test Sampler" )
+assert( TestSampler2.MinFilter == "FILTER_TYPE_POINT" )
+assert( TestSampler2.MagFilter == "FILTER_TYPE_LINEAR" )
+assert( TestSampler2.MipFilter == "FILTER_TYPE_POINT" )
+assert( TestSampler2.AddressU == "TEXTURE_ADDRESS_WRAP" )
+assert( TestSampler2.AddressV == "TEXTURE_ADDRESS_MIRROR" )
+assert( TestSampler2.AddressW == "TEXTURE_ADDRESS_CLAMP" )
+assert( TestSampler2.MipLODBias == 2 )
+assert( TestSampler2.MinLOD == 0.5 )
+assert( TestSampler2.MaxLOD == 10 )
+assert( TestSampler2.MaxAnisotropy == 6 )
+assert( TestSampler2.ComparisonFunc == "COMPARISON_FUNC_GREATER_EQUAL" )
+assert( TestSampler2.BorderColor.r == 0.5 )
+assert( TestSampler2.BorderColor.g == 0.25 )
+assert( TestSampler2.BorderColor.b == 0.125 )
+assert( TestSampler2.BorderColor.a == 0.0625 )
+
+
+
+TestSampler3 = Sampler.Create{
+ BorderColor =
+ {r = TestSampler2.BorderColor.r * 2,
+ g = TestSampler2.BorderColor.g * 2,
+ b = TestSampler2.BorderColor.b * 2,
+ a = TestSampler2.BorderColor.a * 2
+ }
+}
+assert( TestSampler3.BorderColor.r == 0.5 * 2 )
+assert( TestSampler3.BorderColor.g == 0.25 * 2 )
+assert( TestSampler3.BorderColor.b == 0.125 * 2 )
+assert( TestSampler3.BorderColor.a == 0.0625 * 2 )
+
+-- TestSampler3.MaxLOD = 0
+TestSampler3.BorderColor.a = 1
+assert( TestSampler3.BorderColor.a == 0.0625 * 2 )
+
+function Func1()
+ local TestSampler = Sampler.Create{
+ MinFilter = "FILTER_TYPE_POINT"
+ }
+end
+
+function Func2()
+ Func1()
+end
+
+Func2()
+
+
+TestSampler4 = Sampler.Create{}
+
+
+ErrorTestSampler = Sampler.Create
+{
+ SomeUndefinedMember = Undefined,
+ MinFilter = Undefined2
+}
+
+function GetShaderPath( ShaderName, ShaderExt )
+
+ local ProcessedShaderPath = ""
+ if Constants.DeviceType == "D3D11" or Constants.DeviceType == "D3D12" then
+ ProcessedShaderPath = "Shaders\\" .. ShaderName .. "DX." .. ShaderExt
+ else
+ ProcessedShaderPath = "Shaders\\" .. ShaderName .. "GL." .. ShaderExt
+ end
+
+ return ProcessedShaderPath
+end
+
+TestVS = Shader.Create{
+ FilePath = GetShaderPath("minimalInst", "vsh"),
+ Desc = {
+ ShaderType = "SHADER_TYPE_VERTEX",
+ Name = "TestVS"
+ }
+}
+assert(TestVS.Desc.ShaderType == "SHADER_TYPE_VERTEX")
+assert(TestVS.Desc.Name == "TestVS")
+
+TestPS = Shader.Create{
+ FilePath = GetShaderPath("minimal", "psh"),
+ Desc = {
+ ShaderType = "SHADER_TYPE_PIXEL",
+ Name = "TestPS",
+ }
+}
+assert(TestPS.Desc.ShaderType == "SHADER_TYPE_PIXEL")
+assert(TestPS.Desc.Name == "TestPS")
+
+TestPS2 = Shader.Create{
+ FilePath = GetShaderPath("minimal", "psh"),
+ Desc = {
+ ShaderType = TestPS.Desc.ShaderType,
+ Name = TestPS.Desc.Name .. "2"
+ }
+}
+assert(TestPS2.Desc.ShaderType == "SHADER_TYPE_PIXEL")
+assert(TestPS2.Desc.Name == "TestPS2")
+
+UniformBuffPS = Shader.Create{
+ FilePath = GetShaderPath("UniformBuffer", "psh"),
+ Desc = {
+ ShaderType = "SHADER_TYPE_PIXEL",
+ Name = "Unifrom buffer PS"
+ }
+}
+
+svTestBlock = UniformBuffPS:GetShaderVariable("cbTestBlock")
+svTestBlock2 = ShaderVariable.Create(UniformBuffPS, "cbTestBlock2")
+svTestBlock2:Set(nil)
+--Test = svTestBlock2["Error"]
+--svTestBlock2["Error"] = 0
+
+function TestShaderVariable(inVar)
+ inVar:Set(nil)
+end
+
+TestVertexLayoutPSO = PipelineState.Create
+{
+ Name = "Test Vertex Layout PSO",
+ GraphicsPipeline =
+ {
+ InputLayout =
+ {
+ { InputIndex = 0, BufferSlot = 0, NumComponents = 3, ValueType = "VT_FLOAT32", IsNormalized = false},
+ { InputIndex = 1, BufferSlot = 1, NumComponents = 4, ValueType = "VT_UINT8", IsNormalized = true},
+ { InputIndex = 2, BufferSlot = 2, NumComponents = 2, ValueType = "VT_FLOAT32", IsNormalized = false, Frequency = "FREQUENCY_PER_INSTANCE", InstanceDataStepRate = 1},
+ },
+ pVS = TestVS,
+ pPS = TestPS,
+ RTVFormats = "TEX_FORMAT_RGBA8_UNORM_SRGB",
+ DSVFormat = "TEX_FORMAT_D32_FLOAT",
+ }
+}
+
+
+
+function CheckVertexDescription(VD)
+ assert(VD[1].InputIndex == 0)
+ assert(VD[1].BufferSlot == 0)
+ assert(VD[1].NumComponents == 3)
+ assert(VD[1].ValueType == "VT_FLOAT32")
+ assert(VD[1].IsNormalized == false)
+ assert(VD[2].InputIndex == 1)
+ assert(VD[2].BufferSlot == 1)
+ assert(VD[2].NumComponents == 4)
+ assert(VD[2].ValueType == "VT_UINT8")
+ assert(VD[2].IsNormalized == true)
+ assert(VD[3].InputIndex == 2)
+ assert(VD[3].BufferSlot == 2)
+ assert(VD[3].NumComponents == 2)
+ assert(VD[3].ValueType == "VT_FLOAT32")
+ assert(VD[3].IsNormalized == false)
+ assert(VD[3].Frequency == "FREQUENCY_PER_INSTANCE")
+ assert(VD[3].InstanceDataStepRate == 1)
+end
+
+CheckVertexDescription(TestVertexLayoutPSO.GraphicsPipeline.InputLayout)
+
+TestVertexLayoutPSO2 = PipelineState.Create
+{
+ Name = "Test Vertex Layout PSO",
+ GraphicsPipeline =
+ {
+ InputLayout = TestVertexLayoutPSO.GraphicsPipeline.InputLayout,
+ pVS = TestVS,
+ pPS = TestPS,
+ RTVFormats = "TEX_FORMAT_RGBA8_UNORM_SRGB",
+ DSVFormat = "TEX_FORMAT_D32_FLOAT",
+ }
+}
+
+CheckVertexDescription(TestVertexLayoutPSO2.GraphicsPipeline.InputLayout)
+
+
+TestVertexLayoutPSO3 = PipelineState.Create
+{
+ Name = "Test Vertex Layout PSO",
+ GraphicsPipeline =
+ {
+ InputLayout =
+ {
+ TestVertexLayoutPSO.GraphicsPipeline.InputLayout[1],
+ {
+ InputIndex = TestVertexLayoutPSO.GraphicsPipeline.InputLayout[2].InputIndex,
+ BufferSlot = TestVertexLayoutPSO.GraphicsPipeline.InputLayout[2].BufferSlot,
+ NumComponents = TestVertexLayoutPSO.GraphicsPipeline.InputLayout[2].NumComponents,
+ ValueType = TestVertexLayoutPSO.GraphicsPipeline.InputLayout[2].ValueType,
+ IsNormalized = TestVertexLayoutPSO.GraphicsPipeline.InputLayout[2].IsNormalized
+ },
+ {
+ InputIndex = TestVertexLayoutPSO2.GraphicsPipeline.InputLayout[3].InputIndex,
+ BufferSlot = TestVertexLayoutPSO2.GraphicsPipeline.InputLayout[3].BufferSlot,
+ NumComponents = TestVertexLayoutPSO2.GraphicsPipeline.InputLayout[3].NumComponents,
+ ValueType = TestVertexLayoutPSO2.GraphicsPipeline.InputLayout[3].ValueType,
+ IsNormalized = TestVertexLayoutPSO2.GraphicsPipeline.InputLayout[3].IsNormalized,
+ Frequency = TestVertexLayoutPSO2.GraphicsPipeline.InputLayout[3].Frequency,
+ InstanceDataStepRate = TestVertexLayoutPSO2.GraphicsPipeline.InputLayout[3].InstanceDataStepRate,
+ }
+ },
+ pVS = TestVS,
+ pPS = TestPS,
+ RTVFormats = "TEX_FORMAT_RGBA8_UNORM_SRGB",
+ DSVFormat = "TEX_FORMAT_D32_FLOAT",
+ }
+}
+
+CheckVertexDescription(TestVertexLayoutPSO3.GraphicsPipeline.InputLayout)
+
+
+
+function TestRenderScript ()
+ Context.SetShaders(TestVS, TestPS)
+end
+
+function TestRenderScriptParams (Bool1, MagicNumber1, MagicNumber2, Bool2, MagicString)
+ assert(Bool1 == true)
+ assert(MagicNumber1 == 123)
+ assert(MagicNumber2 == 345.5)
+ assert(Bool2 == false)
+ assert(MagicString == "Magic String")
+end
+
+
+function TestSamplerArg(Sampler)
+ assert( Sampler.Name == "Test Sampler" )
+ assert( Sampler.MinFilter == "FILTER_TYPE_POINT" )
+ assert( Sampler.MagFilter == "FILTER_TYPE_LINEAR" )
+ assert( Sampler.MipFilter == "FILTER_TYPE_POINT" )
+ assert( Sampler.AddressU == "TEXTURE_ADDRESS_WRAP" )
+ assert( Sampler.AddressV == "TEXTURE_ADDRESS_MIRROR" )
+ assert( Sampler.AddressW == "TEXTURE_ADDRESS_CLAMP" )
+ assert( Sampler.MipLODBias == 2 )
+ assert( Sampler.MinLOD == 0.5 )
+ assert( Sampler.MaxLOD == 10 )
+ assert( Sampler.MaxAnisotropy == 6 )
+ assert( Sampler.ComparisonFunc == "COMPARISON_FUNC_GREATER_EQUAL" )
+ assert( Sampler.BorderColor.r == 0.5 )
+ assert( Sampler.BorderColor.g == 0.25 )
+ assert( Sampler.BorderColor.b == 0.125 )
+ assert( Sampler.BorderColor.a == 0.0625 )
+ Sampler = nil
+ collectgarbage()
+end
+
+
+function TestVertexDescInPSO(VertexDescPSO)
+ CheckVertexDescription(VertexDescPSO.GraphicsPipeline.InputLayout)
+ VertexDescPSO = nil
+ collectgarbage()
+end
+
+
+function TestShaderArg(Shader)
+ assert(Shader.Desc.ShaderType == "SHADER_TYPE_VERTEX")
+ assert(Shader.Desc.Name == "TestVS")
+ Shader = nil
+ collectgarbage()
+end
+
+
+TestBuffer = Buffer.Create(
+ {
+ Name = "Test Buffer",
+ Usage = "USAGE_DEFAULT",
+ BindFlags = {"BIND_VERTEX_BUFFER", "BIND_SHADER_RESOURCE"},
+ uiSizeInBytes = 64,
+ Mode = "BUFFER_MODE_FORMATTED",
+ Format = {ValueType = "VT_FLOAT32", NumComponents = 1, IsNormalized = false},
+ },
+ "VT_FLOAT32",
+ {1,2,3,4,5,6,7,8, 9,10,11,12,13,14,15,16}
+)
+assert(TestBuffer.Name == "Test Buffer")
+assert(TestBuffer.Usage == "USAGE_DEFAULT")
+assert(TestBuffer.BindFlags[1] == "BIND_VERTEX_BUFFER" and TestBuffer.BindFlags[2] == "BIND_SHADER_RESOURCE" or
+ TestBuffer.BindFlags[2] == "BIND_VERTEX_BUFFER" and TestBuffer.BindFlags[1] == "BIND_SHADER_RESOURCE")
+assert(TestBuffer.Mode == "BUFFER_MODE_FORMATTED")
+assert(TestBuffer.Format.ValueType == "VT_FLOAT32" )
+assert(TestBuffer.Format.NumComponents == 1 )
+assert(TestBuffer.Format.IsNormalized == false )
+
+
+function TestBufferArg (Buffer)
+ assert(TestBuffer.Name == "Test Buffer")
+ assert(TestBuffer.Usage == "USAGE_DEFAULT")
+ assert(TestBuffer.BindFlags[1] == "BIND_VERTEX_BUFFER" and TestBuffer.BindFlags[2] == "BIND_SHADER_RESOURCE" or
+ TestBuffer.BindFlags[2] == "BIND_VERTEX_BUFFER" and TestBuffer.BindFlags[1] == "BIND_SHADER_RESOURCE")
+ Buffer = nil
+ collectgarbage()
+end
+
+
+TestBuffer2 = Buffer.Create({
+ Name = "Test Buffer2",
+ Usage = "USAGE_CPU_ACCESSIBLE",
+ CPUAccessFlags = {"CPU_ACCESS_WRITE"},
+ uiSizeInBytes = 256
+})
+assert(TestBuffer2.Name == "Test Buffer2")
+assert(TestBuffer2.Usage == "USAGE_CPU_ACCESSIBLE")
+assert(TestBuffer2.Mode == "BUFFER_MODE_UNDEFINED")
+assert(TestBuffer2.CPUAccessFlags[1] == "CPU_ACCESS_WRITE")
+
+TestBuffer3 = Buffer.Create(
+ {
+ Name = "Test Buffer",
+ Usage = "USAGE_DEFAULT",
+ BindFlags = {"BIND_VERTEX_BUFFER", "BIND_SHADER_RESOURCE"},
+ uiSizeInBytes = 64,
+ Mode = "BUFFER_MODE_FORMATTED",
+ Format = {ValueType = "VT_FLOAT32", NumComponents = 1, IsNormalized = false},
+ }
+)
+
+Context.SetVertexBuffers(1, TestBuffer, 0, 4, TestBuffer3, 16, 8, "SET_VERTEX_BUFFERS_FLAG_RESET")
+Context.SetVertexBuffers(1, TestBuffer, 0, 4, nil)
+Context.SetVertexBuffers(nil, nil, nil, {"SET_VERTEX_BUFFERS_FLAG_RESET", "SET_VERTEX_BUFFERS_FLAG_RESET"})
+
+TestBuffer3 = Buffer.Create({
+ BindFlags = {"BIND_VERTEX_BUFFER", "BIND_UNORDERED_ACCESS"},
+ Mode = "BUFFER_MODE_FORMATTED",
+ Format = {ValueType = "VT_FLOAT32", NumComponents = 4, IsNormalized = false},
+ uiSizeInBytes = (4+4) * 4 * 4,
+ ElementByteStride = 4 * 4
+})
+assert( TestBuffer3.Mode == "BUFFER_MODE_FORMATTED" )
+assert( TestBuffer3.Format.ValueType == "VT_FLOAT32" )
+assert( TestBuffer3.Format.NumComponents == 4 )
+assert( TestBuffer3.Format.IsNormalized == false )
+
+Buff3DefaultUAV = TestBuffer3:GetDefaultView("BUFFER_VIEW_UNORDERED_ACCESS")
+assert(Buff3DefaultUAV.ViewType == "BUFFER_VIEW_UNORDERED_ACCESS" )
+assert(Buff3DefaultUAV.ByteOffset == 0 )
+assert(Buff3DefaultUAV.ByteWidth == TestBuffer3.uiSizeInBytes )
+assert(Buff3DefaultUAV.Name == "" )
+
+Buff3UAV = TestBuffer3:CreateView{
+ Name = "Buff3UAV",
+ ViewType = "BUFFER_VIEW_UNORDERED_ACCESS",
+ ByteOffset = 0,
+ ByteWidth = TestBuffer3.ElementByteStride * 2
+}
+
+assert(Buff3UAV.Name == "Buff3UAV")
+assert(Buff3UAV.ViewType == "BUFFER_VIEW_UNORDERED_ACCESS")
+assert(Buff3UAV.ByteOffset == 0)
+assert(Buff3UAV.ByteWidth == TestBuffer3.ElementByteStride * 2)
+
+function TestBufferViewArg(BuffViewArg)
+ assert( BuffViewArg.Name == "TestGlobalBuff2UAV" )
+ assert( BuffViewArg.ViewType == "BUFFER_VIEW_UNORDERED_ACCESS" )
+ assert( BuffViewArg.ByteOffset == 0 )
+ assert( BuffViewArg.ByteWidth == 32 )
+end
+
+
+IndexBuffer = Buffer.Create(
+ { BindFlags = "BIND_INDEX_BUFFER" },
+ "VT_UINT32",
+ {0,1,2}
+)
+Context.SetIndexBuffer(IndexBuffer, 4)
+
+TestTexture = Texture.Create{
+ Name = "Test Texture 2D",
+ Type = "RESOURCE_DIM_TEX_2D_ARRAY", Width = 512, Height = 512, ArraySize = 16,
+ Format = "TEX_FORMAT_RGBA8_UNORM",
+ MipLevels = 8,
+ SampleCount = 1,
+ Usage = "USAGE_DEFAULT",
+ BindFlags = {"BIND_SHADER_RESOURCE", "BIND_UNORDERED_ACCESS"}
+}
+
+assert( TestTexture.Name == "Test Texture 2D" )
+assert( TestTexture.Type == "RESOURCE_DIM_TEX_2D_ARRAY" )
+assert( TestTexture.Width == 512 )
+assert( TestTexture.Height == 512 )
+assert( TestTexture.ArraySize == 16 )
+assert( TestTexture.Format == "TEX_FORMAT_RGBA8_UNORM" )
+assert( TestTexture.MipLevels == 8 )
+assert( TestTexture.SampleCount == 1 )
+assert( TestTexture.Usage == "USAGE_DEFAULT" )
+assert( TestTexture.BindFlags[1] == "BIND_SHADER_RESOURCE" and TestTexture.BindFlags[2] == "BIND_UNORDERED_ACCESS" or
+ TestTexture.BindFlags[1] == "BIND_UNORDERED_ACCESS" and TestTexture.BindFlags[2] == "BIND_SHADER_RESOURCE" )
+
+DefaultTestSRV = TestTexture:GetDefaultView("TEXTURE_VIEW_SHADER_RESOURCE")
+assert( DefaultTestSRV.ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+assert( DefaultTestSRV.Format == TestTexture.Format )
+assert( DefaultTestSRV.TextureDim == TestTexture.Type )
+assert( DefaultTestSRV.MostDetailedMip == 0 )
+assert( DefaultTestSRV.NumMipLevels == TestTexture.MipLevels )
+assert( DefaultTestSRV.FirstArraySlice == 0 )
+assert( DefaultTestSRV.NumArraySlices == TestTexture.ArraySize )
+
+TestUAV1 = TestTexture:CreateView{
+ ViewType = "TEXTURE_VIEW_UNORDERED_ACCESS",
+ TextureDim = "RESOURCE_DIM_TEX_2D",
+ AccessFlags = "UAV_ACCESS_FLAG_READ",
+ MostDetailedMip = 1,
+ NumMipLevels = 1,
+ FirstArraySlice = 0,
+ NumArraySlices = 1
+}
+
+assert(TestUAV1.AccessFlags[1] == "UAV_ACCESS_FLAG_READ")
+assert( type(TestUAV1.AccessFlags[2]) == "nil")
+
+TestUAV2 = TestTexture:CreateView{
+ ViewType = "TEXTURE_VIEW_UNORDERED_ACCESS",
+ TextureDim = "RESOURCE_DIM_TEX_2D_ARRAY",
+ AccessFlags = "UAV_ACCESS_FLAG_WRITE",
+ FirstArraySlice = 0,
+ NumArraySlices = TestTexture.ArraySize
+}
+assert(TestUAV2.AccessFlags[1] == "UAV_ACCESS_FLAG_WRITE")
+assert( type(TestUAV2.AccessFlags[2]) == "nil")
+
+TestUAV3 = TestTexture:CreateView{
+ ViewType = "TEXTURE_VIEW_UNORDERED_ACCESS",
+ TextureDim = "RESOURCE_DIM_TEX_2D_ARRAY",
+ AccessFlags = {"UAV_ACCESS_FLAG_READ", "UAV_ACCESS_FLAG_WRITE"},
+ MostDetailedMip = 4,
+ NumArraySlices = TestTexture.ArraySize
+}
+
+function Set (list)
+ local set = {}
+ for _, l in ipairs(list) do set[l] = true end
+ return set
+end
+FlagsSet = Set(TestUAV3.AccessFlags)
+assert(FlagsSet["UAV_ACCESS_FLAG_READ"] and FlagsSet["UAV_ACCESS_FLAG_WRITE"] and FlagsSet["UAV_ACCESS_FLAG_READ_WRITE"])
+assert( type(TestUAV3.AccessFlags[4]) == "nil")
+
+
+DefaultTestSRV:SetSampler(TestSampler)
+
+if Constants.DeviceType == "D3D11" or Constants.DeviceType == "D3D12" then
+
+ --TestTextureView = TextureView.Create(TestTexture,
+ TestTextureView = TestTexture:CreateView(
+ {
+ Name = "TestTextureSRV",
+ ViewType = "TEXTURE_VIEW_SHADER_RESOURCE",
+ TextureDim = "RESOURCE_DIM_TEX_2D_ARRAY",
+ Format = "TEX_FORMAT_RGBA8_UNORM",
+ MostDetailedMip = 1,
+ NumMipLevels = 2,
+ FirstArraySlice = 3,
+ NumArraySlices = 4
+ }
+ )
+ assert( TestTextureView.Name == "TestTextureSRV" )
+ assert( TestTextureView.ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+ assert( TestTextureView.TextureDim == "RESOURCE_DIM_TEX_2D_ARRAY" )
+ assert( TestTextureView.Format == "TEX_FORMAT_RGBA8_UNORM" )
+ assert( TestTextureView.MostDetailedMip == 1 )
+ assert( TestTextureView.NumMipLevels == 2 )
+ assert( TestTextureView.FirstArraySlice == 3 )
+ assert( TestTextureView.NumArraySlices == 4 )
+
+ assert( TestGlobalTextureView.Name == "TestTextureSRV2" )
+ assert( TestGlobalTextureView.ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+ assert( TestGlobalTextureView.TextureDim == "RESOURCE_DIM_TEX_2D" )
+ assert( TestGlobalTextureView.Format == "TEX_FORMAT_RGBA8_UNORM" )
+ assert( TestGlobalTextureView.MostDetailedMip == 0 )
+ assert( TestGlobalTextureView.NumMipLevels == 1 )
+ assert( TestGlobalTextureView.FirstArraySlice == 0 )
+ assert( TestGlobalTextureView.NumArraySlices == 1 )
+end
+
+function TestTextureViewArg(TextureView)
+ assert( TextureView.Name == "TestTextureSRV" )
+ assert( TextureView.ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+ assert( TextureView.TextureDim == "RESOURCE_DIM_TEX_2D_ARRAY" )
+ assert( TextureView.Format == "TEX_FORMAT_RGBA8_UNORM" )
+ assert( TextureView.MostDetailedMip == 1 )
+ assert( TextureView.NumMipLevels == 2 )
+ assert( TextureView.FirstArraySlice == 3 )
+ assert( TextureView.NumArraySlices == 4 )
+end
+
+
+function TestTextureArg(Texture)
+ CheckTextureAttribs( Texture )
+ collectgarbage()
+end
+
+
+TestDrawAttribs = DrawAttribs.Create{
+ Topology = "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP",
+ NumIndices = 128,
+ IndexType = "VT_UINT16",
+ IsIndexed = true,
+ NumInstances = 32,
+ IsIndirect = true,
+ BaseVertex = 48,
+ IndirectDrawArgsOffset = 1024,
+ StartVertexLocation = 64,
+ FirstInstanceLocation = 96,
+ pIndirectDrawAttribs = TestBuffer2
+}
+assert( TestDrawAttribs.Topology == "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP" )
+assert( TestDrawAttribs.NumIndices == 128 )
+assert( TestDrawAttribs.IndexType == "VT_UINT16" )
+assert( TestDrawAttribs.IsIndexed == true )
+assert( TestDrawAttribs.NumInstances == 32 )
+assert( TestDrawAttribs.IsIndirect == true )
+assert( TestDrawAttribs.BaseVertex == 48 )
+assert( TestDrawAttribs.IndirectDrawArgsOffset == 1024 )
+assert( TestDrawAttribs.StartVertexLocation == 64 )
+assert( TestDrawAttribs.FirstInstanceLocation == 96 )
+--Context.Draw(TestBuffer2)
+
+
+TestDrawAttribs.Topology = "PRIMITIVE_TOPOLOGY_POINT_LIST"
+TestDrawAttribs.NumVertices = 92
+TestDrawAttribs.IndexType = "VT_UINT32"
+TestDrawAttribs.IsIndexed = false
+TestDrawAttribs.NumInstances = 19
+TestDrawAttribs.IsIndirect = false
+TestDrawAttribs.BaseVertex = 498
+TestDrawAttribs.IndirectDrawArgsOffset = 234
+TestDrawAttribs.FirstIndexLocation = 264
+TestDrawAttribs.FirstInstanceLocation = 946
+TestDrawAttribs.pIndirectDrawAttribs = TestGlobalBuffer
+
+TestDrawAttribs2 = DrawAttribs.Create{
+ pIndirectDrawAttribs = TestDrawAttribs.pIndirectDrawAttribs
+}
+assert( TestDrawAttribs.pIndirectDrawAttribs.Name == TestDrawAttribs2.pIndirectDrawAttribs.Name )
+
+assert( TestDrawAttribs.Topology == "PRIMITIVE_TOPOLOGY_POINT_LIST" )
+assert( TestDrawAttribs.NumIndices == 92 )
+assert( TestDrawAttribs.NumVertices == 92 )
+assert( TestDrawAttribs.IndexType == "VT_UINT32" )
+assert( TestDrawAttribs.IsIndexed == false )
+assert( TestDrawAttribs.NumInstances == 19 )
+assert( TestDrawAttribs.IsIndirect == false )
+assert( TestDrawAttribs.BaseVertex == 498 )
+assert( TestDrawAttribs.IndirectDrawArgsOffset == 234 )
+assert( TestDrawAttribs.FirstIndexLocation == 264 )
+assert( TestDrawAttribs.StartVertexLocation == 264 )
+assert( TestDrawAttribs.FirstInstanceLocation == 946 )
+
+
+
+assert( TestGlobalDrawAttribs.Topology == "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP" );
+assert( TestGlobalDrawAttribs.NumVertices == 123 );
+assert( TestGlobalDrawAttribs.NumIndices == 123 );
+assert( TestGlobalDrawAttribs.IndexType == "VT_UINT16" );
+assert( TestGlobalDrawAttribs.IsIndexed == true );
+assert( TestGlobalDrawAttribs.NumInstances == 19 );
+assert( TestGlobalDrawAttribs.IsIndirect == true );
+assert( TestGlobalDrawAttribs.BaseVertex == 97 );
+assert( TestGlobalDrawAttribs.IndirectDrawArgsOffset == 120 );
+assert( TestGlobalDrawAttribs.StartVertexLocation == 98 );
+assert( TestGlobalDrawAttribs.FirstIndexLocation == 98 );
+
+function TestDrawAttribsArg(DrawAttrs)
+ assert( DrawAttrs.Topology == "PRIMITIVE_TOPOLOGY_TRIANGLE_LIST" );
+ assert( DrawAttrs.NumVertices == 34 );
+ assert( DrawAttrs.NumIndices == 34 );
+ assert( DrawAttrs.IndexType == "VT_UINT16" );
+ assert( DrawAttrs.IsIndexed == true );
+ assert( DrawAttrs.NumInstances == 139 );
+ assert( DrawAttrs.IsIndirect == true );
+ assert( DrawAttrs.BaseVertex == 937 );
+ assert( DrawAttrs.IndirectDrawArgsOffset == 1205 );
+ assert( DrawAttrs.StartVertexLocation == 198 );
+ assert( DrawAttrs.FirstIndexLocation == 198 );
+end
+--getmetatable(TestSampler).__index = {}
+
+TestResourceMapping = ResourceMapping.Create{
+ {Name = "TestShaderName", pObject = DefaultTestSRV},
+ {Name = "TestShaderName2", pObject = DefaultTestSRV},
+ {Name = "TestBufferName", pObject = TestGlobalBuffer}
+}
+
+assert( TestResourceMapping["TestShaderName"].ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+assert( TestResourceMapping["TestBufferName"].Name == "TestGlobalBuff" )
+assert( type(TestResourceMapping["BadName"]) == "nil" )
+
+TestResourceMapping["TestBufferName2"] = TestBuffer
+assert( TestResourceMapping["TestBufferName2"].Name == "Test Buffer" )
+
+TestResourceMapping["TestShaderName"] = DefaultTestSRV
+assert( TestResourceMapping["TestShaderName"].ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+
+TestResourceMapping["TestBufferName2"] = nil
+assert( type(TestResourceMapping["TestBufferName2"]) == "nil" )
+
+assert( TestGlobalResourceMapping["TestGlobalTextureSRV"].ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+
+function TestResourceMappingArg(ResMappingArg)
+ assert( ResMappingArg["TestGlobalTextureSRV2"].ViewType == "TEXTURE_VIEW_SHADER_RESOURCE" )
+ ResMappingArg["TestBufferName"] = TestBuffer
+end