diff --git a/WickedEngine/shaders/ShaderInterop_Image.h b/WickedEngine/shaders/ShaderInterop_Image.h index 692575217..c4fdebc59 100644 --- a/WickedEngine/shaders/ShaderInterop_Image.h +++ b/WickedEngine/shaders/ShaderInterop_Image.h @@ -6,11 +6,7 @@ static const uint IMAGE_FLAG_EXTRACT_NORMALMAP = 1 << 0; struct PushConstantsImage { - uint2 corners0; // packed half4 - uint2 corners1; // packed half4 - - uint2 corners2; // packed half4 - uint2 corners3; // packed half4 + float4 corners[4]; uint2 texMulAdd; // packed half4 uint2 texMulAdd2; // packed half4 diff --git a/WickedEngine/shaders/imageVS.hlsl b/WickedEngine/shaders/imageVS.hlsl index 1bbbb9ff2..47440ee4a 100644 --- a/WickedEngine/shaders/imageVS.hlsl +++ b/WickedEngine/shaders/imageVS.hlsl @@ -11,21 +11,14 @@ VertextoPixel main(uint vI : SV_VERTEXID) // / // 3--4 - float4 corners[] = { - unpack_half4(push.corners0), - unpack_half4(push.corners1), - unpack_half4(push.corners2), - unpack_half4(push.corners3), - }; - - Out.pos = corners[vI]; + Out.pos = push.corners[vI]; Out.uv_screen = Out.pos; // Set up inverse bilinear interpolation - Out.q = Out.pos.xy - corners[0].xy; - Out.b1 = corners[1].xy - corners[0].xy; - Out.b2 = corners[2].xy - corners[0].xy; - Out.b3 = corners[0].xy - corners[1].xy - corners[2].xy + corners[3].xy; + Out.q = Out.pos.xy - push.corners[0].xy; + Out.b1 = push.corners[1].xy - push.corners[0].xy; + Out.b2 = push.corners[2].xy - push.corners[0].xy; + Out.b3 = push.corners[0].xy - push.corners[1].xy - push.corners[2].xy + push.corners[3].xy; return Out; } diff --git a/WickedEngine/wiImage.cpp b/WickedEngine/wiImage.cpp index 45b5ed0be..93d96f314 100644 --- a/WickedEngine/wiImage.cpp +++ b/WickedEngine/wiImage.cpp @@ -163,29 +163,19 @@ namespace wiImage M = M * canvas.GetProjection(); } - XMHALF4 corners[4]; for (int i = 0; i < 4; ++i) { XMVECTOR V = XMVectorSet(params.corners[i].x - params.pivot.x, params.corners[i].y - params.pivot.y, 0, 1); V = XMVector2Transform(V, M); // division by w will happen on GPU - XMStoreHalf4(&corners[i], V); + XMStoreFloat4(&push.corners[i], V); } if (params.isMirrorEnabled()) { - std::swap(corners[0], corners[1]); - std::swap(corners[2], corners[3]); + std::swap(push.corners[0], push.corners[1]); + std::swap(push.corners[2], push.corners[3]); } - push.corners0.x = uint(corners[0].v); - push.corners0.y = uint(corners[0].v >> 32ull); - push.corners1.x = uint(corners[1].v); - push.corners1.y = uint(corners[1].v >> 32ull); - push.corners2.x = uint(corners[2].v); - push.corners2.y = uint(corners[2].v >> 32ull); - push.corners3.x = uint(corners[3].v); - push.corners3.y = uint(corners[3].v >> 32ull); - const TextureDesc& desc = texture->GetDesc(); const float inv_width = 1.0f / float(desc.Width); const float inv_height = 1.0f / float(desc.Height); diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index e7cdcfb5e..1f52c2e6a 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 = 57; // minor bug fixes, alterations, refactors, updates - const int revision = 28; + const int revision = 29; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);