summaryrefslogtreecommitdiffstats
path: root/Tests/TestApp/assets/TestRenderTargets.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/TestApp/assets/TestRenderTargets.lua')
-rw-r--r--Tests/TestApp/assets/TestRenderTargets.lua442
1 files changed, 0 insertions, 442 deletions
diff --git a/Tests/TestApp/assets/TestRenderTargets.lua b/Tests/TestApp/assets/TestRenderTargets.lua
deleted file mode 100644
index 1a7b163..0000000
--- a/Tests/TestApp/assets/TestRenderTargets.lua
+++ /dev/null
@@ -1,442 +0,0 @@
--- Render target test script
-
-
-RTWidth = 256
-RTHeight = 256
-TestTexture0 = Texture.Create{
- Type = "RESOURCE_DIM_TEX_2D", Width = RTWidth, Height = RTHeight,
- Format = "TEX_FORMAT_RGBA8_UNORM",
- MipLevels = 1,
- SampleCount = 1,
- Usage = "USAGE_DEFAULT",
- BindFlags = {"BIND_SHADER_RESOURCE", "BIND_RENDER_TARGET"},
- ClearValue = {Color = {r=0.25, g=0.0, b=0.0, a=0.0}}
-}
-
-TestTexture1 = Texture.Create{
- Type = "RESOURCE_DIM_TEX_2D", Width = RTWidth*2, Height = RTHeight*2,
- Format = "TEX_FORMAT_RGBA32_FLOAT", -- Note that GLES3.1 only requires signed or unsigned normalized
- -- fixed-point or signed or unsigned integer render target formats
- MipLevels = 8,
- SampleCount = 1,
- Usage = "USAGE_DEFAULT",
- BindFlags = {"BIND_SHADER_RESOURCE", "BIND_RENDER_TARGET"},
- ClearValue = {Color = {r=0.0, g=0.5, b=0.0, a=0.0}}
-}
-
-TestTexture2 = Texture.Create{
- Type = "RESOURCE_DIM_TEX_2D", Width = RTWidth, Height = RTHeight,
- Format = "TEX_FORMAT_RGBA16_FLOAT", -- Note that GLES3.1 only requires signed or unsigned normalized
- -- fixed-point or signed or unsigned integer render target formats
- MipLevels = 1,
- SampleCount = 1,
- Usage = "USAGE_DEFAULT",
- BindFlags = {"BIND_SHADER_RESOURCE", "BIND_RENDER_TARGET"},
- ClearValue = {Color = {r=0.0, g=0.0, b=0.75, a=0.0}}
-}
-
-TestDepthTexture = Texture.Create{
- Type = "RESOURCE_DIM_TEX_2D", Width = RTWidth, Height = RTHeight,
- Format = "TEX_FORMAT_D32_FLOAT",
- MipLevels = 1,
- SampleCount = 1,
- Usage = "USAGE_DEFAULT",
- BindFlags = {"BIND_SHADER_RESOURCE", "BIND_DEPTH_STENCIL"},
- ClearValue = {DepthStencil = {Depth=1.0}}
-}
-
-IsGLES = Constants.DeviceType == "OpenGLES"
-
-TexDesc = {
- Type = "RESOURCE_DIM_TEX_2D", Width = RTWidth, Height = RTHeight,
- Format = "TEX_FORMAT_RGBA8_UNORM",
- MipLevels = 7,
- Usage = "USAGE_DEFAULT",
- BindFlags = {"BIND_SHADER_RESOURCE", "BIND_RENDER_TARGET"},
- ClearValue = {Color = {r=0.25, g=0.5, b=0.75, a=1.0}}
-}
-Tex2D = {Texture.Create(TexDesc), Texture.Create(TexDesc), Texture.Create(TexDesc) }
-
-TexDesc.BindFlags = {"BIND_SHADER_RESOURCE", "BIND_DEPTH_STENCIL"}
-TexDesc.Format = "TEX_FORMAT_D32_FLOAT"
-TexDS_2D = Texture.Create(TexDesc)
-
-TexDesc.BindFlags = {"BIND_SHADER_RESOURCE", "BIND_RENDER_TARGET"}
-TexDesc.Format = "TEX_FORMAT_RGBA8_UNORM"
-TexDesc.Type = "RESOURCE_DIM_TEX_2D_ARRAY"
-TexDesc.ArraySize = 16
-Tex2DArr = {Texture.Create(TexDesc), Texture.Create(TexDesc), Texture.Create(TexDesc) }
-
-TexDesc.BindFlags = {"BIND_SHADER_RESOURCE", "BIND_DEPTH_STENCIL"}
-TexDesc.Format = "TEX_FORMAT_D32_FLOAT"
-TexDS_2DArr = Texture.Create(TexDesc)
-
-if not IsGLES then
- TexDesc.BindFlags = {"BIND_SHADER_RESOURCE", "BIND_RENDER_TARGET"}
- TexDesc.Format = "TEX_FORMAT_RGBA8_UNORM"
- TexDesc.Type = "RESOURCE_DIM_TEX_3D"
- TexDesc.Depth = 16
- Tex3D= {Texture.Create(TexDesc), Texture.Create(TexDesc), Texture.Create(TexDesc) }
-
- -- Texture 3D cannot be used as depth stencil (at least in D3D11)
-end
-
-Tex2D_DefRTV = {}
-Tex2D_Mip1RTV = {}
-TexDS_2D_DefDSV = {}
-TexDS_2D_Mip1DSV = {}
-
-Tex2DArr_DefRTV = {}
-Tex2DArr_Mip1RTV = {}
-Tex2DArr_Slice2RTV = {}
-Tex2DArr_Slice2Mip2RTV = {}
-
-TexDS_2DArr_DefDSV = {}
-TexDS_2DArr_Mip1DSV = {}
-TexDS_2DArr_Slice2DSV = {}
-TexDS_2DArr_Slice2Mip2DSV = {}
-
-if not IsGLES then
- Tex3D_DefRTV = {}
- Tex3D_Mip1RTV = {}
- Tex3D_Slice2RTV = {}
- Tex3D_Slice2Mip2RTV = {}
-end
-
-for i = 1,3 do
- Tex2D_DefRTV[i] = Tex2D[i]:GetDefaultView("TEXTURE_VIEW_RENDER_TARGET")
- Tex2DArr_DefRTV[i] = Tex2DArr[i]:GetDefaultView("TEXTURE_VIEW_RENDER_TARGET")
-
- Tex2D_Mip1RTV[i] = Tex2D[i]:CreateView{ViewType = "TEXTURE_VIEW_RENDER_TARGET", MostDetailedMip = 1}
- Tex2DArr_Mip1RTV[i] = Tex2DArr[i]:CreateView{ViewType = "TEXTURE_VIEW_RENDER_TARGET", MostDetailedMip = 1}
- Tex2DArr_Slice2RTV[i] = Tex2DArr[i]:CreateView{ViewType = "TEXTURE_VIEW_RENDER_TARGET", FirstArraySlice = 2, NumArraySlices = 1}
- Tex2DArr_Slice2Mip2RTV[i] = Tex2DArr[i]:CreateView{ViewType = "TEXTURE_VIEW_RENDER_TARGET", FirstArraySlice = 2, MostDetailedMip = 2, NumArraySlices = 1}
-
- if not IsGLES then
- Tex3D_DefRTV[i] = Tex3D[i]:GetDefaultView("TEXTURE_VIEW_RENDER_TARGET")
- Tex3D_Mip1RTV[i] = Tex3D[i]:CreateView{ViewType = "TEXTURE_VIEW_RENDER_TARGET", MostDetailedMip = 1}
- Tex3D_Slice2RTV[i] = Tex3D[i]:CreateView{ViewType = "TEXTURE_VIEW_RENDER_TARGET", FirstDepthSlice = 2, NumDepthSlices = 1}
- Tex3D_Slice2Mip2RTV[i] = Tex3D[i]:CreateView{ViewType = "TEXTURE_VIEW_RENDER_TARGET", FirstDepthSlice = 2, MostDetailedMip = 2, NumDepthSlices = 1}
- end
-end
-
-
-Tex2D_DefDSV = TexDS_2D:GetDefaultView("TEXTURE_VIEW_DEPTH_STENCIL")
-Tex2DArr_DefDSV = TexDS_2DArr:GetDefaultView("TEXTURE_VIEW_DEPTH_STENCIL")
-
-
-Tex2D_Mip1DSV = TexDS_2D:CreateView{ViewType = "TEXTURE_VIEW_DEPTH_STENCIL", MostDetailedMip = 1}
-Tex2DArr_Mip1DSV = TexDS_2DArr:CreateView{ViewType = "TEXTURE_VIEW_DEPTH_STENCIL", MostDetailedMip = 1}
-Tex2DArr_Slice2DSV = TexDS_2DArr:CreateView{ViewType = "TEXTURE_VIEW_DEPTH_STENCIL", FirstArraySlice = 2, NumArraySlices = 1}
-Tex2DArr_Slice2Mip2DSV = TexDS_2DArr:CreateView{ViewType = "TEXTURE_VIEW_DEPTH_STENCIL", FirstArraySlice = 2, MostDetailedMip = 2, NumArraySlices = 1}
-
-function SetRTsHelper(RTVs, DSV)
- Context.SetRenderTargets(RTVs[1], "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.SetRenderTargets(RTVs[1], RTVs[2], "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.SetRenderTargets(RTVs[1], RTVs[2], RTVs[3], "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- if DSV then
- Context.SetRenderTargets(RTVs[1], RTVs[2], RTVs[3], DSV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- end
- Context.ClearRenderTarget(RTVs[1], 0.25, 0.5, 0.75, 1.0, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.ClearRenderTarget(RTVs[2], 0.25, 0.5, 0.75, 1.0, "RESOURCE_STATE_TRANSITION_MODE_VERIFY")
- Context.ClearRenderTarget(RTVs[3], 0.25, 0.5, 0.75, 1.0, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- if DSV then
- Context.ClearDepthStencil(DSV, "CLEAR_DEPTH_FLAG", 1.0, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.SetRenderTargets(RTVs[1], RTVs[2], DSV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.SetRenderTargets(RTVs[1], DSV, "RESOURCE_STATE_TRANSITION_MODE_VERIFY")
- Context.SetRenderTargets(DSV, "RESOURCE_STATE_TRANSITION_MODE_VERIFY")
- end
-end
-
-function TestSetRenderTargets()
- SetRTsHelper(Tex2D_DefRTV, Tex2D_DefDSV)
- if not IsGLES then
- SetRTsHelper(Tex2DArr_DefRTV, Tex2DArr_DefDSV) -- no glFramebufferTexture in ES3.1
- SetRTsHelper(Tex3D_DefRTV) -- no glFramebufferTexture in ES3.1
- end
-
- SetRTsHelper(Tex2D_Mip1RTV, Tex2D_Mip1DSV)
- if not IsGLES then
- SetRTsHelper(Tex2DArr_Mip1RTV, Tex2DArr_Mip1DSV) -- no glFramebufferTexture in ES3.1
- SetRTsHelper(Tex3D_Mip1RTV) -- no glFramebufferTexture in ES3.1
- end
-
- SetRTsHelper(Tex2DArr_Slice2RTV, Tex2DArr_Slice2DSV)
- if not IsGLES then
- SetRTsHelper(Tex3D_Slice2RTV) -- no glFramebufferTexture3D in ES3.1
- end
-
- SetRTsHelper(Tex2DArr_Slice2Mip2RTV, Tex2DArr_Slice2Mip2DSV)
- if not IsGLES then
- SetRTsHelper(Tex3D_Slice2Mip2RTV) -- no glFramebufferTexture3D in ES3.1
- end
-
- -- It is not allowed to mix different resources as render targets. In particular, we cannot
- -- bind Texture2D & Texture3D at the same time
- if not IsGLES then
- Context.SetRenderTargets(Tex2D_DefRTV[3], Tex2DArr_Slice2RTV[1], Tex2DArr_Slice2DSV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.SetRenderTargets(Tex2DArr_Slice2Mip2RTV[1], Tex2DArr_Slice2Mip2DSV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- end
-end
-
-
-Positions = { 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0,
- 1.0, 0.0, 0.0,
- 1.0, 1.0, 0.0 }
-FullQuad = {}
-for v = 0,3 do
- FullQuad[v*3+1] = Positions[v*3+1]*2 - 1
- FullQuad[v*3+2] = Positions[v*3+2]*2 - 1
- FullQuad[v*3+3] = 0
-end
-
-FullQuadBuffer = Buffer.Create(
- { BindFlags = "BIND_VERTEX_BUFFER" },
- "VT_FLOAT32",
- FullQuad
-)
-
-ScaledQuad = {}
-for v = 0,3 do
- ScaledQuad[v*3+1] = Positions[v*3+1]*XExt + MinX
- ScaledQuad[v*3+2] = Positions[v*3+2]*YExt + MinY
- ScaledQuad[v*3+3] = 0
-end
-
-ScaledQuadBuffer = Buffer.Create(
- { BindFlags = "BIND_VERTEX_BUFFER" },
- "VT_FLOAT32",
- ScaledQuad
-)
-
-TexcoordBuffer = Buffer.Create(
- { BindFlags = "BIND_VERTEX_BUFFER" },
- "VT_FLOAT32",
- { 0.0, 1.0,
- 0.0, 0.0,
- 1.0, 1.0,
- 1.0, 0.0}
-)
-
-
-Level0Sampler = Sampler.Create{
- MinFilter = "FILTER_TYPE_LINEAR",
- MagFilter = "FILTER_TYPE_LINEAR",
- MipFilter = "FILTER_TYPE_POINT",
- MaxLOD = 0
-}
-
-Level1Sampler = Sampler.Create{
- MinFilter = "FILTER_TYPE_LINEAR",
- MagFilter = "FILTER_TYPE_LINEAR",
- MipFilter = "FILTER_TYPE_POINT",
- MaxLOD = 1,
- MinLOD = 1
-}
-
-Tex0SRV = TestTexture0:GetDefaultView("TEXTURE_VIEW_SHADER_RESOURCE")
-Tex0SRV:SetSampler(Level0Sampler)
-Tex0RTV = TestTexture0:GetDefaultView("TEXTURE_VIEW_RENDER_TARGET")
-
-Tex1SRV = TestTexture1:GetDefaultView("TEXTURE_VIEW_SHADER_RESOURCE")
-Tex1SRV:SetSampler(Level1Sampler)
-Tex1RTV = TestTexture1:CreateView{
- ViewType = "TEXTURE_VIEW_RENDER_TARGET",
- MostDetailedMip = 1,
- }
-
-Tex2SRV = TestTexture2:GetDefaultView("TEXTURE_VIEW_SHADER_RESOURCE")
-Tex2SRV:SetSampler(Level0Sampler)
-Tex2RTV = TestTexture2:GetDefaultView("TEXTURE_VIEW_RENDER_TARGET")
-
-ResMapping = ResourceMapping.Create{
- {Name = "g_tex2DTest0", pObject = Tex0SRV},
- {Name = "g_tex2DTest1", pObject = Tex1SRV},
- {Name = "g_tex2DTest2", pObject = Tex2SRV}
-}
-
-TexDepthTexDSV = TestDepthTexture:GetDefaultView("TEXTURE_VIEW_DEPTH_STENCIL")
-
-
-function GetShaderPath( ShaderName )
-
- local ProcessedShaderPath = ""
- if Constants.DeviceType == "D3D11" or Constants.DeviceType == "D3D12" then
- ProcessedShaderPath = "Shaders\\" .. ShaderName .. "_DX.hlsl"
- else
- ProcessedShaderPath = "Shaders\\" .. ShaderName .. "_GL.glsl"
- end
-
- return ProcessedShaderPath
-end
-
-
-QuadVS = Shader.Create{
- FilePath = GetShaderPath("RTTest\\QuadVS"),
- UseCombinedTextureSamplers = true,
- Desc = {ShaderType = "SHADER_TYPE_VERTEX"}
-}
-
-
-RenderToTexturesPS = Shader.Create{
- FilePath = GetShaderPath("RTTest\\RenderToTexturesPS"),
- UseCombinedTextureSamplers = true,
- Desc = {ShaderType = "SHADER_TYPE_PIXEL"}
-}
-
-BlendTexturesPS = Shader.Create{
- FilePath = GetShaderPath("RTTest\\BlendTexturesPS"),
- UseCombinedTextureSamplers = true,
- Desc =
- {
- ShaderType = "SHADER_TYPE_PIXEL"
- }
-}
-
-RenderToTexPSO = PipelineState.Create
-{
- Name = "Render to textures PSO",
- GraphicsPipeline =
- {
- RasterizerDesc =
- {
- FillMode = "FILL_MODE_SOLID",
- CullMode = "CULL_MODE_NONE",
- ScissorEnable = true
- },
- DepthStencilDesc = {DepthEnable = false},
- pVS = QuadVS,
- pPS = RenderToTexturesPS,
- InputLayout =
- {
- { InputIndex = 0, BufferSlot = 0, NumComponents = 3, ValueType = "VT_FLOAT32"},
- { InputIndex = 1, BufferSlot = 1, NumComponents = 2, ValueType = "VT_FLOAT32"}
- },
- RTVFormats = {TestTexture0.Format, TestTexture1.Format},
- PrimitiveTopology = "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"
- }
-}
-RenderToTexPSO:BindStaticResources({"SHADER_TYPE_VERTEX", "SHADER_TYPE_PIXEL"}, ResMapping)
-RenderToTexSRB = RenderToTexPSO:CreateShaderResourceBinding(true)
-
-BlendTexPSO = PipelineState.Create
-{
- Name = "Blend textures PSO",
- ResourceLayout =
- {
- StaticSamplers =
- {
- {
- ShaderStages = "SHADER_TYPE_PIXEL",
- SamplerOrTextureName = "g_tex2DTest0",
- Desc =
- {
- MinFilter = "FILTER_TYPE_LINEAR",
- MagFilter = "FILTER_TYPE_LINEAR",
- MipFilter = "FILTER_TYPE_POINT",
- MaxLOD = 0
- }
- },
- {
- ShaderStages = "SHADER_TYPE_PIXEL",
- SamplerOrTextureName = "g_tex2DTest2",
- Desc =
- {
- MinFilter = "FILTER_TYPE_LINEAR",
- MagFilter = "FILTER_TYPE_LINEAR",
- MipFilter = "FILTER_TYPE_POINT",
- MaxLOD = 0
- }
- }
- }
- },
- GraphicsPipeline =
- {
- RasterizerDesc =
- {
- FillMode = "FILL_MODE_SOLID",
- CullMode = "CULL_MODE_NONE"
- },
- DepthStencilDesc = {DepthEnable = false},
- pVS = QuadVS,
- pPS = BlendTexturesPS,
- InputLayout =
- {
- { InputIndex = 0, BufferSlot = 0, NumComponents = 3, ValueType = "VT_FLOAT32"},
- { InputIndex = 1, BufferSlot = 1, NumComponents = 2, ValueType = "VT_FLOAT32"}
- },
- RTVFormats = {extBackBufferFormat},
- DSVFormat = extDepthBufferFormat,
- PrimitiveTopology = "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"
- }
-}
-assert(BlendTexPSO.ResourceLayout.StaticSamplers[1].ShaderStages[1] == "SHADER_TYPE_PIXEL");
-assert(BlendTexPSO.ResourceLayout.StaticSamplers[1].Desc.MipFilter == "FILTER_TYPE_POINT");
-assert(BlendTexPSO.ResourceLayout.StaticSamplers[2].SamplerOrTextureName == "g_tex2DTest2");
-
-BlendTexPSO:BindStaticResources({"SHADER_TYPE_VERTEX", "SHADER_TYPE_PIXEL"}, ResMapping)
-BlendTexSRB = BlendTexPSO:CreateShaderResourceBinding(true)
-
-DrawAttrs = DrawAttribs.Create{
- NumVertices = 4,
- Flags = "DRAW_FLAG_VERIFY_ALL"
-}
-
-VP = Viewport.Create {
- TopLeftX = 16,
- TopLeftY = 32,
- Width = RTWidth-16-8,
- Height = RTHeight-32-16,
- MinDepth = 0,
- MaxDepth = 1
-}
-
-SR = ScissorRect.Create
-{
- left = 32,
- top = 48,
- right = RTWidth-48,
- bottom = RTHeight
-}
-
-
-function RenderToTextures()
- Context.SetVertexBuffers(FullQuadBuffer, TexcoordBuffer, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION", "SET_VERTEX_BUFFERS_FLAG_RESET")
- Context.SetPipelineState(RenderToTexPSO)
- Context.TransitionShaderResources(RenderToTexPSO, RenderToTexSRB)
- Context.CommitShaderResources(RenderToTexSRB)
- Context.Draw(DrawAttrs)
-end
-
-function BlendTextures()
- Context.SetVertexBuffers(ScaledQuadBuffer, TexcoordBuffer, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION", "SET_VERTEX_BUFFERS_FLAG_RESET")
- Context.SetPipelineState(BlendTexPSO)
- Context.CommitShaderResources(BlendTexSRB, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.Draw(DrawAttrs)
-end
-
-function Render()
- TestSetRenderTargets()
-
- Context.SetRenderTargets(Tex0RTV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION") -- To test FBO cache
- Context.SetRenderTargets(Tex1RTV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION") -- To test FBO cache
- Context.SetRenderTargets(TexDepthTexDSV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION") -- To test FBO cache
- Context.SetRenderTargets(Tex0RTV, TexDepthTexDSV, "RESOURCE_STATE_TRANSITION_MODE_VERIFY") -- To test FBO cache
- Context.SetRenderTargets(Tex1RTV, TexDepthTexDSV, "RESOURCE_STATE_TRANSITION_MODE_VERIFY") -- To test FBO cache
- Context.SetRenderTargets(Tex0RTV, Tex1RTV, TexDepthTexDSV, "RESOURCE_STATE_TRANSITION_MODE_VERIFY") -- To test FBO cache
-
-
- Context.SetRenderTargets(Tex2RTV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.ClearRenderTarget(Tex2RTV, 0, 0, 0.75, "RESOURCE_STATE_TRANSITION_MODE_VERIFY")
- Context.SetRenderTargets(Tex0RTV, Tex1RTV, "RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.ClearRenderTarget(Tex0RTV, 0.25, "RESOURCE_STATE_TRANSITION_MODE_VERIFY")
- Context.ClearRenderTarget(Tex1RTV, 0.0, 0.5, "RESOURCE_STATE_TRANSITION_MODE_VERIFY")
- Context.SetViewports(VP)
- Context.SetScissorRects(SR)
- RenderToTextures()
-
- Context.SetRenderTargets("RESOURCE_STATE_TRANSITION_MODE_TRANSITION")
- Context.SetViewports()
- BlendTextures()
-end