Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2022-09-02 16:39:03 +0300
committerGitHub <noreply@github.com>2022-09-02 16:39:03 +0300
commit9fcf62784bd0bdd73cdeeeecf2b0e94ab7c2664f (patch)
tree0b8901434831cf393f02ac3d4cfeaf739fd8f795
parentc93ee9261ed38be0b37b7cc40e2c5c47eaf5615d (diff)
parentd24f41f1d5d16ae99c362cc642a7bb2ee9c412d7 (diff)
Merge pull request #2011 from KhronosGroup/roll-deps
Update dependencies.
-rwxr-xr-xcheckout_glslang_spirv_tools.sh6
-rw-r--r--reference/opt/shaders-msl/comp/buffer_device_address.msl2.comp3
-rw-r--r--reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp (renamed from reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp)0
-rw-r--r--reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.multi-patch.tesc46
-rw-r--r--reference/opt/shaders-msl/tesc/load-control-point-array-of-matrix.tesc47
-rw-r--r--reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.multi-patch.tesc5
-rw-r--r--reference/opt/shaders-msl/tesc/load-control-point-array-of-struct.tesc5
-rw-r--r--reference/opt/shaders-msl/tesc/load-control-point-array.multi-patch.tesc48
-rw-r--r--reference/opt/shaders-msl/tesc/load-control-point-array.tesc46
-rw-r--r--reference/opt/shaders-ue4/asm/frag/depth-compare.asm.frag25
-rw-r--r--reference/opt/shaders-ue4/asm/frag/global-constant-arrays.asm.frag246
-rw-r--r--reference/opt/shaders-ue4/asm/frag/padded-float-array-member-defef.asm.frag254
-rw-r--r--reference/opt/shaders-ue4/asm/frag/subpass-input.ios.framebuffer-fetch.asm.frag4
-rw-r--r--reference/opt/shaders-ue4/asm/frag/subpass-input.msl23.framebuffer-fetch.asm.frag4
-rw-r--r--reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.argument.msl2.frag22
-rw-r--r--reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.frag22
-rw-r--r--reference/opt/shaders-ue4/asm/frag/texture-atomics.asm.graphics-robust-access.frag26
-rw-r--r--reference/opt/shaders-ue4/asm/tese/ds-double-gl-in-deref.asm.tese2
-rw-r--r--reference/opt/shaders-ue4/asm/tese/ds-patch-inputs.asm.tese2
-rw-r--r--reference/opt/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese318
-rw-r--r--reference/opt/shaders-ue4/asm/vert/array-missing-copies.asm.vert24
-rw-r--r--reference/opt/shaders-ue4/asm/vert/texture-buffer.asm.vert4
-rw-r--r--reference/opt/shaders/asm/comp/switch-break-ladder.asm.invalid.comp (renamed from reference/shaders/asm/comp/switch-break-ladder.asm.comp)0
-rw-r--r--reference/opt/shaders/asm/geom/unroll-glposition-load.asm.geom8
-rw-r--r--reference/opt/shaders/comp/bake_gradient.comp6
-rw-r--r--reference/opt/shaders/frag/ground.frag5
-rw-r--r--reference/opt/shaders/vert/ground.vert6
-rw-r--r--reference/opt/shaders/vert/ocean.vert6
-rw-r--r--reference/opt/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk (renamed from reference/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk)0
-rw-r--r--reference/shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp (renamed from reference/opt/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp)20
-rw-r--r--reference/shaders-ue4-no-opt/asm/tese/ds-texcoord-array.asm.tese (renamed from reference/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese)0
-rw-r--r--reference/shaders/asm/comp/switch-break-ladder.asm.invalid.comp (renamed from reference/opt/shaders/asm/comp/switch-break-ladder.asm.comp)21
-rw-r--r--reference/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp.vk (renamed from reference/opt/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp.vk)20
-rw-r--r--shaders-msl/comp/ray-query.spv14.vk.ios.msl24..invalid.comp (renamed from shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp)0
-rw-r--r--shaders-ue4-no-opt/asm/tese/ds-texcoord-array.asm.tese (renamed from shaders-ue4/asm/tese/ds-texcoord-array.asm.tese)0
-rw-r--r--shaders/asm/comp/switch-break-ladder.asm.invalid.comp (renamed from shaders/asm/comp/switch-break-ladder.asm.comp)0
-rw-r--r--shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp (renamed from shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp)0
37 files changed, 377 insertions, 874 deletions
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
index dde7f47b..dde7f47b 100644
--- 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
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 <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
-template<typename T, size_t Num>
-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<float4x4, 32> _16 = spvUnsafeArray<float4x4, 32>({ 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<float4x4, 32> 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 <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
-template<typename T, size_t Num>
-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<float4x4, 32> _16 = spvUnsafeArray<float4x4, 32>({ 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<float4x4, 32> 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<VertexData, 32> _19 = spvUnsafeArray<VertexData, 32>({ 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<VertexData, 32> 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<VertexData, 32> _19 = spvUnsafeArray<VertexData, 32>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ 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<float4, 2>({ gl_in[31].vInputs_b_0, gl_in[31].vInputs_b_1 }), gl_in[31].vInputs_c } });
- spvUnsafeArray<VertexData, 32> 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 <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
-template<typename T, size_t Num>
-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<float4, 32> _15 = spvUnsafeArray<float4, 32>({ 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<float4, 32> 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 <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
-template<typename T, size_t Num>
-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<float4, 32> _15 = spvUnsafeArray<float4, 32>({ 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<float4, 32> 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 <metal_stdlib>
-#include <simd/simd.h>
-
-using namespace metal;
-
-template<typename T, size_t Num>
-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<main0_in> 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<float4, 1> out_var_TEXCOORD0 = {};
- spvUnsafeArray<float4, 3> _77 = spvUnsafeArray<float4, 3>({ 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<float4, 3> _78 = spvUnsafeArray<float4, 3>({ 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<spvUnsafeArray<float4, 1>, 3> _79 = spvUnsafeArray<spvUnsafeArray<float4, 1>, 3>({ spvUnsafeArray<float4, 1>({ patchIn.gl_in[0].in_var_TEXCOORD0_0 }), spvUnsafeArray<float4, 1>({ patchIn.gl_in[1].in_var_TEXCOORD0_0 }), spvUnsafeArray<float4, 1>({ patchIn.gl_in[2].in_var_TEXCOORD0_0 }) });
- spvUnsafeArray<float4, 3> _80 = spvUnsafeArray<float4, 3>({ patchIn.gl_in[0].in_var_COLOR1, patchIn.gl_in[1].in_var_COLOR1, patchIn.gl_in[2].in_var_COLOR1 });
- spvUnsafeArray<float4, 3> _81 = spvUnsafeArray<float4, 3>({ patchIn.gl_in[0].in_var_COLOR2, patchIn.gl_in[1].in_var_COLOR2, patchIn.gl_in[2].in_var_COLOR2 });
- spvUnsafeArray<float4, 3> _97 = spvUnsafeArray<float4, 3>({ 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<float3, 3> _98 = spvUnsafeArray<float3, 3>({ 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<float4, 1> _72;
- _72 = _79[0];
- spvUnsafeArray<float4, 1> _71;
- _71 = _79[1];
- float3 _120 = float3(gl_TessCoord.x);
- float3 _123 = float3(gl_TessCoord.y);
- spvUnsafeArray<float4, 1> _73;
- for (int _133 = 0; _133 < 1; )
- {
- _73[_133] = fma(_72[_133], _111, _71[_133] * _113);
- _133++;
- continue;
- }
- spvUnsafeArray<float4, 1> _75;
- _75 = _73;
- spvUnsafeArray<float4, 1> _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<float4, 1> _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
index f326869c..f326869c 100644
--- a/reference/shaders/asm/comp/switch-break-ladder.asm.comp
+++ b/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
index fbe5e3d9..fbe5e3d9 100644
--- 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
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
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<raytracing::instancing, raytracing::triangle_data> 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
index 346d7e3f..346d7e3f 100644
--- a/reference/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese
+++ b/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
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
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
index fba72ad0..fba72ad0 100644
--- a/shaders-msl/comp/ray-query.spv14.vk.ios.msl24.comp
+++ b/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
index 778e93d3..778e93d3 100644
--- a/shaders-ue4/asm/tese/ds-texcoord-array.asm.tese
+++ b/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
index a32c9ef9..a32c9ef9 100644
--- a/shaders/asm/comp/switch-break-ladder.asm.comp
+++ b/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
index c7dc397e..c7dc397e 100644
--- a/shaders/vulkan/comp/ray-query.nocompat.spv14.vk.comp
+++ b/shaders/vulkan/comp/ray-query.nocompat.spv14.invalid.vk.comp