Files
2026-05-06 23:44:13 +02:00

1437 lines
64 KiB
Plaintext

#!amber
# Copyright 2021 Google LLC.
# Copyright 2021 The Khronos Group Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Test OpSelect using a mix of operands with and without RelaxedPrecision
SHADER vertex vtex_shader GLSL
#version 450
layout(location = 0) out vec4 v1;
layout(location = 1) out vec4 v2;
layout(location = 2) out vec4 v3;
layout(location = 3) out vec4 v4;
layout(location = 4) out vec4 v5;
layout(location = 5) out vec4 v6;
layout(location = 6) out vec4 v7;
layout(location = 7) out vec4 v8;
void main()
{
v1 = vec4(1.0f);
v2 = vec4(1.0f);
v3 = vec4(1.0f);
v4 = vec4(1.0f);
v5 = vec4(1.0f);
v6 = vec4(1.0f);
v7 = vec4(1.0f);
v8 = vec4(1.0f);
vec2 pos = vec2(float(gl_VertexIndex & 1), float((gl_VertexIndex >> 1) & 1));
gl_Position = vec4(pos, 0.0f, 1.0f);
}
END
SHADER fragment frag_shader SPIRV-ASM TARGET_ENV spv1.0
OpCapability Shader
%58 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %2 "main" %49 %50 %51 %52 %53 %54 %55 %56 %57 %gl_FragCoord
OpExecutionMode %2 OriginUpperLeft
OpSource GLSL 450
OpDecorate %59 SpecId 1
OpDecorate %_arr_v4float_uint_4 ArrayStride 16
OpDecorate %_arr_v4float_uint_2 ArrayStride 16
OpMemberDecorate %_struct_43 0 Offset 0
OpMemberDecorate %_struct_43 1 Offset 64
OpMemberDecorate %_struct_43 2 Offset 128
OpMemberDecorate %_struct_43 3 Offset 144
OpMemberDecorate %_struct_43 4 Offset 160
OpMemberDecorate %_struct_43 5 Offset 176
OpMemberDecorate %_struct_43 6 Offset 192
OpMemberDecorate %_struct_43 7 Offset 224
OpMemberDecorate %_struct_43 8 Offset 240
OpMemberDecorate %_struct_43 9 Offset 256
OpMemberDecorate %_struct_43 10 Offset 272
OpMemberDecorate %_struct_43 11 Offset 288
OpMemberDecorate %_struct_43 12 Offset 304
OpMemberDecorate %_struct_43 13 Offset 320
OpMemberDecorate %_struct_43 14 Offset 336
OpMemberDecorate %_struct_43 15 Offset 352
OpMemberDecorate %_struct_43 16 Offset 368
OpMemberDecorate %_struct_43 17 Offset 384
OpMemberDecorate %_struct_43 18 Offset 400
OpMemberDecorate %_struct_43 19 Offset 416
OpMemberDecorate %_struct_43 20 Offset 432
OpMemberDecorate %_struct_43 21 Offset 448
OpMemberDecorate %_struct_43 22 Offset 464
OpMemberDecorate %_struct_43 23 Offset 480
OpMemberDecorate %_struct_43 24 Offset 496
OpMemberDecorate %_struct_43 25 Offset 512
OpMemberDecorate %_struct_43 26 Offset 576
OpMemberDecorate %_struct_43 27 Offset 640
OpMemberDecorate %_struct_43 3 RelaxedPrecision
OpMemberDecorate %_struct_43 5 RelaxedPrecision
OpMemberDecorate %_struct_43 6 RelaxedPrecision
OpMemberDecorate %_struct_43 8 RelaxedPrecision
OpMemberDecorate %_struct_43 9 RelaxedPrecision
OpMemberDecorate %_struct_43 18 RelaxedPrecision
OpMemberDecorate %_struct_43 19 RelaxedPrecision
OpMemberDecorate %_struct_43 20 RelaxedPrecision
OpMemberDecorate %_struct_43 21 RelaxedPrecision
OpMemberDecorate %_struct_43 22 RelaxedPrecision
OpMemberDecorate %_struct_43 23 RelaxedPrecision
OpMemberDecorate %_struct_43 24 RelaxedPrecision
OpDecorate %_struct_43 Block
OpDecorate %65 DescriptorSet 2
OpDecorate %65 Binding 0
OpMemberDecorate %_struct_44 0 Offset 0
OpMemberDecorate %_struct_44 1 Offset 16
OpMemberDecorate %_struct_44 2 Offset 32
OpMemberDecorate %_struct_44 3 Offset 48
OpMemberDecorate %_struct_44 2 RelaxedPrecision
OpMemberDecorate %_struct_44 3 RelaxedPrecision
OpDecorate %_struct_44 Block
OpDecorate %67 DescriptorSet 2
OpDecorate %67 Binding 1
OpDecorate %45 RelaxedPrecision
OpDecorate %45 DescriptorSet 1
OpDecorate %45 Binding 0
OpDecorate %46 RelaxedPrecision
OpDecorate %46 DescriptorSet 1
OpDecorate %46 Binding 1
OpDecorate %47 RelaxedPrecision
OpDecorate %47 DescriptorSet 1
OpDecorate %47 Binding 2
OpDecorate %48 RelaxedPrecision
OpDecorate %48 DescriptorSet 1
OpDecorate %48 Binding 3
OpDecorate %49 Location 4
OpDecorate %50 Location 5
OpDecorate %51 Location 0
OpDecorate %52 Location 1
OpDecorate %53 Location 6
OpDecorate %54 Location 7
OpDecorate %55 Location 2
OpDecorate %56 Location 3
OpDecorate %57 RelaxedPrecision
OpDecorate %57 Location 0
OpDecorate %81 RelaxedPrecision
OpDecorate %86 RelaxedPrecision
OpDecorate %87 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %93 RelaxedPrecision
OpDecorate %94 RelaxedPrecision
OpDecorate %103 RelaxedPrecision
OpDecorate %104 RelaxedPrecision
OpDecorate %105 RelaxedPrecision
OpMemberDecorate %_struct_36 0 Offset 0
OpMemberDecorate %_struct_36 1 Offset 16
OpMemberDecorate %_struct_36 2 Offset 32
OpMemberDecorate %_struct_36 3 Offset 48
OpMemberDecorate %_struct_36 4 Offset 64
OpMemberDecorate %_struct_36 5 Offset 80
OpMemberDecorate %_struct_36 6 Offset 96
OpMemberDecorate %_struct_36 7 Offset 112
OpMemberDecorate %_struct_36 8 Offset 176
OpMemberDecorate %_struct_36 9 Offset 192
OpMemberDecorate %_struct_36 10 Offset 208
OpMemberDecorate %_struct_36 11 Offset 224
OpMemberDecorate %_struct_36 12 Offset 240
OpMemberDecorate %_struct_36 13 Offset 256
OpMemberDecorate %_struct_36 1 RelaxedPrecision
OpMemberDecorate %_struct_36 6 RelaxedPrecision
OpMemberDecorate %_struct_36 8 RelaxedPrecision
OpMemberDecorate %_struct_36 9 RelaxedPrecision
OpMemberDecorate %_struct_36 10 RelaxedPrecision
OpMemberDecorate %_struct_36 11 RelaxedPrecision
OpMemberDecorate %_struct_36 12 RelaxedPrecision
OpMemberDecorate %_struct_36 13 RelaxedPrecision
OpDecorate %_struct_36 Block
OpDecorate %107 DescriptorSet 0
OpDecorate %107 Binding 1
OpMemberDecorate %_struct_35 0 Offset 0
OpMemberDecorate %_struct_35 1 Offset 8
OpMemberDecorate %_struct_35 2 Offset 16
OpMemberDecorate %_struct_35 3 Offset 20
OpMemberDecorate %_struct_35 4 Offset 24
OpMemberDecorate %_struct_35 5 Offset 28
OpDecorate %_struct_35 Block
OpDecorate %114 RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %122 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %128 RelaxedPrecision
OpDecorate %129 RelaxedPrecision
OpDecorate %130 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %132 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %134 RelaxedPrecision
OpDecorate %135 RelaxedPrecision
OpDecorate %136 RelaxedPrecision
OpDecorate %137 RelaxedPrecision
OpDecorate %140 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %145 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %147 RelaxedPrecision
OpDecorate %149 RelaxedPrecision
OpDecorate %150 RelaxedPrecision
OpDecorate %151 RelaxedPrecision
OpDecorate %153 RelaxedPrecision
OpDecorate %154 RelaxedPrecision
OpDecorate %155 RelaxedPrecision
OpDecorate %156 RelaxedPrecision
OpDecorate %158 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
OpDecorate %160 RelaxedPrecision
OpDecorate %161 RelaxedPrecision
OpDecorate %163 RelaxedPrecision
OpDecorate %164 RelaxedPrecision
OpDecorate %167 RelaxedPrecision
OpDecorate %168 RelaxedPrecision
OpDecorate %171 RelaxedPrecision
OpDecorate %172 RelaxedPrecision
OpDecorate %176 RelaxedPrecision
OpDecorate %177 RelaxedPrecision
OpDecorate %178 RelaxedPrecision
OpDecorate %179 RelaxedPrecision
OpDecorate %180 RelaxedPrecision
OpDecorate %182 RelaxedPrecision
OpDecorate %183 RelaxedPrecision
OpDecorate %191 RelaxedPrecision
OpDecorate %192 RelaxedPrecision
OpDecorate %193 RelaxedPrecision
OpDecorate %196 RelaxedPrecision
OpDecorate %197 RelaxedPrecision
OpDecorate %198 RelaxedPrecision
OpDecorate %201 RelaxedPrecision
OpDecorate %202 RelaxedPrecision
OpDecorate %203 RelaxedPrecision
OpDecorate %204 RelaxedPrecision
OpDecorate %205 RelaxedPrecision
OpDecorate %206 RelaxedPrecision
OpDecorate %207 RelaxedPrecision
OpDecorate %208 RelaxedPrecision
OpDecorate %209 RelaxedPrecision
OpDecorate %210 RelaxedPrecision
OpDecorate %211 RelaxedPrecision
OpDecorate %212 RelaxedPrecision
OpDecorate %295 RelaxedPrecision
OpDecorate %301 RelaxedPrecision
OpDecorate %307 RelaxedPrecision
OpDecorate %311 RelaxedPrecision
OpDecorate %316 RelaxedPrecision
OpDecorate %317 RelaxedPrecision
OpDecorate %318 RelaxedPrecision
OpDecorate %319 RelaxedPrecision
OpDecorate %320 RelaxedPrecision
OpDecorate %325 RelaxedPrecision
OpDecorate %326 RelaxedPrecision
OpDecorate %327 RelaxedPrecision
OpDecorate %330 RelaxedPrecision
OpDecorate %331 RelaxedPrecision
OpDecorate %332 RelaxedPrecision
OpDecorate %337 RelaxedPrecision
OpDecorate %338 RelaxedPrecision
OpDecorate %339 RelaxedPrecision
OpDecorate %342 RelaxedPrecision
OpDecorate %348 RelaxedPrecision
OpDecorate %349 RelaxedPrecision
OpDecorate %355 RelaxedPrecision
OpDecorate %357 RelaxedPrecision
OpDecorate %358 RelaxedPrecision
OpDecorate %363 RelaxedPrecision
OpDecorate %365 RelaxedPrecision
OpDecorate %366 RelaxedPrecision
OpDecorate %371 RelaxedPrecision
OpDecorate %373 RelaxedPrecision
OpDecorate %374 RelaxedPrecision
OpDecorate %377 RelaxedPrecision
OpDecorate %378 RelaxedPrecision
OpDecorate %379 RelaxedPrecision
OpDecorate %382 RelaxedPrecision
OpDecorate %383 RelaxedPrecision
OpDecorate %384 RelaxedPrecision
OpDecorate %387 RelaxedPrecision
OpDecorate %388 RelaxedPrecision
OpDecorate %391 RelaxedPrecision
OpDecorate %401 RelaxedPrecision
OpDecorate %402 RelaxedPrecision
OpDecorate %413 RelaxedPrecision
OpDecorate %416 RelaxedPrecision
OpDecorate %422 RelaxedPrecision
OpDecorate %423 RelaxedPrecision
OpDecorate %433 RelaxedPrecision
OpDecorate %436 RelaxedPrecision
OpDecorate %442 RelaxedPrecision
OpDecorate %443 RelaxedPrecision
OpDecorate %453 RelaxedPrecision
OpDecorate %456 RelaxedPrecision
OpDecorate %462 RelaxedPrecision
OpDecorate %463 RelaxedPrecision
OpDecorate %473 RelaxedPrecision
OpDecorate %476 RelaxedPrecision
OpDecorate %480 RelaxedPrecision
OpDecorate %481 RelaxedPrecision
OpDecorate %490 RelaxedPrecision
OpDecorate %493 RelaxedPrecision
OpDecorate %494 RelaxedPrecision
OpDecorate %496 RelaxedPrecision
OpDecorate %497 RelaxedPrecision
OpDecorate %498 RelaxedPrecision
OpDecorate %499 RelaxedPrecision
OpDecorate %501 RelaxedPrecision
OpDecorate %502 RelaxedPrecision
OpDecorate %503 RelaxedPrecision
OpDecorate %504 RelaxedPrecision
OpDecorate %517 RelaxedPrecision
OpDecorate %518 RelaxedPrecision
OpDecorate %530 RelaxedPrecision
OpDecorate %533 RelaxedPrecision
OpDecorate %537 RelaxedPrecision
OpDecorate %538 RelaxedPrecision
OpDecorate %539 RelaxedPrecision
OpDecorate %541 RelaxedPrecision
OpDecorate %543 RelaxedPrecision
OpDecorate %550 RelaxedPrecision
OpDecorate %551 RelaxedPrecision
OpDecorate %552 RelaxedPrecision
OpDecorate %553 RelaxedPrecision
OpDecorate %554 RelaxedPrecision
OpDecorate %555 RelaxedPrecision
OpDecorate %566 RelaxedPrecision
OpDecorate %567 RelaxedPrecision
OpDecorate %568 RelaxedPrecision
OpDecorate %569 RelaxedPrecision
OpDecorate %570 RelaxedPrecision
OpDecorate %571 RelaxedPrecision
OpDecorate %572 RelaxedPrecision
OpDecorate %573 RelaxedPrecision
OpDecorate %574 RelaxedPrecision
OpDecorate %575 RelaxedPrecision
OpDecorate %576 RelaxedPrecision
OpDecorate %578 RelaxedPrecision
OpDecorate %579 RelaxedPrecision
OpDecorate %580 RelaxedPrecision
OpDecorate %583 RelaxedPrecision
OpDecorate %584 RelaxedPrecision
OpDecorate %586 RelaxedPrecision
OpDecorate %587 RelaxedPrecision
OpDecorate %588 RelaxedPrecision
OpDecorate %589 RelaxedPrecision
OpDecorate %590 RelaxedPrecision
OpDecorate %591 RelaxedPrecision
OpDecorate %592 RelaxedPrecision
OpDecorate %593 RelaxedPrecision
OpDecorate %594 RelaxedPrecision
OpDecorate %596 RelaxedPrecision
OpDecorate %597 RelaxedPrecision
OpDecorate %598 RelaxedPrecision
OpDecorate %599 RelaxedPrecision
OpDecorate %600 RelaxedPrecision
OpDecorate %602 RelaxedPrecision
OpDecorate %603 RelaxedPrecision
OpDecorate %604 RelaxedPrecision
OpDecorate %605 RelaxedPrecision
OpDecorate %606 RelaxedPrecision
OpDecorate %607 RelaxedPrecision
OpDecorate %608 RelaxedPrecision
OpDecorate %609 RelaxedPrecision
OpDecorate %610 RelaxedPrecision
OpDecorate %612 RelaxedPrecision
OpDecorate %614 RelaxedPrecision
OpDecorate %615 RelaxedPrecision
OpDecorate %618 RelaxedPrecision
OpDecorate %620 RelaxedPrecision
OpDecorate %621 RelaxedPrecision
OpDecorate %622 RelaxedPrecision
OpDecorate %623 RelaxedPrecision
OpDecorate %624 RelaxedPrecision
OpDecorate %625 RelaxedPrecision
OpDecorate %627 RelaxedPrecision
OpDecorate %628 RelaxedPrecision
OpDecorate %635 RelaxedPrecision
OpDecorate %636 RelaxedPrecision
OpDecorate %638 RelaxedPrecision
OpDecorate %640 RelaxedPrecision
OpDecorate %641 RelaxedPrecision
OpDecorate %643 RelaxedPrecision
OpDecorate %644 RelaxedPrecision
OpDecorate %645 RelaxedPrecision
OpDecorate %704 RelaxedPrecision
OpDecorate %705 RelaxedPrecision
OpDecorate %725 RelaxedPrecision
OpDecorate %726 RelaxedPrecision
OpDecorate %728 RelaxedPrecision
OpDecorate %729 RelaxedPrecision
OpDecorate %730 RelaxedPrecision
OpDecorate %731 RelaxedPrecision
OpDecorate %732 RelaxedPrecision
OpDecorate %733 RelaxedPrecision
OpDecorate %734 RelaxedPrecision
OpDecorate %735 RelaxedPrecision
OpDecorate %738 RelaxedPrecision
OpDecorate %740 RelaxedPrecision
OpDecorate %742 RelaxedPrecision
OpDecorate %744 RelaxedPrecision
OpDecorate %745 RelaxedPrecision
OpDecorate %746 RelaxedPrecision
OpDecorate %747 RelaxedPrecision
OpDecorate %748 RelaxedPrecision
OpDecorate %749 RelaxedPrecision
OpDecorate %751 RelaxedPrecision
OpDecorate %752 RelaxedPrecision
OpDecorate %753 RelaxedPrecision
OpDecorate %754 RelaxedPrecision
OpDecorate %755 RelaxedPrecision
OpDecorate %756 RelaxedPrecision
OpDecorate %759 RelaxedPrecision
OpDecorate %760 RelaxedPrecision
OpDecorate %761 RelaxedPrecision
OpDecorate %762 RelaxedPrecision
OpDecorate %763 RelaxedPrecision
OpDecorate %766 RelaxedPrecision
OpDecorate %769 RelaxedPrecision
OpDecorate %770 RelaxedPrecision
OpDecorate %gl_FragCoord BuiltIn FragCoord
OpDecorate %800 RelaxedPrecision
OpDecorate %803 RelaxedPrecision
OpDecorate %804 RelaxedPrecision
OpDecorate %809 RelaxedPrecision
OpDecorate %816 RelaxedPrecision
OpDecorate %817 RelaxedPrecision
OpDecorate %818 RelaxedPrecision
OpDecorate %819 RelaxedPrecision
OpDecorate %820 RelaxedPrecision
OpDecorate %821 RelaxedPrecision
OpDecorate %822 RelaxedPrecision
OpDecorate %823 RelaxedPrecision
OpDecorate %824 RelaxedPrecision
OpDecorate %825 RelaxedPrecision
OpDecorate %826 RelaxedPrecision
OpDecorate %827 RelaxedPrecision
OpDecorate %828 RelaxedPrecision
OpDecorate %829 RelaxedPrecision
%void = OpTypeVoid
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%mat2v2float = OpTypeMatrix %v2float 2
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%v4float = OpTypeVector %float 4
%mat4v4float = OpTypeMatrix %v4float 4
%uint = OpTypeInt 32 0
%int = OpTypeInt 32 1
%v4int = OpTypeVector %int 4
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%int_3 = OpConstant %int 3
%59 = OpSpecConstant %uint 0
%uint_4 = OpConstant %uint 4
%_arr_v4float_uint_4 = OpTypeArray %v4float %uint_4
%uint_2 = OpConstant %uint 2
%_arr_v4float_uint_2 = OpTypeArray %v4float %uint_2
%_struct_43 = OpTypeStruct %_arr_v4float_uint_4 %_arr_v4float_uint_4 %v4float %v4float %v4float %v4float %_arr_v4float_uint_2 %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %_arr_v4float_uint_4 %_arr_v4float_uint_4 %v4float
%_struct_44 = OpTypeStruct %v4float %v4float %float %v4float
%68 = OpTypeImage %float 3D 0 0 0 1 Unknown
%69 = OpTypeSampledImage %68
%71 = OpTypeImage %float 2D 1 0 0 1 Unknown
%72 = OpTypeSampledImage %71
%74 = OpTypeImage %float 2D 0 0 0 1 Unknown
%75 = OpTypeSampledImage %74
%bool = OpTypeBool
%v3bool = OpTypeVector %bool 3
%_struct_36 = OpTypeStruct %v4float %v4float %v3float %v4float %v2float %v4float %v4float %_arr_v4float_uint_4 %v4float %v4float %v4float %v4float %v4float %v4float
%v2uint = OpTypeVector %uint 2
%_struct_35 = OpTypeStruct %v2uint %v2float %uint %uint %uint %uint
%uint_0 = OpConstant %uint 0
%uint_3 = OpConstant %uint 3
%float_9_99999975en06 = OpConstant %float 9.99999975e-06
%float_0_125 = OpConstant %float 0.125
%float_8 = OpConstant %float 8
%float_0_5 = OpConstant %float 0.5
%uint_1 = OpConstant %uint 1
%float_1 = OpConstant %float 1
%190 = OpConstantComposite %v2float %float_0_125 %float_1
%float_1_17549435en38 = OpConstant %float 1.17549435e-38
%uint_7 = OpConstant %uint 7
%float_0 = OpConstant %float 0
%uint_5 = OpConstant %uint 5
%uint_18 = OpConstant %uint 18
%uint_19 = OpConstant %uint 19
%uint_20 = OpConstant %uint 20
%float_12_9200001 = OpConstant %float 12.9200001
%315 = OpConstantComposite %v3float %float_12_9200001 %float_12_9200001 %float_12_9200001
%float_0_416666657 = OpConstant %float 0.416666657
%324 = OpConstantComposite %v3float %float_0_416666657 %float_0_416666657 %float_0_416666657
%float_1_05499995 = OpConstant %float 1.05499995
%336 = OpConstantComposite %v3float %float_1_05499995 %float_1_05499995 %float_1_05499995
%float_n0_0549999997 = OpConstant %float -0.0549999997
%341 = OpConstantComposite %v3float %float_n0_0549999997 %float_n0_0549999997 %float_n0_0549999997
%float_0_00313080009 = OpConstant %float 0.00313080009
%346 = OpConstantComposite %v4float %float_0_00313080009 %float_0_00313080009 %float_0_00313080009 %float_0_00313080009
%v4bool = OpTypeVector %bool 4
%376 = OpConstantNull %v3float
%uint_13 = OpConstant %uint 13
%float_0_959999979 = OpConstant %float 0.959999979
%386 = OpConstantComposite %v3float %float_0_959999979 %float_0_959999979 %float_0_959999979
%uint_12 = OpConstant %uint 12
%uint_8 = OpConstant %uint 8
%uint_9 = OpConstant %uint 9
%uint_10 = OpConstant %uint 10
%uint_11 = OpConstant %uint 11
%float_0_25 = OpConstant %float 0.25
%479 = OpConstantComposite %v4float %float_0_25 %float_0_25 %float_0_25 %float_0_25
%float_4_05000019 = OpConstant %float 4.05000019
%float_n1 = OpConstant %float -1
%float_0_0399999991 = OpConstant %float 0.0399999991
%float_0_941176474 = OpConstant %float 0.941176474
%float_n0_9375 = OpConstant %float -0.9375
%float_1_00001001 = OpConstant %float 1.00001001
%float_0_100000001 = OpConstant %float 0.100000001
%float_3 = OpConstant %float 3
%float_0_0625 = OpConstant %float 0.0625
%float_n6_10351562en05 = OpConstant %float -6.10351562e-05
%727 = OpConstantComposite %v3float %float_0_0399999991 %float_0_0399999991 %float_0_0399999991
%uint_6 = OpConstant %uint 6
%_arr_float_uint_4 = OpTypeArray %float %uint_4
%float_n0_01171875 = OpConstant %float -0.01171875
%float_0_00390625 = OpConstant %float 0.00390625
%float_0_01171875 = OpConstant %float 0.01171875
%float_n0_00390625 = OpConstant %float -0.00390625
%787 = OpConstantComposite %_arr_float_uint_4 %float_n0_01171875 %float_0_00390625 %float_0_01171875 %float_n0_00390625
%float_2 = OpConstant %float 2
%_ptr_Private_int = OpTypePointer Private %int
%_ptr_Input_int = OpTypePointer Input %int
%_ptr_Private_v4float = OpTypePointer Private %v4float
%_ptr_Output_v4float = OpTypePointer Output %v4float
%_ptr_Function_v4int = OpTypePointer Function %v4int
%_ptr_Uniform__struct_43 = OpTypePointer Uniform %_struct_43
%_ptr_Uniform__struct_44 = OpTypePointer Uniform %_struct_44
%_ptr_UniformConstant_69 = OpTypePointer UniformConstant %69
%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72
%_ptr_UniformConstant_75 = OpTypePointer UniformConstant %75
%_ptr_Private_v3float = OpTypePointer Private %v3float
%_ptr_Input_v3float = OpTypePointer Input %v3float
%_ptr_Private_v4float_0 = OpTypePointer Private %v4float
%_ptr_Input_v4float = OpTypePointer Input %v4float
%_ptr_Private_v4float_1 = OpTypePointer Private %v4float
%_ptr_Private_bool = OpTypePointer Private %bool
%_ptr_Private_v3float_0 = OpTypePointer Private %v3float
%_ptr_Private_float = OpTypePointer Private %float
%_ptr_Private_v3bool = OpTypePointer Private %v3bool
%_ptr_Uniform__struct_36 = OpTypePointer Uniform %_struct_36
%_ptr_PushConstant__struct_35 = OpTypePointer PushConstant %_struct_35
%_ptr_Uniform_float = OpTypePointer Uniform %float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_ptr_Private_float_0 = OpTypePointer Private %float
%_ptr_Input_float = OpTypePointer Input %float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%_ptr_Private_float_1 = OpTypePointer Private %float
%_ptr_Output_float = OpTypePointer Output %float
%_ptr_Function__arr_float_uint_4 = OpTypePointer Function %_arr_float_uint_4
%_ptr_Function_float = OpTypePointer Function %float
%_ptr_Private_uint = OpTypePointer Private %uint
%111 = OpTypeFunction %void
%65 = OpVariable %_ptr_Uniform__struct_43 Uniform
%67 = OpVariable %_ptr_Uniform__struct_44 Uniform
%45 = OpVariable %_ptr_UniformConstant_69 UniformConstant
%46 = OpVariable %_ptr_UniformConstant_72 UniformConstant
%47 = OpVariable %_ptr_UniformConstant_75 UniformConstant
%48 = OpVariable %_ptr_UniformConstant_75 UniformConstant
%49 = OpVariable %_ptr_Input_v3float Input
%50 = OpVariable %_ptr_Input_v3float Input
%51 = OpVariable %_ptr_Input_v4float Input
%52 = OpVariable %_ptr_Input_v4float Input
%53 = OpVariable %_ptr_Input_v3float Input
%54 = OpVariable %_ptr_Input_v3float Input
%55 = OpVariable %_ptr_Input_v4float Input
%56 = OpVariable %_ptr_Input_v4float Input
%57 = OpVariable %_ptr_Output_v4float Output
%80 = OpVariable %_ptr_Private_v4float_1 Private
%81 = OpVariable %_ptr_Private_v4float_1 Private
%84 = OpVariable %_ptr_Private_bool Private
%86 = OpVariable %_ptr_Private_v3float_0 Private
%87 = OpVariable %_ptr_Private_v3float_0 Private
%88 = OpVariable %_ptr_Private_v3float_0 Private
%90 = OpVariable %_ptr_Private_float Private
%91 = OpVariable %_ptr_Private_v3float_0 Private
%92 = OpVariable %_ptr_Private_v4float_1 Private
%93 = OpVariable %_ptr_Private_v3float_0 Private
%94 = OpVariable %_ptr_Private_v3float_0 Private
%95 = OpVariable %_ptr_Private_float Private
%96 = OpVariable %_ptr_Private_v3float_0 Private
%97 = OpVariable %_ptr_Private_v3float_0 Private
%100 = OpVariable %_ptr_Private_v3bool Private
%101 = OpVariable %_ptr_Private_float Private
%102 = OpVariable %_ptr_Private_bool Private
%103 = OpVariable %_ptr_Private_float Private
%104 = OpVariable %_ptr_Private_float Private
%105 = OpVariable %_ptr_Private_float Private
%107 = OpVariable %_ptr_Uniform__struct_36 Uniform
%110 = OpVariable %_ptr_PushConstant__struct_35 PushConstant
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%804 = OpVariable %_ptr_Private_float Private
%808 = OpVariable %_ptr_Private_uint Private
%112 = OpFunction %void None %111
%113 = OpLabel
%412 = OpVariable %_ptr_Function_v3float Function
%432 = OpVariable %_ptr_Function_v3float Function
%452 = OpVariable %_ptr_Function_v3float Function
%472 = OpVariable %_ptr_Function_v3float Function
%489 = OpVariable %_ptr_Function_v3float Function
%114 = OpLoad %75 %47
%115 = OpLoad %v4float %51
%116 = OpVectorShuffle %v2float %115 %115 0 1
%119 = OpAccessChain %_ptr_Uniform_float %107 %uint_4 %uint_0
%120 = OpLoad %float %119
%121 = OpImageSampleImplicitLod %v4float %114 %116 Bias %120
OpStore %81 %121
%122 = OpLoad %v4float %81
%123 = OpVectorShuffle %v3float %122 %122 0 1 2
%124 = OpFNegate %v3float %123
%127 = OpAccessChain %_ptr_Uniform_v4float %67 %uint_3
%128 = OpLoad %v4float %127
%129 = OpVectorShuffle %v3float %128 %128 0 1 2
%130 = OpFAdd %v3float %124 %129
OpStore %86 %130
%131 = OpLoad %v4float %81
%132 = OpVectorShuffle %v3float %131 %131 3 3 3
%133 = OpLoad %v3float %86
%134 = OpFMul %v3float %132 %133
%135 = OpLoad %v4float %81
%136 = OpVectorShuffle %v3float %135 %135 0 1 2
%137 = OpFAdd %v3float %134 %136
OpStore %86 %137
%139 = OpAccessChain %_ptr_Uniform_float %67 %uint_2
%140 = OpLoad %float %139
%141 = OpFAdd %float %140 %float_9_99999975en06
OpStore %103 %141
%143 = OpLoad %float %103
%144 = OpFMul %float %143 %float_0_125
OpStore %103 %144
%145 = OpLoad %float %103
%146 = OpFNegate %float %145
%147 = OpLoad %float %103
%148 = OpFOrdGreaterThanEqual %bool %147 %146
OpStore %84 %148
%149 = OpLoad %float %103
%150 = OpExtInst %float %58 FAbs %149
%151 = OpExtInst %float %58 Fract %150
OpStore %103 %151
%152 = OpLoad %bool %84
%153 = OpLoad %float %103
%154 = OpLoad %float %103
%155 = OpFNegate %float %154
%156 = OpSelect %float %152 %153 %155
OpStore %103 %156
%158 = OpLoad %float %103
%159 = OpFMul %float %158 %float_8
OpStore %103 %159
%160 = OpLoad %float %103
%161 = OpExtInst %float %58 Floor %160
OpStore %103 %161
%163 = OpLoad %float %103
%164 = OpFAdd %float %163 %float_0_5
%165 = OpAccessChain %_ptr_Private_float %87 %uint_0
OpStore %165 %164
%166 = OpAccessChain %_ptr_Private_float %87 %uint_0
%167 = OpLoad %float %166
%168 = OpFMul %float %167 %float_0_125
%169 = OpAccessChain %_ptr_Private_float %87 %uint_0
OpStore %169 %168
%170 = OpAccessChain %_ptr_Private_float %87 %uint_0
%171 = OpLoad %float %170
%172 = OpExtInst %float %58 Floor %171
%174 = OpAccessChain %_ptr_Private_float %87 %uint_1
OpStore %174 %172
%175 = OpAccessChain %_ptr_Private_float %87 %uint_1
%176 = OpLoad %float %175
%177 = OpFNegate %float %176
%178 = OpFMul %float %177 %float_8
%179 = OpLoad %float %103
%180 = OpFAdd %float %178 %179
%181 = OpAccessChain %_ptr_Private_float %87 %uint_0
OpStore %181 %180
%182 = OpLoad %v3float %87
%183 = OpVectorShuffle %v2float %182 %182 0 1
%184 = OpLoad %v4float %52
%185 = OpVectorShuffle %v2float %184 %184 0 1
%186 = OpFAdd %v2float %183 %185
%187 = OpLoad %v3float %87
%188 = OpVectorShuffle %v3float %187 %186 3 4 2
OpStore %87 %188
%191 = OpLoad %v3float %87
%192 = OpVectorShuffle %v2float %191 %191 0 1
%193 = OpFMul %v2float %192 %190
%194 = OpLoad %v3float %87
%195 = OpVectorShuffle %v3float %194 %193 3 4 2
OpStore %87 %195
%196 = OpLoad %75 %48
%197 = OpLoad %v3float %87
%198 = OpVectorShuffle %v2float %197 %197 0 1
%199 = OpAccessChain %_ptr_Uniform_float %107 %uint_4 %uint_0
%200 = OpLoad %float %199
%201 = OpImageSampleImplicitLod %v4float %196 %198 Bias %200
OpStore %81 %201
%202 = OpLoad %v3float %86
%203 = OpFNegate %v3float %202
%204 = OpLoad %v4float %81
%205 = OpVectorShuffle %v3float %204 %204 0 1 2
%206 = OpFAdd %v3float %203 %205
OpStore %87 %206
%207 = OpLoad %v4float %81
%208 = OpVectorShuffle %v3float %207 %207 3 3 3
%209 = OpLoad %v3float %87
%210 = OpFMul %v3float %208 %209
%211 = OpLoad %v3float %86
%212 = OpFAdd %v3float %210 %211
OpStore %86 %212
%213 = OpLoad %v3float %50
%214 = OpLoad %v3float %50
%215 = OpDot %float %213 %214
%216 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %216 %215
%218 = OpAccessChain %_ptr_Private_float %80 %uint_0
%219 = OpLoad %float %218
%220 = OpExtInst %float %58 FMax %219 %float_1_17549435en38
%221 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %221 %220
%222 = OpAccessChain %_ptr_Private_float %80 %uint_0
%223 = OpLoad %float %222
%224 = OpExtInst %float %58 InverseSqrt %223
%225 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %225 %224
%226 = OpLoad %v4float %80
%227 = OpVectorShuffle %v3float %226 %226 0 0 0
%228 = OpLoad %v3float %50
%229 = OpFMul %v3float %227 %228
%230 = OpLoad %v4float %80
%231 = OpVectorShuffle %v4float %230 %229 4 5 6 3
OpStore %80 %231
%232 = OpLoad %v3float %53
%233 = OpLoad %v3float %53
%234 = OpDot %float %232 %233
%235 = OpAccessChain %_ptr_Private_float %88 %uint_0
OpStore %235 %234
%236 = OpAccessChain %_ptr_Private_float %88 %uint_0
%237 = OpLoad %float %236
%238 = OpExtInst %float %58 FMax %237 %float_1_17549435en38
%239 = OpAccessChain %_ptr_Private_float %88 %uint_0
OpStore %239 %238
%240 = OpAccessChain %_ptr_Private_float %88 %uint_0
%241 = OpLoad %float %240
%242 = OpExtInst %float %58 InverseSqrt %241
%243 = OpAccessChain %_ptr_Private_float %88 %uint_0
OpStore %243 %242
%244 = OpLoad %v3float %88
%245 = OpVectorShuffle %v3float %244 %244 0 0 0
%246 = OpLoad %v3float %53
%247 = OpFMul %v3float %245 %246
OpStore %96 %247
%249 = OpAccessChain %_ptr_Input_float %49 %uint_1
%250 = OpLoad %float %249
%252 = OpAccessChain %_ptr_Uniform_float %107 %uint_7 %uint_1 %uint_2
%253 = OpLoad %float %252
%254 = OpFMul %float %250 %253
OpStore %90 %254
%255 = OpAccessChain %_ptr_Uniform_float %107 %uint_7 %uint_0 %uint_2
%256 = OpLoad %float %255
%257 = OpAccessChain %_ptr_Input_float %49 %uint_0
%258 = OpLoad %float %257
%259 = OpFMul %float %256 %258
%260 = OpLoad %float %90
%261 = OpFAdd %float %259 %260
OpStore %90 %261
%262 = OpAccessChain %_ptr_Uniform_float %107 %uint_7 %uint_2 %uint_2
%263 = OpLoad %float %262
%264 = OpAccessChain %_ptr_Input_float %49 %uint_2
%265 = OpLoad %float %264
%266 = OpFMul %float %263 %265
%267 = OpLoad %float %90
%268 = OpFAdd %float %266 %267
OpStore %90 %268
%269 = OpLoad %float %90
%270 = OpAccessChain %_ptr_Uniform_float %107 %uint_7 %uint_3 %uint_2
%271 = OpLoad %float %270
%272 = OpFAdd %float %269 %271
OpStore %90 %272
%273 = OpLoad %float %90
%274 = OpFNegate %float %273
%275 = OpAccessChain %_ptr_Uniform_float %107 %uint_3 %uint_1
%276 = OpLoad %float %275
%277 = OpFNegate %float %276
%278 = OpFAdd %float %274 %277
OpStore %90 %278
%280 = OpLoad %float %90
%281 = OpExtInst %float %58 FMax %280 %float_0
OpStore %90 %281
%282 = OpLoad %float %90
%284 = OpAccessChain %_ptr_Uniform_float %107 %uint_5 %uint_2
%285 = OpLoad %float %284
%286 = OpFMul %float %282 %285
%287 = OpAccessChain %_ptr_Uniform_float %107 %uint_5 %uint_3
%288 = OpLoad %float %287
%289 = OpFAdd %float %286 %288
OpStore %90 %289
%290 = OpLoad %float %90
%291 = OpExtInst %float %58 FClamp %290 %float_0 %float_1
OpStore %90 %291
%292 = OpAccessChain %_ptr_Private_float %80 %uint_3
OpStore %292 %float_1
%294 = OpAccessChain %_ptr_Uniform_v4float %65 %uint_18
%295 = OpLoad %v4float %294
%296 = OpLoad %v4float %80
%297 = OpDot %float %295 %296
%298 = OpAccessChain %_ptr_Private_float %87 %uint_0
OpStore %298 %297
%300 = OpAccessChain %_ptr_Uniform_v4float %65 %uint_19
%301 = OpLoad %v4float %300
%302 = OpLoad %v4float %80
%303 = OpDot %float %301 %302
%304 = OpAccessChain %_ptr_Private_float %87 %uint_1
OpStore %304 %303
%306 = OpAccessChain %_ptr_Uniform_v4float %65 %uint_20
%307 = OpLoad %v4float %306
%308 = OpLoad %v4float %80
%309 = OpDot %float %307 %308
%310 = OpAccessChain %_ptr_Private_float %87 %uint_2
OpStore %310 %309
%311 = OpLoad %v3float %87
%312 = OpLoad %v3float %54
%313 = OpFAdd %v3float %311 %312
OpStore %87 %313
%316 = OpLoad %v3float %87
%317 = OpFMul %v3float %316 %315
OpStore %91 %317
%318 = OpLoad %v3float %87
%319 = OpExtInst %v3float %58 FAbs %318
%320 = OpExtInst %v3float %58 Log2 %319
%321 = OpLoad %v4float %92
%322 = OpVectorShuffle %v4float %321 %320 4 5 6 3
OpStore %92 %322
%325 = OpLoad %v4float %92
%326 = OpVectorShuffle %v3float %325 %325 0 1 2
%327 = OpFMul %v3float %326 %324
%328 = OpLoad %v4float %92
%329 = OpVectorShuffle %v4float %328 %327 4 5 6 3
OpStore %92 %329
%330 = OpLoad %v4float %92
%331 = OpVectorShuffle %v3float %330 %330 0 1 2
%332 = OpExtInst %v3float %58 Exp2 %331
%333 = OpLoad %v4float %92
%334 = OpVectorShuffle %v4float %333 %332 4 5 6 3
OpStore %92 %334
%337 = OpLoad %v4float %92
%338 = OpVectorShuffle %v3float %337 %337 0 1 2
%339 = OpFMul %v3float %338 %336
%342 = OpFAdd %v3float %339 %341
%343 = OpLoad %v4float %92
%344 = OpVectorShuffle %v4float %343 %342 4 5 6 3
OpStore %92 %344
%348 = OpLoad %v3float %87
%349 = OpVectorShuffle %v4float %348 %348 0 1 2 2
%350 = OpFOrdGreaterThanEqual %v4bool %346 %349
%351 = OpVectorShuffle %v3bool %350 %350 0 1 2
OpStore %100 %351
%352 = OpAccessChain %_ptr_Private_bool %100 %uint_0
%353 = OpLoad %bool %352
%354 = OpAccessChain %_ptr_Private_float %91 %uint_0
%355 = OpLoad %float %354
%356 = OpAccessChain %_ptr_Private_float %92 %uint_0
%357 = OpLoad %float %356
%358 = OpSelect %float %353 %355 %357
%359 = OpAccessChain %_ptr_Private_float %87 %uint_0
OpStore %359 %358
%360 = OpAccessChain %_ptr_Private_bool %100 %uint_1
%361 = OpLoad %bool %360
%362 = OpAccessChain %_ptr_Private_float %91 %uint_1
%363 = OpLoad %float %362
%364 = OpAccessChain %_ptr_Private_float %92 %uint_1
%365 = OpLoad %float %364
%366 = OpSelect %float %361 %363 %365
%367 = OpAccessChain %_ptr_Private_float %87 %uint_1
OpStore %367 %366
%368 = OpAccessChain %_ptr_Private_bool %100 %uint_2
%369 = OpLoad %bool %368
%370 = OpAccessChain %_ptr_Private_float %91 %uint_2
%371 = OpLoad %float %370
%372 = OpAccessChain %_ptr_Private_float %92 %uint_2
%373 = OpLoad %float %372
%374 = OpSelect %float %369 %371 %373
%375 = OpAccessChain %_ptr_Private_float %87 %uint_2
OpStore %375 %374
%377 = OpLoad %v3float %87
%378 = OpExtInst %v3float %58 FMax %377 %376
OpStore %87 %378
%379 = OpLoad %v3float %86
%381 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_13
%382 = OpLoad %v4float %381
%383 = OpVectorShuffle %v3float %382 %382 1 1 1
%384 = OpFMul %v3float %379 %383
OpStore %91 %384
%387 = OpLoad %v3float %91
%388 = OpFMul %v3float %387 %386
OpStore %91 %388
%390 = OpAccessChain %_ptr_Uniform_float %107 %uint_12 %uint_1
%391 = OpLoad %float %390
%392 = OpFUnordNotEqual %bool %391 %float_0
OpStore %102 %392
%393 = OpLoad %bool %102
OpSelectionMerge %396 None
OpBranchConditional %393 %394 %395
%394 = OpLabel
%397 = OpLoad %v4float %56
%398 = OpVectorShuffle %v3float %397 %397 0 1 2
%400 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_8
%401 = OpLoad %v4float %400
%402 = OpVectorShuffle %v3float %401 %401 0 1 2
%403 = OpFAdd %v3float %398 %402
OpStore %97 %403
%404 = OpLoad %v3float %97
%405 = OpVectorShuffle %v2float %404 %404 0 1
%406 = OpAccessChain %_ptr_Private_float %97 %uint_2
%407 = OpLoad %float %406
%408 = OpCompositeExtract %float %405 0
%409 = OpCompositeExtract %float %405 1
%410 = OpCompositeConstruct %v3float %408 %409 %407
OpStore %412 %410
%413 = OpLoad %72 %46
%414 = OpLoad %v3float %412
%415 = OpCompositeExtract %float %414 2
%416 = OpImageSampleDrefExplicitLod %float %413 %414 %415 Lod %float_0
%417 = OpAccessChain %_ptr_Private_float %92 %uint_0
OpStore %417 %416
%418 = OpLoad %v4float %56
%419 = OpVectorShuffle %v3float %418 %418 0 1 2
%421 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_9
%422 = OpLoad %v4float %421
%423 = OpVectorShuffle %v3float %422 %422 0 1 2
%424 = OpFAdd %v3float %419 %423
OpStore %97 %424
%425 = OpLoad %v3float %97
%426 = OpVectorShuffle %v2float %425 %425 0 1
%427 = OpAccessChain %_ptr_Private_float %97 %uint_2
%428 = OpLoad %float %427
%429 = OpCompositeExtract %float %426 0
%430 = OpCompositeExtract %float %426 1
%431 = OpCompositeConstruct %v3float %429 %430 %428
OpStore %432 %431
%433 = OpLoad %72 %46
%434 = OpLoad %v3float %432
%435 = OpCompositeExtract %float %434 2
%436 = OpImageSampleDrefExplicitLod %float %433 %434 %435 Lod %float_0
%437 = OpAccessChain %_ptr_Private_float %92 %uint_1
OpStore %437 %436
%438 = OpLoad %v4float %56
%439 = OpVectorShuffle %v3float %438 %438 0 1 2
%441 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_10
%442 = OpLoad %v4float %441
%443 = OpVectorShuffle %v3float %442 %442 0 1 2
%444 = OpFAdd %v3float %439 %443
OpStore %97 %444
%445 = OpLoad %v3float %97
%446 = OpVectorShuffle %v2float %445 %445 0 1
%447 = OpAccessChain %_ptr_Private_float %97 %uint_2
%448 = OpLoad %float %447
%449 = OpCompositeExtract %float %446 0
%450 = OpCompositeExtract %float %446 1
%451 = OpCompositeConstruct %v3float %449 %450 %448
OpStore %452 %451
%453 = OpLoad %72 %46
%454 = OpLoad %v3float %452
%455 = OpCompositeExtract %float %454 2
%456 = OpImageSampleDrefExplicitLod %float %453 %454 %455 Lod %float_0
%457 = OpAccessChain %_ptr_Private_float %92 %uint_2
OpStore %457 %456
%458 = OpLoad %v4float %56
%459 = OpVectorShuffle %v3float %458 %458 0 1 2
%461 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_11
%462 = OpLoad %v4float %461
%463 = OpVectorShuffle %v3float %462 %462 0 1 2
%464 = OpFAdd %v3float %459 %463
OpStore %97 %464
%465 = OpLoad %v3float %97
%466 = OpVectorShuffle %v2float %465 %465 0 1
%467 = OpAccessChain %_ptr_Private_float %97 %uint_2
%468 = OpLoad %float %467
%469 = OpCompositeExtract %float %466 0
%470 = OpCompositeExtract %float %466 1
%471 = OpCompositeConstruct %v3float %469 %470 %468
OpStore %472 %471
%473 = OpLoad %72 %46
%474 = OpLoad %v3float %472
%475 = OpCompositeExtract %float %474 2
%476 = OpImageSampleDrefExplicitLod %float %473 %474 %475 Lod %float_0
%477 = OpAccessChain %_ptr_Private_float %92 %uint_3
OpStore %477 %476
%480 = OpLoad %v4float %92
%481 = OpDot %float %480 %479
OpStore %103 %481
OpBranch %396
%395 = OpLabel
%482 = OpLoad %v4float %56
%483 = OpVectorShuffle %v2float %482 %482 0 1
%484 = OpAccessChain %_ptr_Input_float %56 %uint_2
%485 = OpLoad %float %484
%486 = OpCompositeExtract %float %483 0
%487 = OpCompositeExtract %float %483 1
%488 = OpCompositeConstruct %v3float %486 %487 %485
OpStore %489 %488
%490 = OpLoad %72 %46
%491 = OpLoad %v3float %489
%492 = OpCompositeExtract %float %491 2
%493 = OpImageSampleDrefExplicitLod %float %490 %491 %492 Lod %float_0
OpStore %103 %493
%494 = OpLoad %float %103
OpStore %103 %494
OpBranch %396
%396 = OpLabel
%495 = OpAccessChain %_ptr_Uniform_float %107 %uint_12 %uint_0
%496 = OpLoad %float %495
%497 = OpFNegate %float %496
%498 = OpFAdd %float %497 %float_1
OpStore %104 %498
%499 = OpLoad %float %103
%500 = OpAccessChain %_ptr_Uniform_float %107 %uint_12 %uint_0
%501 = OpLoad %float %500
%502 = OpFMul %float %499 %501
%503 = OpLoad %float %104
%504 = OpFAdd %float %502 %503
OpStore %103 %504
%505 = OpAccessChain %_ptr_Input_float %56 %uint_2
%506 = OpLoad %float %505
%507 = OpFOrdGreaterThanEqual %bool %float_0 %506
OpStore %102 %507
%508 = OpAccessChain %_ptr_Input_float %56 %uint_2
%509 = OpLoad %float %508
%510 = OpFOrdGreaterThanEqual %bool %509 %float_1
%511 = OpAccessChain %_ptr_Private_bool %100 %uint_0
OpStore %511 %510
%512 = OpLoad %bool %102
%513 = OpAccessChain %_ptr_Private_bool %100 %uint_0
%514 = OpLoad %bool %513
%515 = OpLogicalOr %bool %512 %514
OpStore %102 %515
%516 = OpLoad %bool %102
%517 = OpLoad %float %103
%518 = OpSelect %float %516 %float_1 %517
OpStore %103 %518
%520 = OpAccessChain %_ptr_Uniform_v3float %107 %uint_2
%521 = OpLoad %v3float %520
%522 = OpFNegate %v3float %521
%523 = OpLoad %v3float %49
%524 = OpFAdd %v3float %523 %522
OpStore %97 %524
%525 = OpLoad %v3float %97
%526 = OpLoad %v3float %97
%527 = OpDot %float %525 %526
OpStore %101 %527
%528 = OpLoad %float %101
%529 = OpAccessChain %_ptr_Uniform_float %107 %uint_12 %uint_2
%530 = OpLoad %float %529
%531 = OpFMul %float %528 %530
%532 = OpAccessChain %_ptr_Uniform_float %107 %uint_12 %uint_3
%533 = OpLoad %float %532
%534 = OpFAdd %float %531 %533
OpStore %101 %534
%535 = OpLoad %float %101
%536 = OpExtInst %float %58 FClamp %535 %float_0 %float_1
OpStore %101 %536
%537 = OpLoad %float %103
%538 = OpFNegate %float %537
%539 = OpFAdd %float %538 %float_1
OpStore %104 %539
%540 = OpLoad %float %101
%541 = OpLoad %float %104
%542 = OpFMul %float %540 %541
%543 = OpLoad %float %103
%544 = OpFAdd %float %542 %543
OpStore %103 %544
%545 = OpLoad %v3float %96
%546 = OpFNegate %v3float %545
%547 = OpLoad %v4float %80
%548 = OpVectorShuffle %v3float %547 %547 0 1 2
%549 = OpDot %float %546 %548
OpStore %104 %549
%550 = OpLoad %float %104
%551 = OpLoad %float %104
%552 = OpFAdd %float %550 %551
OpStore %104 %552
%553 = OpLoad %float %104
%554 = OpCompositeConstruct %v3float %553 %553 %553
%555 = OpFNegate %v3float %554
%556 = OpLoad %v4float %80
%557 = OpVectorShuffle %v3float %556 %556 0 1 2
%558 = OpFMul %v3float %557 %555
%559 = OpLoad %v3float %96
%560 = OpFNegate %v3float %559
%561 = OpFAdd %v3float %558 %560
OpStore %93 %561
%562 = OpLoad %v4float %80
%563 = OpVectorShuffle %v3float %562 %562 0 1 2
%564 = OpLoad %v3float %96
%565 = OpDot %float %563 %564
OpStore %104 %565
%566 = OpLoad %float %104
%567 = OpExtInst %float %58 FClamp %566 %float_0 %float_1
OpStore %104 %567
%568 = OpLoad %float %104
%569 = OpFNegate %float %568
%570 = OpFAdd %float %569 %float_1
OpStore %104 %570
%571 = OpLoad %float %104
%572 = OpLoad %float %104
%573 = OpFMul %float %571 %572
OpStore %104 %573
%574 = OpLoad %float %104
%575 = OpLoad %float %104
%576 = OpFMul %float %574 %575
OpStore %104 %576
%578 = OpLoad %69 %45
%579 = OpLoad %v3float %93
%580 = OpImageSampleExplicitLod %v4float %578 %579 Lod %float_4_05000019
OpStore %92 %580
%582 = OpAccessChain %_ptr_Private_float %92 %uint_3
%583 = OpLoad %float %582
%584 = OpFAdd %float %583 %float_n1
OpStore %105 %584
%585 = OpAccessChain %_ptr_Uniform_float %65 %uint_8 %uint_3
%586 = OpLoad %float %585
%587 = OpLoad %float %105
%588 = OpFMul %float %586 %587
%589 = OpFAdd %float %588 %float_1
OpStore %105 %589
%590 = OpLoad %float %105
%591 = OpExtInst %float %58 FMax %590 %float_0
OpStore %105 %591
%592 = OpLoad %float %105
%593 = OpExtInst %float %58 Log2 %592
OpStore %105 %593
%594 = OpLoad %float %105
%595 = OpAccessChain %_ptr_Uniform_float %65 %uint_8 %uint_1
%596 = OpLoad %float %595
%597 = OpFMul %float %594 %596
OpStore %105 %597
%598 = OpLoad %float %105
%599 = OpExtInst %float %58 Exp2 %598
OpStore %105 %599
%600 = OpLoad %float %105
%601 = OpAccessChain %_ptr_Uniform_float %65 %uint_8 %uint_0
%602 = OpLoad %float %601
%603 = OpFMul %float %600 %602
OpStore %105 %603
%604 = OpLoad %float %105
%605 = OpCompositeConstruct %v3float %604 %604 %604
%606 = OpLoad %v4float %92
%607 = OpVectorShuffle %v3float %606 %606 0 1 2
%608 = OpFMul %v3float %607 %605
OpStore %93 %608
%609 = OpLoad %float %104
%610 = OpFMul %float %609 %float_0_5
%612 = OpFAdd %float %610 %float_0_0399999991
OpStore %104 %612
%614 = OpLoad %float %104
%615 = OpFMul %float %614 %float_0_941176474
OpStore %101 %615
%616 = OpLoad %float %101
%617 = OpCompositeConstruct %v3float %616 %616 %616
%618 = OpLoad %v3float %93
%619 = OpFMul %v3float %617 %618
OpStore %93 %619
%620 = OpLoad %v3float %87
%621 = OpLoad %v3float %91
%622 = OpFMul %v3float %620 %621
%623 = OpLoad %v3float %93
%624 = OpFAdd %v3float %622 %623
OpStore %87 %624
%625 = OpLoad %float %103
%626 = OpAccessChain %_ptr_Uniform_float %65 %uint_5 %uint_2
%627 = OpLoad %float %626
%628 = OpFMul %float %625 %627
OpStore %101 %628
%629 = OpLoad %v4float %80
%630 = OpVectorShuffle %v3float %629 %629 0 1 2
%631 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_0
%632 = OpLoad %v4float %631
%633 = OpVectorShuffle %v3float %632 %632 0 1 2
%634 = OpDot %float %630 %633
OpStore %103 %634
%635 = OpLoad %float %103
%636 = OpExtInst %float %58 FClamp %635 %float_0 %float_1
OpStore %103 %636
%637 = OpLoad %float %101
%638 = OpLoad %float %103
%639 = OpFMul %float %637 %638
OpStore %103 %639
%640 = OpLoad %float %103
%641 = OpCompositeConstruct %v3float %640 %640 %640
%642 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_1
%643 = OpLoad %v4float %642
%644 = OpVectorShuffle %v3float %643 %643 0 1 2
%645 = OpFMul %v3float %641 %644
OpStore %93 %645
%646 = OpLoad %v3float %53
%647 = OpLoad %v3float %88
%648 = OpVectorShuffle %v3float %647 %647 0 0 0
%649 = OpFMul %v3float %646 %648
%650 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_0
%651 = OpLoad %v4float %650
%652 = OpVectorShuffle %v3float %651 %651 0 1 2
%653 = OpFAdd %v3float %649 %652
OpStore %88 %653
%654 = OpLoad %v3float %88
%655 = OpLoad %v3float %88
%656 = OpDot %float %654 %655
OpStore %101 %656
%657 = OpLoad %float %101
%658 = OpExtInst %float %58 FMax %657 %float_1_17549435en38
OpStore %101 %658
%659 = OpLoad %float %101
%660 = OpExtInst %float %58 InverseSqrt %659
OpStore %101 %660
%661 = OpLoad %float %101
%662 = OpCompositeConstruct %v3float %661 %661 %661
%663 = OpLoad %v3float %88
%664 = OpFMul %v3float %662 %663
OpStore %88 %664
%665 = OpLoad %v4float %80
%666 = OpVectorShuffle %v3float %665 %665 0 1 2
%667 = OpLoad %v3float %88
%668 = OpDot %float %666 %667
%669 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %669 %668
%670 = OpAccessChain %_ptr_Private_float %80 %uint_0
%671 = OpLoad %float %670
%672 = OpExtInst %float %58 FClamp %671 %float_0 %float_1
%673 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %673 %672
%674 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_0
%675 = OpLoad %v4float %674
%676 = OpVectorShuffle %v3float %675 %675 0 1 2
%677 = OpLoad %v3float %88
%678 = OpDot %float %676 %677
OpStore %95 %678
%679 = OpLoad %float %95
%680 = OpExtInst %float %58 FClamp %679 %float_0 %float_1
OpStore %95 %680
%681 = OpAccessChain %_ptr_Private_float %80 %uint_0
%682 = OpLoad %float %681
%683 = OpAccessChain %_ptr_Private_float %80 %uint_0
%684 = OpLoad %float %683
%685 = OpFMul %float %682 %684
%686 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %686 %685
%688 = OpAccessChain %_ptr_Private_float %80 %uint_0
%689 = OpLoad %float %688
%690 = OpFMul %float %689 %float_n0_9375
%692 = OpFAdd %float %690 %float_1_00001001
%693 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %693 %692
%694 = OpLoad %float %95
%695 = OpLoad %float %95
%696 = OpFMul %float %694 %695
OpStore %103 %696
%697 = OpAccessChain %_ptr_Private_float %80 %uint_0
%698 = OpLoad %float %697
%699 = OpAccessChain %_ptr_Private_float %80 %uint_0
%700 = OpLoad %float %699
%701 = OpFMul %float %698 %700
%702 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %702 %701
%704 = OpLoad %float %103
%705 = OpExtInst %float %58 FMax %704 %float_0_100000001
OpStore %95 %705
%706 = OpLoad %float %95
%707 = OpAccessChain %_ptr_Private_float %80 %uint_0
%708 = OpLoad %float %707
%709 = OpFMul %float %706 %708
%710 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %710 %709
%712 = OpAccessChain %_ptr_Private_float %80 %uint_0
%713 = OpLoad %float %712
%714 = OpFMul %float %713 %float_3
%715 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %715 %714
%717 = OpAccessChain %_ptr_Private_float %80 %uint_0
%718 = OpLoad %float %717
%719 = OpFDiv %float %float_0_0625 %718
%720 = OpAccessChain %_ptr_Private_float %80 %uint_0
OpStore %720 %719
%722 = OpAccessChain %_ptr_Private_float %80 %uint_0
%723 = OpLoad %float %722
%724 = OpFAdd %float %723 %float_n6_10351562en05
OpStore %103 %724
%725 = OpLoad %float %103
%726 = OpCompositeConstruct %v3float %725 %725 %725
%728 = OpFMul %v3float %726 %727
%729 = OpLoad %v3float %91
%730 = OpFAdd %v3float %728 %729
OpStore %94 %730
%731 = OpLoad %v3float %94
%732 = OpLoad %v3float %93
%733 = OpFMul %v3float %731 %732
%734 = OpLoad %v3float %87
%735 = OpFAdd %v3float %733 %734
OpStore %87 %735
%736 = OpLoad %v4float %55
%737 = OpVectorShuffle %v3float %736 %736 1 2 3
%738 = OpLoad %v3float %91
%739 = OpFMul %v3float %737 %738
%740 = OpLoad %v3float %87
%741 = OpFAdd %v3float %739 %740
OpStore %87 %741
%742 = OpLoad %v3float %86
%743 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_13
%744 = OpLoad %v4float %743
%745 = OpVectorShuffle %v3float %744 %744 1 1 1
%746 = OpFMul %v3float %742 %745
%747 = OpLoad %v3float %87
%748 = OpFNegate %v3float %747
%749 = OpFAdd %v3float %746 %748
OpStore %86 %749
%750 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_13
%751 = OpLoad %v4float %750
%752 = OpVectorShuffle %v3float %751 %751 0 0 0
%753 = OpLoad %v3float %86
%754 = OpFMul %v3float %752 %753
%755 = OpLoad %v3float %87
%756 = OpFAdd %v3float %754 %755
OpStore %86 %756
%758 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_6
%759 = OpLoad %v4float %758
%760 = OpVectorShuffle %v3float %759 %759 0 1 2
%761 = OpFNegate %v3float %760
%762 = OpLoad %v3float %86
%763 = OpFAdd %v3float %762 %761
OpStore %86 %763
%764 = OpLoad %float %90
%765 = OpCompositeConstruct %v3float %764 %764 %764
%766 = OpLoad %v3float %86
%767 = OpFMul %v3float %765 %766
%768 = OpAccessChain %_ptr_Uniform_v4float %107 %uint_6
%769 = OpLoad %v4float %768
%770 = OpVectorShuffle %v3float %769 %769 0 1 2
%771 = OpFAdd %v3float %767 %770
%772 = OpLoad %v4float %57
%773 = OpVectorShuffle %v4float %772 %771 4 5 6 3
OpStore %57 %773
%775 = OpAccessChain %_ptr_Output_float %57 %uint_3
OpStore %775 %float_1
OpReturn
OpFunctionEnd
%2 = OpFunction %void None %111
%776 = OpLabel
%800 = OpVariable %_ptr_Function__arr_float_uint_4 Function
%809 = OpVariable %_ptr_Function_v3float Function %376
%778 = OpFunctionCall %void %112
%779 = OpINotEqual %bool %59 %uint_0
OpSelectionMerge %781 None
OpBranchConditional %779 %780 %781
%780 = OpLabel
%789 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
%790 = OpLoad %float %789
%791 = OpConvertFToU %uint %790
%792 = OpBitwiseAnd %uint %791 %uint_1
%793 = OpShiftLeftLogical %uint %792 %uint_1
%794 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
%795 = OpLoad %float %794
%796 = OpConvertFToU %uint %795
%797 = OpBitwiseAnd %uint %796 %uint_1
%798 = OpBitwiseOr %uint %793 %797
OpStore %800 %787
%802 = OpAccessChain %_ptr_Function_float %800 %798
%803 = OpLoad %float %802
OpStore %804 %803
%805 = OpShiftRightLogical %uint %59 %uint_0
%806 = OpBitwiseAnd %uint %805 %uint_3
OpStore %808 %806
%810 = OpLoad %uint %808
OpSelectionMerge %814 None
OpSwitch %810 %814 1 %811 2 %812 3 %813
%811 = OpLabel
%816 = OpLoad %float %804
%817 = OpFMul %float %816 %float_2
%818 = OpCompositeConstruct %v3float %817 %817 %817
OpStore %809 %818
OpBranch %814
%812 = OpLabel
%819 = OpLoad %float %804
%820 = OpCompositeConstruct %v3float %819 %819 %819
OpStore %809 %820
OpBranch %814
%813 = OpLabel
%821 = OpLoad %float %804
%822 = OpFMul %float %821 %float_0_5
%823 = OpLoad %float %804
%824 = OpLoad %float %804
%825 = OpCompositeConstruct %v3float %823 %822 %824
OpStore %809 %825
OpBranch %814
%814 = OpLabel
%826 = OpLoad %v4float %57
%827 = OpVectorShuffle %v3float %826 %826 0 1 2
%828 = OpLoad %v3float %809
%829 = OpFAdd %v3float %827 %828
%830 = OpLoad %v4float %57
%831 = OpVectorShuffle %v4float %830 %829 4 5 6 3
OpStore %57 %831
OpBranch %781
%781 = OpLabel
OpReturn
OpFunctionEnd
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
BUFFER buf1 DATA_TYPE uint32 SIZE 1024 FILL 0
BUFFER buf2 DATA_TYPE uint32 SIZE 1024 FILL 0
BUFFER buf3 DATA_TYPE uint32 SIZE 1024 FILL 0
BUFFER tex FORMAT B8G8R8A8_UNORM
IMAGE texture1 FORMAT R8G8B8A8_UNORM DIM_3D WIDTH 256 HEIGHT 256 DEPTH 6 FILL 0
IMAGE texture2 FORMAT D16_UNORM DIM_2D WIDTH 256 HEIGHT 256 FILL 0
IMAGE texture3 FORMAT R8G8B8A8_UNORM DIM_2D WIDTH 256 HEIGHT 256 FILL 0
IMAGE texture4 FORMAT R8G8B8A8_UNORM DIM_2D WIDTH 256 HEIGHT 256 FILL 0
SAMPLER sampler
PIPELINE graphics my_pipeline
ATTACH vtex_shader
ATTACH frag_shader
FRAMEBUFFER_SIZE 256 256
BIND BUFFER framebuffer AS color LOCATION 0
BIND BUFFER buf1 AS uniform DESCRIPTOR_SET 2 BINDING 0
BIND BUFFER buf2 AS uniform DESCRIPTOR_SET 2 BINDING 1
BIND BUFFER buf3 AS uniform DESCRIPTOR_SET 0 BINDING 1
BIND BUFFER texture1 AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 1 BINDING 0
BIND BUFFER texture2 AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 1 BINDING 1
BIND BUFFER texture3 AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 1 BINDING 2
BIND BUFFER texture4 AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 1 BINDING 3
END
CLEAR_COLOR my_pipeline 0 0 0 255
CLEAR my_pipeline
RUN my_pipeline DRAW_RECT POS 0 0 SIZE 256 256