#version 450 layout(constant_id = 3) const bool cb2_bound = true; layout(constant_id = 4) const bool cb4_bound = true; layout(constant_id = 8) const bool t0_bound = true; layout(constant_id = 9) const bool t1_bound = true; layout(constant_id = 10) const bool t2_bound = true; layout(constant_id = 11) const bool t3_bound = true; layout(constant_id = 12) const bool t4_bound = true; layout(constant_id = 13) const bool t12_bound = true; layout(constant_id = 14) const bool t13_bound = true; layout(constant_id = 15) const bool t18_bound = true; layout(set = 0, binding = 3, std140) uniform struct_cb2 { vec4 m[19]; } cb2; layout(set = 0, binding = 4, std140) uniform struct_cb4 { vec4 m[29]; } cb4; layout(set = 0, binding = 5) uniform sampler s0; layout(set = 0, binding = 6) uniform sampler s12; layout(set = 0, binding = 7) uniform sampler s13; layout(set = 0, binding = 8) uniform texture2DArray t0; layout(set = 0, binding = 9) uniform texture2DArray t1; layout(set = 0, binding = 10) uniform texture2D t2; layout(set = 0, binding = 11) uniform texture2D t3; layout(set = 0, binding = 12) uniform texture2D t4; layout(set = 0, binding = 13) uniform texture2D t12; layout(set = 0, binding = 14) uniform texture2D t13; layout(set = 0, binding = 15) uniform texture2D t18; uniform sampler SPIRV_Cross_DummySampler; layout(location = 0) in vec4 v0; layout(location = 1) in vec4 v1; layout(location = 2) in vec4 v2; layout(location = 3) in vec4 v3; layout(location = 4) in vec4 v4; layout(location = 5) in vec4 v5; layout(location = 6) in vec4 v6; layout(location = 0) out vec4 o0; layout(location = 1) out vec4 o1; layout(location = 2) out vec4 o2; vec4 shader_in[32]; vec4 r0; vec4 r1; vec4 r2; vec4 r3; vec4 r4; vec4 r5; vec4 r6; vec4 r7; void ps_main() { bool do_discard = false; r0.xyz = uintBitsToFloat(mix(uvec3(0u), uvec3(4294967295u), notEqual(cb2.m[18].yzw, uintBitsToFloat(uvec3(0u))))); if (floatBitsToUint(r0.x) != 0u) { r1 = shader_in[7].xyxy * uintBitsToFloat(uvec4(1098907648u)); r1 = uintBitsToFloat(mix(uvec4(0u), uvec4(4294967295u), greaterThanEqual(r1, -r1.zwzw))); r1 = mix(uintBitsToFloat(uvec4(3246391296u, 3246391296u, 3179282432u, 3179282432u)), uintBitsToFloat(uvec4(1098907648u, 1098907648u, 1031798784u, 1031798784u)), notEqual(floatBitsToUint(r1), uvec4(0u))); r0.xw = r1.zw * shader_in[7].xy; r0.xw = fract(r0.xw); r0.xw = r0.xw * r1.xy; r1.xy = intBitsToFloat(ivec2(r0.xw)); r1.zw = uintBitsToFloat(uvec2(0u)); r0.x = texelFetch(sampler2D(t18, SPIRV_Cross_DummySampler), floatBitsToInt(r1).xy, floatBitsToInt(r1).w).x; r0.x = fma(r0.x, shader_in[1].x, shader_in[1].y); r0.x = uintBitsToFloat((r0.x < uintBitsToFloat(0u)) ? 4294967295u : 0u); if (floatBitsToUint(r0.x) != 0u) { // Calling discard at the end of the shader works as expected do_discard = true; // Calling discard here breaks derivatives for the texture // sample operation in line 96 and others, which leads to // the wrong mip level being used. // discard; } } if (floatBitsToUint(r0.y) != 0u) { r0.x = texture(sampler2D(t12, s12), shader_in[3].xyxx.xy).x; r0.x = fma(r0.x, shader_in[1].z, shader_in[1].w); r0.x = uintBitsToFloat((r0.x < uintBitsToFloat(0u)) ? 4294967295u : 0u); if (floatBitsToUint(r0.x) != 0u) discard; } if (floatBitsToUint(r0.z) != 0u) { r0.x = dot(shader_in[0].xyz, shader_in[0].xyz); r0.x = r0.x + uintBitsToFloat(3212836864u); r0.x = uintBitsToFloat((r0.x < uintBitsToFloat(0u)) ? 4294967295u : 0u); if (floatBitsToUint(r0.x) != 0u) discard; } r0.xy = shader_in[2].xy * cb4.m[3].xx; r1.x = fma(shader_in[4].y, uintBitsToFloat(1098907543u), cb4.m[2].x); r0.z = floor(r1.x); r1.yzw = texture(sampler2DArray(t0, s0), r0.xyzx.xyz).xyz; r2.x = r0.z + uintBitsToFloat(1065353216u); r2.x = clamp(r2.x + (-cb4.m[5].x), 0.0, 1.0); r2.y = (-r0.z) + cb4.m[6].x; r1.x = r1.x + uintBitsToFloat(1065353216u); r0.w = floor(r1.x); r3.xyz = texture(sampler2DArray(t0, s0), r0.xywx.xyz).xyz; r2.z = r0.w + (-cb4.m[5].x); r2.w = (-r0.w) + cb4.m[6].x; r2.yzw = clamp(r2.yzw + uintBitsToFloat(uvec3(1065353216u)), vec3(0.0), vec3(1.0)); r4 = texture(sampler2DArray(t1, s0), r0.xywx.xyz); r3.w = texture(sampler2D(t2, s0), r0.xyxx.xy).x; r5.x = (-cb4.m[8].x) + cb4.m[9].x; r4.z = fma(r4.z, r5.x, cb4.m[8].x); r5.x = (-cb4.m[10].x) + cb4.m[11].x; r3.w = fma(r3.w, r5.x, cb4.m[10].x); r3.w = (-r4.z) + r3.w; r3.w = fma(cb4.m[12].x, r3.w, r4.z); r1.x = (-r0.w) + r1.x; r1.x = fma(-r3.w, uintBitsToFloat(1065336439u), r1.x); r1.x = clamp(r1.x * cb4.m[7].x, 0.0, 1.0); r5.xy = fma(shader_in[2].zw, cb4.m[15].xx, cb4.m[16].xy); r5 = texture(sampler2D(t3, s0), r5.xyxx.xy); r3.w = r5.w * shader_in[4].z; r3.w = r3.w * cb4.m[17].x; r4.z = texture(sampler2D(t4, s0), shader_in[2].xyxx.xy).x; r4.z = r4.z + (-cb4.m[18].x); r5.w = (-cb4.m[18].x) + cb4.m[19].x; r4.z = clamp(r4.z / r5.w, 0.0, 1.0); r5.w = shader_in[4].z * cb4.m[20].x; r3.w = clamp(fma(r3.w, r4.z, r5.w), 0.0, 1.0); r4.z = r0.z + (-cb4.m[21].x); r5.w = clamp(r1.x + r4.z, 0.0, 1.0); r4.z = r4.z + uintBitsToFloat(1065353216u); r4.z = clamp(r4.z * r5.w, 0.0, 1.0); r0.w = r0.w + (-cb4.m[22].x); r0.w = clamp(r0.w + r1.x, 0.0, 1.0); r6.xyz = fma(cb4.m[0].xyz, shader_in[4].xxx, uintBitsToFloat(uvec3(3212836864u))); r6.xyz = fma(cb4.m[1].xxx, r6.xyz, uintBitsToFloat(uvec3(1065353216u))); r7.xyz = fma(r1.yzw, cb4.m[4].xyz, -r1.yzw); r7.xyz = r2.xxx * r7.xyz; r1.yzw = fma(r2.yyy, r7.xyz, r1.yzw); r7.xyz = fma(r3.xyz, cb4.m[4].xyz, -r3.xyz); r2.xyz = r2.zzz * r7.xyz; r2.xyz = fma(r2.www, r2.xyz, r3.xyz); r2.xyz = (-r1.yzw) + r2.xyz; r1.yzw = fma(r1.xxx, r2.xyz, r1.yzw); r2.xyz = (-r1.yzw) + cb4.m[13].xyz; r1.yzw = fma(cb4.m[14].xxx, r2.xyz, r1.yzw); r2.xyz = (-r1.yzw) + r5.xyz; r2.xyz = fma(r3.www, r2.xyz, r1.yzw); r3.xyz = r1.yzw + (-r2.xyz); r2.xyz = fma(r4.zzz, r3.xyz, r2.xyz); r2.xyz = (-r1.yzw) + r2.xyz; r1.yzw = fma(r0.www, r2.xyz, r1.yzw); r2.xyz = r1.yzw * r6.xyz; r1.yzw = fma(-r6.xyz, r1.yzw, r1.xxx); o0.xyz = fma(cb4.m[23].xxx, r1.yzw, r2.xyz); r0.xyz = texture(sampler2DArray(t1, s0), r0.xyzx.xyz).xyw; r0.xy = r0.xy + uintBitsToFloat(uvec2(3204448256u)); r2.xy = r0.xy * uintBitsToFloat(uvec2(1073741824u)); r2.z = uintBitsToFloat(1065353216u); r0.xy = r4.xy + uintBitsToFloat(uvec2(3204448256u)); r3.xy = r0.xy * uintBitsToFloat(uvec2(1073741824u)); r3.z = uintBitsToFloat(1065353216u); r0.xyw = (-r2.xyz) + r3.xyz; r0.xyw = fma(r1.xxx, r0.xyw, r2.xyz); r1.y = dot(r0.xyw, r0.xyw); r1.y = inversesqrt(r1.y); r0.xyw = r0.xyw * r1.yyy; r2.x = shader_in[0].w; r2 = vec4(r2.x, shader_in[3].zw.x, shader_in[3].zw.y, r2.w); r1.yzw = r0.yyy * r2.xyz; r1.yzw = fma(shader_in[6].xyz, r0.xxx, r1.yzw); r0.xyw = fma(shader_in[5].xyz, r0.www, r1.yzw); r1.y = uintBitsToFloat((0u >= floatBitsToUint(shader_in[8].x)) ? 4294967295u : 0u); if (floatBitsToUint(r1.y) != 0u) { r1.y = dot(shader_in[5].xyz, r0.xyw); r1.yzw = r1.yyy * shader_in[5].xyz; r0.xyw = fma(-r1.yzw, uintBitsToFloat(uvec3(1073741824u)), r0.xyw); } r1.y = (-r0.z) + r4.w; r0.z = fma(r1.x, r1.y, r0.z); r1.x = (-r0.z) + uintBitsToFloat(1065353216u); r1.yzw = log2(cb4.m[24].xyz); r1.yzw = r1.yzw * uintBitsToFloat(uvec3(1074580685u)); r1.yzw = exp2(r1.yzw); r1.x = fma(r1.x, cb4.m[25].x, cb4.m[26].x); r1.xyz = clamp(r1.xxx * r1.yzw, vec3(0.0), vec3(1.0)); r1.xyz = log2(r1.xyz); r1.xyz = r1.xyz * uintBitsToFloat(uvec3(1055439391u)); o2.xyz = exp2(r1.xyz); r1.x = (-r0.z) + cb4.m[27].x; o1.w = fma(cb4.m[28].x, r1.x, r0.z); r0.z = dot(r0.xyw, r0.xyw); r0.z = inversesqrt(r0.z); r0.xyz = r0.zzz * r0.xyw; r0.w = max(abs(r0.y), abs(r0.x)); r0.w = max(r0.w, abs(r0.z)); r1.xy = uintBitsToFloat(mix(uvec2(0u), uvec2(4294967295u), lessThan(abs(r0.zy), r0.ww))); r1.yz = mix(abs(r0.zx), abs(r0.zy), notEqual(floatBitsToUint(r1.yy), uvec2(0u))); r1.xy = mix(abs(r0.yx), r1.yz, notEqual(floatBitsToUint(r1.xx), uvec2(0u))); r1.z = uintBitsToFloat((r1.y < r1.x) ? 4294967295u : 0u); r1.xy = mix(r1.yx, r1.xy, notEqual(floatBitsToUint(r1.zz), uvec2(0u))); r1.z = r1.y / r1.x; r0.xyz = r0.xyz / r0.www; r0.w = textureLod(sampler2D(t13, s13), r1.xzxx.xy, uintBitsToFloat(0u)).x; r0.xyz = r0.www * r0.xyz; o1.xyz = fma(r0.xyz, uintBitsToFloat(uvec3(1056964608u)), uintBitsToFloat(uvec3(1056964608u))); o0.w = uintBitsToFloat(0u); o2.w = uintBitsToFloat(0u); if (do_discard) discard; } void main() { shader_in[0] = v0; shader_in[1] = v1; shader_in[2] = v2; shader_in[3] = v3; shader_in[4] = v4; shader_in[5] = v5; shader_in[6] = v6; shader_in[7].xy = gl_FragCoord.xy; shader_in[8].x = uintBitsToFloat(gl_FrontFacing ? 4294967295u : 0u); ps_main(); }