From 754a0016c7fd171c452741aefb612870fd5ca94e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 21 Jan 2022 23:31:01 +0100 Subject: [PATCH] Fix Vulkan performance warnings --- bin/resources/bloom_final.nzsl | 13 +++++++------ bin/resources/gaussian_blur.nzsl | 18 ++++++++++-------- bin/resources/god_rays.nzsl | 5 +---- bin/resources/tone_mapping.nzsl | 11 ++++++----- examples/DeferredShading/main.cpp | 3 ++- 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/bin/resources/bloom_final.nzsl b/bin/resources/bloom_final.nzsl index 9fc2ab92a..544b5e14f 100644 --- a/bin/resources/bloom_final.nzsl +++ b/bin/resources/bloom_final.nzsl @@ -21,7 +21,7 @@ external struct FragIn { - [builtin(fragcoord)] fragcoord: vec4 + [location(0)] uv: vec2 } struct FragOut @@ -31,21 +31,21 @@ struct FragOut struct VertIn { - [location(0)] pos: vec2 + [location(0)] pos: vec2, + [location(1)] uv: vec2, } struct VertOut { + [location(0)] uv: vec2, [builtin(position)] position: vec4 } [entry(frag)] fn main(input: FragIn) -> FragOut -{ - let fragcoord = input.fragcoord.xy * viewerData.invRenderTargetSize; - +{ let output: FragOut; - output.color = /*colorTexture.Sample(fragcoord) + */bloomTexture.Sample(fragcoord); + output.color = /*colorTexture.Sample(fragcoord) + */bloomTexture.Sample(input.uv); return output; } @@ -55,6 +55,7 @@ fn main(input: VertIn) -> VertOut { let output: VertOut; output.position = vec4(input.pos, 0.0, 1.0); + output.uv = input.uv; return output; } diff --git a/bin/resources/gaussian_blur.nzsl b/bin/resources/gaussian_blur.nzsl index 4e6fea80a..506249a01 100644 --- a/bin/resources/gaussian_blur.nzsl +++ b/bin/resources/gaussian_blur.nzsl @@ -28,7 +28,7 @@ external struct FragIn { - [builtin(fragcoord)] fragcoord: vec4 + [location(0)] uv: vec2 } struct FragOut @@ -38,11 +38,13 @@ struct FragOut struct VertIn { - [location(0)] pos: vec2 + [location(0)] pos: vec2, + [location(1)] uv: vec2, } struct VertOut { + [location(0)] uv: vec2, [builtin(position)] position: vec4 } @@ -50,15 +52,14 @@ struct VertOut fn main(input: FragIn) -> FragOut { let invTargetSize = viewerData.invRenderTargetSize * blurData.sizeFactor; - let fragcoord = input.fragcoord.xy * invTargetSize; - let color = colorTexture.Sample(fragcoord).rgb * 0.2270270270; + let color = colorTexture.Sample(input.uv).rgb * 0.2270270270; - color += colorTexture.Sample(fragcoord + blurData.direction * 1.3846153846 * invTargetSize).rgb * 0.3162162162; - color += colorTexture.Sample(fragcoord - blurData.direction * 1.3846153846 * invTargetSize).rgb * 0.3162162162; + color += colorTexture.Sample(input.uv + blurData.direction * 1.3846153846 * invTargetSize).rgb * 0.3162162162; + color += colorTexture.Sample(input.uv - blurData.direction * 1.3846153846 * invTargetSize).rgb * 0.3162162162; - color += colorTexture.Sample(fragcoord + blurData.direction * 3.2307692308 * invTargetSize).rgb * 0.0702702703; - color += colorTexture.Sample(fragcoord - blurData.direction * 3.2307692308 * invTargetSize).rgb * 0.0702702703; + color += colorTexture.Sample(input.uv + blurData.direction * 3.2307692308 * invTargetSize).rgb * 0.0702702703; + color += colorTexture.Sample(input.uv - blurData.direction * 3.2307692308 * invTargetSize).rgb * 0.0702702703; let output: FragOut; output.color = vec4(color, 1.0); @@ -71,6 +72,7 @@ fn main(input: VertIn) -> VertOut { let output: VertOut; output.position = vec4(input.pos, 0.0, 1.0); + output.uv = input.uv; return output; } diff --git a/bin/resources/god_rays.nzsl b/bin/resources/god_rays.nzsl index b1b14e7e9..9ec039bd2 100644 --- a/bin/resources/god_rays.nzsl +++ b/bin/resources/god_rays.nzsl @@ -33,7 +33,6 @@ external struct FragIn { - [builtin(fragcoord)] fragcoord: vec4, [location(0)] uv: vec2 } @@ -65,8 +64,7 @@ fn main(input: FragIn) -> FragOut let outputColor = vec4(0.0, 0.0, 0.0, 1.0); - let i = 0; - while (i < SampleCount) + for i in 0 -> SampleCount { uv -= deltaUV; let sample = occluderTexture.Sample(uv); @@ -75,7 +73,6 @@ fn main(input: FragIn) -> FragOut outputColor += sample; illuminationDecay *= settings.decay; - i += 1; } let output: FragOut; diff --git a/bin/resources/tone_mapping.nzsl b/bin/resources/tone_mapping.nzsl index 152a6f2ee..ccb35c0fe 100644 --- a/bin/resources/tone_mapping.nzsl +++ b/bin/resources/tone_mapping.nzsl @@ -20,7 +20,7 @@ external struct FragIn { - [builtin(fragcoord)] fragcoord: vec4 + [location(0)] uv: vec2, } struct FragOut @@ -30,11 +30,13 @@ struct FragOut struct VertIn { - [location(0)] pos: vec2 + [location(0)] pos: vec2, + [location(1)] uv: vec2, } struct VertOut { + [location(0)] uv: vec2, [builtin(position)] position: vec4 } @@ -43,9 +45,7 @@ fn main(input: FragIn) -> FragOut { let exposure = 0.8; - let fragcoord = input.fragcoord.xy * viewerData.invRenderTargetSize; - - let hdrColor = inputTexture.Sample(fragcoord).rgb; + let hdrColor = inputTexture.Sample(input.uv).rgb; // reinhard tone mapping let mapped = vec3(1.0, 1.0, 1.0) - exp(-hdrColor * exposure); @@ -61,6 +61,7 @@ fn main(input: VertIn) -> VertOut { let output: VertOut; output.position = vec4(input.pos, 0.0, 1.0); + output.uv = input.uv; return output; } diff --git a/examples/DeferredShading/main.cpp b/examples/DeferredShading/main.cpp index 86a74fcc1..ca3672f2a 100644 --- a/examples/DeferredShading/main.cpp +++ b/examples/DeferredShading/main.cpp @@ -111,6 +111,7 @@ int main() // Plane Nz::MeshParams meshPrimitiveParams; meshPrimitiveParams.storage = Nz::DataStorage::Software; + meshPrimitiveParams.vertexDeclaration = Nz::VertexDeclaration::Get(Nz::VertexLayout::XYZ_Normal_UV); std::shared_ptr planeMesh = std::make_shared(); planeMesh->CreateStatic(); @@ -200,7 +201,7 @@ int main() std::shared_ptr flareMaterial = std::make_shared(); std::shared_ptr flareMaterialPass; { - flareMaterialPass = std::make_shared(customMatSettings); + flareMaterialPass = std::make_shared(Nz::BasicMaterial::GetSettings()); flareMaterialPass->EnableDepthBuffer(true); flareMaterialPass->EnableDepthWrite(false); flareMaterialPass->EnableDepthClamp(true);