diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-05-13 05:13:46 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-05-13 05:13:46 +0000 |
| commit | bdc5c93049d95af17d52767d262e7f88007c2c15 (patch) | |
| tree | 23354cf324b63d49b6ac5a8fd9586edf230ae21b /Tests/TestApp/src/TestShaderResourceLayout.cpp | |
| parent | Added shader resource layout test (diff) | |
| download | DiligentEngine-bdc5c93049d95af17d52767d262e7f88007c2c15.tar.gz DiligentEngine-bdc5c93049d95af17d52767d262e7f88007c2c15.zip | |
Added separate images, samplers, texel uniform and storage buffers
Diffstat (limited to 'Tests/TestApp/src/TestShaderResourceLayout.cpp')
| -rw-r--r-- | Tests/TestApp/src/TestShaderResourceLayout.cpp | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/Tests/TestApp/src/TestShaderResourceLayout.cpp b/Tests/TestApp/src/TestShaderResourceLayout.cpp index ea86989..945cf28 100644 --- a/Tests/TestApp/src/TestShaderResourceLayout.cpp +++ b/Tests/TestApp/src/TestShaderResourceLayout.cpp @@ -34,6 +34,11 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev UnitTestBase("Shader resource layout initialization test"), m_pDeviceContext(pContext) { + if (pDevice->GetDeviceCaps().DevType != DeviceType::Vulkan) + { + return; + } + ShaderCreationAttribs CreationAttrs; BasicShaderSourceStreamFactory BasicSSSFactory("Shaders"); CreationAttrs.pShaderSourceStreamFactory = &BasicSSSFactory; @@ -55,6 +60,7 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev TexDesc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS; + TexDesc.Format = TEX_FORMAT_RGBA8_UNORM; RefCntAutoPtr<ITexture> pStorageTex[4]; IDeviceObject *pUAVs[4]; for (int i = 0; i < 4; ++i) @@ -76,6 +82,8 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev } BuffDesc.BindFlags = BIND_UNORDERED_ACCESS; + BuffDesc.Mode = BUFFER_MODE_STRUCTURED; + BuffDesc.ElementByteStride = 16; RefCntAutoPtr<IBuffer> pStorgeBuffs[4]; IDeviceObject *pSBs[4]; for (int i = 0; i < 4; ++i) @@ -84,8 +92,16 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev pSBs[i] = pStorgeBuffs[i]; } + RefCntAutoPtr<ISampler> pSamplers[4]; + IDeviceObject *pSams[4]; + for (int i = 0; i < 4; ++i) + { + SamplerDesc SamDesc; + pDevice->CreateSampler(SamDesc, &(pSamplers[i])); + pSams[i] = pSamplers[i]; + } + RefCntAutoPtr<IShader> pVS; - if(pDevice->GetDeviceCaps().DevType == DeviceType::Vulkan) { CreationAttrs.Desc.Name = "Shader resource layout test VS"; CreationAttrs.Desc.ShaderType = SHADER_TYPE_VERTEX; @@ -99,6 +115,16 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev { "g_tex2DArr_Static", SHADER_VARIABLE_TYPE_STATIC }, { "g_tex2DArr_Mut", SHADER_VARIABLE_TYPE_MUTABLE }, { "g_tex2DArr_Dyn", SHADER_VARIABLE_TYPE_DYNAMIC }, + { "g_sepTex2DArr_static", SHADER_VARIABLE_TYPE_STATIC }, + { "g_sepTex2D_mut", SHADER_VARIABLE_TYPE_MUTABLE }, + { "g_sepTex2DArr_mut", SHADER_VARIABLE_TYPE_MUTABLE }, + { "g_sepTex2D_dyn", SHADER_VARIABLE_TYPE_DYNAMIC }, + { "g_sepTex2DArr_dyn", SHADER_VARIABLE_TYPE_DYNAMIC }, + { "g_SamArr_static", SHADER_VARIABLE_TYPE_STATIC}, + { "g_Sam_mut", SHADER_VARIABLE_TYPE_MUTABLE }, + { "g_SamArr_mut", SHADER_VARIABLE_TYPE_MUTABLE }, + { "g_Sam_dyn", SHADER_VARIABLE_TYPE_DYNAMIC }, + { "g_SamArr_dyn", SHADER_VARIABLE_TYPE_DYNAMIC }, { "UniformBuff_Mut", SHADER_VARIABLE_TYPE_MUTABLE }, { "UniformBuff_Dyn", SHADER_VARIABLE_TYPE_DYNAMIC }, { "UniformBuffArr_Mut", SHADER_VARIABLE_TYPE_MUTABLE }, @@ -115,6 +141,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev { {"g_tex2D_Static", SamplerDesc{}}, {"g_tex2DArr_Mut", SamplerDesc{}}, + {"g_Sam_static", SamplerDesc{}}, + {"g_SamArr_mut", SamplerDesc{} }, + {"g_Sam_dyn", SamplerDesc{} }, {"g_tex2DNoStaticSamplerTest", SamplerDesc{} } }; CreationAttrs.Desc.VariableDesc = VarDesc; @@ -127,6 +156,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev pVS->GetShaderVariable("g_tex2D_Static")->Set(pSRVs[0]); pVS->GetShaderVariable("g_tex2DArr_Static")->SetArray(pSRVs, 0, 2); + pVS->GetShaderVariable("g_sepTex2D_static")->Set(pSRVs[0]); + pVS->GetShaderVariable("g_sepTex2DArr_static")->SetArray(pSRVs, 0, 2); + pVS->GetShaderVariable("g_SamArr_static")->SetArray(pSams, 0, 2); pVS->GetShaderVariable("UniformBuff_Stat")->Set(pUBs[0]); pVS->GetShaderVariable("UniformBuffArr_Stat")->SetArray(pUBs, 0, 2); pVS->GetShaderVariable("storageBuff_Static")->Set(pSBs[0]); @@ -135,7 +167,6 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev } RefCntAutoPtr<IShader> pPS; - if (pDevice->GetDeviceCaps().DevType == DeviceType::Vulkan) { CreationAttrs.Desc.Name = "Shader resource layout test FS"; CreationAttrs.Desc.ShaderType = SHADER_TYPE_PIXEL; @@ -146,6 +177,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev pPS->GetShaderVariable("g_tex2D_Static")->Set(pSRVs[0]); pPS->GetShaderVariable("g_tex2DArr_Static")->SetArray(pSRVs, 0, 2); + pPS->GetShaderVariable("g_sepTex2D_static")->Set(pSRVs[0]); + pPS->GetShaderVariable("g_sepTex2DArr_static")->SetArray(pSRVs, 0, 2); + pPS->GetShaderVariable("g_SamArr_static")->SetArray(pSams, 0, 2); pPS->GetShaderVariable("UniformBuff_Stat")->Set(pUBs[0]); pPS->GetShaderVariable("UniformBuffArr_Stat")->SetArray(pUBs, 0, 2); pPS->GetShaderVariable("storageBuff_Static")->Set(pSBs[0]); @@ -173,6 +207,14 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_tex2D_Dyn")->Set(pSRVs[0]); pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_tex2DArr_Dyn")->SetArray(pSRVs, 0, 4); + pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2D_mut")->Set(pSRVs[0]); + pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2DArr_mut")->SetArray(pSRVs, 0, 3); + pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2D_dyn")->Set(pSRVs[0]); + pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2DArr_dyn")->SetArray(pSRVs, 0, 4); + + pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_Sam_mut")->Set(pSams[0]); + pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_SamArr_dyn")->SetArray(pSams, 0, 5); + pSRB->GetVariable(SHADER_TYPE_VERTEX, "UniformBuff_Mut")->Set(pUBs[0]); pSRB->GetVariable(SHADER_TYPE_VERTEX, "UniformBuffArr_Mut")->SetArray(pUBs, 0, 3); pSRB->GetVariable(SHADER_TYPE_VERTEX, "UniformBuff_Dyn")->Set(pUBs[0]); @@ -191,6 +233,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_tex2D_Dyn")->Set(pSRVs[0]); pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_tex2DArr_Dyn")->SetArray(pSRVs, 0, 4); + pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_Sam_mut")->Set(pSams[0]); + pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_SamArr_dyn")->SetArray(pSams, 0, 5); + pSRB->GetVariable(SHADER_TYPE_PIXEL, "UniformBuff_Mut")->Set(pUBs[0]); pSRB->GetVariable(SHADER_TYPE_PIXEL, "UniformBuffArr_Mut")->SetArray(pUBs, 0, 3); pSRB->GetVariable(SHADER_TYPE_PIXEL, "UniformBuff_Dyn")->Set(pUBs[0]); |
