From d24f41f1d5d16ae99c362cc642a7bb2ee9c412d7 Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Fri, 2 Sep 2022 14:58:04 +0200 Subject: [PATCH] Update dependencies. --- checkout_glslang_spirv_tools.sh | 6 +- .../comp/buffer_device_address.msl2.comp | 3 +- ...ay-query.spv14.vk.ios.msl24..invalid.comp} | 0 ...rol-point-array-of-matrix.multi-patch.tesc | 46 +-- .../load-control-point-array-of-matrix.tesc | 47 +-- ...rol-point-array-of-struct.multi-patch.tesc | 5 +- .../load-control-point-array-of-struct.tesc | 5 +- .../load-control-point-array.multi-patch.tesc | 48 +-- .../tesc/load-control-point-array.tesc | 46 +-- .../asm/frag/depth-compare.asm.frag | 25 +- .../asm/frag/global-constant-arrays.asm.frag | 246 +++++++------- .../padded-float-array-member-defef.asm.frag | 254 +++++++------- ...bpass-input.ios.framebuffer-fetch.asm.frag | 4 +- ...ass-input.msl23.framebuffer-fetch.asm.frag | 4 +- .../texture-atomics.asm.argument.msl2.frag | 22 +- .../asm/frag/texture-atomics.asm.frag | 22 +- ...re-atomics.asm.graphics-robust-access.frag | 26 +- .../asm/tese/ds-double-gl-in-deref.asm.tese | 2 +- .../asm/tese/ds-patch-inputs.asm.tese | 2 +- .../asm/tese/ds-texcoord-array.asm.tese | 318 ------------------ .../asm/vert/array-missing-copies.asm.vert | 24 +- .../asm/vert/texture-buffer.asm.vert | 4 +- .../switch-break-ladder.asm.invalid.comp} | 0 .../asm/geom/unroll-glposition-load.asm.geom | 8 +- reference/opt/shaders/comp/bake_gradient.comp | 6 +- reference/opt/shaders/frag/ground.frag | 5 +- reference/opt/shaders/vert/ground.vert | 6 +- reference/opt/shaders/vert/ocean.vert | 6 +- ...y-query.nocompat.spv14.invalid.vk.comp.vk} | 0 ...ay-query.spv14.vk.ios.msl24..invalid.comp} | 20 ++ .../asm/tese/ds-texcoord-array.asm.tese | 0 .../switch-break-ladder.asm.invalid.comp} | 21 +- ...y-query.nocompat.spv14.invalid.vk.comp.vk} | 20 ++ ...ay-query.spv14.vk.ios.msl24..invalid.comp} | 0 .../asm/tese/ds-texcoord-array.asm.tese | 0 ...p => switch-break-ladder.asm.invalid.comp} | 0 ... ray-query.nocompat.spv14.invalid.vk.comp} | 0 37 files changed, 377 insertions(+), 874 deletions(-) rename reference/{shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp => opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp} (100%) delete mode 100644 reference/opt/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese rename reference/{shaders/asm/comp/switch-break-ladder.asm.comp => opt/shaders/asm/comp/switch-break-ladder.asm.invalid.comp} (100%) rename reference/{shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk => opt/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk} (100%) rename reference/{opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp => shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp} (84%) rename reference/{shaders-ue4 => shaders-ue4-no-opt}/asm/tese/ds-texcoord-array.asm.tese (100%) rename reference/{opt/shaders/asm/comp/switch-break-ladder.asm.comp => shaders/asm/comp/switch-break-ladder.asm.invalid.comp} (81%) rename reference/{opt/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk => shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk} (85%) rename shaders-msl/comp/{ray-query.spv14.vk.ios.msl24.comp => ray-query.spv14.vk.ios.msl24..invalid.comp} (100%) rename {shaders-ue4 => shaders-ue4-no-opt}/asm/tese/ds-texcoord-array.asm.tese (100%) rename shaders/asm/comp/{switch-break-ladder.asm.comp => switch-break-ladder.asm.invalid.comp} (100%) rename shaders/vulkan/comp/{ray-query.nocompat.spv14.vk.comp => ray-query.nocompat.spv14.invalid.vk.comp} (100%) diff --git a/checkout_glslang_spirv_tools.sh b/checkout_glslang_spirv_tools.sh index 7f014555..70bb0dfd 100755 --- a/checkout_glslang_spirv_tools.sh +++ b/checkout_glslang_spirv_tools.sh @@ -2,9 +2,9 @@ # Copyright 2016-2021 The Khronos Group Inc. # SPDX-License-Identifier: Apache-2.0 -GLSLANG_REV=7dda6a6347b0bd550e202942adee475956ef462a -SPIRV_TOOLS_REV=82d91083cb56c89d2cb8e9d56d4d69f07ac34fed -SPIRV_HEADERS_REV=5a121866927a16ab9d49bed4788b532c7fcea766 +GLSLANG_REV=69ae9e7460499b488cb2d32edae623a95264db14 +SPIRV_TOOLS_REV=4c456f7da67c5437a6fb7d4d20d78e2a5ae2acf2 +SPIRV_HEADERS_REV=87d5b782bec60822aa878941e6b13c0a9a954c9b PROTOCOL=https if [ -d external/glslang ]; then diff --git a/reference/opt/shaders-msl/comp/buffer_device_address.msl2.comp b/reference/opt/shaders-msl/comp/buffer_device_address.msl2.comp index b03300ee..2212b831 100644 --- a/reference/opt/shaders-msl/comp/buffer_device_address.msl2.comp +++ b/reference/opt/shaders-msl/comp/buffer_device_address.msl2.comp @@ -50,6 +50,7 @@ kernel void main0(constant Registers& registers [[buffer(0)]], uint3 gl_GlobalIn pos.x = fma(0.5, _133, pos.x); float _142 = sin(fma(6.283125400543212890625, _70, 0.300000011920928955078125)); pos.y = fma(0.5, _142, pos.y); - registers.references->buffers[gl_WorkGroupID.z]->positions[_30] = (pos / ((float2(8.0) * float2(gl_NumWorkGroups.xy)) - float2(1.0))) - float2(0.5); + float2 _155 = float2(gl_NumWorkGroups.xy); + registers.references->buffers[gl_WorkGroupID.z]->positions[_30] = (pos / fma(float2(8.0), _155, float2(-1.0))) - float2(0.5); } diff --git a/reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp b/reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp similarity index 100% rename from reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp rename to reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp diff --git a/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.multi-patch.tesc b/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.multi-patch.tesc index 28effad2..5ea01cad 100644 --- a/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.multi-patch.tesc +++ b/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.multi-patch.tesc @@ -1,49 +1,8 @@ -#pragma clang diagnostic ignored "-Wmissing-prototypes" -#pragma clang diagnostic ignored "-Wmissing-braces" - #include #include using namespace metal; -template -struct spvUnsafeArray -{ - T elements[Num ? Num : 1]; - - thread T& operator [] (size_t pos) thread - { - return elements[pos]; - } - constexpr const thread T& operator [] (size_t pos) const thread - { - return elements[pos]; - } - - device T& operator [] (size_t pos) device - { - return elements[pos]; - } - constexpr const device T& operator [] (size_t pos) const device - { - return elements[pos]; - } - - constexpr const constant T& operator [] (size_t pos) const constant - { - return elements[pos]; - } - - threadgroup T& operator [] (size_t pos) threadgroup - { - return elements[pos]; - } - constexpr const threadgroup T& operator [] (size_t pos) const threadgroup - { - return elements[pos]; - } -}; - struct main0_out { float4x4 vOutputs; @@ -60,9 +19,6 @@ kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], devic device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); - spvUnsafeArray _16 = spvUnsafeArray({ gl_in[0].vInputs, gl_in[1].vInputs, gl_in[2].vInputs, gl_in[3].vInputs, gl_in[4].vInputs, gl_in[5].vInputs, gl_in[6].vInputs, gl_in[7].vInputs, gl_in[8].vInputs, gl_in[9].vInputs, gl_in[10].vInputs, gl_in[11].vInputs, gl_in[12].vInputs, gl_in[13].vInputs, gl_in[14].vInputs, gl_in[15].vInputs, gl_in[16].vInputs, gl_in[17].vInputs, gl_in[18].vInputs, gl_in[19].vInputs, gl_in[20].vInputs, gl_in[21].vInputs, gl_in[22].vInputs, gl_in[23].vInputs, gl_in[24].vInputs, gl_in[25].vInputs, gl_in[26].vInputs, gl_in[27].vInputs, gl_in[28].vInputs, gl_in[29].vInputs, gl_in[30].vInputs, gl_in[31].vInputs }); - spvUnsafeArray tmp; - tmp = _16; - gl_out[gl_InvocationID].vOutputs = tmp[gl_InvocationID]; + gl_out[gl_InvocationID].vOutputs = gl_in[gl_InvocationID].vInputs; } diff --git a/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.tesc b/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.tesc index 46d4b4ad..1ed36213 100644 --- a/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.tesc +++ b/reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.tesc @@ -1,49 +1,8 @@ -#pragma clang diagnostic ignored "-Wmissing-prototypes" -#pragma clang diagnostic ignored "-Wmissing-braces" - #include #include using namespace metal; -template -struct spvUnsafeArray -{ - T elements[Num ? Num : 1]; - - thread T& operator [] (size_t pos) thread - { - return elements[pos]; - } - constexpr const thread T& operator [] (size_t pos) const thread - { - return elements[pos]; - } - - device T& operator [] (size_t pos) device - { - return elements[pos]; - } - constexpr const device T& operator [] (size_t pos) const device - { - return elements[pos]; - } - - constexpr const constant T& operator [] (size_t pos) const constant - { - return elements[pos]; - } - - threadgroup T& operator [] (size_t pos) threadgroup - { - return elements[pos]; - } - constexpr const threadgroup T& operator [] (size_t pos) const threadgroup - { - return elements[pos]; - } -}; - struct main0_out { float4x4 vOutputs; @@ -65,9 +24,7 @@ kernel void main0(main0_in in [[stage_in]], uint gl_InvocationID [[thread_index_ threadgroup_barrier(mem_flags::mem_threadgroup); if (gl_InvocationID >= 4) return; - spvUnsafeArray _16 = spvUnsafeArray({ float4x4(gl_in[0].vInputs_0, gl_in[0].vInputs_1, gl_in[0].vInputs_2, gl_in[0].vInputs_3), float4x4(gl_in[1].vInputs_0, gl_in[1].vInputs_1, gl_in[1].vInputs_2, gl_in[1].vInputs_3), float4x4(gl_in[2].vInputs_0, gl_in[2].vInputs_1, gl_in[2].vInputs_2, gl_in[2].vInputs_3), float4x4(gl_in[3].vInputs_0, gl_in[3].vInputs_1, gl_in[3].vInputs_2, gl_in[3].vInputs_3), float4x4(gl_in[4].vInputs_0, gl_in[4].vInputs_1, gl_in[4].vInputs_2, gl_in[4].vInputs_3), float4x4(gl_in[5].vInputs_0, gl_in[5].vInputs_1, gl_in[5].vInputs_2, gl_in[5].vInputs_3), float4x4(gl_in[6].vInputs_0, gl_in[6].vInputs_1, gl_in[6].vInputs_2, gl_in[6].vInputs_3), float4x4(gl_in[7].vInputs_0, gl_in[7].vInputs_1, gl_in[7].vInputs_2, gl_in[7].vInputs_3), float4x4(gl_in[8].vInputs_0, gl_in[8].vInputs_1, gl_in[8].vInputs_2, gl_in[8].vInputs_3), float4x4(gl_in[9].vInputs_0, gl_in[9].vInputs_1, gl_in[9].vInputs_2, gl_in[9].vInputs_3), float4x4(gl_in[10].vInputs_0, gl_in[10].vInputs_1, gl_in[10].vInputs_2, gl_in[10].vInputs_3), float4x4(gl_in[11].vInputs_0, gl_in[11].vInputs_1, gl_in[11].vInputs_2, gl_in[11].vInputs_3), float4x4(gl_in[12].vInputs_0, gl_in[12].vInputs_1, gl_in[12].vInputs_2, gl_in[12].vInputs_3), float4x4(gl_in[13].vInputs_0, gl_in[13].vInputs_1, gl_in[13].vInputs_2, gl_in[13].vInputs_3), float4x4(gl_in[14].vInputs_0, gl_in[14].vInputs_1, gl_in[14].vInputs_2, gl_in[14].vInputs_3), float4x4(gl_in[15].vInputs_0, gl_in[15].vInputs_1, gl_in[15].vInputs_2, gl_in[15].vInputs_3), float4x4(gl_in[16].vInputs_0, gl_in[16].vInputs_1, gl_in[16].vInputs_2, gl_in[16].vInputs_3), float4x4(gl_in[17].vInputs_0, gl_in[17].vInputs_1, gl_in[17].vInputs_2, gl_in[17].vInputs_3), float4x4(gl_in[18].vInputs_0, gl_in[18].vInputs_1, gl_in[18].vInputs_2, gl_in[18].vInputs_3), float4x4(gl_in[19].vInputs_0, gl_in[19].vInputs_1, gl_in[19].vInputs_2, gl_in[19].vInputs_3), float4x4(gl_in[20].vInputs_0, gl_in[20].vInputs_1, gl_in[20].vInputs_2, gl_in[20].vInputs_3), float4x4(gl_in[21].vInputs_0, gl_in[21].vInputs_1, gl_in[21].vInputs_2, gl_in[21].vInputs_3), float4x4(gl_in[22].vInputs_0, gl_in[22].vInputs_1, gl_in[22].vInputs_2, gl_in[22].vInputs_3), float4x4(gl_in[23].vInputs_0, gl_in[23].vInputs_1, gl_in[23].vInputs_2, gl_in[23].vInputs_3), float4x4(gl_in[24].vInputs_0, gl_in[24].vInputs_1, gl_in[24].vInputs_2, gl_in[24].vInputs_3), float4x4(gl_in[25].vInputs_0, gl_in[25].vInputs_1, gl_in[25].vInputs_2, gl_in[25].vInputs_3), float4x4(gl_in[26].vInputs_0, gl_in[26].vInputs_1, gl_in[26].vInputs_2, gl_in[26].vInputs_3), float4x4(gl_in[27].vInputs_0, gl_in[27].vInputs_1, gl_in[27].vInputs_2, gl_in[27].vInputs_3), float4x4(gl_in[28].vInputs_0, gl_in[28].vInputs_1, gl_in[28].vInputs_2, gl_in[28].vInputs_3), float4x4(gl_in[29].vInputs_0, gl_in[29].vInputs_1, gl_in[29].vInputs_2, gl_in[29].vInputs_3), float4x4(gl_in[30].vInputs_0, gl_in[30].vInputs_1, gl_in[30].vInputs_2, gl_in[30].vInputs_3), float4x4(gl_in[31].vInputs_0, gl_in[31].vInputs_1, gl_in[31].vInputs_2, gl_in[31].vInputs_3) }); - spvUnsafeArray tmp; - tmp = _16; - gl_out[gl_InvocationID].vOutputs = tmp[gl_InvocationID]; + float4x4 _28 = float4x4(gl_in[gl_InvocationID].vInputs_0, gl_in[gl_InvocationID].vInputs_1, gl_in[gl_InvocationID].vInputs_2, gl_in[gl_InvocationID].vInputs_3); + gl_out[gl_InvocationID].vOutputs = _28; } diff --git a/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.multi-patch.tesc b/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.multi-patch.tesc index e6bd83e8..de6ba178 100644 --- a/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.multi-patch.tesc +++ b/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.multi-patch.tesc @@ -67,10 +67,7 @@ kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], devic device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); - spvUnsafeArray _19 = spvUnsafeArray({ gl_in[0].vInputs, gl_in[1].vInputs, gl_in[2].vInputs, gl_in[3].vInputs, gl_in[4].vInputs, gl_in[5].vInputs, gl_in[6].vInputs, gl_in[7].vInputs, gl_in[8].vInputs, gl_in[9].vInputs, gl_in[10].vInputs, gl_in[11].vInputs, gl_in[12].vInputs, gl_in[13].vInputs, gl_in[14].vInputs, gl_in[15].vInputs, gl_in[16].vInputs, gl_in[17].vInputs, gl_in[18].vInputs, gl_in[19].vInputs, gl_in[20].vInputs, gl_in[21].vInputs, gl_in[22].vInputs, gl_in[23].vInputs, gl_in[24].vInputs, gl_in[25].vInputs, gl_in[26].vInputs, gl_in[27].vInputs, gl_in[28].vInputs, gl_in[29].vInputs, gl_in[30].vInputs, gl_in[31].vInputs }); - spvUnsafeArray tmp; - tmp = _19; int _27 = gl_InvocationID ^ 1; - gl_out[gl_InvocationID].vOutputs = ((tmp[gl_InvocationID].a[1] + tmp[gl_InvocationID].b[1]) + tmp[gl_InvocationID].c) + gl_in[_27].vInputs.c; + gl_out[gl_InvocationID].vOutputs = ((gl_in[gl_InvocationID].vInputs.a[1] + gl_in[gl_InvocationID].vInputs.b[1]) + gl_in[gl_InvocationID].vInputs.c) + gl_in[_27].vInputs.c; } diff --git a/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.tesc b/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.tesc index d8c05ecc..9eaaa2e6 100644 --- a/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.tesc +++ b/reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.tesc @@ -75,10 +75,7 @@ kernel void main0(main0_in in [[stage_in]], uint gl_InvocationID [[thread_index_ threadgroup_barrier(mem_flags::mem_threadgroup); if (gl_InvocationID >= 4) return; - spvUnsafeArray _19 = spvUnsafeArray({ VertexData{ float4x4(gl_in[0].vInputs_a_0, gl_in[0].vInputs_a_1, gl_in[0].vInputs_a_2, gl_in[0].vInputs_a_3), spvUnsafeArray({ gl_in[0].vInputs_b_0, gl_in[0].vInputs_b_1 }), gl_in[0].vInputs_c }, VertexData{ float4x4(gl_in[1].vInputs_a_0, gl_in[1].vInputs_a_1, gl_in[1].vInputs_a_2, gl_in[1].vInputs_a_3), spvUnsafeArray({ gl_in[1].vInputs_b_0, gl_in[1].vInputs_b_1 }), gl_in[1].vInputs_c }, VertexData{ float4x4(gl_in[2].vInputs_a_0, gl_in[2].vInputs_a_1, gl_in[2].vInputs_a_2, gl_in[2].vInputs_a_3), spvUnsafeArray({ gl_in[2].vInputs_b_0, gl_in[2].vInputs_b_1 }), gl_in[2].vInputs_c }, VertexData{ float4x4(gl_in[3].vInputs_a_0, gl_in[3].vInputs_a_1, gl_in[3].vInputs_a_2, gl_in[3].vInputs_a_3), spvUnsafeArray({ gl_in[3].vInputs_b_0, gl_in[3].vInputs_b_1 }), gl_in[3].vInputs_c }, VertexData{ float4x4(gl_in[4].vInputs_a_0, gl_in[4].vInputs_a_1, gl_in[4].vInputs_a_2, gl_in[4].vInputs_a_3), spvUnsafeArray({ gl_in[4].vInputs_b_0, gl_in[4].vInputs_b_1 }), gl_in[4].vInputs_c }, VertexData{ float4x4(gl_in[5].vInputs_a_0, gl_in[5].vInputs_a_1, gl_in[5].vInputs_a_2, gl_in[5].vInputs_a_3), spvUnsafeArray({ gl_in[5].vInputs_b_0, gl_in[5].vInputs_b_1 }), gl_in[5].vInputs_c }, VertexData{ float4x4(gl_in[6].vInputs_a_0, gl_in[6].vInputs_a_1, gl_in[6].vInputs_a_2, gl_in[6].vInputs_a_3), spvUnsafeArray({ gl_in[6].vInputs_b_0, gl_in[6].vInputs_b_1 }), gl_in[6].vInputs_c }, VertexData{ float4x4(gl_in[7].vInputs_a_0, gl_in[7].vInputs_a_1, gl_in[7].vInputs_a_2, gl_in[7].vInputs_a_3), spvUnsafeArray({ gl_in[7].vInputs_b_0, gl_in[7].vInputs_b_1 }), gl_in[7].vInputs_c }, VertexData{ float4x4(gl_in[8].vInputs_a_0, gl_in[8].vInputs_a_1, gl_in[8].vInputs_a_2, gl_in[8].vInputs_a_3), spvUnsafeArray({ gl_in[8].vInputs_b_0, gl_in[8].vInputs_b_1 }), gl_in[8].vInputs_c }, VertexData{ float4x4(gl_in[9].vInputs_a_0, gl_in[9].vInputs_a_1, gl_in[9].vInputs_a_2, gl_in[9].vInputs_a_3), spvUnsafeArray({ gl_in[9].vInputs_b_0, gl_in[9].vInputs_b_1 }), gl_in[9].vInputs_c }, VertexData{ float4x4(gl_in[10].vInputs_a_0, gl_in[10].vInputs_a_1, gl_in[10].vInputs_a_2, gl_in[10].vInputs_a_3), spvUnsafeArray({ gl_in[10].vInputs_b_0, gl_in[10].vInputs_b_1 }), gl_in[10].vInputs_c }, VertexData{ float4x4(gl_in[11].vInputs_a_0, gl_in[11].vInputs_a_1, gl_in[11].vInputs_a_2, gl_in[11].vInputs_a_3), spvUnsafeArray({ gl_in[11].vInputs_b_0, gl_in[11].vInputs_b_1 }), gl_in[11].vInputs_c }, VertexData{ float4x4(gl_in[12].vInputs_a_0, gl_in[12].vInputs_a_1, gl_in[12].vInputs_a_2, gl_in[12].vInputs_a_3), spvUnsafeArray({ gl_in[12].vInputs_b_0, gl_in[12].vInputs_b_1 }), gl_in[12].vInputs_c }, VertexData{ float4x4(gl_in[13].vInputs_a_0, gl_in[13].vInputs_a_1, gl_in[13].vInputs_a_2, gl_in[13].vInputs_a_3), spvUnsafeArray({ gl_in[13].vInputs_b_0, gl_in[13].vInputs_b_1 }), gl_in[13].vInputs_c }, VertexData{ float4x4(gl_in[14].vInputs_a_0, gl_in[14].vInputs_a_1, gl_in[14].vInputs_a_2, gl_in[14].vInputs_a_3), spvUnsafeArray({ gl_in[14].vInputs_b_0, gl_in[14].vInputs_b_1 }), gl_in[14].vInputs_c }, VertexData{ float4x4(gl_in[15].vInputs_a_0, gl_in[15].vInputs_a_1, gl_in[15].vInputs_a_2, gl_in[15].vInputs_a_3), spvUnsafeArray({ gl_in[15].vInputs_b_0, gl_in[15].vInputs_b_1 }), gl_in[15].vInputs_c }, VertexData{ float4x4(gl_in[16].vInputs_a_0, gl_in[16].vInputs_a_1, gl_in[16].vInputs_a_2, gl_in[16].vInputs_a_3), spvUnsafeArray({ gl_in[16].vInputs_b_0, gl_in[16].vInputs_b_1 }), gl_in[16].vInputs_c }, VertexData{ float4x4(gl_in[17].vInputs_a_0, gl_in[17].vInputs_a_1, gl_in[17].vInputs_a_2, gl_in[17].vInputs_a_3), spvUnsafeArray({ gl_in[17].vInputs_b_0, gl_in[17].vInputs_b_1 }), gl_in[17].vInputs_c }, VertexData{ float4x4(gl_in[18].vInputs_a_0, gl_in[18].vInputs_a_1, gl_in[18].vInputs_a_2, gl_in[18].vInputs_a_3), spvUnsafeArray({ gl_in[18].vInputs_b_0, gl_in[18].vInputs_b_1 }), gl_in[18].vInputs_c }, VertexData{ float4x4(gl_in[19].vInputs_a_0, gl_in[19].vInputs_a_1, gl_in[19].vInputs_a_2, gl_in[19].vInputs_a_3), spvUnsafeArray({ gl_in[19].vInputs_b_0, gl_in[19].vInputs_b_1 }), gl_in[19].vInputs_c }, VertexData{ float4x4(gl_in[20].vInputs_a_0, gl_in[20].vInputs_a_1, gl_in[20].vInputs_a_2, gl_in[20].vInputs_a_3), spvUnsafeArray({ gl_in[20].vInputs_b_0, gl_in[20].vInputs_b_1 }), gl_in[20].vInputs_c }, VertexData{ float4x4(gl_in[21].vInputs_a_0, gl_in[21].vInputs_a_1, gl_in[21].vInputs_a_2, gl_in[21].vInputs_a_3), spvUnsafeArray({ gl_in[21].vInputs_b_0, gl_in[21].vInputs_b_1 }), gl_in[21].vInputs_c }, VertexData{ float4x4(gl_in[22].vInputs_a_0, gl_in[22].vInputs_a_1, gl_in[22].vInputs_a_2, gl_in[22].vInputs_a_3), spvUnsafeArray({ gl_in[22].vInputs_b_0, gl_in[22].vInputs_b_1 }), gl_in[22].vInputs_c }, VertexData{ float4x4(gl_in[23].vInputs_a_0, gl_in[23].vInputs_a_1, gl_in[23].vInputs_a_2, gl_in[23].vInputs_a_3), spvUnsafeArray({ gl_in[23].vInputs_b_0, gl_in[23].vInputs_b_1 }), gl_in[23].vInputs_c }, VertexData{ float4x4(gl_in[24].vInputs_a_0, gl_in[24].vInputs_a_1, gl_in[24].vInputs_a_2, gl_in[24].vInputs_a_3), spvUnsafeArray({ gl_in[24].vInputs_b_0, gl_in[24].vInputs_b_1 }), gl_in[24].vInputs_c }, VertexData{ float4x4(gl_in[25].vInputs_a_0, gl_in[25].vInputs_a_1, gl_in[25].vInputs_a_2, gl_in[25].vInputs_a_3), spvUnsafeArray({ gl_in[25].vInputs_b_0, gl_in[25].vInputs_b_1 }), gl_in[25].vInputs_c }, VertexData{ float4x4(gl_in[26].vInputs_a_0, gl_in[26].vInputs_a_1, gl_in[26].vInputs_a_2, gl_in[26].vInputs_a_3), spvUnsafeArray({ gl_in[26].vInputs_b_0, gl_in[26].vInputs_b_1 }), gl_in[26].vInputs_c }, VertexData{ float4x4(gl_in[27].vInputs_a_0, gl_in[27].vInputs_a_1, gl_in[27].vInputs_a_2, gl_in[27].vInputs_a_3), spvUnsafeArray({ gl_in[27].vInputs_b_0, gl_in[27].vInputs_b_1 }), gl_in[27].vInputs_c }, VertexData{ float4x4(gl_in[28].vInputs_a_0, gl_in[28].vInputs_a_1, gl_in[28].vInputs_a_2, gl_in[28].vInputs_a_3), spvUnsafeArray({ gl_in[28].vInputs_b_0, gl_in[28].vInputs_b_1 }), gl_in[28].vInputs_c }, VertexData{ float4x4(gl_in[29].vInputs_a_0, gl_in[29].vInputs_a_1, gl_in[29].vInputs_a_2, gl_in[29].vInputs_a_3), spvUnsafeArray({ gl_in[29].vInputs_b_0, gl_in[29].vInputs_b_1 }), gl_in[29].vInputs_c }, VertexData{ float4x4(gl_in[30].vInputs_a_0, gl_in[30].vInputs_a_1, gl_in[30].vInputs_a_2, gl_in[30].vInputs_a_3), spvUnsafeArray({ gl_in[30].vInputs_b_0, gl_in[30].vInputs_b_1 }), gl_in[30].vInputs_c }, VertexData{ float4x4(gl_in[31].vInputs_a_0, gl_in[31].vInputs_a_1, gl_in[31].vInputs_a_2, gl_in[31].vInputs_a_3), spvUnsafeArray({ gl_in[31].vInputs_b_0, gl_in[31].vInputs_b_1 }), gl_in[31].vInputs_c } }); - spvUnsafeArray tmp; - tmp = _19; int _27 = gl_InvocationID ^ 1; - gl_out[gl_InvocationID].vOutputs = ((tmp[gl_InvocationID].a[1] + tmp[gl_InvocationID].b[1]) + tmp[gl_InvocationID].c) + gl_in[_27].vInputs_c; + gl_out[gl_InvocationID].vOutputs = ((gl_in[gl_InvocationID].vInputs_a_1 + gl_in[gl_InvocationID].vInputs_b_1) + gl_in[gl_InvocationID].vInputs_c) + gl_in[_27].vInputs_c; } diff --git a/reference/opt/shaders-msl/tesc/load-control-point-array.multi-patch.tesc b/reference/opt/shaders-msl/tesc/load-control-point-array.multi-patch.tesc index 45baadb6..ddf142cc 100644 --- a/reference/opt/shaders-msl/tesc/load-control-point-array.multi-patch.tesc +++ b/reference/opt/shaders-msl/tesc/load-control-point-array.multi-patch.tesc @@ -1,49 +1,8 @@ -#pragma clang diagnostic ignored "-Wmissing-prototypes" -#pragma clang diagnostic ignored "-Wmissing-braces" - #include #include using namespace metal; -template -struct spvUnsafeArray -{ - T elements[Num ? Num : 1]; - - thread T& operator [] (size_t pos) thread - { - return elements[pos]; - } - constexpr const thread T& operator [] (size_t pos) const thread - { - return elements[pos]; - } - - device T& operator [] (size_t pos) device - { - return elements[pos]; - } - constexpr const device T& operator [] (size_t pos) const device - { - return elements[pos]; - } - - constexpr const constant T& operator [] (size_t pos) const constant - { - return elements[pos]; - } - - threadgroup T& operator [] (size_t pos) threadgroup - { - return elements[pos]; - } - constexpr const threadgroup T& operator [] (size_t pos) const threadgroup - { - return elements[pos]; - } -}; - struct main0_out { float4 vOutputs; @@ -52,7 +11,7 @@ struct main0_out struct main0_in { float4 vInputs; - ushort2 m_43; + ushort2 m_44; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(28)]], constant uint* spvIndirectParams [[buffer(29)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(26)]], device main0_in* spvIn [[buffer(22)]]) @@ -61,9 +20,6 @@ kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], devic device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); - spvUnsafeArray _15 = spvUnsafeArray({ gl_in[0].vInputs, gl_in[1].vInputs, gl_in[2].vInputs, gl_in[3].vInputs, gl_in[4].vInputs, gl_in[5].vInputs, gl_in[6].vInputs, gl_in[7].vInputs, gl_in[8].vInputs, gl_in[9].vInputs, gl_in[10].vInputs, gl_in[11].vInputs, gl_in[12].vInputs, gl_in[13].vInputs, gl_in[14].vInputs, gl_in[15].vInputs, gl_in[16].vInputs, gl_in[17].vInputs, gl_in[18].vInputs, gl_in[19].vInputs, gl_in[20].vInputs, gl_in[21].vInputs, gl_in[22].vInputs, gl_in[23].vInputs, gl_in[24].vInputs, gl_in[25].vInputs, gl_in[26].vInputs, gl_in[27].vInputs, gl_in[28].vInputs, gl_in[29].vInputs, gl_in[30].vInputs, gl_in[31].vInputs }); - spvUnsafeArray tmp; - tmp = _15; - gl_out[gl_InvocationID].vOutputs = tmp[gl_InvocationID]; + gl_out[gl_InvocationID].vOutputs = gl_in[gl_InvocationID].vInputs; } diff --git a/reference/opt/shaders-msl/tesc/load-control-point-array.tesc b/reference/opt/shaders-msl/tesc/load-control-point-array.tesc index d04571ae..6f0da387 100644 --- a/reference/opt/shaders-msl/tesc/load-control-point-array.tesc +++ b/reference/opt/shaders-msl/tesc/load-control-point-array.tesc @@ -1,49 +1,8 @@ -#pragma clang diagnostic ignored "-Wmissing-prototypes" -#pragma clang diagnostic ignored "-Wmissing-braces" - #include #include using namespace metal; -template -struct spvUnsafeArray -{ - T elements[Num ? Num : 1]; - - thread T& operator [] (size_t pos) thread - { - return elements[pos]; - } - constexpr const thread T& operator [] (size_t pos) const thread - { - return elements[pos]; - } - - device T& operator [] (size_t pos) device - { - return elements[pos]; - } - constexpr const device T& operator [] (size_t pos) const device - { - return elements[pos]; - } - - constexpr const constant T& operator [] (size_t pos) const constant - { - return elements[pos]; - } - - threadgroup T& operator [] (size_t pos) threadgroup - { - return elements[pos]; - } - constexpr const threadgroup T& operator [] (size_t pos) const threadgroup - { - return elements[pos]; - } -}; - struct main0_out { float4 vOutputs; @@ -62,9 +21,6 @@ kernel void main0(main0_in in [[stage_in]], uint gl_InvocationID [[thread_index_ threadgroup_barrier(mem_flags::mem_threadgroup); if (gl_InvocationID >= 4) return; - spvUnsafeArray _15 = spvUnsafeArray({ gl_in[0].vInputs, gl_in[1].vInputs, gl_in[2].vInputs, gl_in[3].vInputs, gl_in[4].vInputs, gl_in[5].vInputs, gl_in[6].vInputs, gl_in[7].vInputs, gl_in[8].vInputs, gl_in[9].vInputs, gl_in[10].vInputs, gl_in[11].vInputs, gl_in[12].vInputs, gl_in[13].vInputs, gl_in[14].vInputs, gl_in[15].vInputs, gl_in[16].vInputs, gl_in[17].vInputs, gl_in[18].vInputs, gl_in[19].vInputs, gl_in[20].vInputs, gl_in[21].vInputs, gl_in[22].vInputs, gl_in[23].vInputs, gl_in[24].vInputs, gl_in[25].vInputs, gl_in[26].vInputs, gl_in[27].vInputs, gl_in[28].vInputs, gl_in[29].vInputs, gl_in[30].vInputs, gl_in[31].vInputs }); - spvUnsafeArray tmp; - tmp = _15; - gl_out[gl_InvocationID].vOutputs = tmp[gl_InvocationID]; + gl_out[gl_InvocationID].vOutputs = gl_in[gl_InvocationID].vInputs; } diff --git a/reference/opt/shaders-ue4/asm/frag/depth-compare.asm.frag b/reference/opt/shaders-ue4/asm/frag/depth-compare.asm.frag index cdcfa822..a7b390a8 100644 --- a/reference/opt/shaders-ue4/asm/frag/depth-compare.asm.frag +++ b/reference/opt/shaders-ue4/asm/frag/depth-compare.asm.frag @@ -189,7 +189,7 @@ struct type_Globals float4 PointLightDepthBiasAndProjParameters; }; -constant float4 _453 = {}; +constant float4 _471 = {}; struct main0_out { @@ -202,8 +202,8 @@ fragment main0_out main0(constant type_View& View [[buffer(0)]], constant type_G float2 _114 = gl_FragCoord.xy * View.View_BufferSizeAndInvSize.zw; float4 _118 = SceneTexturesStruct_SceneDepthTexture.sample(SceneTexturesStruct_SceneDepthTextureSampler, _114, level(0.0)); float _119 = _118.x; - float _133 = fma(_119, View.View_InvDeviceZToWorldZTransform.x, View.View_InvDeviceZToWorldZTransform.y) + (1.0 / ((_119 * View.View_InvDeviceZToWorldZTransform.z) - View.View_InvDeviceZToWorldZTransform.w)); - float4 _147 = View.View_ScreenToWorld * float4(((_114 - View.View_ScreenPositionScaleBias.wz) / View.View_ScreenPositionScaleBias.xy) * float2(_133), _133, 1.0); + float _133 = fma(_119, View.View_InvDeviceZToWorldZTransform.x, View.View_InvDeviceZToWorldZTransform.y) + (1.0 / fma(_119, View.View_InvDeviceZToWorldZTransform.z, -View.View_InvDeviceZToWorldZTransform.w)); + float4 _147 = View.View_ScreenToWorld * float4((fma(gl_FragCoord.xy, View.View_BufferSizeAndInvSize.zw, -View.View_ScreenPositionScaleBias.wz) / View.View_ScreenPositionScaleBias.xy) * float2(_133), _133, 1.0); float3 _148 = _147.xyz; float3 _152 = _Globals.LightPositionAndInvRadius.xyz - _148; float _158 = length(_152); @@ -247,7 +247,7 @@ fragment main0_out main0(constant type_View& View [[buffer(0)]], constant type_G float4 _219; _219.z = _218; float4 _220 = float4(float3(1.0).x, float3(1.0).y, _219.z, float3(1.0).z); - float3 _236 = fast::normalize((SceneTexturesStruct_GBufferATexture.sample(SceneTexturesStruct_GBufferATextureSampler, _114, level(0.0)).xyz * float3(2.0)) - float3(1.0)); + float3 _236 = fast::normalize(fma(SceneTexturesStruct_GBufferATexture.sample(SceneTexturesStruct_GBufferATextureSampler, _114, level(0.0)).xyz, float3(2.0), float3(-1.0))); uint _240 = uint(round(SceneTexturesStruct_GBufferBTexture.sample(SceneTexturesStruct_GBufferBTextureSampler, _114, level(0.0)).w * 255.0)); bool _248 = (_240 & 15u) == 5u; float _448; @@ -255,7 +255,7 @@ fragment main0_out main0(constant type_View& View [[buffer(0)]], constant type_G { float4 _260 = SSProfilesTexture.read(uint2(int3(1, int(uint(fma(select(float4(0.0), SceneTexturesStruct_GBufferDTexture.sample(SceneTexturesStruct_GBufferDTextureSampler, _114, level(0.0)), bool4(!(((_240 & 4294967280u) & 16u) != 0u))).x, 255.0, 0.5))), 0).xy), 0); float _263 = _260.y * 0.5; - float3 _266 = _148 - (_236 * float3(_263)); + float3 _266 = fma(-_236, float3(_263), _148); float _274 = pow(fast::clamp(dot(-(_152 * float3(rsqrt(dot(_152, _152)))), _236), 0.0, 1.0), 1.0); float _445; if (_160) @@ -290,16 +290,17 @@ fragment main0_out main0(constant type_View& View [[buffer(0)]], constant type_G } float4 _318 = _Globals.ShadowViewProjectionMatrices[_311] * float4(_266, 1.0); float _323 = _260.x * (10.0 / _Globals.LightPositionAndInvRadius.w); - float _329 = (1.0 / (((_318.z / _318.w) * _Globals.PointLightDepthBiasAndProjParameters.z) - _Globals.PointLightDepthBiasAndProjParameters.w)) * _Globals.LightPositionAndInvRadius.w; - float _341 = _329 - ((1.0 / ((float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(2.5), _278), level(0.0))).x * _Globals.PointLightDepthBiasAndProjParameters.z) - _Globals.PointLightDepthBiasAndProjParameters.w)) * _Globals.LightPositionAndInvRadius.w); + float _457 = -_Globals.PointLightDepthBiasAndProjParameters.w; + float _328 = 1.0 / fma(_318.z / _318.w, _Globals.PointLightDepthBiasAndProjParameters.z, _457); + float _341 = fma(_328, _Globals.LightPositionAndInvRadius.w, -((1.0 / fma(float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(2.5), _278), level(0.0))).x, _Globals.PointLightDepthBiasAndProjParameters.z, _457)) * _Globals.LightPositionAndInvRadius.w)); float _342 = _341 * _323; - float _363 = _329 - ((1.0 / ((float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(0.77254199981689453125), fma(_285, float3(2.3776409626007080078125), _278)), level(0.0))).x * _Globals.PointLightDepthBiasAndProjParameters.z) - _Globals.PointLightDepthBiasAndProjParameters.w)) * _Globals.LightPositionAndInvRadius.w); + float _363 = fma(_328, _Globals.LightPositionAndInvRadius.w, -((1.0 / fma(float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(0.77254199981689453125), fma(_285, float3(2.3776409626007080078125), _278)), level(0.0))).x, _Globals.PointLightDepthBiasAndProjParameters.z, _457)) * _Globals.LightPositionAndInvRadius.w)); float _364 = _363 * _323; - float _386 = _329 - ((1.0 / ((float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(-2.0225429534912109375), fma(_285, float3(1.46946299076080322265625), _278)), level(0.0))).x * _Globals.PointLightDepthBiasAndProjParameters.z) - _Globals.PointLightDepthBiasAndProjParameters.w)) * _Globals.LightPositionAndInvRadius.w); + float _386 = fma(_328, _Globals.LightPositionAndInvRadius.w, -((1.0 / fma(float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(-2.0225429534912109375), fma(_285, float3(1.46946299076080322265625), _278)), level(0.0))).x, _Globals.PointLightDepthBiasAndProjParameters.z, _457)) * _Globals.LightPositionAndInvRadius.w)); float _387 = _386 * _323; - float _409 = _329 - ((1.0 / ((float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(-2.02254199981689453125), fma(_285, float3(-1.46946299076080322265625), _278)), level(0.0))).x * _Globals.PointLightDepthBiasAndProjParameters.z) - _Globals.PointLightDepthBiasAndProjParameters.w)) * _Globals.LightPositionAndInvRadius.w); + float _409 = fma(_328, _Globals.LightPositionAndInvRadius.w, -((1.0 / fma(float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(-2.02254199981689453125), fma(_285, float3(-1.46946299076080322265625), _278)), level(0.0))).x, _Globals.PointLightDepthBiasAndProjParameters.z, _457)) * _Globals.LightPositionAndInvRadius.w)); float _410 = _409 * _323; - float _432 = _329 - ((1.0 / ((float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(0.772543013095855712890625), fma(_285, float3(-2.3776409626007080078125), _278)), level(0.0))).x * _Globals.PointLightDepthBiasAndProjParameters.z) - _Globals.PointLightDepthBiasAndProjParameters.w)) * _Globals.LightPositionAndInvRadius.w); + float _432 = fma(_328, _Globals.LightPositionAndInvRadius.w, -((1.0 / fma(float4(ShadowDepthCubeTexture.sample(ShadowDepthTextureSampler, fma(_286, float3(0.772543013095855712890625), fma(_285, float3(-2.3776409626007080078125), _278)), level(0.0))).x, _Globals.PointLightDepthBiasAndProjParameters.z, _457)) * _Globals.LightPositionAndInvRadius.w)); float _433 = _432 * _323; _445 = (((((fast::clamp(abs((_342 > 0.0) ? fma(_341, _323, _263) : fast::max(0.0, fma(_342, _274, _263))), 0.1500000059604644775390625, 5.0) + 0.25) + (fast::clamp(abs((_364 > 0.0) ? fma(_363, _323, _263) : fast::max(0.0, fma(_364, _274, _263))), 0.1500000059604644775390625, 5.0) + 0.25)) + (fast::clamp(abs((_387 > 0.0) ? fma(_386, _323, _263) : fast::max(0.0, fma(_387, _274, _263))), 0.1500000059604644775390625, 5.0) + 0.25)) + (fast::clamp(abs((_410 > 0.0) ? fma(_409, _323, _263) : fast::max(0.0, fma(_410, _274, _263))), 0.1500000059604644775390625, 5.0) + 0.25)) + (fast::clamp(abs((_433 > 0.0) ? fma(_432, _323, _263) : fast::max(0.0, fma(_433, _274, _263))), 0.1500000059604644775390625, 5.0) + 0.25)) * 0.20000000298023223876953125; } @@ -307,7 +308,7 @@ fragment main0_out main0(constant type_View& View [[buffer(0)]], constant type_G { _445 = 1.0; } - _448 = 1.0 - (_445 * 0.20000000298023223876953125); + _448 = fma(-_445, 0.20000000298023223876953125, 1.0); } else { diff --git a/reference/opt/shaders-ue4/asm/frag/global-constant-arrays.asm.frag b/reference/opt/shaders-ue4/asm/frag/global-constant-arrays.asm.frag index 23f2856b..192c0b41 100644 --- a/reference/opt/shaders-ue4/asm/frag/global-constant-arrays.asm.frag +++ b/reference/opt/shaders-ue4/asm/frag/global-constant-arrays.asm.frag @@ -162,27 +162,26 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa if (_Globals.OutputDevice >= 3u) { float3 _591 = pow(_577, float3(0.0126833133399486541748046875)); - _599 = pow(fast::max(float3(0.0), _591 - float3(0.8359375)) / (float3(18.8515625) - (float3(18.6875) * _591)), float3(6.277394771575927734375)) * float3(10000.0); + _599 = pow(fast::max(float3(0.0), _591 - float3(0.8359375)) / fma(float3(-18.6875), _591, float3(18.8515625)), float3(6.277394771575927734375)) * float3(10000.0); } else { - _599 = (exp2((_577 - float3(0.434017598628997802734375)) * float3(14.0)) * float3(0.180000007152557373046875)) - float3(0.00266771926544606685638427734375); + _599 = fma(exp2((_577 - float3(0.434017598628997802734375)) * float3(14.0)), float3(0.180000007152557373046875), float3(-0.00266771926544606685638427734375)); } float _602 = _Globals.WhiteTemp * 1.00055634975433349609375; float _616 = (_602 <= 7000.0) ? (0.24406300485134124755859375 + ((99.1100006103515625 + ((2967800.0 - (4604438528.0 / _Globals.WhiteTemp)) / _602)) / _602)) : (0.23703999817371368408203125 + ((247.4799957275390625 + ((1901800.0 - (2005284352.0 / _Globals.WhiteTemp)) / _602)) / _602)); float _633 = fma(1.2864121856637211749330163002014e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(0.00015411825734190642833709716796875, _Globals.WhiteTemp, 0.860117733478546142578125)) / fma(7.0814513719597016461193561553955e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(0.0008424202096648514270782470703125, _Globals.WhiteTemp, 1.0)); - float _644 = fma(4.2048167614439080352894961833954e-08 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(4.25, _Globals.WhiteTemp, 0.317398726940155029296875)) / fma(1.6145605741257895715534687042236e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, 1.0 - (2.8974181986995972692966461181641e-05 * _Globals.WhiteTemp)); - float _649 = ((2.0 * _633) - (8.0 * _644)) + 4.0; + float _644 = fma(4.2048167614439080352894961833954e-08 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(4.25, _Globals.WhiteTemp, 0.317398726940155029296875)) / fma(1.6145605741257895715534687042236e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(-2.8974181986995972692966461181641e-05, _Globals.WhiteTemp, 1.0)); + float _649 = fma(2.0, _633, _644 * (-8.0)) + 4.0; float2 _653 = float2((3.0 * _633) / _649, (2.0 * _644) / _649); float2 _660 = fast::normalize(float2(_633, _644)); float _665 = fma((-_660.y) * _Globals.WhiteTint, 0.0500000007450580596923828125, _633); float _669 = fma(_660.x * _Globals.WhiteTint, 0.0500000007450580596923828125, _644); - float _674 = ((2.0 * _665) - (8.0 * _669)) + 4.0; - float2 _680 = select(float2(_616, (_616 * fma(-3.0, _616, 2.86999988555908203125)) - 0.2750000059604644775390625), _653, bool2(_Globals.WhiteTemp < 4000.0)) + (float2((3.0 * _665) / _674, (2.0 * _669) / _674) - _653); + float _674 = fma(2.0, _665, _669 * (-8.0)) + 4.0; + float2 _680 = select(float2(_616, fma(_616, fma(-3.0, _616, 2.86999988555908203125), -0.2750000059604644775390625)), _653, bool2(_Globals.WhiteTemp < 4000.0)) + (float2((3.0 * _665) / _674, (2.0 * _669) / _674) - _653); float _683 = fast::max(_680.y, 1.0000000133514319600180897396058e-10); float3 _697 = float3(_680.x / _683, 1.0, ((1.0 - _680.x) - _680.y) / _683) * float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)); - float3 _698 = float3(0.950455963611602783203125, 1.0, 1.0890576839447021484375) * float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)); - float3 _717 = (_599 * ((float3x3(float3(0.41245639324188232421875, 0.3575761020183563232421875, 0.180437505245208740234375), float3(0.21267290413379669189453125, 0.715152204036712646484375, 0.072175003588199615478515625), float3(0.01933390088379383087158203125, 0.119191996753215789794921875, 0.950304090976715087890625)) * ((float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)) * float3x3(float3(_698.x / _697.x, 0.0, 0.0), float3(0.0, _698.y / _697.y, 0.0), float3(0.0, 0.0, _698.z / _697.z))) * float3x3(float3(0.986992895603179931640625, -0.14705429971218109130859375, 0.15996269881725311279296875), float3(0.4323053061962127685546875, 0.518360316753387451171875, 0.049291200935840606689453125), float3(-0.00852870009839534759521484375, 0.0400427989661693572998046875, 0.968486726284027099609375)))) * float3x3(float3(3.2409698963165283203125, -1.53738319873809814453125, -0.4986107647418975830078125), float3(-0.96924364566802978515625, 1.875967502593994140625, 0.0415550582110881805419921875), float3(0.055630080401897430419921875, -0.2039769589900970458984375, 1.05697154998779296875)))) * _547; + float3 _717 = (_599 * ((float3x3(float3(0.41245639324188232421875, 0.3575761020183563232421875, 0.180437505245208740234375), float3(0.21267290413379669189453125, 0.715152204036712646484375, 0.072175003588199615478515625), float3(0.01933390088379383087158203125, 0.119191996753215789794921875, 0.950304090976715087890625)) * ((float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)) * float3x3(float3(0.941379249095916748046875 / _697.x, 0.0, 0.0), float3(0.0, 1.04043638706207275390625 / _697.y, 0.0), float3(0.0, 0.0, 1.08976650238037109375 / _697.z))) * float3x3(float3(0.986992895603179931640625, -0.14705429971218109130859375, 0.15996269881725311279296875), float3(0.4323053061962127685546875, 0.518360316753387451171875, 0.049291200935840606689453125), float3(-0.00852870009839534759521484375, 0.0400427989661693572998046875, 0.968486726284027099609375)))) * float3x3(float3(3.2409698963165283203125, -1.53738319873809814453125, -0.4986107647418975830078125), float3(-0.96924364566802978515625, 1.875967502593994140625, 0.0415550582110881805419921875), float3(0.055630080401897430419921875, -0.2039769589900970458984375, 1.05697154998779296875)))) * _547; float3 _745; if (_Globals.ColorShadow_Tint2.w != 0.0) { @@ -226,7 +225,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _942 = _941 * 0.3333333432674407958984375; float _943 = _928 - 0.4000000059604644775390625; float _948 = fast::max(1.0 - abs(_943 * 2.5), 0.0); - float _956 = fma(float(int(sign(_943 * 5.0))), 1.0 - (_948 * _948), 1.0) * 0.02500000037252902984619140625; + float _956 = fma(float(int(sign(_943 * 5.0))), fma(-_948, _948, 1.0), 1.0) * 0.02500000037252902984619140625; float _969; if (_942 <= 0.053333334624767303466796875) { @@ -256,7 +255,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa } else { - _990 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_974 - _976), ((2.0 * _973) - _974) - _976); + _990 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_974 - _976), fma(2.0, _973, -_974) - _976); } float _995; if (_990 < 0.0) @@ -291,7 +290,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa else { float _1035 = (0.180000007152557373046875 + _Globals.FilmBlackClip) / _1023; - _1056 = (-0.744727432727813720703125) - ((0.5 * log(_1035 / (2.0 - _1035))) * (_1023 / _Globals.FilmSlope)); + _1056 = fma(log(_1035 / (2.0 - _1035)) * (-0.5), _1023 / _Globals.FilmSlope, -0.744727432727813720703125); } float _1061 = ((1.0 - _Globals.FilmToe) / _Globals.FilmSlope) - _1056; float _1063 = (_Globals.FilmShoulder / _Globals.FilmSlope) - _1061; @@ -299,11 +298,11 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float3 _1067 = _1064 * float3(0.4342944622039794921875); float3 _1071 = float3(_Globals.FilmSlope) * fma(_1064, float3(0.4342944622039794921875), float3(_1061)); float3 _1079 = float3(_1056); - float3 _1080 = _1067 - _1079; + float3 _1080 = fma(_1064, float3(0.4342944622039794921875), -_1079); float3 _1092 = float3(_1063); float3 _1106 = fast::clamp(_1080 / float3(_1063 - _1056), float3(0.0), float3(1.0)); float3 _1110 = select(_1106, float3(1.0) - _1106, bool3(_1063 < _1056)); - float3 _1115 = mix(select(_1071, float3(-_Globals.FilmBlackClip) + (float3(2.0 * _1023) / (float3(1.0) + exp(float3(((-2.0) * _Globals.FilmSlope) / _1023) * _1080))), _1067 < _1079), select(_1071, float3(_1026) - (float3(2.0 * _1029) / (float3(1.0) + exp(float3((2.0 * _Globals.FilmSlope) / _1029) * (_1067 - _1092)))), _1067 > _1092), ((float3(3.0) - (float3(2.0) * _1110)) * _1110) * _1110); + float3 _1115 = mix(select(_1071, float3(-_Globals.FilmBlackClip) + (float3(2.0 * _1023) / (float3(1.0) + exp(float3(((-2.0) * _Globals.FilmSlope) / _1023) * _1080))), _1067 < _1079), select(_1071, float3(_1026) - (float3(2.0 * _1029) / (float3(1.0) + exp(float3((2.0 * _Globals.FilmSlope) / _1029) * fma(_1064, float3(0.4342944622039794921875), -_1092)))), _1067 > _1092), (fma(float3(-2.0), _1110, float3(3.0)) * _1110) * _1110); float3 _1119 = fast::max(float3(0.0), mix(float3(dot(_1115, float3(0.272228717803955078125, 0.674081742763519287109375, 0.053689517080783843994140625))), _1115, float3(0.930000007152557373046875))); float3 _1189; if (_Globals.ColorShadow_Tint2.w == 0.0) @@ -330,7 +329,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2973 = _2961 * 12.9200000762939453125; break; } - _2973 = (pow(_2961, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _2973 = fma(pow(_2961, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } float _2974 = _1218.y; @@ -342,7 +341,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2986 = _2974 * 12.9200000762939453125; break; } - _2986 = (pow(_2974, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _2986 = fma(pow(_2974, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } float _2987 = _1218.z; @@ -354,7 +353,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2999 = _2987 * 12.9200000762939453125; break; } - _2999 = (pow(_2987, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _2999 = fma(pow(_2987, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } _3001 = float3(_2973, _2986, _2999); @@ -365,7 +364,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa if (_Globals.OutputDevice == 1u) { float3 _2953 = fast::max(float3(6.1035199905745685100555419921875e-05), (_1218 * _547) * _576); - _2960 = fast::min(_2953 * float3(4.5), (pow(fast::max(_2953, float3(0.017999999225139617919921875)), float3(0.449999988079071044921875)) * float3(1.09899997711181640625)) - float3(0.098999999463558197021484375)); + _2960 = fast::min(_2953 * float3(4.5), fma(pow(fast::max(_2953, float3(0.017999999225139617919921875)), float3(0.449999988079071044921875)), float3(1.09899997711181640625), float3(-0.098999999463558197021484375))); } else { @@ -382,7 +381,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2126 = _2125 * 0.3333333432674407958984375; float _2127 = _2112 - 0.4000000059604644775390625; float _2132 = fast::max(1.0 - abs(_2127 * 2.5), 0.0); - float _2140 = fma(float(int(sign(_2127 * 5.0))), 1.0 - (_2132 * _2132), 1.0) * 0.02500000037252902984619140625; + float _2140 = fma(float(int(sign(_2127 * 5.0))), fma(-_2132, _2132, 1.0), 1.0) * 0.02500000037252902984619140625; float _2153; if (_2126 <= 0.053333334624767303466796875) { @@ -412,7 +411,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa } else { - _2174 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_2158 - _2160), ((2.0 * _2157) - _2158) - _2160); + _2174 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_2158 - _2160), fma(2.0, _2157, -_2158) - _2160); } float _2179; if (_2174 < 0.0) @@ -436,9 +435,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2235; if ((_2185 > (-67.5)) && (_2185 < 67.5)) { - float _2192 = (_2185 - (-67.5)) * 0.0296296291053295135498046875; - int _2193 = int(_2192); - float _2195 = _2192 - float(_2193); + float _2191 = _2185 - (-67.5); + int _2193 = int(_2191 * 0.0296296291053295135498046875); + float _2195 = fma(_2191, 0.0296296291053295135498046875, -float(_2193)); float _2196 = _2195 * _2195; float _2197 = _2196 * _2195; float _2234; @@ -487,7 +486,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float3 _2245 = fast::clamp(fast::clamp(_2156, float3(0.0), float3(65535.0)) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)), float3(0.0), float3(65535.0)); float3 _2248 = mix(float3(dot(_2245, float3(0.272228717803955078125, 0.674081742763519287109375, 0.053689517080783843994140625))), _2245, float3(0.959999978542327880859375)); float _2249 = _2248.x; - float _2258 = log((_2249 <= 0.0) ? 6.103515625e-05 : _2249) * 0.4342944622039794921875; + float _2257 = log((_2249 <= 0.0) ? 6.103515625e-05 : _2249); + float _2258 = _2257 * 0.4342944622039794921875; float _2327; if (_2258 <= (-5.2601776123046875)) { @@ -498,9 +498,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2324; if ((_2258 > (-5.2601776123046875)) && (_2258 < (-0.744727432727813720703125))) { - float _2307 = (_2258 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _2308 = int(_2307); - float _2310 = _2307 - float(_2308); + float _2304 = fma(_2257, 0.4342944622039794921875, 5.2601776123046875); + int _2308 = int(_2304 * 0.6643855571746826171875); + float _2310 = fma(_2304, 0.6643855571746826171875, -float(_2308)); _2324 = dot(float3(_2310 * _2310, _2310, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_475[_2308], _475[_2308 + 1], _475[_2308 + 2])); } else @@ -508,9 +508,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2303; if ((_2258 >= (-0.744727432727813720703125)) && (_2258 < 4.673812389373779296875)) { - float _2286 = (_2258 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _2287 = int(_2286); - float _2289 = _2286 - float(_2287); + float _2283 = fma(_2257, 0.4342944622039794921875, 0.744727432727813720703125); + int _2287 = int(_2283 * 0.55365467071533203125); + float _2289 = fma(_2283, 0.55365467071533203125, -float(_2287)); _2303 = dot(float3(_2289 * _2289, _2289, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_476[_2287], _476[_2287 + 1], _476[_2287 + 2])); } else @@ -522,7 +522,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2327 = _2324; } float _2330 = _2248.y; - float _2334 = log((_2330 <= 0.0) ? 6.103515625e-05 : _2330) * 0.4342944622039794921875; + float _2333 = log((_2330 <= 0.0) ? 6.103515625e-05 : _2330); + float _2334 = _2333 * 0.4342944622039794921875; float _2401; if (_2334 <= (-5.2601776123046875)) { @@ -533,9 +534,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2398; if ((_2334 > (-5.2601776123046875)) && (_2334 < (-0.744727432727813720703125))) { - float _2381 = (_2334 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _2382 = int(_2381); - float _2384 = _2381 - float(_2382); + float _2378 = fma(_2333, 0.4342944622039794921875, 5.2601776123046875); + int _2382 = int(_2378 * 0.6643855571746826171875); + float _2384 = fma(_2378, 0.6643855571746826171875, -float(_2382)); _2398 = dot(float3(_2384 * _2384, _2384, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_475[_2382], _475[_2382 + 1], _475[_2382 + 2])); } else @@ -543,9 +544,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2377; if ((_2334 >= (-0.744727432727813720703125)) && (_2334 < 4.673812389373779296875)) { - float _2360 = (_2334 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _2361 = int(_2360); - float _2363 = _2360 - float(_2361); + float _2357 = fma(_2333, 0.4342944622039794921875, 0.744727432727813720703125); + int _2361 = int(_2357 * 0.55365467071533203125); + float _2363 = fma(_2357, 0.55365467071533203125, -float(_2361)); _2377 = dot(float3(_2363 * _2363, _2363, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_476[_2361], _476[_2361 + 1], _476[_2361 + 2])); } else @@ -557,7 +558,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2401 = _2398; } float _2404 = _2248.z; - float _2408 = log((_2404 <= 0.0) ? 6.103515625e-05 : _2404) * 0.4342944622039794921875; + float _2407 = log((_2404 <= 0.0) ? 6.103515625e-05 : _2404); + float _2408 = _2407 * 0.4342944622039794921875; float _2475; if (_2408 <= (-5.2601776123046875)) { @@ -568,9 +570,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2472; if ((_2408 > (-5.2601776123046875)) && (_2408 < (-0.744727432727813720703125))) { - float _2455 = (_2408 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _2456 = int(_2455); - float _2458 = _2455 - float(_2456); + float _2452 = fma(_2407, 0.4342944622039794921875, 5.2601776123046875); + int _2456 = int(_2452 * 0.6643855571746826171875); + float _2458 = fma(_2452, 0.6643855571746826171875, -float(_2456)); _2472 = dot(float3(_2458 * _2458, _2458, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_475[_2456], _475[_2456 + 1], _475[_2456 + 2])); } else @@ -578,9 +580,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2451; if ((_2408 >= (-0.744727432727813720703125)) && (_2408 < 4.673812389373779296875)) { - float _2434 = (_2408 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _2435 = int(_2434); - float _2437 = _2434 - float(_2435); + float _2431 = fma(_2407, 0.4342944622039794921875, 0.744727432727813720703125); + int _2435 = int(_2431 * 0.55365467071533203125); + float _2437 = fma(_2431, 0.55365467071533203125, -float(_2435)); _2451 = dot(float3(_2437 * _2437, _2437, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_476[_2435], _476[_2435 + 1], _476[_2435 + 2])); } else @@ -592,44 +594,37 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2475 = _2472; } float3 _2479 = (float3(pow(10.0, _2327), pow(10.0, _2401), pow(10.0, _2475)) * float3x3(float3(0.695452213287353515625, 0.140678703784942626953125, 0.16386906802654266357421875), float3(0.0447945632040500640869140625, 0.859671115875244140625, 0.095534317195415496826171875), float3(-0.0055258828215301036834716796875, 0.0040252101607620716094970703125, 1.00150072574615478515625))) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)); - float _2612 = pow(10.0, (float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-0.718548238277435302734375, 2.0810306072235107421875, 3.66812419891357421875)).z); - float _2684 = pow(10.0, dot(float3(0.4444443881511688232421875, 0.66666662693023681640625, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(2.0810306072235107421875, 3.66812419891357421875, 4.0))); float _2685 = _2479.x; float _2688 = log((_2685 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2685); float _2689 = _2688 * 0.4342944622039794921875; - float _2690 = log(pow(10.0, dot(float3(0.3600003719329833984375, 0.600000321865081787109375, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-4.0, -4.0, -3.1573765277862548828125)))); - float _2691 = _2690 * 0.4342944622039794921875; float _2768; - if (_2689 <= _2691) + if (_2689 <= (-3.84832763671875)) { - _2768 = fma(_2688, 1.3028833866119384765625, (-4.0) - (_2690 * 1.3028833866119384765625)); + _2768 = fma(_2688, 1.3028833866119384765625, fma(8.86110210418701171875, 1.3028833866119384765625, -4.0)); } else { - float _2698 = log(_2612) * 0.4342944622039794921875; float _2760; - if ((_2689 > _2691) && (_2689 < _2698)) + if ((_2689 > (-3.84832763671875)) && (_2689 < 0.68124115467071533203125)) { - float _2743 = (7.0 * (_2689 - _2691)) / (_2698 - _2691); + float _2743 = (7.0 * fma(_2688, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2744 = int(_2743); float _2746 = _2743 - float(_2744); _2760 = dot(float3(_2746 * _2746, _2746, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_479[_2744], _479[_2744 + 1], _479[_2744 + 2])); } else { - float _2705 = log(_2684); - float _2706 = _2705 * 0.4342944622039794921875; float _2739; - if ((_2689 >= _2698) && (_2689 < _2706)) + if ((_2689 >= 0.68124115467071533203125) && (_2689 < 3.65370273590087890625)) { - float _2722 = (7.0 * (_2689 - _2698)) / (_2706 - _2698); + float _2722 = (7.0 * fma(_2688, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.4129619598388671875, 0.4342944622039794921875, -0.68124115467071533203125); int _2723 = int(_2722); float _2725 = _2722 - float(_2723); _2739 = dot(float3(_2725 * _2725, _2725, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_480[_2723], _480[_2723 + 1], _480[_2723 + 2])); } else { - _2739 = fma(_2688, 0.026057668030261993408203125, 3.0 - (_2705 * 0.026057668030261993408203125)); + _2739 = fma(_2688, 0.026057668030261993408203125, fma(-8.4129619598388671875, 0.026057668030261993408203125, 3.0)); } _2760 = _2739; } @@ -639,36 +634,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2774 = log((_2771 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2771); float _2775 = _2774 * 0.4342944622039794921875; float _2852; - if (_2775 <= _2691) + if (_2775 <= (-3.84832763671875)) { - _2852 = fma(_2774, 1.3028833866119384765625, (-4.0) - (_2690 * 1.3028833866119384765625)); + _2852 = fma(_2774, 1.3028833866119384765625, fma(8.86110210418701171875, 1.3028833866119384765625, -4.0)); } else { - float _2782 = log(_2612) * 0.4342944622039794921875; float _2844; - if ((_2775 > _2691) && (_2775 < _2782)) + if ((_2775 > (-3.84832763671875)) && (_2775 < 0.68124115467071533203125)) { - float _2827 = (7.0 * (_2775 - _2691)) / (_2782 - _2691); + float _2827 = (7.0 * fma(_2774, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2828 = int(_2827); float _2830 = _2827 - float(_2828); _2844 = dot(float3(_2830 * _2830, _2830, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_479[_2828], _479[_2828 + 1], _479[_2828 + 2])); } else { - float _2789 = log(_2684); - float _2790 = _2789 * 0.4342944622039794921875; float _2823; - if ((_2775 >= _2782) && (_2775 < _2790)) + if ((_2775 >= 0.68124115467071533203125) && (_2775 < 3.65370273590087890625)) { - float _2806 = (7.0 * (_2775 - _2782)) / (_2790 - _2782); + float _2806 = (7.0 * fma(_2774, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.4129619598388671875, 0.4342944622039794921875, -0.68124115467071533203125); int _2807 = int(_2806); float _2809 = _2806 - float(_2807); _2823 = dot(float3(_2809 * _2809, _2809, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_480[_2807], _480[_2807 + 1], _480[_2807 + 2])); } else { - _2823 = fma(_2774, 0.026057668030261993408203125, 3.0 - (_2789 * 0.026057668030261993408203125)); + _2823 = fma(_2774, 0.026057668030261993408203125, fma(-8.4129619598388671875, 0.026057668030261993408203125, 3.0)); } _2844 = _2823; } @@ -678,36 +670,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2858 = log((_2855 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2855); float _2859 = _2858 * 0.4342944622039794921875; float _2936; - if (_2859 <= _2691) + if (_2859 <= (-3.84832763671875)) { - _2936 = fma(_2858, 1.3028833866119384765625, (-4.0) - (_2690 * 1.3028833866119384765625)); + _2936 = fma(_2858, 1.3028833866119384765625, fma(8.86110210418701171875, 1.3028833866119384765625, -4.0)); } else { - float _2866 = log(_2612) * 0.4342944622039794921875; float _2928; - if ((_2859 > _2691) && (_2859 < _2866)) + if ((_2859 > (-3.84832763671875)) && (_2859 < 0.68124115467071533203125)) { - float _2911 = (7.0 * (_2859 - _2691)) / (_2866 - _2691); + float _2911 = (7.0 * fma(_2858, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2912 = int(_2911); float _2914 = _2911 - float(_2912); _2928 = dot(float3(_2914 * _2914, _2914, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_479[_2912], _479[_2912 + 1], _479[_2912 + 2])); } else { - float _2873 = log(_2684); - float _2874 = _2873 * 0.4342944622039794921875; float _2907; - if ((_2859 >= _2866) && (_2859 < _2874)) + if ((_2859 >= 0.68124115467071533203125) && (_2859 < 3.65370273590087890625)) { - float _2890 = (7.0 * (_2859 - _2866)) / (_2874 - _2866); + float _2890 = (7.0 * fma(_2858, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.4129619598388671875, 0.4342944622039794921875, -0.68124115467071533203125); int _2891 = int(_2890); float _2893 = _2890 - float(_2891); _2907 = dot(float3(_2893 * _2893, _2893, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_480[_2891], _480[_2891 + 1], _480[_2891 + 2])); } else { - _2907 = fma(_2858, 0.026057668030261993408203125, 3.0 - (_2873 * 0.026057668030261993408203125)); + _2907 = fma(_2858, 0.026057668030261993408203125, fma(-8.4129619598388671875, 0.026057668030261993408203125, 3.0)); } _2928 = _2907; } @@ -731,7 +720,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1289 = _1288 * 0.3333333432674407958984375; float _1290 = _1275 - 0.4000000059604644775390625; float _1295 = fast::max(1.0 - abs(_1290 * 2.5), 0.0); - float _1303 = fma(float(int(sign(_1290 * 5.0))), 1.0 - (_1295 * _1295), 1.0) * 0.02500000037252902984619140625; + float _1303 = fma(float(int(sign(_1290 * 5.0))), fma(-_1295, _1295, 1.0), 1.0) * 0.02500000037252902984619140625; float _1316; if (_1289 <= 0.053333334624767303466796875) { @@ -761,7 +750,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa } else { - _1337 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_1321 - _1323), ((2.0 * _1320) - _1321) - _1323); + _1337 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_1321 - _1323), fma(2.0, _1320, -_1321) - _1323); } float _1342; if (_1337 < 0.0) @@ -785,9 +774,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1398; if ((_1348 > (-67.5)) && (_1348 < 67.5)) { - float _1355 = (_1348 - (-67.5)) * 0.0296296291053295135498046875; - int _1356 = int(_1355); - float _1358 = _1355 - float(_1356); + float _1354 = _1348 - (-67.5); + int _1356 = int(_1354 * 0.0296296291053295135498046875); + float _1358 = fma(_1354, 0.0296296291053295135498046875, -float(_1356)); float _1359 = _1358 * _1358; float _1360 = _1359 * _1358; float _1397; @@ -836,7 +825,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float3 _1408 = fast::clamp(fast::clamp(_1319, float3(0.0), float3(65535.0)) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)), float3(0.0), float3(65535.0)); float3 _1411 = mix(float3(dot(_1408, float3(0.272228717803955078125, 0.674081742763519287109375, 0.053689517080783843994140625))), _1408, float3(0.959999978542327880859375)); float _1412 = _1411.x; - float _1421 = log((_1412 <= 0.0) ? 6.103515625e-05 : _1412) * 0.4342944622039794921875; + float _1420 = log((_1412 <= 0.0) ? 6.103515625e-05 : _1412); + float _1421 = _1420 * 0.4342944622039794921875; float _1490; if (_1421 <= (-5.2601776123046875)) { @@ -847,9 +837,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1487; if ((_1421 > (-5.2601776123046875)) && (_1421 < (-0.744727432727813720703125))) { - float _1470 = (_1421 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _1471 = int(_1470); - float _1473 = _1470 - float(_1471); + float _1467 = fma(_1420, 0.4342944622039794921875, 5.2601776123046875); + int _1471 = int(_1467 * 0.6643855571746826171875); + float _1473 = fma(_1467, 0.6643855571746826171875, -float(_1471)); _1487 = dot(float3(_1473 * _1473, _1473, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_475[_1471], _475[_1471 + 1], _475[_1471 + 2])); } else @@ -857,9 +847,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1466; if ((_1421 >= (-0.744727432727813720703125)) && (_1421 < 4.673812389373779296875)) { - float _1449 = (_1421 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _1450 = int(_1449); - float _1452 = _1449 - float(_1450); + float _1446 = fma(_1420, 0.4342944622039794921875, 0.744727432727813720703125); + int _1450 = int(_1446 * 0.55365467071533203125); + float _1452 = fma(_1446, 0.55365467071533203125, -float(_1450)); _1466 = dot(float3(_1452 * _1452, _1452, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_476[_1450], _476[_1450 + 1], _476[_1450 + 2])); } else @@ -871,7 +861,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1490 = _1487; } float _1493 = _1411.y; - float _1497 = log((_1493 <= 0.0) ? 6.103515625e-05 : _1493) * 0.4342944622039794921875; + float _1496 = log((_1493 <= 0.0) ? 6.103515625e-05 : _1493); + float _1497 = _1496 * 0.4342944622039794921875; float _1564; if (_1497 <= (-5.2601776123046875)) { @@ -882,9 +873,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1561; if ((_1497 > (-5.2601776123046875)) && (_1497 < (-0.744727432727813720703125))) { - float _1544 = (_1497 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _1545 = int(_1544); - float _1547 = _1544 - float(_1545); + float _1541 = fma(_1496, 0.4342944622039794921875, 5.2601776123046875); + int _1545 = int(_1541 * 0.6643855571746826171875); + float _1547 = fma(_1541, 0.6643855571746826171875, -float(_1545)); _1561 = dot(float3(_1547 * _1547, _1547, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_475[_1545], _475[_1545 + 1], _475[_1545 + 2])); } else @@ -892,9 +883,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1540; if ((_1497 >= (-0.744727432727813720703125)) && (_1497 < 4.673812389373779296875)) { - float _1523 = (_1497 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _1524 = int(_1523); - float _1526 = _1523 - float(_1524); + float _1520 = fma(_1496, 0.4342944622039794921875, 0.744727432727813720703125); + int _1524 = int(_1520 * 0.55365467071533203125); + float _1526 = fma(_1520, 0.55365467071533203125, -float(_1524)); _1540 = dot(float3(_1526 * _1526, _1526, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_476[_1524], _476[_1524 + 1], _476[_1524 + 2])); } else @@ -906,7 +897,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1564 = _1561; } float _1567 = _1411.z; - float _1571 = log((_1567 <= 0.0) ? 6.103515625e-05 : _1567) * 0.4342944622039794921875; + float _1570 = log((_1567 <= 0.0) ? 6.103515625e-05 : _1567); + float _1571 = _1570 * 0.4342944622039794921875; float _1638; if (_1571 <= (-5.2601776123046875)) { @@ -917,9 +909,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1635; if ((_1571 > (-5.2601776123046875)) && (_1571 < (-0.744727432727813720703125))) { - float _1618 = (_1571 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _1619 = int(_1618); - float _1621 = _1618 - float(_1619); + float _1615 = fma(_1570, 0.4342944622039794921875, 5.2601776123046875); + int _1619 = int(_1615 * 0.6643855571746826171875); + float _1621 = fma(_1615, 0.6643855571746826171875, -float(_1619)); _1635 = dot(float3(_1621 * _1621, _1621, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_475[_1619], _475[_1619 + 1], _475[_1619 + 2])); } else @@ -927,9 +919,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1614; if ((_1571 >= (-0.744727432727813720703125)) && (_1571 < 4.673812389373779296875)) { - float _1597 = (_1571 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _1598 = int(_1597); - float _1600 = _1597 - float(_1598); + float _1594 = fma(_1570, 0.4342944622039794921875, 0.744727432727813720703125); + int _1598 = int(_1594 * 0.55365467071533203125); + float _1600 = fma(_1594, 0.55365467071533203125, -float(_1598)); _1614 = dot(float3(_1600 * _1600, _1600, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_476[_1598], _476[_1598 + 1], _476[_1598 + 2])); } else @@ -941,43 +933,37 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1638 = _1635; } float3 _1642 = (float3(pow(10.0, _1490), pow(10.0, _1564), pow(10.0, _1638)) * float3x3(float3(0.695452213287353515625, 0.140678703784942626953125, 0.16386906802654266357421875), float3(0.0447945632040500640869140625, 0.859671115875244140625, 0.095534317195415496826171875), float3(-0.0055258828215301036834716796875, 0.0040252101607620716094970703125, 1.00150072574615478515625))) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)); - float _1775 = pow(10.0, (float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-0.718548238277435302734375, 2.0810306072235107421875, 3.66812419891357421875)).z); - float _1847 = pow(10.0, dot(float3(0.69444429874420166015625, 0.8333332538604736328125, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(2.0810306072235107421875, 3.66812419891357421875, 4.0))); float _1848 = _1642.x; float _1851 = log((_1848 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _1848); float _1852 = _1851 * 0.4342944622039794921875; - float _1854 = log(pow(10.0, dot(float3(0.3600003719329833984375, 0.600000321865081787109375, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-4.0, -4.0, -3.1573765277862548828125)))) * 0.4342944622039794921875; float _1926; - if (_1852 <= _1854) + if (_1852 <= (-3.84832763671875)) { _1926 = -2.3010299205780029296875; } else { - float _1861 = log(_1775) * 0.4342944622039794921875; float _1923; - if ((_1852 > _1854) && (_1852 < _1861)) + if ((_1852 > (-3.84832763671875)) && (_1852 < 0.68124115467071533203125)) { - float _1906 = (7.0 * (_1852 - _1854)) / (_1861 - _1854); + float _1906 = (7.0 * fma(_1851, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _1907 = int(_1906); float _1909 = _1906 - float(_1907); _1923 = dot(float3(_1909 * _1909, _1909, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_482[_1907], _482[_1907 + 1], _482[_1907 + 2])); } else { - float _1868 = log(_1847); - float _1869 = _1868 * 0.4342944622039794921875; float _1902; - if ((_1852 >= _1861) && (_1852 < _1869)) + if ((_1852 >= 0.68124115467071533203125) && (_1852 < 3.761315822601318359375)) { - float _1885 = (7.0 * (_1852 - _1861)) / (_1869 - _1861); + float _1885 = (7.0 * fma(_1851, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.66075038909912109375, 0.4342944622039794921875, -0.68124115467071533203125); int _1886 = int(_1885); float _1888 = _1885 - float(_1886); _1902 = dot(float3(_1888 * _1888, _1888, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_483[_1886], _483[_1886 + 1], _483[_1886 + 2])); } else { - _1902 = fma(_1851, 0.05211533606052398681640625, 3.3010299205780029296875 - (_1868 * 0.05211533606052398681640625)); + _1902 = fma(_1851, 0.05211533606052398681640625, fma(-8.66075038909912109375, 0.05211533606052398681640625, 3.3010299205780029296875)); } _1923 = _1902; } @@ -987,36 +973,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1932 = log((_1929 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _1929); float _1933 = _1932 * 0.4342944622039794921875; float _2005; - if (_1933 <= _1854) + if (_1933 <= (-3.84832763671875)) { _2005 = -2.3010299205780029296875; } else { - float _1940 = log(_1775) * 0.4342944622039794921875; float _2002; - if ((_1933 > _1854) && (_1933 < _1940)) + if ((_1933 > (-3.84832763671875)) && (_1933 < 0.68124115467071533203125)) { - float _1985 = (7.0 * (_1933 - _1854)) / (_1940 - _1854); + float _1985 = (7.0 * fma(_1932, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _1986 = int(_1985); float _1988 = _1985 - float(_1986); _2002 = dot(float3(_1988 * _1988, _1988, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_482[_1986], _482[_1986 + 1], _482[_1986 + 2])); } else { - float _1947 = log(_1847); - float _1948 = _1947 * 0.4342944622039794921875; float _1981; - if ((_1933 >= _1940) && (_1933 < _1948)) + if ((_1933 >= 0.68124115467071533203125) && (_1933 < 3.761315822601318359375)) { - float _1964 = (7.0 * (_1933 - _1940)) / (_1948 - _1940); + float _1964 = (7.0 * fma(_1932, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.66075038909912109375, 0.4342944622039794921875, -0.68124115467071533203125); int _1965 = int(_1964); float _1967 = _1964 - float(_1965); _1981 = dot(float3(_1967 * _1967, _1967, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_483[_1965], _483[_1965 + 1], _483[_1965 + 2])); } else { - _1981 = fma(_1932, 0.05211533606052398681640625, 3.3010299205780029296875 - (_1947 * 0.05211533606052398681640625)); + _1981 = fma(_1932, 0.05211533606052398681640625, fma(-8.66075038909912109375, 0.05211533606052398681640625, 3.3010299205780029296875)); } _2002 = _1981; } @@ -1026,36 +1009,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2011 = log((_2008 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2008); float _2012 = _2011 * 0.4342944622039794921875; float _2084; - if (_2012 <= _1854) + if (_2012 <= (-3.84832763671875)) { _2084 = -2.3010299205780029296875; } else { - float _2019 = log(_1775) * 0.4342944622039794921875; float _2081; - if ((_2012 > _1854) && (_2012 < _2019)) + if ((_2012 > (-3.84832763671875)) && (_2012 < 0.68124115467071533203125)) { - float _2064 = (7.0 * (_2012 - _1854)) / (_2019 - _1854); + float _2064 = (7.0 * fma(_2011, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2065 = int(_2064); float _2067 = _2064 - float(_2065); _2081 = dot(float3(_2067 * _2067, _2067, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_482[_2065], _482[_2065 + 1], _482[_2065 + 2])); } else { - float _2026 = log(_1847); - float _2027 = _2026 * 0.4342944622039794921875; float _2060; - if ((_2012 >= _2019) && (_2012 < _2027)) + if ((_2012 >= 0.68124115467071533203125) && (_2012 < 3.761315822601318359375)) { - float _2043 = (7.0 * (_2012 - _2019)) / (_2027 - _2019); + float _2043 = (7.0 * fma(_2011, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.66075038909912109375, 0.4342944622039794921875, -0.68124115467071533203125); int _2044 = int(_2043); float _2046 = _2043 - float(_2044); _2060 = dot(float3(_2046 * _2046, _2046, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_483[_2044], _483[_2044 + 1], _483[_2044 + 2])); } else { - _2060 = fma(_2011, 0.05211533606052398681640625, 3.3010299205780029296875 - (_2026 * 0.05211533606052398681640625)); + _2060 = fma(_2011, 0.05211533606052398681640625, fma(-8.66075038909912109375, 0.05211533606052398681640625, 3.3010299205780029296875)); } _2081 = _2060; } diff --git a/reference/opt/shaders-ue4/asm/frag/padded-float-array-member-defef.asm.frag b/reference/opt/shaders-ue4/asm/frag/padded-float-array-member-defef.asm.frag index d74ada05..8b53cca3 100644 --- a/reference/opt/shaders-ue4/asm/frag/padded-float-array-member-defef.asm.frag +++ b/reference/opt/shaders-ue4/asm/frag/padded-float-array-member-defef.asm.frag @@ -163,27 +163,26 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa if (_Globals.OutputDevice >= 3u) { float3 _617 = pow(_603, float3(0.0126833133399486541748046875)); - _625 = pow(fast::max(float3(0.0), _617 - float3(0.8359375)) / (float3(18.8515625) - (float3(18.6875) * _617)), float3(6.277394771575927734375)) * float3(10000.0); + _625 = pow(fast::max(float3(0.0), _617 - float3(0.8359375)) / fma(float3(-18.6875), _617, float3(18.8515625)), float3(6.277394771575927734375)) * float3(10000.0); } else { - _625 = (exp2((_603 - float3(0.434017598628997802734375)) * float3(14.0)) * float3(0.180000007152557373046875)) - float3(0.00266771926544606685638427734375); + _625 = fma(exp2((_603 - float3(0.434017598628997802734375)) * float3(14.0)), float3(0.180000007152557373046875), float3(-0.00266771926544606685638427734375)); } float _628 = _Globals.WhiteTemp * 1.00055634975433349609375; float _642 = (_628 <= 7000.0) ? (0.24406300485134124755859375 + ((99.1100006103515625 + ((2967800.0 - (4604438528.0 / _Globals.WhiteTemp)) / _628)) / _628)) : (0.23703999817371368408203125 + ((247.4799957275390625 + ((1901800.0 - (2005284352.0 / _Globals.WhiteTemp)) / _628)) / _628)); float _659 = fma(1.2864121856637211749330163002014e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(0.00015411825734190642833709716796875, _Globals.WhiteTemp, 0.860117733478546142578125)) / fma(7.0814513719597016461193561553955e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(0.0008424202096648514270782470703125, _Globals.WhiteTemp, 1.0)); - float _670 = fma(4.2048167614439080352894961833954e-08 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(4.25, _Globals.WhiteTemp, 0.317398726940155029296875)) / fma(1.6145605741257895715534687042236e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, 1.0 - (2.8974181986995972692966461181641e-05 * _Globals.WhiteTemp)); - float _675 = ((2.0 * _659) - (8.0 * _670)) + 4.0; + float _670 = fma(4.2048167614439080352894961833954e-08 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(4.25, _Globals.WhiteTemp, 0.317398726940155029296875)) / fma(1.6145605741257895715534687042236e-07 * _Globals.WhiteTemp, _Globals.WhiteTemp, fma(-2.8974181986995972692966461181641e-05, _Globals.WhiteTemp, 1.0)); + float _675 = fma(2.0, _659, _670 * (-8.0)) + 4.0; float2 _679 = float2((3.0 * _659) / _675, (2.0 * _670) / _675); float2 _686 = fast::normalize(float2(_659, _670)); float _691 = fma((-_686.y) * _Globals.WhiteTint, 0.0500000007450580596923828125, _659); float _695 = fma(_686.x * _Globals.WhiteTint, 0.0500000007450580596923828125, _670); - float _700 = ((2.0 * _691) - (8.0 * _695)) + 4.0; - float2 _706 = select(float2(_642, (_642 * fma(-3.0, _642, 2.86999988555908203125)) - 0.2750000059604644775390625), _679, bool2(_Globals.WhiteTemp < 4000.0)) + (float2((3.0 * _691) / _700, (2.0 * _695) / _700) - _679); + float _700 = fma(2.0, _691, _695 * (-8.0)) + 4.0; + float2 _706 = select(float2(_642, fma(_642, fma(-3.0, _642, 2.86999988555908203125), -0.2750000059604644775390625)), _679, bool2(_Globals.WhiteTemp < 4000.0)) + (float2((3.0 * _691) / _700, (2.0 * _695) / _700) - _679); float _709 = fast::max(_706.y, 1.0000000133514319600180897396058e-10); float3 _723 = float3(_706.x / _709, 1.0, ((1.0 - _706.x) - _706.y) / _709) * float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)); - float3 _724 = float3(0.950455963611602783203125, 1.0, 1.0890576839447021484375) * float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)); - float3 _743 = (_625 * ((float3x3(float3(0.41245639324188232421875, 0.3575761020183563232421875, 0.180437505245208740234375), float3(0.21267290413379669189453125, 0.715152204036712646484375, 0.072175003588199615478515625), float3(0.01933390088379383087158203125, 0.119191996753215789794921875, 0.950304090976715087890625)) * ((float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)) * float3x3(float3(_724.x / _723.x, 0.0, 0.0), float3(0.0, _724.y / _723.y, 0.0), float3(0.0, 0.0, _724.z / _723.z))) * float3x3(float3(0.986992895603179931640625, -0.14705429971218109130859375, 0.15996269881725311279296875), float3(0.4323053061962127685546875, 0.518360316753387451171875, 0.049291200935840606689453125), float3(-0.00852870009839534759521484375, 0.0400427989661693572998046875, 0.968486726284027099609375)))) * float3x3(float3(3.2409698963165283203125, -1.53738319873809814453125, -0.4986107647418975830078125), float3(-0.96924364566802978515625, 1.875967502593994140625, 0.0415550582110881805419921875), float3(0.055630080401897430419921875, -0.2039769589900970458984375, 1.05697154998779296875)))) * _573; + float3 _743 = (_625 * ((float3x3(float3(0.41245639324188232421875, 0.3575761020183563232421875, 0.180437505245208740234375), float3(0.21267290413379669189453125, 0.715152204036712646484375, 0.072175003588199615478515625), float3(0.01933390088379383087158203125, 0.119191996753215789794921875, 0.950304090976715087890625)) * ((float3x3(float3(0.89509999752044677734375, 0.2664000093936920166015625, -0.16140000522136688232421875), float3(-0.750199973583221435546875, 1.71350002288818359375, 0.0366999991238117218017578125), float3(0.0388999991118907928466796875, -0.06849999725818634033203125, 1.02960002422332763671875)) * float3x3(float3(0.941379249095916748046875 / _723.x, 0.0, 0.0), float3(0.0, 1.04043638706207275390625 / _723.y, 0.0), float3(0.0, 0.0, 1.08976650238037109375 / _723.z))) * float3x3(float3(0.986992895603179931640625, -0.14705429971218109130859375, 0.15996269881725311279296875), float3(0.4323053061962127685546875, 0.518360316753387451171875, 0.049291200935840606689453125), float3(-0.00852870009839534759521484375, 0.0400427989661693572998046875, 0.968486726284027099609375)))) * float3x3(float3(3.2409698963165283203125, -1.53738319873809814453125, -0.4986107647418975830078125), float3(-0.96924364566802978515625, 1.875967502593994140625, 0.0415550582110881805419921875), float3(0.055630080401897430419921875, -0.2039769589900970458984375, 1.05697154998779296875)))) * _573; float3 _771; if (_Globals.ColorShadow_Tint2.w != 0.0) { @@ -227,7 +226,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _968 = _967 * 0.3333333432674407958984375; float _969 = _954 - 0.4000000059604644775390625; float _974 = fast::max(1.0 - abs(_969 * 2.5), 0.0); - float _982 = fma(float(int(sign(_969 * 5.0))), 1.0 - (_974 * _974), 1.0) * 0.02500000037252902984619140625; + float _982 = fma(float(int(sign(_969 * 5.0))), fma(-_974, _974, 1.0), 1.0) * 0.02500000037252902984619140625; float _995; if (_968 <= 0.053333334624767303466796875) { @@ -257,7 +256,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa } else { - _1016 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_1000 - _1002), ((2.0 * _999) - _1000) - _1002); + _1016 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_1000 - _1002), fma(2.0, _999, -_1000) - _1002); } float _1021; if (_1016 < 0.0) @@ -292,7 +291,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa else { float _1061 = (0.180000007152557373046875 + _Globals.FilmBlackClip) / _1049; - _1082 = (-0.744727432727813720703125) - ((0.5 * log(_1061 / (2.0 - _1061))) * (_1049 / _Globals.FilmSlope)); + _1082 = fma(log(_1061 / (2.0 - _1061)) * (-0.5), _1049 / _Globals.FilmSlope, -0.744727432727813720703125); } float _1087 = ((1.0 - _Globals.FilmToe) / _Globals.FilmSlope) - _1082; float _1089 = (_Globals.FilmShoulder / _Globals.FilmSlope) - _1087; @@ -300,11 +299,11 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float3 _1093 = _1090 * float3(0.4342944622039794921875); float3 _1097 = float3(_Globals.FilmSlope) * fma(_1090, float3(0.4342944622039794921875), float3(_1087)); float3 _1105 = float3(_1082); - float3 _1106 = _1093 - _1105; + float3 _1106 = fma(_1090, float3(0.4342944622039794921875), -_1105); float3 _1118 = float3(_1089); float3 _1132 = fast::clamp(_1106 / float3(_1089 - _1082), float3(0.0), float3(1.0)); float3 _1136 = select(_1132, float3(1.0) - _1132, bool3(_1089 < _1082)); - float3 _1141 = mix(select(_1097, float3(-_Globals.FilmBlackClip) + (float3(2.0 * _1049) / (float3(1.0) + exp(float3(((-2.0) * _Globals.FilmSlope) / _1049) * _1106))), _1093 < _1105), select(_1097, float3(_1052) - (float3(2.0 * _1055) / (float3(1.0) + exp(float3((2.0 * _Globals.FilmSlope) / _1055) * (_1093 - _1118)))), _1093 > _1118), ((float3(3.0) - (float3(2.0) * _1136)) * _1136) * _1136); + float3 _1141 = mix(select(_1097, float3(-_Globals.FilmBlackClip) + (float3(2.0 * _1049) / (float3(1.0) + exp(float3(((-2.0) * _Globals.FilmSlope) / _1049) * _1106))), _1093 < _1105), select(_1097, float3(_1052) - (float3(2.0 * _1055) / (float3(1.0) + exp(float3((2.0 * _Globals.FilmSlope) / _1055) * fma(_1090, float3(0.4342944622039794921875), -_1118)))), _1093 > _1118), (fma(float3(-2.0), _1136, float3(3.0)) * _1136) * _1136); float3 _1145 = fast::max(float3(0.0), mix(float3(dot(_1141, float3(0.272228717803955078125, 0.674081742763519287109375, 0.053689517080783843994140625))), _1141, float3(0.930000007152557373046875))); float3 _1215; if (_Globals.ColorShadow_Tint2.w == 0.0) @@ -328,7 +327,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1229 = _1217 * 12.9200000762939453125; break; } - _1229 = (pow(_1217, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _1229 = fma(pow(_1217, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } float _1230 = _1216.y; @@ -340,7 +339,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1242 = _1230 * 12.9200000762939453125; break; } - _1242 = (pow(_1230, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _1242 = fma(pow(_1230, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } float _1243 = _1216.z; @@ -352,12 +351,12 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1255 = _1243 * 12.9200000762939453125; break; } - _1255 = (pow(_1243, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _1255 = fma(pow(_1243, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } float3 _1256 = float3(_1229, _1242, _1255); float3 _1258 = fma(_1256, float3(0.9375), float3(0.03125)); - float _1270 = (_1258.z * 16.0) - 0.5; + float _1270 = fma(_1258.z, 16.0, -0.5); float _1271 = floor(_1270); float _1274 = _1258.x + _1271; float _1276 = _1258.y; @@ -378,7 +377,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _3075 = _3063 * 12.9200000762939453125; break; } - _3075 = (pow(_3063, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _3075 = fma(pow(_3063, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } float _3076 = _1324.y; @@ -390,7 +389,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _3088 = _3076 * 12.9200000762939453125; break; } - _3088 = (pow(_3076, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _3088 = fma(pow(_3076, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } float _3089 = _1324.z; @@ -402,7 +401,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _3101 = _3089 * 12.9200000762939453125; break; } - _3101 = (pow(_3089, 0.4166666567325592041015625) * 1.05499994754791259765625) - 0.054999999701976776123046875; + _3101 = fma(pow(_3089, 0.4166666567325592041015625), 1.05499994754791259765625, -0.054999999701976776123046875); break; } _3103 = float3(_3075, _3088, _3101); @@ -413,7 +412,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa if (_Globals.OutputDevice == 1u) { float3 _3055 = fast::max(float3(6.1035199905745685100555419921875e-05), (_1324 * _573) * _602); - _3062 = fast::min(_3055 * float3(4.5), (pow(fast::max(_3055, float3(0.017999999225139617919921875)), float3(0.449999988079071044921875)) * float3(1.09899997711181640625)) - float3(0.098999999463558197021484375)); + _3062 = fast::min(_3055 * float3(4.5), fma(pow(fast::max(_3055, float3(0.017999999225139617919921875)), float3(0.449999988079071044921875)), float3(1.09899997711181640625), float3(-0.098999999463558197021484375))); } else { @@ -430,7 +429,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2230 = _2229 * 0.3333333432674407958984375; float _2231 = _2216 - 0.4000000059604644775390625; float _2236 = fast::max(1.0 - abs(_2231 * 2.5), 0.0); - float _2244 = fma(float(int(sign(_2231 * 5.0))), 1.0 - (_2236 * _2236), 1.0) * 0.02500000037252902984619140625; + float _2244 = fma(float(int(sign(_2231 * 5.0))), fma(-_2236, _2236, 1.0), 1.0) * 0.02500000037252902984619140625; float _2257; if (_2230 <= 0.053333334624767303466796875) { @@ -460,7 +459,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa } else { - _2278 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_2262 - _2264), ((2.0 * _2261) - _2262) - _2264); + _2278 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_2262 - _2264), fma(2.0, _2261, -_2262) - _2264); } float _2283; if (_2278 < 0.0) @@ -484,9 +483,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2339; if ((_2289 > (-67.5)) && (_2289 < 67.5)) { - float _2296 = (_2289 - (-67.5)) * 0.0296296291053295135498046875; - int _2297 = int(_2296); - float _2299 = _2296 - float(_2297); + float _2295 = _2289 - (-67.5); + int _2297 = int(_2295 * 0.0296296291053295135498046875); + float _2299 = fma(_2295, 0.0296296291053295135498046875, -float(_2297)); float _2300 = _2299 * _2299; float _2301 = _2300 * _2299; float _2338; @@ -535,7 +534,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float3 _2349 = fast::clamp(fast::clamp(_2260, float3(0.0), float3(65535.0)) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)), float3(0.0), float3(65535.0)); float3 _2352 = mix(float3(dot(_2349, float3(0.272228717803955078125, 0.674081742763519287109375, 0.053689517080783843994140625))), _2349, float3(0.959999978542327880859375)); float _2353 = _2352.x; - float _2362 = log((_2353 <= 0.0) ? 6.103515625e-05 : _2353) * 0.4342944622039794921875; + float _2361 = log((_2353 <= 0.0) ? 6.103515625e-05 : _2353); + float _2362 = _2361 * 0.4342944622039794921875; float _2431; if (_2362 <= (-5.2601776123046875)) { @@ -546,9 +546,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2428; if ((_2362 > (-5.2601776123046875)) && (_2362 < (-0.744727432727813720703125))) { - float _2411 = (_2362 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _2412 = int(_2411); - float _2414 = _2411 - float(_2412); + float _2408 = fma(_2361, 0.4342944622039794921875, 5.2601776123046875); + int _2412 = int(_2408 * 0.6643855571746826171875); + float _2414 = fma(_2408, 0.6643855571746826171875, -float(_2412)); _2428 = dot(float3(_2414 * _2414, _2414, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_499[_2412], _499[_2412 + 1], _499[_2412 + 2])); } else @@ -556,9 +556,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2407; if ((_2362 >= (-0.744727432727813720703125)) && (_2362 < 4.673812389373779296875)) { - float _2390 = (_2362 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _2391 = int(_2390); - float _2393 = _2390 - float(_2391); + float _2387 = fma(_2361, 0.4342944622039794921875, 0.744727432727813720703125); + int _2391 = int(_2387 * 0.55365467071533203125); + float _2393 = fma(_2387, 0.55365467071533203125, -float(_2391)); _2407 = dot(float3(_2393 * _2393, _2393, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_500[_2391], _500[_2391 + 1], _500[_2391 + 2])); } else @@ -570,7 +570,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2431 = _2428; } float _2434 = _2352.y; - float _2438 = log((_2434 <= 0.0) ? 6.103515625e-05 : _2434) * 0.4342944622039794921875; + float _2437 = log((_2434 <= 0.0) ? 6.103515625e-05 : _2434); + float _2438 = _2437 * 0.4342944622039794921875; float _2505; if (_2438 <= (-5.2601776123046875)) { @@ -581,9 +582,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2502; if ((_2438 > (-5.2601776123046875)) && (_2438 < (-0.744727432727813720703125))) { - float _2485 = (_2438 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _2486 = int(_2485); - float _2488 = _2485 - float(_2486); + float _2482 = fma(_2437, 0.4342944622039794921875, 5.2601776123046875); + int _2486 = int(_2482 * 0.6643855571746826171875); + float _2488 = fma(_2482, 0.6643855571746826171875, -float(_2486)); _2502 = dot(float3(_2488 * _2488, _2488, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_499[_2486], _499[_2486 + 1], _499[_2486 + 2])); } else @@ -591,9 +592,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2481; if ((_2438 >= (-0.744727432727813720703125)) && (_2438 < 4.673812389373779296875)) { - float _2464 = (_2438 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _2465 = int(_2464); - float _2467 = _2464 - float(_2465); + float _2461 = fma(_2437, 0.4342944622039794921875, 0.744727432727813720703125); + int _2465 = int(_2461 * 0.55365467071533203125); + float _2467 = fma(_2461, 0.55365467071533203125, -float(_2465)); _2481 = dot(float3(_2467 * _2467, _2467, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_500[_2465], _500[_2465 + 1], _500[_2465 + 2])); } else @@ -605,7 +606,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2505 = _2502; } float _2508 = _2352.z; - float _2512 = log((_2508 <= 0.0) ? 6.103515625e-05 : _2508) * 0.4342944622039794921875; + float _2511 = log((_2508 <= 0.0) ? 6.103515625e-05 : _2508); + float _2512 = _2511 * 0.4342944622039794921875; float _2579; if (_2512 <= (-5.2601776123046875)) { @@ -616,9 +618,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2576; if ((_2512 > (-5.2601776123046875)) && (_2512 < (-0.744727432727813720703125))) { - float _2559 = (_2512 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _2560 = int(_2559); - float _2562 = _2559 - float(_2560); + float _2556 = fma(_2511, 0.4342944622039794921875, 5.2601776123046875); + int _2560 = int(_2556 * 0.6643855571746826171875); + float _2562 = fma(_2556, 0.6643855571746826171875, -float(_2560)); _2576 = dot(float3(_2562 * _2562, _2562, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_499[_2560], _499[_2560 + 1], _499[_2560 + 2])); } else @@ -626,9 +628,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2555; if ((_2512 >= (-0.744727432727813720703125)) && (_2512 < 4.673812389373779296875)) { - float _2538 = (_2512 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _2539 = int(_2538); - float _2541 = _2538 - float(_2539); + float _2535 = fma(_2511, 0.4342944622039794921875, 0.744727432727813720703125); + int _2539 = int(_2535 * 0.55365467071533203125); + float _2541 = fma(_2535, 0.55365467071533203125, -float(_2539)); _2555 = dot(float3(_2541 * _2541, _2541, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_500[_2539], _500[_2539 + 1], _500[_2539 + 2])); } else @@ -640,44 +642,37 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _2579 = _2576; } float3 _2583 = (float3(pow(10.0, _2431), pow(10.0, _2505), pow(10.0, _2579)) * float3x3(float3(0.695452213287353515625, 0.140678703784942626953125, 0.16386906802654266357421875), float3(0.0447945632040500640869140625, 0.859671115875244140625, 0.095534317195415496826171875), float3(-0.0055258828215301036834716796875, 0.0040252101607620716094970703125, 1.00150072574615478515625))) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)); - float _2714 = pow(10.0, (float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-0.718548238277435302734375, 2.0810306072235107421875, 3.66812419891357421875)).z); - float _2786 = pow(10.0, dot(float3(0.4444443881511688232421875, 0.66666662693023681640625, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(2.0810306072235107421875, 3.66812419891357421875, 4.0))); float _2787 = _2583.x; float _2790 = log((_2787 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2787); float _2791 = _2790 * 0.4342944622039794921875; - float _2792 = log(pow(10.0, dot(float3(0.3600003719329833984375, 0.600000321865081787109375, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-4.0, -4.0, -3.1573765277862548828125)))); - float _2793 = _2792 * 0.4342944622039794921875; float _2870; - if (_2791 <= _2793) + if (_2791 <= (-3.84832763671875)) { - _2870 = fma(_2790, 1.3028833866119384765625, (-4.0) - (_2792 * 1.3028833866119384765625)); + _2870 = fma(_2790, 1.3028833866119384765625, fma(8.86110210418701171875, 1.3028833866119384765625, -4.0)); } else { - float _2800 = log(_2714) * 0.4342944622039794921875; float _2862; - if ((_2791 > _2793) && (_2791 < _2800)) + if ((_2791 > (-3.84832763671875)) && (_2791 < 0.68124115467071533203125)) { - float _2845 = (7.0 * (_2791 - _2793)) / (_2800 - _2793); + float _2845 = (7.0 * fma(_2790, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2846 = int(_2845); float _2848 = _2845 - float(_2846); _2862 = dot(float3(_2848 * _2848, _2848, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_503[_2846], _503[_2846 + 1], _503[_2846 + 2])); } else { - float _2807 = log(_2786); - float _2808 = _2807 * 0.4342944622039794921875; float _2841; - if ((_2791 >= _2800) && (_2791 < _2808)) + if ((_2791 >= 0.68124115467071533203125) && (_2791 < 3.65370273590087890625)) { - float _2824 = (7.0 * (_2791 - _2800)) / (_2808 - _2800); + float _2824 = (7.0 * fma(_2790, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.4129619598388671875, 0.4342944622039794921875, -0.68124115467071533203125); int _2825 = int(_2824); float _2827 = _2824 - float(_2825); _2841 = dot(float3(_2827 * _2827, _2827, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_504[_2825], _504[_2825 + 1], _504[_2825 + 2])); } else { - _2841 = fma(_2790, 0.026057668030261993408203125, 3.0 - (_2807 * 0.026057668030261993408203125)); + _2841 = fma(_2790, 0.026057668030261993408203125, fma(-8.4129619598388671875, 0.026057668030261993408203125, 3.0)); } _2862 = _2841; } @@ -687,36 +682,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2876 = log((_2873 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2873); float _2877 = _2876 * 0.4342944622039794921875; float _2954; - if (_2877 <= _2793) + if (_2877 <= (-3.84832763671875)) { - _2954 = fma(_2876, 1.3028833866119384765625, (-4.0) - (_2792 * 1.3028833866119384765625)); + _2954 = fma(_2876, 1.3028833866119384765625, fma(8.86110210418701171875, 1.3028833866119384765625, -4.0)); } else { - float _2884 = log(_2714) * 0.4342944622039794921875; float _2946; - if ((_2877 > _2793) && (_2877 < _2884)) + if ((_2877 > (-3.84832763671875)) && (_2877 < 0.68124115467071533203125)) { - float _2929 = (7.0 * (_2877 - _2793)) / (_2884 - _2793); + float _2929 = (7.0 * fma(_2876, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2930 = int(_2929); float _2932 = _2929 - float(_2930); _2946 = dot(float3(_2932 * _2932, _2932, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_503[_2930], _503[_2930 + 1], _503[_2930 + 2])); } else { - float _2891 = log(_2786); - float _2892 = _2891 * 0.4342944622039794921875; float _2925; - if ((_2877 >= _2884) && (_2877 < _2892)) + if ((_2877 >= 0.68124115467071533203125) && (_2877 < 3.65370273590087890625)) { - float _2908 = (7.0 * (_2877 - _2884)) / (_2892 - _2884); + float _2908 = (7.0 * fma(_2876, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.4129619598388671875, 0.4342944622039794921875, -0.68124115467071533203125); int _2909 = int(_2908); float _2911 = _2908 - float(_2909); _2925 = dot(float3(_2911 * _2911, _2911, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_504[_2909], _504[_2909 + 1], _504[_2909 + 2])); } else { - _2925 = fma(_2876, 0.026057668030261993408203125, 3.0 - (_2891 * 0.026057668030261993408203125)); + _2925 = fma(_2876, 0.026057668030261993408203125, fma(-8.4129619598388671875, 0.026057668030261993408203125, 3.0)); } _2946 = _2925; } @@ -726,36 +718,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2960 = log((_2957 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2957); float _2961 = _2960 * 0.4342944622039794921875; float _3038; - if (_2961 <= _2793) + if (_2961 <= (-3.84832763671875)) { - _3038 = fma(_2960, 1.3028833866119384765625, (-4.0) - (_2792 * 1.3028833866119384765625)); + _3038 = fma(_2960, 1.3028833866119384765625, fma(8.86110210418701171875, 1.3028833866119384765625, -4.0)); } else { - float _2968 = log(_2714) * 0.4342944622039794921875; float _3030; - if ((_2961 > _2793) && (_2961 < _2968)) + if ((_2961 > (-3.84832763671875)) && (_2961 < 0.68124115467071533203125)) { - float _3013 = (7.0 * (_2961 - _2793)) / (_2968 - _2793); + float _3013 = (7.0 * fma(_2960, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _3014 = int(_3013); float _3016 = _3013 - float(_3014); _3030 = dot(float3(_3016 * _3016, _3016, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_503[_3014], _503[_3014 + 1], _503[_3014 + 2])); } else { - float _2975 = log(_2786); - float _2976 = _2975 * 0.4342944622039794921875; float _3009; - if ((_2961 >= _2968) && (_2961 < _2976)) + if ((_2961 >= 0.68124115467071533203125) && (_2961 < 3.65370273590087890625)) { - float _2992 = (7.0 * (_2961 - _2968)) / (_2976 - _2968); + float _2992 = (7.0 * fma(_2960, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.4129619598388671875, 0.4342944622039794921875, -0.68124115467071533203125); int _2993 = int(_2992); float _2995 = _2992 - float(_2993); _3009 = dot(float3(_2995 * _2995, _2995, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_504[_2993], _504[_2993 + 1], _504[_2993 + 2])); } else { - _3009 = fma(_2960, 0.026057668030261993408203125, 3.0 - (_2975 * 0.026057668030261993408203125)); + _3009 = fma(_2960, 0.026057668030261993408203125, fma(-8.4129619598388671875, 0.026057668030261993408203125, 3.0)); } _3030 = _3009; } @@ -779,7 +768,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1395 = _1394 * 0.3333333432674407958984375; float _1396 = _1381 - 0.4000000059604644775390625; float _1401 = fast::max(1.0 - abs(_1396 * 2.5), 0.0); - float _1409 = fma(float(int(sign(_1396 * 5.0))), 1.0 - (_1401 * _1401), 1.0) * 0.02500000037252902984619140625; + float _1409 = fma(float(int(sign(_1396 * 5.0))), fma(-_1401, _1401, 1.0), 1.0) * 0.02500000037252902984619140625; float _1422; if (_1395 <= 0.053333334624767303466796875) { @@ -809,7 +798,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa } else { - _1443 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_1427 - _1429), ((2.0 * _1426) - _1427) - _1429); + _1443 = 57.2957763671875 * precise::atan2(1.73205077648162841796875 * (_1427 - _1429), fma(2.0, _1426, -_1427) - _1429); } float _1448; if (_1443 < 0.0) @@ -833,9 +822,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1504; if ((_1454 > (-67.5)) && (_1454 < 67.5)) { - float _1461 = (_1454 - (-67.5)) * 0.0296296291053295135498046875; - int _1462 = int(_1461); - float _1464 = _1461 - float(_1462); + float _1460 = _1454 - (-67.5); + int _1462 = int(_1460 * 0.0296296291053295135498046875); + float _1464 = fma(_1460, 0.0296296291053295135498046875, -float(_1462)); float _1465 = _1464 * _1464; float _1466 = _1465 * _1464; float _1503; @@ -884,7 +873,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float3 _1514 = fast::clamp(fast::clamp(_1425, float3(0.0), float3(65535.0)) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)), float3(0.0), float3(65535.0)); float3 _1517 = mix(float3(dot(_1514, float3(0.272228717803955078125, 0.674081742763519287109375, 0.053689517080783843994140625))), _1514, float3(0.959999978542327880859375)); float _1518 = _1517.x; - float _1527 = log((_1518 <= 0.0) ? 6.103515625e-05 : _1518) * 0.4342944622039794921875; + float _1526 = log((_1518 <= 0.0) ? 6.103515625e-05 : _1518); + float _1527 = _1526 * 0.4342944622039794921875; float _1596; if (_1527 <= (-5.2601776123046875)) { @@ -895,9 +885,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1593; if ((_1527 > (-5.2601776123046875)) && (_1527 < (-0.744727432727813720703125))) { - float _1576 = (_1527 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _1577 = int(_1576); - float _1579 = _1576 - float(_1577); + float _1573 = fma(_1526, 0.4342944622039794921875, 5.2601776123046875); + int _1577 = int(_1573 * 0.6643855571746826171875); + float _1579 = fma(_1573, 0.6643855571746826171875, -float(_1577)); _1593 = dot(float3(_1579 * _1579, _1579, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_499[_1577], _499[_1577 + 1], _499[_1577 + 2])); } else @@ -905,9 +895,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1572; if ((_1527 >= (-0.744727432727813720703125)) && (_1527 < 4.673812389373779296875)) { - float _1555 = (_1527 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _1556 = int(_1555); - float _1558 = _1555 - float(_1556); + float _1552 = fma(_1526, 0.4342944622039794921875, 0.744727432727813720703125); + int _1556 = int(_1552 * 0.55365467071533203125); + float _1558 = fma(_1552, 0.55365467071533203125, -float(_1556)); _1572 = dot(float3(_1558 * _1558, _1558, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_500[_1556], _500[_1556 + 1], _500[_1556 + 2])); } else @@ -919,7 +909,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1596 = _1593; } float _1599 = _1517.y; - float _1603 = log((_1599 <= 0.0) ? 6.103515625e-05 : _1599) * 0.4342944622039794921875; + float _1602 = log((_1599 <= 0.0) ? 6.103515625e-05 : _1599); + float _1603 = _1602 * 0.4342944622039794921875; float _1670; if (_1603 <= (-5.2601776123046875)) { @@ -930,9 +921,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1667; if ((_1603 > (-5.2601776123046875)) && (_1603 < (-0.744727432727813720703125))) { - float _1650 = (_1603 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _1651 = int(_1650); - float _1653 = _1650 - float(_1651); + float _1647 = fma(_1602, 0.4342944622039794921875, 5.2601776123046875); + int _1651 = int(_1647 * 0.6643855571746826171875); + float _1653 = fma(_1647, 0.6643855571746826171875, -float(_1651)); _1667 = dot(float3(_1653 * _1653, _1653, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_499[_1651], _499[_1651 + 1], _499[_1651 + 2])); } else @@ -940,9 +931,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1646; if ((_1603 >= (-0.744727432727813720703125)) && (_1603 < 4.673812389373779296875)) { - float _1629 = (_1603 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _1630 = int(_1629); - float _1632 = _1629 - float(_1630); + float _1626 = fma(_1602, 0.4342944622039794921875, 0.744727432727813720703125); + int _1630 = int(_1626 * 0.55365467071533203125); + float _1632 = fma(_1626, 0.55365467071533203125, -float(_1630)); _1646 = dot(float3(_1632 * _1632, _1632, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_500[_1630], _500[_1630 + 1], _500[_1630 + 2])); } else @@ -954,7 +945,8 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1670 = _1667; } float _1673 = _1517.z; - float _1677 = log((_1673 <= 0.0) ? 6.103515625e-05 : _1673) * 0.4342944622039794921875; + float _1676 = log((_1673 <= 0.0) ? 6.103515625e-05 : _1673); + float _1677 = _1676 * 0.4342944622039794921875; float _1744; if (_1677 <= (-5.2601776123046875)) { @@ -965,9 +957,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1741; if ((_1677 > (-5.2601776123046875)) && (_1677 < (-0.744727432727813720703125))) { - float _1724 = (_1677 - (-5.2601776123046875)) * 0.6643855571746826171875; - int _1725 = int(_1724); - float _1727 = _1724 - float(_1725); + float _1721 = fma(_1676, 0.4342944622039794921875, 5.2601776123046875); + int _1725 = int(_1721 * 0.6643855571746826171875); + float _1727 = fma(_1721, 0.6643855571746826171875, -float(_1725)); _1741 = dot(float3(_1727 * _1727, _1727, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_499[_1725], _499[_1725 + 1], _499[_1725 + 2])); } else @@ -975,9 +967,9 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _1720; if ((_1677 >= (-0.744727432727813720703125)) && (_1677 < 4.673812389373779296875)) { - float _1703 = (_1677 - (-0.744727432727813720703125)) * 0.55365467071533203125; - int _1704 = int(_1703); - float _1706 = _1703 - float(_1704); + float _1700 = fma(_1676, 0.4342944622039794921875, 0.744727432727813720703125); + int _1704 = int(_1700 * 0.55365467071533203125); + float _1706 = fma(_1700, 0.55365467071533203125, -float(_1704)); _1720 = dot(float3(_1706 * _1706, _1706, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_500[_1704], _500[_1704 + 1], _500[_1704 + 2])); } else @@ -989,43 +981,37 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa _1744 = _1741; } float3 _1748 = (float3(pow(10.0, _1596), pow(10.0, _1670), pow(10.0, _1744)) * float3x3(float3(0.695452213287353515625, 0.140678703784942626953125, 0.16386906802654266357421875), float3(0.0447945632040500640869140625, 0.859671115875244140625, 0.095534317195415496826171875), float3(-0.0055258828215301036834716796875, 0.0040252101607620716094970703125, 1.00150072574615478515625))) * float3x3(float3(1.45143926143646240234375, -0.236510753631591796875, -0.214928567409515380859375), float3(-0.07655377686023712158203125, 1.1762297153472900390625, -0.0996759235858917236328125), float3(0.0083161480724811553955078125, -0.0060324496589601039886474609375, 0.99771630764007568359375)); - float _1879 = pow(10.0, (float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-0.718548238277435302734375, 2.0810306072235107421875, 3.66812419891357421875)).z); - float _1951 = pow(10.0, dot(float3(0.69444429874420166015625, 0.8333332538604736328125, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(2.0810306072235107421875, 3.66812419891357421875, 4.0))); float _1952 = _1748.x; float _1955 = log((_1952 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _1952); float _1956 = _1955 * 0.4342944622039794921875; - float _1958 = log(pow(10.0, dot(float3(0.3600003719329833984375, 0.600000321865081787109375, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(-4.0, -4.0, -3.1573765277862548828125)))) * 0.4342944622039794921875; float _2030; - if (_1956 <= _1958) + if (_1956 <= (-3.84832763671875)) { _2030 = -2.3010299205780029296875; } else { - float _1965 = log(_1879) * 0.4342944622039794921875; float _2027; - if ((_1956 > _1958) && (_1956 < _1965)) + if ((_1956 > (-3.84832763671875)) && (_1956 < 0.68124115467071533203125)) { - float _2010 = (7.0 * (_1956 - _1958)) / (_1965 - _1958); + float _2010 = (7.0 * fma(_1955, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2011 = int(_2010); float _2013 = _2010 - float(_2011); _2027 = dot(float3(_2013 * _2013, _2013, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_506[_2011], _506[_2011 + 1], _506[_2011 + 2])); } else { - float _1972 = log(_1951); - float _1973 = _1972 * 0.4342944622039794921875; float _2006; - if ((_1956 >= _1965) && (_1956 < _1973)) + if ((_1956 >= 0.68124115467071533203125) && (_1956 < 3.761315822601318359375)) { - float _1989 = (7.0 * (_1956 - _1965)) / (_1973 - _1965); + float _1989 = (7.0 * fma(_1955, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.66075038909912109375, 0.4342944622039794921875, -0.68124115467071533203125); int _1990 = int(_1989); float _1992 = _1989 - float(_1990); _2006 = dot(float3(_1992 * _1992, _1992, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_507[_1990], _507[_1990 + 1], _507[_1990 + 2])); } else { - _2006 = fma(_1955, 0.05211533606052398681640625, 3.3010299205780029296875 - (_1972 * 0.05211533606052398681640625)); + _2006 = fma(_1955, 0.05211533606052398681640625, fma(-8.66075038909912109375, 0.05211533606052398681640625, 3.3010299205780029296875)); } _2027 = _2006; } @@ -1035,36 +1021,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2036 = log((_2033 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2033); float _2037 = _2036 * 0.4342944622039794921875; float _2109; - if (_2037 <= _1958) + if (_2037 <= (-3.84832763671875)) { _2109 = -2.3010299205780029296875; } else { - float _2044 = log(_1879) * 0.4342944622039794921875; float _2106; - if ((_2037 > _1958) && (_2037 < _2044)) + if ((_2037 > (-3.84832763671875)) && (_2037 < 0.68124115467071533203125)) { - float _2089 = (7.0 * (_2037 - _1958)) / (_2044 - _1958); + float _2089 = (7.0 * fma(_2036, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2090 = int(_2089); float _2092 = _2089 - float(_2090); _2106 = dot(float3(_2092 * _2092, _2092, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_506[_2090], _506[_2090 + 1], _506[_2090 + 2])); } else { - float _2051 = log(_1951); - float _2052 = _2051 * 0.4342944622039794921875; float _2085; - if ((_2037 >= _2044) && (_2037 < _2052)) + if ((_2037 >= 0.68124115467071533203125) && (_2037 < 3.761315822601318359375)) { - float _2068 = (7.0 * (_2037 - _2044)) / (_2052 - _2044); + float _2068 = (7.0 * fma(_2036, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.66075038909912109375, 0.4342944622039794921875, -0.68124115467071533203125); int _2069 = int(_2068); float _2071 = _2068 - float(_2069); _2085 = dot(float3(_2071 * _2071, _2071, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_507[_2069], _507[_2069 + 1], _507[_2069 + 2])); } else { - _2085 = fma(_2036, 0.05211533606052398681640625, 3.3010299205780029296875 - (_2051 * 0.05211533606052398681640625)); + _2085 = fma(_2036, 0.05211533606052398681640625, fma(-8.66075038909912109375, 0.05211533606052398681640625, 3.3010299205780029296875)); } _2106 = _2085; } @@ -1074,36 +1057,33 @@ fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globa float _2115 = log((_2112 <= 0.0) ? 9.9999997473787516355514526367188e-05 : _2112); float _2116 = _2115 * 0.4342944622039794921875; float _2188; - if (_2116 <= _1958) + if (_2116 <= (-3.84832763671875)) { _2188 = -2.3010299205780029296875; } else { - float _2123 = log(_1879) * 0.4342944622039794921875; float _2185; - if ((_2116 > _1958) && (_2116 < _2123)) + if ((_2116 > (-3.84832763671875)) && (_2116 < 0.68124115467071533203125)) { - float _2168 = (7.0 * (_2116 - _1958)) / (_2123 - _1958); + float _2168 = (7.0 * fma(_2115, 0.4342944622039794921875, 3.84832763671875)) / fma(1.56861579418182373046875, 0.4342944622039794921875, 3.84832763671875); int _2169 = int(_2168); float _2171 = _2168 - float(_2169); _2185 = dot(float3(_2171 * _2171, _2171, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_506[_2169], _506[_2169 + 1], _506[_2169 + 2])); } else { - float _2130 = log(_1951); - float _2131 = _2130 * 0.4342944622039794921875; float _2164; - if ((_2116 >= _2123) && (_2116 < _2131)) + if ((_2116 >= 0.68124115467071533203125) && (_2116 < 3.761315822601318359375)) { - float _2147 = (7.0 * (_2116 - _2123)) / (_2131 - _2123); + float _2147 = (7.0 * fma(_2115, 0.4342944622039794921875, -0.68124115467071533203125)) / fma(8.66075038909912109375, 0.4342944622039794921875, -0.68124115467071533203125); int _2148 = int(_2147); float _2150 = _2147 - float(_2148); _2164 = dot(float3(_2150 * _2150, _2150, 1.0), float3x3(float3(0.5, -1.0, 0.5), float3(-1.0, 1.0, 0.5), float3(0.5, 0.0, 0.0)) * float3(_507[_2148], _507[_2148 + 1], _507[_2148 + 2])); } else { - _2164 = fma(_2115, 0.05211533606052398681640625, 3.3010299205780029296875 - (_2130 * 0.05211533606052398681640625)); + _2164 = fma(_2115, 0.05211533606052398681640625, fma(-8.66075038909912109375, 0.05211533606052398681640625, 3.3010299205780029296875)); } _2185 = _2164; } diff --git a/reference/opt/shaders-ue4/asm/frag/subpass-input.ios.framebuffer-fetch.asm.frag b/reference/opt/shaders-ue4/asm/frag/subpass-input.ios.framebuffer-fetch.asm.frag index 5e60f06d..e17515f2 100644 --- a/reference/opt/shaders-ue4/asm/frag/subpass-input.ios.framebuffer-fetch.asm.frag +++ b/reference/opt/shaders-ue4/asm/frag/subpass-input.ios.framebuffer-fetch.asm.frag @@ -203,8 +203,8 @@ fragment main0_out main0(constant type_View& View [[buffer(0)]], constant type_G gl_FragCoord.xy += get_sample_position(gl_SampleID) - 0.5; float4 _67 = _RESERVED_IDENTIFIER_FIXUP_gl_LastFragData; float _68 = _67.w; - float4 _82 = _Globals.ScreenToShadowMatrix * float4((((gl_FragCoord.xy * View.View_BufferSizeAndInvSize.zw) - View.View_ScreenPositionScaleBias.wz) / View.View_ScreenPositionScaleBias.xy) * float2(_68), _68, 1.0); - float _118 = fast::clamp(fma(fast::clamp((ShadowDepthTexture.sample(ShadowDepthTextureSampler, (((_82.xyz / float3(_82.w)).xy * _Globals.ShadowTileOffsetAndSize.zw).xy + _Globals.ShadowTileOffsetAndSize.xy).xy, level(0.0)).xxx * float3(_Globals.SoftTransitionScale.z)) - float3((fast::min(_82.z, 0.999989986419677734375) * _Globals.SoftTransitionScale.z) - 1.0), float3(0.0), float3(1.0)).x - 0.5, _Globals.ShadowSharpen, 0.5), 0.0, 1.0); + float4 _82 = _Globals.ScreenToShadowMatrix * float4((fma(gl_FragCoord.xy, View.View_BufferSizeAndInvSize.zw, -View.View_ScreenPositionScaleBias.wz) / View.View_ScreenPositionScaleBias.xy) * float2(_68), _68, 1.0); + float _118 = fast::clamp(fma(fast::clamp(fma(ShadowDepthTexture.sample(ShadowDepthTextureSampler, (((_82.xyz / float3(_82.w)).xy * _Globals.ShadowTileOffsetAndSize.zw).xy + _Globals.ShadowTileOffsetAndSize.xy).xy, level(0.0)).xxx, float3(_Globals.SoftTransitionScale.z), -float3(fma(fast::min(_82.z, 0.999989986419677734375), _Globals.SoftTransitionScale.z, -1.0))), float3(0.0), float3(1.0)).x - 0.5, _Globals.ShadowSharpen, 0.5), 0.0, 1.0); float3 _127 = mix(_Globals.ModulatedShadowColor.xyz, float3(1.0), float3(mix(1.0, _118 * _118, _Globals.ShadowFadeFraction))); float4 _128 = float4(_127.x, _127.y, _127.z, _58.w); _128.w = 0.0; diff --git a/reference/opt/shaders-ue4/asm/frag/subpass-input.msl23.framebuffer-fetch.asm.frag b/reference/opt/shaders-ue4/asm/frag/subpass-input.msl23.framebuffer-fetch.asm.frag index 5e60f06d..e17515f2 100644 --- a/reference/opt/shaders-ue4/asm/frag/subpass-input.msl23.framebuffer-fetch.asm.frag +++ b/reference/opt/shaders-ue4/asm/frag/subpass-input.msl23.framebuffer-fetch.asm.frag @@ -203,8 +203,8 @@ fragment main0_out main0(constant type_View& View [[buffer(0)]], constant type_G gl_FragCoord.xy += get_sample_position(gl_SampleID) - 0.5; float4 _67 = _RESERVED_IDENTIFIER_FIXUP_gl_LastFragData; float _68 = _67.w; - float4 _82 = _Globals.ScreenToShadowMatrix * float4((((gl_FragCoord.xy * View.View_BufferSizeAndInvSize.zw) - View.View_ScreenPositionScaleBias.wz) / View.View_ScreenPositionScaleBias.xy) * float2(_68), _68, 1.0); - float _118 = fast::clamp(fma(fast::clamp((ShadowDepthTexture.sample(ShadowDepthTextureSampler, (((_82.xyz / float3(_82.w)).xy * _Globals.ShadowTileOffsetAndSize.zw).xy + _Globals.ShadowTileOffsetAndSize.xy).xy, level(0.0)).xxx * float3(_Globals.SoftTransitionScale.z)) - float3((fast::min(_82.z, 0.999989986419677734375) * _Globals.SoftTransitionScale.z) - 1.0), float3(0.0), float3(1.0)).x - 0.5, _Globals.ShadowSharpen, 0.5), 0.0, 1.0); + float4 _82 = _Globals.ScreenToShadowMatrix * float4((fma(gl_FragCoord.xy, View.View_BufferSizeAndInvSize.zw, -View.View_ScreenPositionScaleBias.wz) / View.View_ScreenPositionScaleBias.xy) * float2(_68), _68, 1.0); + float _118 = fast::clamp(fma(fast::clamp(fma(ShadowDepthTexture.sample(ShadowDepthTextureSampler, (((_82.xyz / float3(_82.w)).xy * _Globals.ShadowTileOffsetAndSize.zw).xy + _Globals.ShadowTileOffsetAndSize.xy).xy, level(0.0)).xxx, float3(_Globals.SoftTransitionScale.z), -float3(fma(fast::min(_82.z, 0.999989986419677734375), _Globals.SoftTransitionScale.z, -1.0))), float3(0.0), float3(1.0)).x - 0.5, _Globals.ShadowSharpen, 0.5), 0.0, 1.0); float3 _127 = mix(_Globals.ModulatedShadowColor.xyz, float3(1.0), float3(mix(1.0, _118 * _118, _Globals.ShadowFadeFraction))); float4 _128 = float4(_127.x, _127.y, _127.z, _58.w); _128.w = 0.0; diff --git a/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.argument.msl2.frag b/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.argument.msl2.frag index 1d330e28..ac6b15d7 100644 --- a/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.argument.msl2.frag +++ b/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.argument.msl2.frag @@ -44,34 +44,34 @@ fragment main0_out main0(main0_in in [[stage_in]], constant spvDescriptorSetBuff uint _83 = _77.x; float2 _91 = float2(float(_83), float(((*spvDescriptorSet0._Globals).ShadowTileListGroupSize.y - 1u) - _78)); float2 _93 = float2((*spvDescriptorSet0._Globals).ShadowTileListGroupSize); - float2 _96 = ((_91 / _93) * float2(2.0)) - float2(1.0); - float2 _100 = (((_91 + float2(1.0)) / _93) * float2(2.0)) - float2(1.0); + float2 _96 = fma(_91 / _93, float2(2.0), float2(-1.0)); + float2 _100 = fma((_91 + float2(1.0)) / _93, float2(2.0), float2(-1.0)); float3 _101 = float3(_100.x, _100.y, _70.z); _101.z = 1.0; uint _103 = in.in_var_TEXCOORD0 * 5u; uint _107 = _103 + 1u; if (all((*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_107].xy > _96.xy) && all((*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103].xyz < _101)) { - float3 _121 = float3(0.5) * ((*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103].xyz + (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_107].xyz); + float3 _120 = (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103].xyz + (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_107].xyz; float _122 = _96.x; float _123 = _96.y; float _126 = _100.x; float _129 = _100.y; - float3 _166 = float3(_122, _123, -1000.0) - _121; + float3 _166 = fma(float3(-0.5), _120, float3(_122, _123, -1000.0)); float3 _170 = float3(dot(_166, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_166, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_166, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); - float3 _189 = float3(_126, _123, -1000.0) - _121; + float3 _189 = fma(float3(-0.5), _120, float3(_126, _123, -1000.0)); float3 _193 = float3(dot(_189, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_189, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_189, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); - float3 _205 = float3(_122, _129, -1000.0) - _121; + float3 _205 = fma(float3(-0.5), _120, float3(_122, _129, -1000.0)); float3 _209 = float3(dot(_205, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_205, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_205, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); - float3 _221 = float3(_126, _129, -1000.0) - _121; + float3 _221 = fma(float3(-0.5), _120, float3(_126, _129, -1000.0)); float3 _225 = float3(dot(_221, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_221, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_221, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); - float3 _237 = float3(_122, _123, 1.0) - _121; + float3 _237 = fma(float3(-0.5), _120, float3(_122, _123, 1.0)); float3 _241 = float3(dot(_237, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_237, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_237, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); - float3 _253 = float3(_126, _123, 1.0) - _121; + float3 _253 = fma(float3(-0.5), _120, float3(_126, _123, 1.0)); float3 _257 = float3(dot(_253, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_253, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_253, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); - float3 _269 = float3(_122, _129, 1.0) - _121; + float3 _269 = fma(float3(-0.5), _120, float3(_122, _129, 1.0)); float3 _273 = float3(dot(_269, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_269, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_269, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); - float3 _285 = float3(_126, _129, 1.0) - _121; + float3 _285 = fma(float3(-0.5), _120, float3(_126, _129, 1.0)); float3 _289 = float3(dot(_285, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 2u].xyz), dot(_285, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 3u].xyz), dot(_285, (*spvDescriptorSet0.CulledObjectBoxBounds)._m0[_103 + 4u].xyz)); if (all(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(float3(500000.0), _170), _193), _209), _225), _241), _257), _273), _289) < float3(1.0)) && all(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(float3(-500000.0), _170), _193), _209), _225), _241), _257), _273), _289) > float3(-1.0))) { diff --git a/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.frag b/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.frag index 5ade21c0..617bb4d0 100644 --- a/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.frag +++ b/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.frag @@ -36,34 +36,34 @@ fragment main0_out main0(main0_in in [[stage_in]], const device type_StructuredB uint _83 = _77.x; float2 _91 = float2(float(_83), float((_Globals.ShadowTileListGroupSize.y - 1u) - _78)); float2 _93 = float2(_Globals.ShadowTileListGroupSize); - float2 _96 = ((_91 / _93) * float2(2.0)) - float2(1.0); - float2 _100 = (((_91 + float2(1.0)) / _93) * float2(2.0)) - float2(1.0); + float2 _96 = fma(_91 / _93, float2(2.0), float2(-1.0)); + float2 _100 = fma((_91 + float2(1.0)) / _93, float2(2.0), float2(-1.0)); float3 _101 = float3(_100.x, _100.y, _70.z); _101.z = 1.0; uint _103 = in.in_var_TEXCOORD0 * 5u; uint _107 = _103 + 1u; if (all(CulledObjectBoxBounds._m0[_107].xy > _96.xy) && all(CulledObjectBoxBounds._m0[_103].xyz < _101)) { - float3 _121 = float3(0.5) * (CulledObjectBoxBounds._m0[_103].xyz + CulledObjectBoxBounds._m0[_107].xyz); + float3 _120 = CulledObjectBoxBounds._m0[_103].xyz + CulledObjectBoxBounds._m0[_107].xyz; float _122 = _96.x; float _123 = _96.y; float _126 = _100.x; float _129 = _100.y; - float3 _166 = float3(_122, _123, -1000.0) - _121; + float3 _166 = fma(float3(-0.5), _120, float3(_122, _123, -1000.0)); float3 _170 = float3(dot(_166, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_166, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_166, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); - float3 _189 = float3(_126, _123, -1000.0) - _121; + float3 _189 = fma(float3(-0.5), _120, float3(_126, _123, -1000.0)); float3 _193 = float3(dot(_189, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_189, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_189, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); - float3 _205 = float3(_122, _129, -1000.0) - _121; + float3 _205 = fma(float3(-0.5), _120, float3(_122, _129, -1000.0)); float3 _209 = float3(dot(_205, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_205, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_205, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); - float3 _221 = float3(_126, _129, -1000.0) - _121; + float3 _221 = fma(float3(-0.5), _120, float3(_126, _129, -1000.0)); float3 _225 = float3(dot(_221, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_221, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_221, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); - float3 _237 = float3(_122, _123, 1.0) - _121; + float3 _237 = fma(float3(-0.5), _120, float3(_122, _123, 1.0)); float3 _241 = float3(dot(_237, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_237, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_237, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); - float3 _253 = float3(_126, _123, 1.0) - _121; + float3 _253 = fma(float3(-0.5), _120, float3(_126, _123, 1.0)); float3 _257 = float3(dot(_253, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_253, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_253, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); - float3 _269 = float3(_122, _129, 1.0) - _121; + float3 _269 = fma(float3(-0.5), _120, float3(_122, _129, 1.0)); float3 _273 = float3(dot(_269, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_269, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_269, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); - float3 _285 = float3(_126, _129, 1.0) - _121; + float3 _285 = fma(float3(-0.5), _120, float3(_126, _129, 1.0)); float3 _289 = float3(dot(_285, CulledObjectBoxBounds._m0[_103 + 2u].xyz), dot(_285, CulledObjectBoxBounds._m0[_103 + 3u].xyz), dot(_285, CulledObjectBoxBounds._m0[_103 + 4u].xyz)); if (all(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(float3(500000.0), _170), _193), _209), _225), _241), _257), _273), _289) < float3(1.0)) && all(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(float3(-500000.0), _170), _193), _209), _225), _241), _257), _273), _289) > float3(-1.0))) { diff --git a/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.graphics-robust-access.frag b/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.graphics-robust-access.frag index a95aa317..3f68a92f 100644 --- a/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.graphics-robust-access.frag +++ b/reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.graphics-robust-access.frag @@ -37,34 +37,34 @@ fragment main0_out main0(main0_in in [[stage_in]], constant uint* spvBufferSizeC uint _83 = _77.x; float2 _91 = float2(float(_83), float((_Globals.ShadowTileListGroupSize.y - 1u) - _78)); float2 _93 = float2(_Globals.ShadowTileListGroupSize); - float2 _96 = ((_91 / _93) * float2(2.0)) - float2(1.0); - float2 _100 = (((_91 + float2(1.0)) / _93) * float2(2.0)) - float2(1.0); + float2 _96 = fma(_91 / _93, float2(2.0), float2(-1.0)); + float2 _100 = fma((_91 + float2(1.0)) / _93, float2(2.0), float2(-1.0)); float3 _101 = float3(_100.x, _100.y, _70.z); _101.z = 1.0; uint _103 = in.in_var_TEXCOORD0 * 5u; - uint _310 = uint(clamp(int(_103 + 1u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u)))); - if (all(CulledObjectBoxBounds._m0[_310].xy > _96.xy) && all(CulledObjectBoxBounds._m0[uint(clamp(int(_103), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz < _101)) + uint _323 = uint(clamp(int(_103 + 1u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u)))); + if (all(CulledObjectBoxBounds._m0[_323].xy > _96.xy) && all(CulledObjectBoxBounds._m0[uint(clamp(int(_103), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz < _101)) { - float3 _121 = float3(0.5) * (CulledObjectBoxBounds._m0[uint(clamp(int(_103), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz + CulledObjectBoxBounds._m0[_310].xyz); + float3 _120 = CulledObjectBoxBounds._m0[uint(clamp(int(_103), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz + CulledObjectBoxBounds._m0[_323].xyz; float _122 = _96.x; float _123 = _96.y; float _126 = _100.x; float _129 = _100.y; - float3 _166 = float3(_122, _123, -1000.0) - _121; + float3 _166 = fma(float3(-0.5), _120, float3(_122, _123, -1000.0)); float3 _170 = float3(dot(_166, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_166, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_166, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); - float3 _189 = float3(_126, _123, -1000.0) - _121; + float3 _189 = fma(float3(-0.5), _120, float3(_126, _123, -1000.0)); float3 _193 = float3(dot(_189, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_189, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_189, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); - float3 _205 = float3(_122, _129, -1000.0) - _121; + float3 _205 = fma(float3(-0.5), _120, float3(_122, _129, -1000.0)); float3 _209 = float3(dot(_205, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_205, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_205, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); - float3 _221 = float3(_126, _129, -1000.0) - _121; + float3 _221 = fma(float3(-0.5), _120, float3(_126, _129, -1000.0)); float3 _225 = float3(dot(_221, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_221, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_221, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); - float3 _237 = float3(_122, _123, 1.0) - _121; + float3 _237 = fma(float3(-0.5), _120, float3(_122, _123, 1.0)); float3 _241 = float3(dot(_237, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_237, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_237, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); - float3 _253 = float3(_126, _123, 1.0) - _121; + float3 _253 = fma(float3(-0.5), _120, float3(_126, _123, 1.0)); float3 _257 = float3(dot(_253, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_253, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_253, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); - float3 _269 = float3(_122, _129, 1.0) - _121; + float3 _269 = fma(float3(-0.5), _120, float3(_122, _129, 1.0)); float3 _273 = float3(dot(_269, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_269, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_269, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); - float3 _285 = float3(_126, _129, 1.0) - _121; + float3 _285 = fma(float3(-0.5), _120, float3(_126, _129, 1.0)); float3 _289 = float3(dot(_285, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 2u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_285, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 3u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz), dot(_285, CulledObjectBoxBounds._m0[uint(clamp(int(_103 + 4u), int(0u), int(min((((CulledObjectBoxBoundsBufferSize - 0) / 16) - 1u), 2147483647u))))].xyz)); if (all(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(float3(500000.0), _170), _193), _209), _225), _241), _257), _273), _289) < float3(1.0)) && all(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(fast::max(float3(-500000.0), _170), _193), _209), _225), _241), _257), _273), _289) > float3(-1.0))) { diff --git a/reference/opt/shaders-ue4/asm/tese/ds-double-gl-in-deref.asm.tese b/reference/opt/shaders-ue4/asm/tese/ds-double-gl-in-deref.asm.tese index 6201fefa..bc0d7e05 100644 --- a/reference/opt/shaders-ue4/asm/tese/ds-double-gl-in-deref.asm.tese +++ b/reference/opt/shaders-ue4/asm/tese/ds-double-gl-in-deref.asm.tese @@ -409,7 +409,7 @@ struct main0_patchIn out_var_TEXCOORD0 = _234; out.out_var_PRIMITIVE_ID = patchIn.gl_in[0u].in_var_PRIMITIVE_ID; out.out_var_TEXCOORD6 = _281.z; - out.out_var_TEXCOORD8 = fma(ShadowDepthPass.ShadowDepthPass_ShadowParams.y, fast::clamp((abs(_290) > 0.0) ? (sqrt(fast::clamp(1.0 - (_290 * _290), 0.0, 1.0)) / _290) : ShadowDepthPass.ShadowDepthPass_ShadowParams.z, 0.0, ShadowDepthPass.ShadowDepthPass_ShadowParams.z), ShadowDepthPass.ShadowDepthPass_ShadowParams.x); + out.out_var_TEXCOORD8 = fma(ShadowDepthPass.ShadowDepthPass_ShadowParams.y, fast::clamp((abs(_290) > 0.0) ? (sqrt(fast::clamp(fma(-_290, _290, 1.0), 0.0, 1.0)) / _290) : ShadowDepthPass.ShadowDepthPass_ShadowParams.z, 0.0, ShadowDepthPass.ShadowDepthPass_ShadowParams.z), ShadowDepthPass.ShadowDepthPass_ShadowParams.x); out.out_var_TEXCOORD7 = _264.xyz; out.gl_Position = _281; out.out_var_TEXCOORD0_0 = out_var_TEXCOORD0[0]; diff --git a/reference/opt/shaders-ue4/asm/tese/ds-patch-inputs.asm.tese b/reference/opt/shaders-ue4/asm/tese/ds-patch-inputs.asm.tese index b0e1504b..e0efbbfe 100644 --- a/reference/opt/shaders-ue4/asm/tese/ds-patch-inputs.asm.tese +++ b/reference/opt/shaders-ue4/asm/tese/ds-patch-inputs.asm.tese @@ -204,7 +204,7 @@ struct main0_patchIn } float _209 = abs(dot(float3(ShadowDepthPass.ShadowDepthPass_ViewMatrix[0].z, ShadowDepthPass.ShadowDepthPass_ViewMatrix[1].z, ShadowDepthPass.ShadowDepthPass_ViewMatrix[2].z), _182.xyz)); float4 _234 = _200; - _234.z = fma(_200.z, ShadowDepthPass.ShadowDepthPass_ShadowParams.w, fma(ShadowDepthPass.ShadowDepthPass_ShadowParams.y, fast::clamp((abs(_209) > 0.0) ? (sqrt(fast::clamp(1.0 - (_209 * _209), 0.0, 1.0)) / _209) : ShadowDepthPass.ShadowDepthPass_ShadowParams.z, 0.0, ShadowDepthPass.ShadowDepthPass_ShadowParams.z), ShadowDepthPass.ShadowDepthPass_ShadowParams.x)) * _200.w; + _234.z = fma(_200.z, ShadowDepthPass.ShadowDepthPass_ShadowParams.w, fma(ShadowDepthPass.ShadowDepthPass_ShadowParams.y, fast::clamp((abs(_209) > 0.0) ? (sqrt(fast::clamp(fma(-_209, _209, 1.0), 0.0, 1.0)) / _209) : ShadowDepthPass.ShadowDepthPass_ShadowParams.z, 0.0, ShadowDepthPass.ShadowDepthPass_ShadowParams.z), ShadowDepthPass.ShadowDepthPass_ShadowParams.x)) * _200.w; out.out_var_TEXCOORD10_centroid = float4(_179.x, _179.y, _179.z, _90.w); out.out_var_TEXCOORD11_centroid = _182; out.out_var_TEXCOORD6 = 0.0; diff --git a/reference/opt/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese b/reference/opt/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese deleted file mode 100644 index aa2fff0a..00000000 --- a/reference/opt/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese +++ /dev/null @@ -1,318 +0,0 @@ -#pragma clang diagnostic ignored "-Wmissing-prototypes" -#pragma clang diagnostic ignored "-Wmissing-braces" - -#include -#include - -using namespace metal; - -template -struct spvUnsafeArray -{ - T elements[Num ? Num : 1]; - - thread T& operator [] (size_t pos) thread - { - return elements[pos]; - } - constexpr const thread T& operator [] (size_t pos) const thread - { - return elements[pos]; - } - - device T& operator [] (size_t pos) device - { - return elements[pos]; - } - constexpr const device T& operator [] (size_t pos) const device - { - return elements[pos]; - } - - constexpr const constant T& operator [] (size_t pos) const constant - { - return elements[pos]; - } - - threadgroup T& operator [] (size_t pos) threadgroup - { - return elements[pos]; - } - constexpr const threadgroup T& operator [] (size_t pos) const threadgroup - { - return elements[pos]; - } -}; - -struct type_View -{ - float4x4 View_TranslatedWorldToClip; - float4x4 View_WorldToClip; - float4x4 View_ClipToWorld; - float4x4 View_TranslatedWorldToView; - float4x4 View_ViewToTranslatedWorld; - float4x4 View_TranslatedWorldToCameraView; - float4x4 View_CameraViewToTranslatedWorld; - float4x4 View_ViewToClip; - float4x4 View_ViewToClipNoAA; - float4x4 View_ClipToView; - float4x4 View_ClipToTranslatedWorld; - float4x4 View_SVPositionToTranslatedWorld; - float4x4 View_ScreenToWorld; - float4x4 View_ScreenToTranslatedWorld; - packed_float3 View_ViewForward; - float PrePadding_View_908; - packed_float3 View_ViewUp; - float PrePadding_View_924; - packed_float3 View_ViewRight; - float PrePadding_View_940; - packed_float3 View_HMDViewNoRollUp; - float PrePadding_View_956; - packed_float3 View_HMDViewNoRollRight; - float PrePadding_View_972; - float4 View_InvDeviceZToWorldZTransform; - float4 View_ScreenPositionScaleBias; - packed_float3 View_WorldCameraOrigin; - float PrePadding_View_1020; - packed_float3 View_TranslatedWorldCameraOrigin; - float PrePadding_View_1036; - packed_float3 View_WorldViewOrigin; - float PrePadding_View_1052; - packed_float3 View_PreViewTranslation; - float PrePadding_View_1068; - float4x4 View_PrevProjection; - float4x4 View_PrevViewProj; - float4x4 View_PrevViewRotationProj; - float4x4 View_PrevViewToClip; - float4x4 View_PrevClipToView; - float4x4 View_PrevTranslatedWorldToClip; - float4x4 View_PrevTranslatedWorldToView; - float4x4 View_PrevViewToTranslatedWorld; - float4x4 View_PrevTranslatedWorldToCameraView; - float4x4 View_PrevCameraViewToTranslatedWorld; - packed_float3 View_PrevWorldCameraOrigin; - float PrePadding_View_1724; - packed_float3 View_PrevWorldViewOrigin; - float PrePadding_View_1740; - packed_float3 View_PrevPreViewTranslation; - float PrePadding_View_1756; - float4x4 View_PrevInvViewProj; - float4x4 View_PrevScreenToTranslatedWorld; - float4x4 View_ClipToPrevClip; - float4 View_TemporalAAJitter; - float4 View_GlobalClippingPlane; - float2 View_FieldOfViewWideAngles; - float2 View_PrevFieldOfViewWideAngles; - float4 View_ViewRectMin; - float4 View_ViewSizeAndInvSize; - float4 View_BufferSizeAndInvSize; - float4 View_BufferBilinearUVMinMax; - int View_NumSceneColorMSAASamples; - float View_PreExposure; - float View_OneOverPreExposure; - float PrePadding_View_2076; - float4 View_DiffuseOverrideParameter; - float4 View_SpecularOverrideParameter; - float4 View_NormalOverrideParameter; - float2 View_RoughnessOverrideParameter; - float View_PrevFrameGameTime; - float View_PrevFrameRealTime; - float View_OutOfBoundsMask; - float PrePadding_View_2148; - float PrePadding_View_2152; - float PrePadding_View_2156; - packed_float3 View_WorldCameraMovementSinceLastFrame; - float View_CullingSign; - float View_NearPlane; - float View_AdaptiveTessellationFactor; - float View_GameTime; - float View_RealTime; - float View_DeltaTime; - float View_MaterialTextureMipBias; - float View_MaterialTextureDerivativeMultiply; - uint View_Random; - uint View_FrameNumber; - uint View_StateFrameIndexMod8; - uint View_StateFrameIndex; - float View_CameraCut; - float View_UnlitViewmodeMask; - float PrePadding_View_2228; - float PrePadding_View_2232; - float PrePadding_View_2236; - float4 View_DirectionalLightColor; - packed_float3 View_DirectionalLightDirection; - float PrePadding_View_2268; - float4 View_TranslucencyLightingVolumeMin[2]; - float4 View_TranslucencyLightingVolumeInvSize[2]; - float4 View_TemporalAAParams; - float4 View_CircleDOFParams; - float View_DepthOfFieldSensorWidth; - float View_DepthOfFieldFocalDistance; - float View_DepthOfFieldScale; - float View_DepthOfFieldFocalLength; - float View_DepthOfFieldFocalRegion; - float View_DepthOfFieldNearTransitionRegion; - float View_DepthOfFieldFarTransitionRegion; - float View_MotionBlurNormalizedToPixel; - float View_bSubsurfacePostprocessEnabled; - float View_GeneralPurposeTweak; - float View_DemosaicVposOffset; - float PrePadding_View_2412; - packed_float3 View_IndirectLightingColorScale; - float View_HDR32bppEncodingMode; - packed_float3 View_AtmosphericFogSunDirection; - float View_AtmosphericFogSunPower; - float View_AtmosphericFogPower; - float View_AtmosphericFogDensityScale; - float View_AtmosphericFogDensityOffset; - float View_AtmosphericFogGroundOffset; - float View_AtmosphericFogDistanceScale; - float View_AtmosphericFogAltitudeScale; - float View_AtmosphericFogHeightScaleRayleigh; - float View_AtmosphericFogStartDistance; - float View_AtmosphericFogDistanceOffset; - float View_AtmosphericFogSunDiscScale; - float View_AtmosphericFogSunDiscHalfApexAngleRadian; - float PrePadding_View_2492; - float4 View_AtmosphericFogSunDiscLuminance; - uint View_AtmosphericFogRenderMask; - uint View_AtmosphericFogInscatterAltitudeSampleNum; - uint PrePadding_View_2520; - uint PrePadding_View_2524; - float4 View_AtmosphericFogSunColor; - packed_float3 View_NormalCurvatureToRoughnessScaleBias; - float View_RenderingReflectionCaptureMask; - float4 View_AmbientCubemapTint; - float View_AmbientCubemapIntensity; - float View_SkyLightParameters; - float PrePadding_View_2584; - float PrePadding_View_2588; - float4 View_SkyLightColor; - float4 View_SkyIrradianceEnvironmentMap[7]; - float View_MobilePreviewMode; - float View_HMDEyePaddingOffset; - float View_ReflectionCubemapMaxMip; - float View_ShowDecalsMask; - uint View_DistanceFieldAOSpecularOcclusionMode; - float View_IndirectCapsuleSelfShadowingIntensity; - float PrePadding_View_2744; - float PrePadding_View_2748; - packed_float3 View_ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight; - int View_StereoPassIndex; - float4 View_GlobalVolumeCenterAndExtent[4]; - float4 View_GlobalVolumeWorldToUVAddAndMul[4]; - float View_GlobalVolumeDimension; - float View_GlobalVolumeTexelSize; - float View_MaxGlobalDistance; - float PrePadding_View_2908; - int2 View_CursorPosition; - float View_bCheckerboardSubsurfaceProfileRendering; - float PrePadding_View_2924; - packed_float3 View_VolumetricFogInvGridSize; - float PrePadding_View_2940; - packed_float3 View_VolumetricFogGridZParams; - float PrePadding_View_2956; - float2 View_VolumetricFogSVPosToVolumeUV; - float View_VolumetricFogMaxDistance; - float PrePadding_View_2972; - packed_float3 View_VolumetricLightmapWorldToUVScale; - float PrePadding_View_2988; - packed_float3 View_VolumetricLightmapWorldToUVAdd; - float PrePadding_View_3004; - packed_float3 View_VolumetricLightmapIndirectionTextureSize; - float View_VolumetricLightmapBrickSize; - packed_float3 View_VolumetricLightmapBrickTexelSize; - float View_StereoIPD; - float View_IndirectLightingCacheShowFlag; - float View_EyeToPixelSpreadAngle; - float PrePadding_View_3048; - float PrePadding_View_3052; - float4x4 View_WorldToVirtualTexture; - float4 View_VirtualTextureParams; - float4 View_XRPassthroughCameraUVs[2]; -}; - -constant float4 _68 = {}; - -struct main0_out -{ - float4 out_var_TEXCOORD10_centroid [[user(locn0)]]; - float4 out_var_TEXCOORD11_centroid [[user(locn1)]]; - float4 out_var_TEXCOORD0_0 [[user(locn2)]]; - float4 out_var_COLOR1 [[user(locn3)]]; - float4 out_var_COLOR2 [[user(locn4)]]; - float4 out_var_TEXCOORD6 [[user(locn5)]]; - float3 out_var_TEXCOORD7 [[user(locn6)]]; - float4 gl_Position [[position]]; -}; - -struct main0_in -{ - float4 in_var_COLOR1 [[attribute(0)]]; - float4 in_var_COLOR2 [[attribute(1)]]; - float4 in_var_TEXCOORD0_0 [[attribute(5)]]; - float4 in_var_TEXCOORD10_centroid [[attribute(6)]]; - float4 in_var_TEXCOORD11_centroid [[attribute(7)]]; - float3 in_var_TEXCOORD7 [[attribute(8)]]; - float4 in_var_VS_To_DS_Position [[attribute(9)]]; -}; - -struct main0_patchIn -{ - patch_control_point gl_in; -}; - -[[ patch(triangle, 0) ]] vertex main0_out main0(main0_patchIn patchIn [[stage_in]], constant type_View& View [[buffer(0)]], float3 gl_TessCoord [[position_in_patch]]) -{ - main0_out out = {}; - spvUnsafeArray out_var_TEXCOORD0 = {}; - spvUnsafeArray _77 = spvUnsafeArray({ patchIn.gl_in[0].in_var_TEXCOORD10_centroid, patchIn.gl_in[1].in_var_TEXCOORD10_centroid, patchIn.gl_in[2].in_var_TEXCOORD10_centroid }); - spvUnsafeArray _78 = spvUnsafeArray({ patchIn.gl_in[0].in_var_TEXCOORD11_centroid, patchIn.gl_in[1].in_var_TEXCOORD11_centroid, patchIn.gl_in[2].in_var_TEXCOORD11_centroid }); - spvUnsafeArray, 3> _79 = spvUnsafeArray, 3>({ spvUnsafeArray({ patchIn.gl_in[0].in_var_TEXCOORD0_0 }), spvUnsafeArray({ patchIn.gl_in[1].in_var_TEXCOORD0_0 }), spvUnsafeArray({ patchIn.gl_in[2].in_var_TEXCOORD0_0 }) }); - spvUnsafeArray _80 = spvUnsafeArray({ patchIn.gl_in[0].in_var_COLOR1, patchIn.gl_in[1].in_var_COLOR1, patchIn.gl_in[2].in_var_COLOR1 }); - spvUnsafeArray _81 = spvUnsafeArray({ patchIn.gl_in[0].in_var_COLOR2, patchIn.gl_in[1].in_var_COLOR2, patchIn.gl_in[2].in_var_COLOR2 }); - spvUnsafeArray _97 = spvUnsafeArray({ patchIn.gl_in[0].in_var_VS_To_DS_Position, patchIn.gl_in[1].in_var_VS_To_DS_Position, patchIn.gl_in[2].in_var_VS_To_DS_Position }); - spvUnsafeArray _98 = spvUnsafeArray({ patchIn.gl_in[0].in_var_TEXCOORD7, patchIn.gl_in[1].in_var_TEXCOORD7, patchIn.gl_in[2].in_var_TEXCOORD7 }); - float4 _111 = float4(gl_TessCoord.x); - float4 _113 = float4(gl_TessCoord.y); - float4 _116 = float4(gl_TessCoord.z); - float4 _118 = fma(_97[2], _116, fma(_97[0], _111, _97[1] * _113)); - spvUnsafeArray _72; - _72 = _79[0]; - spvUnsafeArray _71; - _71 = _79[1]; - float3 _120 = float3(gl_TessCoord.x); - float3 _123 = float3(gl_TessCoord.y); - spvUnsafeArray _73; - for (int _133 = 0; _133 < 1; ) - { - _73[_133] = fma(_72[_133], _111, _71[_133] * _113); - _133++; - continue; - } - spvUnsafeArray _75; - _75 = _73; - spvUnsafeArray _74; - _74 = _79[2]; - float3 _155 = float3(gl_TessCoord.z); - float3 _157 = fma(_77[2].xyz, _155, fma(_77[0].xyz, _120, _77[1].xyz * _123).xyz); - spvUnsafeArray _76; - for (int _164 = 0; _164 < 1; ) - { - _76[_164] = fma(_74[_164], _116, _75[_164]); - _164++; - continue; - } - float4 _181 = float4(_118.x, _118.y, _118.z, _118.w); - out.out_var_TEXCOORD10_centroid = float4(_157.x, _157.y, _157.z, _68.w); - out.out_var_TEXCOORD11_centroid = fma(_78[2], _116, fma(_78[0], _111, _78[1] * _113)); - out_var_TEXCOORD0 = _76; - out.out_var_COLOR1 = fma(_80[2], _116, fma(_80[0], _111, _80[1] * _113)); - out.out_var_COLOR2 = fma(_81[2], _116, fma(_81[0], _111, _81[1] * _113)); - out.out_var_TEXCOORD6 = _181; - out.out_var_TEXCOORD7 = fma(_98[2], _155, fma(_98[0], _120, _98[1] * _123)); - out.gl_Position = View.View_TranslatedWorldToClip * _181; - out.out_var_TEXCOORD0_0 = out_var_TEXCOORD0[0]; - return out; -} - diff --git a/reference/opt/shaders-ue4/asm/vert/array-missing-copies.asm.vert b/reference/opt/shaders-ue4/asm/vert/array-missing-copies.asm.vert index 23ed3570..1f47ec47 100644 --- a/reference/opt/shaders-ue4/asm/vert/array-missing-copies.asm.vert +++ b/reference/opt/shaders-ue4/asm/vert/array-missing-copies.asm.vert @@ -325,24 +325,26 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_View& View [[buff in_var_ATTRIBUTE1[1] = in.in_var_ATTRIBUTE1_1; float4 _115 = in.in_var_ATTRIBUTE0 * float4(255.0); float2 _116 = _115.zw; - float2 _119 = fract(_116 * float2(0.5)) * float2(2.0); - float2 _121 = (_116 - _119) * float2(0.0039215688593685626983642578125); + float2 _118 = fract(_116 * float2(0.5)); + float2 _119 = _118 * float2(2.0); + float2 _121 = fma(-_118, float2(2.0), _116) * float2(0.0039215688593685626983642578125); float2 _122 = _115.xy; float2 _126 = _122 * float2(_Globals.LodValues.w); float _127 = _126.y; float _128 = _126.x; - float4 _132 = float4(_127, _128, 1.0 - _128, 1.0 - _127) * float4(2.0); + float4 _131 = float4(_127, _128, 1.0 - _128, 1.0 - _127); + float4 _132 = _131 * float4(2.0); float4 _186; if (_119.y > 0.5) { float4 _161; if (_119.x > 0.5) { - _161 = fma(_132, float4(_Globals.SectionLods.w), (float4(1.0) - _132) * _Globals.NeighborSectionLod[3]); + _161 = fma(_132, float4(_Globals.SectionLods.w), fma(-_131, float4(2.0), float4(1.0)) * _Globals.NeighborSectionLod[3]); } else { - _161 = fma(_132, float4(_Globals.SectionLods.z), (float4(1.0) - _132) * _Globals.NeighborSectionLod[2]); + _161 = fma(_132, float4(_Globals.SectionLods.z), fma(-_131, float4(2.0), float4(1.0)) * _Globals.NeighborSectionLod[2]); } _186 = _161; } @@ -351,11 +353,11 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_View& View [[buff float4 _185; if (_119.x > 0.5) { - _185 = fma(_132, float4(_Globals.SectionLods.y), (float4(1.0) - _132) * _Globals.NeighborSectionLod[1]); + _185 = fma(_132, float4(_Globals.SectionLods.y), fma(-_131, float4(2.0), float4(1.0)) * _Globals.NeighborSectionLod[1]); } else { - _185 = fma(_132, float4(_Globals.SectionLods.x), (float4(1.0) - _132) * _Globals.NeighborSectionLod[0]); + _185 = fma(_132, float4(_Globals.SectionLods.x), fma(-_131, float4(2.0), float4(1.0)) * _Globals.NeighborSectionLod[0]); } _186 = _185; } @@ -393,7 +395,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_View& View [[buff float _245 = (fma(in_var_ATTRIBUTE1[0].x, 65280.0, in_var_ATTRIBUTE1[0].y * 255.0) - 32768.0) * 0.0078125; float _252 = (fma(in_var_ATTRIBUTE1[0].z, 65280.0, in_var_ATTRIBUTE1[0].w * 255.0) - 32768.0) * 0.0078125; float2 _257 = floor(_122 * float2(_236)); - float2 _271 = float2((LandscapeParameters.LandscapeParameters_SubsectionSizeVertsLayerUVPan.x * _236) - 1.0, fast::max((LandscapeParameters.LandscapeParameters_SubsectionSizeVertsLayerUVPan.x * 0.5) * _236, 2.0) - 1.0) * float2(LandscapeParameters.LandscapeParameters_SubsectionSizeVertsLayerUVPan.y); + float2 _271 = float2(fma(LandscapeParameters.LandscapeParameters_SubsectionSizeVertsLayerUVPan.x, _236, -1.0), fast::max((LandscapeParameters.LandscapeParameters_SubsectionSizeVertsLayerUVPan.x * 0.5) * _236, 2.0) - 1.0) * float2(LandscapeParameters.LandscapeParameters_SubsectionSizeVertsLayerUVPan.y); float3 _287 = mix(float3(_257 / float2(_271.x), mix(_245, _252, _235.y)), float3(floor(_257 * float2(0.5)) / float2(_271.y), mix(_245, _252, _235.z)), float3(_206 - _207)); float2 _288 = _119.xy; float3 _296 = _287 + float3(_288 * LandscapeParameters.LandscapeParameters_SubsectionOffsetParams.ww, 0.0); @@ -415,10 +417,10 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_View& View [[buff { float _361 = _357 * _346; float _365 = fma(_361, _354, View.View_WorldCameraOrigin[2]); - _393 = (1.0 - _361) * _347; + _393 = fma(-_357, _346, 1.0) * _347; _394 = MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters2.z * exp2(-fast::max(-127.0, MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters2.y * (_365 - MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters2.w))); _395 = MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters3.x * exp2(-fast::max(-127.0, MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters.y * (_365 - MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters3.y))); - _396 = _354 - (_361 * _354); + _396 = fma(-_361, _354, _354); } else { @@ -429,7 +431,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_View& View [[buff } float _400 = fast::max(-127.0, MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters.y * _396); float _417 = fast::max(-127.0, MobileBasePass.MobileBasePass_Fog_ExponentialFogParameters2.y * _396); - float _428 = fma(_395, (abs(_400) > 0.00999999977648258209228515625) ? ((1.0 - exp2(-_400)) / _400) : (0.693147182464599609375 - (0.2402265071868896484375 * _400)), _394 * ((abs(_417) > 0.00999999977648258209228515625) ? ((1.0 - exp2(-_417)) / _417) : (0.693147182464599609375 - (0.2402265071868896484375 * _417)))); + float _428 = fma(_395, (abs(_400) > 0.00999999977648258209228515625) ? ((1.0 - exp2(-_400)) / _400) : fma(-0.2402265071868896484375, _400, 0.693147182464599609375), _394 * ((abs(_417) > 0.00999999977648258209228515625) ? ((1.0 - exp2(-_417)) / _417) : fma(-0.2402265071868896484375, _417, 0.693147182464599609375))); float3 _459; if (MobileBasePass.MobileBasePass_Fog_InscatteringLightDirection.w >= 0.0) { diff --git a/reference/opt/shaders-ue4/asm/vert/texture-buffer.asm.vert b/reference/opt/shaders-ue4/asm/vert/texture-buffer.asm.vert index 81533a4a..2f9afa16 100644 --- a/reference/opt/shaders-ue4/asm/vert/texture-buffer.asm.vert +++ b/reference/opt/shaders-ue4/asm/vert/texture-buffer.asm.vert @@ -311,7 +311,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_View& View [[buff { float3 _279 = cross(_265, float3(0.0, 0.0, 1.0)); float3 _284 = _279 / float3(sqrt(fast::max(dot(_279, _279), 0.00999999977648258209228515625))); - float3 _286 = float3(fast::clamp((_261 * EmitterUniforms.EmitterUniforms_CameraFacingBlend[1]) - EmitterUniforms.EmitterUniforms_CameraFacingBlend[2], 0.0, 1.0)); + float3 _286 = float3(fast::clamp(fma(_261, EmitterUniforms.EmitterUniforms_CameraFacingBlend[1], -EmitterUniforms.EmitterUniforms_CameraFacingBlend[2]), 0.0, 1.0)); _335 = fast::normalize(mix(_251, _284, _286)); _336 = fast::normalize(mix(_259, cross(_265, _284), _286)); } @@ -363,7 +363,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_View& View [[buff float _339 = fma(fma(_145.w * EmitterUniforms.EmitterUniforms_RotationRateScale, _146, _145.z), 6.283185482025146484375, EmitterUniforms.EmitterUniforms_RotationBias); float3 _342 = float3(sin(_339)); float3 _344 = float3(cos(_339)); - float3 _367 = _239 + fma(float3(_204.x * (in.in_var_ATTRIBUTE0.x + EmitterUniforms.EmitterUniforms_PivotOffset.x)), fma(_342, _336, _344 * _335), float3(_204.y * (in.in_var_ATTRIBUTE0.y + EmitterUniforms.EmitterUniforms_PivotOffset.y)) * ((_344 * _336) - (_342 * _335))); + float3 _367 = _239 + fma(float3(_204.x * (in.in_var_ATTRIBUTE0.x + EmitterUniforms.EmitterUniforms_PivotOffset.x)), fma(_342, _336, _344 * _335), float3(_204.y * (in.in_var_ATTRIBUTE0.y + EmitterUniforms.EmitterUniforms_PivotOffset.y)) * fma(_344, _336, -(_342 * _335))); float4 _371 = float4(_367, 1.0); float4 _375 = MobileShadowDepthPass.MobileShadowDepthPass_ProjectionMatrix * float4(_371.x, _371.y, _371.z, _371.w); float4 _386; diff --git a/reference/shaders/asm/comp/switch-break-ladder.asm.comp b/reference/opt/shaders/asm/comp/switch-break-ladder.asm.invalid.comp similarity index 100% rename from reference/shaders/asm/comp/switch-break-ladder.asm.comp rename to reference/opt/shaders/asm/comp/switch-break-ladder.asm.invalid.comp diff --git a/reference/opt/shaders/asm/geom/unroll-glposition-load.asm.geom b/reference/opt/shaders/asm/geom/unroll-glposition-load.asm.geom index 0b1f5ca7..678379dd 100644 --- a/reference/opt/shaders/asm/geom/unroll-glposition-load.asm.geom +++ b/reference/opt/shaders/asm/geom/unroll-glposition-load.asm.geom @@ -4,15 +4,9 @@ layout(max_vertices = 3, triangle_strip) out; void main() { - vec4 _35_unrolled[3]; - for (int i = 0; i < int(3); i++) - { - _35_unrolled[i] = gl_in[i].gl_Position; - } - vec4 param[3] = _35_unrolled; for (int _74 = 0; _74 < 3; ) { - gl_Position = param[_74]; + gl_Position = gl_in[_74].gl_Position; EmitVertex(); _74++; continue; diff --git a/reference/opt/shaders/comp/bake_gradient.comp b/reference/opt/shaders/comp/bake_gradient.comp index e053576a..7ef245e6 100644 --- a/reference/opt/shaders/comp/bake_gradient.comp +++ b/reference/opt/shaders/comp/bake_gradient.comp @@ -27,8 +27,12 @@ void main() vec2 _128 = _59.zw; vec2 _157 = ((textureLodOffset(uDisplacement, _128, 0.0, ivec2(1, 0)).xy - textureLodOffset(uDisplacement, _128, 0.0, ivec2(-1, 0)).xy) * 0.60000002384185791015625) * _46.uScale.z; vec2 _161 = ((textureLodOffset(uDisplacement, _128, 0.0, ivec2(0, 1)).xy - textureLodOffset(uDisplacement, _128, 0.0, ivec2(0, -1)).xy) * 0.60000002384185791015625) * _46.uScale.z; + mediump float _203 = _157.y * _161.x; + float hp_copy_203 = _203; + float _209 = -hp_copy_203; + mediump float mp_copy_209 = _209; ivec2 _172 = ivec2(gl_GlobalInvocationID.xy); imageStore(iHeightDisplacement, _172, vec4(textureLod(uHeight, _67, 0.0).x, 0.0, 0.0, 0.0)); - imageStore(iGradJacobian, _172, vec4((_46.uScale.xy * 0.5) * vec2(hp_copy_87 - hp_copy_79, hp_copy_101 - hp_copy_94), ((1.0 + _157.x) * (1.0 + _161.y)) - (_157.y * _161.x), 0.0)); + imageStore(iGradJacobian, _172, vec4((_46.uScale.xy * 0.5) * vec2(hp_copy_87 - hp_copy_79, hp_copy_101 - hp_copy_94), (1.0 + _157.x) * (1.0 + _161.y) + mp_copy_209, 0.0)); } diff --git a/reference/opt/shaders/frag/ground.frag b/reference/opt/shaders/frag/ground.frag index f59a402f..d28f93ef 100644 --- a/reference/opt/shaders/frag/ground.frag +++ b/reference/opt/shaders/frag/ground.frag @@ -26,10 +26,13 @@ void main() vec3 _68 = normalize((texture(TexNormalmap, TexCoord).xyz * 2.0) - vec3(1.0)); float _113 = smoothstep(0.0, 0.1500000059604644775390625, (_101.g_CamPos.y + EyeVec.y) * 0.004999999888241291046142578125); float _125 = smoothstep(0.699999988079071044921875, 0.75, _68.y); + highp float hp_copy_125 = _125; vec3 _130 = mix(vec3(0.100000001490116119384765625), mix(vec3(0.100000001490116119384765625, 0.300000011920928955078125, 0.100000001490116119384765625), vec3(0.800000011920928955078125), vec3(_113)), vec3(_125)); + highp float _172 = -hp_copy_125; + float mp_copy_172 = _172; LightingOut = vec4(0.0); NormalOut = vec4((_68 * 0.5) + vec3(0.5), 0.0); - SpecularOut = vec4(1.0 - (_125 * _113), 0.0, 0.0, 0.0); + SpecularOut = vec4(mp_copy_172 * _113 + 1.0, 0.0, 0.0, 0.0); AlbedoOut = vec4(_130 * _130, 1.0); } diff --git a/reference/opt/shaders/vert/ground.vert b/reference/opt/shaders/vert/ground.vert index c0d637c6..5840c3d5 100644 --- a/reference/opt/shaders/vert/ground.vert +++ b/reference/opt/shaders/vert/ground.vert @@ -84,11 +84,13 @@ void main() vec4 _345 = vec4((_310 + uvec2(_384, _385)).xyxy & (~_317).xxyy); vec2 _167 = _53.Patches[(gl_InstanceID + SPIRV_Cross_BaseInstance)].Position.xz * _156.InvGroundSize_PatchScale.zw + mix(_345.xy, _345.zw, vec2(_301 - _303)); vec2 _173 = _167 * _156.InvGroundSize_PatchScale.xy; - mediump float _362 = textureLod(TexLOD, _173, 0.0).x * 7.96875; + mediump vec4 _360 = textureLod(TexLOD, _173, 0.0); + mediump float _361 = _360.x; + mediump float _362 = _361 * 7.96875; float hp_copy_362 = _362; float _364 = floor(hp_copy_362); vec2 _185 = _156.InvGroundSize_PatchScale.xy * exp2(_364); - vec3 _230 = vec3(_173.x, mix(textureLod(TexHeightmap, _167 * _156.InvGroundSize_PatchScale.xy + (_185 * 0.5), _364).x, textureLod(TexHeightmap, _167 * _156.InvGroundSize_PatchScale.xy + (_185 * 1.0), _364 + 1.0).x, _362 - _364), _173.y) * _156.GroundScale.xyz + _156.GroundPosition.xyz; + vec3 _230 = vec3(_173.x, mix(textureLod(TexHeightmap, _167 * _156.InvGroundSize_PatchScale.xy + (_185 * 0.5), _364).x, textureLod(TexHeightmap, _167 * _156.InvGroundSize_PatchScale.xy + (_185 * 1.0), _364 + 1.0).x, _361 * 7.96875 + (-_364)), _173.y) * _156.GroundScale.xyz + _156.GroundPosition.xyz; EyeVec = _230 - _236.g_CamPos.xyz; TexCoord = _167 * _156.InvGroundSize_PatchScale.xy + (_156.InvGroundSize_PatchScale.xy * 0.5); gl_Position = (((_236.g_ViewProj_Row0 * _230.x) + (_236.g_ViewProj_Row1 * _230.y)) + (_236.g_ViewProj_Row2 * _230.z)) + _236.g_ViewProj_Row3; diff --git a/reference/opt/shaders/vert/ocean.vert b/reference/opt/shaders/vert/ocean.vert index eed3407a..489e8295 100644 --- a/reference/opt/shaders/vert/ocean.vert +++ b/reference/opt/shaders/vert/ocean.vert @@ -105,11 +105,13 @@ void main() vec4 _416 = vec4((_360.xyxy + uvec4(_467, _470, _472, _474)) & (~_367).xxyy); vec2 _197 = (_53.Patches[(gl_InstanceID + SPIRV_Cross_BaseInstance)].Position.xz * _180.InvOceanSize_PatchScale.zw + mix(_416.xy, _416.zw, vec2(_351 - _353))) * _180.InvOceanSize_PatchScale.xy; vec2 _204 = _197 * _180.NormalTexCoordScale.zw; - mediump float _433 = textureLod(TexLOD, _197, 0.0).x * 7.96875; + mediump vec4 _431 = textureLod(TexLOD, _197, 0.0); + mediump float _432 = _431.x; + mediump float _433 = _432 * 7.96875; float hp_copy_433 = _433; float _435 = floor(hp_copy_433); vec2 _220 = (_180.InvOceanSize_PatchScale.xy * exp2(_435)) * _180.NormalTexCoordScale.zw; - vec3 _267 = (vec3(_197.x, 0.0, _197.y) + mix(textureLod(TexDisplacement, _197 * _180.NormalTexCoordScale.zw + (_220 * 0.5), _435).yxz, textureLod(TexDisplacement, _197 * _180.NormalTexCoordScale.zw + (_220 * 1.0), _435 + 1.0).yxz, vec3(_433 - _435))) * _180.OceanScale.xyz + _180.OceanPosition.xyz; + vec3 _267 = (vec3(_197.x, 0.0, _197.y) + mix(textureLod(TexDisplacement, _197 * _180.NormalTexCoordScale.zw + (_220 * 0.5), _435).yxz, textureLod(TexDisplacement, _197 * _180.NormalTexCoordScale.zw + (_220 * 1.0), _435 + 1.0).yxz, vec3(_432 * 7.96875 + (-_435)))) * _180.OceanScale.xyz + _180.OceanPosition.xyz; EyeVec = _267 - _273.g_CamPos.xyz; TexCoord = (_180.InvOceanSize_PatchScale.xyxy * 0.5) * _180.NormalTexCoordScale.zwzw + vec4(_204, _204 * _180.NormalTexCoordScale.xy); gl_Position = (((_273.g_ViewProj_Row0 * _267.x) + (_273.g_ViewProj_Row1 * _267.y)) + (_273.g_ViewProj_Row2 * _267.z)) + _273.g_ViewProj_Row3; diff --git a/reference/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk b/reference/opt/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk similarity index 100% rename from reference/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk rename to reference/opt/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk diff --git a/reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp b/reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp similarity index 84% rename from reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp rename to reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp index 35539b2c..dde7f47b 100644 --- a/reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp +++ b/reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp @@ -26,26 +26,46 @@ kernel void main0(constant Params& _18 [[buffer(1)]], raytracing::acceleration_s raytracing::intersection_query q2[2]; q2[1].reset(ray(_18.origin, _18.dir, _18.tmin, _18.tmax), AS1, intersection_params()); bool _63 = q.next(); + bool res = _63; q2[0].abort(); q.commit_bounding_box_intersection(_18.thit); q2[1].commit_triangle_intersection(); float _71 = q.get_ray_min_distance(); + float fval = _71; float3 _74 = q.get_world_space_ray_direction(); + float3 fvals = _74; float3 _75 = q.get_world_space_ray_origin(); + fvals = _75; uint _80 = uint(q2[1].get_committed_intersection_type()); + uint type = _80; uint _83 = uint(q2[0].get_candidate_intersection_type()) - 1; + type = _83; bool _85 = q2[1].is_candidate_non_opaque_bounding_box(); + res = _85; float _87 = q2[1].get_committed_distance(); + fval = _87; float _89 = q2[1].get_candidate_triangle_distance(); + fval = _89; int _92 = q.get_committed_user_instance_id(); + int ival = _92; int _94 = q2[0].get_candidate_instance_id(); + ival = _94; int _96 = q2[1].get_candidate_geometry_id(); + ival = _96; int _97 = q.get_committed_primitive_id(); + ival = _97; float2 _100 = q2[0].get_candidate_triangle_barycentric_coord(); + fvals.x = _100.x; + fvals.y = _100.y; bool _107 = q.is_committed_triangle_front_facing(); + res = _107; float3 _108 = q.get_candidate_ray_direction(); + fvals = _108; float3 _110 = q2[0].get_committed_ray_origin(); + fvals = _110; float4x3 _114 = q.get_candidate_object_to_world_transform(); + float4x3 matrices = _114; float4x3 _116 = q2[1].get_committed_world_to_object_transform(); + matrices = _116; } diff --git a/reference/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese b/reference/shaders-ue4-no-opt/asm/tese/ds-texcoord-array.asm.tese similarity index 100% rename from reference/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese rename to reference/shaders-ue4-no-opt/asm/tese/ds-texcoord-array.asm.tese diff --git a/reference/opt/shaders/asm/comp/switch-break-ladder.asm.comp b/reference/shaders/asm/comp/switch-break-ladder.asm.invalid.comp similarity index 81% rename from reference/opt/shaders/asm/comp/switch-break-ladder.asm.comp rename to reference/shaders/asm/comp/switch-break-ladder.asm.invalid.comp index 2aebe794..f326869c 100644 --- a/reference/opt/shaders/asm/comp/switch-break-ladder.asm.comp +++ b/reference/shaders/asm/comp/switch-break-ladder.asm.invalid.comp @@ -10,14 +10,12 @@ layout(binding = 0, std430) buffer BUF void main() { - int _44; - _44 = o.a; - int _41; + int c = o.a; + int a; for (;;) { - int _48; bool _22_ladder_break = false; - switch (_44) + switch (c) { case 5: { @@ -29,6 +27,7 @@ void main() case 10: case 20: { + c += c; _30_ladder_break = true; break; } @@ -42,30 +41,24 @@ void main() break; } } - _48 = _44 + _44; break; } case 1: case 2: case 3: { + a = c; _22_ladder_break = true; break; } - default: - { - _48 = _44; - break; - } } if (_22_ladder_break) { break; } - _41 = _48 + 1; - _44 = _41; + c++; continue; } - o.b = _44; + o.b = a; } diff --git a/reference/opt/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk b/reference/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk similarity index 85% rename from reference/opt/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk rename to reference/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk index eda045dc..fbe5e3d9 100644 --- a/reference/opt/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk +++ b/reference/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk @@ -27,26 +27,46 @@ void main() rayQueryInitializeEXT(q, AS, _19.ray_flags, _19.cull_mask, _19.origin, _19.tmin, _19.dir, _19.tmax); rayQueryInitializeEXT(q2[1], accelerationStructureEXT(_19.bda), _19.ray_flags, _19.cull_mask, _19.origin, _19.tmin, _19.dir, _19.tmax); bool _67 = rayQueryProceedEXT(q); + bool res = _67; rayQueryTerminateEXT(q2[0]); rayQueryGenerateIntersectionEXT(q, _19.thit); rayQueryConfirmIntersectionEXT(q2[1]); float _75 = rayQueryGetRayTMinEXT(q); + float fval = _75; uint _79 = rayQueryGetRayFlagsEXT(q2[0]); + uint type = _79; vec3 _82 = rayQueryGetWorldRayDirectionEXT(q); + vec3 fvals = _82; vec3 _83 = rayQueryGetWorldRayOriginEXT(q); + fvals = _83; uint _86 = rayQueryGetIntersectionTypeEXT(q2[1], bool(1)); + type = _86; bool _88 = rayQueryGetIntersectionCandidateAABBOpaqueEXT(q2[1]); + res = _88; float _91 = rayQueryGetIntersectionTEXT(q2[1], bool(0)); + fval = _91; int _94 = rayQueryGetIntersectionInstanceCustomIndexEXT(q, bool(1)); + int ival = _94; int _96 = rayQueryGetIntersectionInstanceIdEXT(q2[0], bool(0)); + ival = _96; uint _97 = rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(q, bool(1)); + type = _97; int _99 = rayQueryGetIntersectionGeometryIndexEXT(q2[1], bool(0)); + ival = _99; int _100 = rayQueryGetIntersectionPrimitiveIndexEXT(q, bool(1)); + ival = _100; vec2 _103 = rayQueryGetIntersectionBarycentricsEXT(q2[0], bool(0)); + fvals.x = _103.x; + fvals.y = _103.y; bool _110 = rayQueryGetIntersectionFrontFaceEXT(q, bool(1)); + res = _110; vec3 _111 = rayQueryGetIntersectionObjectRayDirectionEXT(q, bool(0)); + fvals = _111; vec3 _113 = rayQueryGetIntersectionObjectRayOriginEXT(q2[0], bool(1)); + fvals = _113; mat4x3 _117 = rayQueryGetIntersectionObjectToWorldEXT(q, bool(0)); + mat4x3 matrices = _117; mat4x3 _119 = rayQueryGetIntersectionWorldToObjectEXT(q2[1], bool(1)); + matrices = _119; } diff --git a/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp b/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp similarity index 100% rename from shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp rename to shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp diff --git a/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese b/shaders-ue4-no-opt/asm/tese/ds-texcoord-array.asm.tese similarity index 100% rename from shaders-ue4/asm/tese/ds-texcoord-array.asm.tese rename to shaders-ue4-no-opt/asm/tese/ds-texcoord-array.asm.tese diff --git a/shaders/asm/comp/switch-break-ladder.asm.comp b/shaders/asm/comp/switch-break-ladder.asm.invalid.comp similarity index 100% rename from shaders/asm/comp/switch-break-ladder.asm.comp rename to shaders/asm/comp/switch-break-ladder.asm.invalid.comp diff --git a/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp b/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp similarity index 100% rename from shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp rename to shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp