From d3d42289ba4ffe1f733a3629569154bb4ff05990 Mon Sep 17 00:00:00 2001 From: Turanszki Janos Date: Mon, 28 Jun 2021 13:50:26 +0200 Subject: [PATCH] stochastic transparency improvement --- WickedEngine/shaders/globals.hlsli | 4 ++++ WickedEngine/shaders/hairparticlePS_prepass.hlsl | 4 +++- WickedEngine/shaders/objectHF.hlsli | 2 +- WickedEngine/wiVersion.cpp | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/WickedEngine/shaders/globals.hlsli b/WickedEngine/shaders/globals.hlsli index e957c4328..ac632bbf0 100644 --- a/WickedEngine/shaders/globals.hlsli +++ b/WickedEngine/shaders/globals.hlsli @@ -85,6 +85,10 @@ inline float4 blue_noise(uint2 pixel) { return frac(texture_bluenoise[pixel % 128].rgba + g_xFrame_BlueNoisePhase); } +inline float4 blue_noise(uint2 pixel, float depth) +{ + return frac(texture_bluenoise[pixel % 128].rgba + g_xFrame_BlueNoisePhase * depth); +} // Helpers: diff --git a/WickedEngine/shaders/hairparticlePS_prepass.hlsl b/WickedEngine/shaders/hairparticlePS_prepass.hlsl index 0059416ab..8d2838f4d 100644 --- a/WickedEngine/shaders/hairparticlePS_prepass.hlsl +++ b/WickedEngine/shaders/hairparticlePS_prepass.hlsl @@ -5,6 +5,8 @@ TEXTURE2D(texture_color, float4, TEXSLOT_ONDEMAND0); float2 main(VertexToPixel input) : SV_TARGET { + const float lineardepth = input.pos.w; + clip(dither(input.pos.xy + GetTemporalAASampleRotation()) - input.fade); float4 color = texture_color.Sample(sampler_linear_clamp,input.tex); @@ -12,7 +14,7 @@ float2 main(VertexToPixel input) : SV_TARGET float alphatest = g_xMaterial.alphaTest; if (g_xFrame_Options & OPTION_BIT_TEMPORALAA_ENABLED) { - alphatest = clamp(blue_noise(input.pos.xy).r, 0, 0.99); + alphatest = clamp(blue_noise(input.pos.xy, lineardepth).r, 0, 0.99); } clip(color.a - alphatest); diff --git a/WickedEngine/shaders/objectHF.hlsli b/WickedEngine/shaders/objectHF.hlsli index 4aca0b677..4c4655a11 100644 --- a/WickedEngine/shaders/objectHF.hlsli +++ b/WickedEngine/shaders/objectHF.hlsli @@ -1373,7 +1373,7 @@ float4 main(PixelInput input, in bool is_frontface : SV_IsFrontFace) : SV_TARGET float alphatest = GetMaterial().alphaTest; if (g_xFrame_Options & OPTION_BIT_TEMPORALAA_ENABLED) { - alphatest = clamp(blue_noise(pixel).r, 0, 0.99); + alphatest = clamp(blue_noise(pixel, lineardepth).r, 0, 0.99); } clip(color.a - alphatest); #endif // DISABLE_ALPHATEST diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index e2efd9b1e..b216f38d5 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates, breaking compatibility changes const int minor = 56; // minor bug fixes, alterations, refactors, updates - const int revision = 56; + const int revision = 57; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);