From be826da310d2479a00c9aeff517f850e36bd58af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tur=C3=A1nszki=20J=C3=A1nos?= Date: Wed, 1 Mar 2023 10:59:12 +0100 Subject: [PATCH] mipgen preserve coverage alpha fix --- WickedEngine/shaders/generateMIPChain2DCS_float4.hlsl | 11 ++++++----- WickedEngine/wiRenderer.cpp | 1 + WickedEngine/wiVersion.cpp | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/WickedEngine/shaders/generateMIPChain2DCS_float4.hlsl b/WickedEngine/shaders/generateMIPChain2DCS_float4.hlsl index 015330749..9e8519597 100644 --- a/WickedEngine/shaders/generateMIPChain2DCS_float4.hlsl +++ b/WickedEngine/shaders/generateMIPChain2DCS_float4.hlsl @@ -30,11 +30,12 @@ void main(uint3 DTid : SV_DispatchThreadID) // Weight by alpha if it has even partially opaque pixels: // This avoids losing alpha coverage, it will extrude the areas which have alpha // And also avoids bleeding in background color from transparent area - color += float4(rrrr.x, gggg.x, bbbb.x, 1) * aaaa.x; - color += float4(rrrr.y, gggg.y, bbbb.y, 1) * aaaa.y; - color += float4(rrrr.z, gggg.z, bbbb.z, 1) * aaaa.z; - color += float4(rrrr.w, gggg.w, bbbb.w, 1) * aaaa.w; - color /= sum; + color.rgb += float3(rrrr.x, gggg.x, bbbb.x) * aaaa.x; + color.rgb += float3(rrrr.y, gggg.y, bbbb.y) * aaaa.y; + color.rgb += float3(rrrr.z, gggg.z, bbbb.z) * aaaa.z; + color.rgb += float3(rrrr.w, gggg.w, bbbb.w) * aaaa.w; + color.rgb /= sum; + color.a = max(aaaa.x, max(aaaa.y, max(aaaa.z, aaaa.w))); } else { diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 6e6c85f38..d273b2220 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -4134,6 +4134,7 @@ void UpdateRenderData( wi::profiler::EndRange(range); // Morph Targets } + device->EventEnd(cmd); device->EventBegin("Skinning", cmd); { diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 419f992f3..1755738da 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wi::version // minor features, major updates, breaking compatibility changes const int minor = 71; // minor bug fixes, alterations, refactors, updates - const int revision = 165; + const int revision = 166; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);