; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 7 ; Bound: 789 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %main "main" %_ %Position %tex_uv %TexCoord %video_and_texture_size_inv %output_size_inv %geom_aspect_and_overscan %global_to_local_row0 %global_to_local_row1 %global_to_local_row2 %eye_pos_local OpSource GLSL 450 OpSourceExtension "GL_GOOGLE_cpp_style_line_directive" OpName %main "main" OpName %get_aspect_vector_f1_ "get_aspect_vector(f1;" OpName %geom_aspect_ratio "geom_aspect_ratio" OpName %get_geom_overscan_vector_ "get_geom_overscan_vector(" OpName %get_geom_tilt_angle_vector_ "get_geom_tilt_angle_vector(" OpName %cylinder_uv_to_xyz_vf2_vf2_ "cylinder_uv_to_xyz(vf2;vf2;" OpName %video_uv "video_uv" OpName %geom_aspect "geom_aspect" OpName %sphere_uv_to_xyz_vf2_vf2_ "sphere_uv_to_xyz(vf2;vf2;" OpName %video_uv_0 "video_uv" OpName %geom_aspect_0 "geom_aspect" OpName %sphere_alt_uv_to_xyz_vf2_vf2_ "sphere_alt_uv_to_xyz(vf2;vf2;" OpName %video_uv_1 "video_uv" OpName %geom_aspect_1 "geom_aspect" OpName %uv_to_xyz_vf2_vf2_f1_ "uv_to_xyz(vf2;vf2;f1;" OpName %uv "uv" OpName %geom_aspect_2 "geom_aspect" OpName %geom_mode "geom_mode" OpName %get_ideal_global_eye_pos_for_points_vf3_vf2_vf3_9__i1_ "get_ideal_global_eye_pos_for_points(vf3;vf2;vf3[9];i1;" OpName %eye_pos "eye_pos" OpName %geom_aspect_3 "geom_aspect" OpName %global_coords "global_coords" OpName %num_points "num_points" OpName %get_ideal_global_eye_pos_mf33_vf2_f1_ "get_ideal_global_eye_pos(mf33;vf2;f1;" OpName %local_to_global "local_to_global" OpName %geom_aspect_4 "geom_aspect" OpName %geom_mode_0 "geom_mode" OpName %geom_clamped_aspect_ratio "geom_clamped_aspect_ratio" OpName %geom_aspect_5 "geom_aspect" OpName %UBO "UBO" OpMemberName %UBO 0 "MVP" OpMemberName %UBO 1 "crt_gamma" OpMemberName %UBO 2 "lcd_gamma" OpMemberName %UBO 3 "levels_contrast" OpMemberName %UBO 4 "halation_weight" OpMemberName %UBO 5 "diffusion_weight" OpMemberName %UBO 6 "bloom_underestimate_levels" OpMemberName %UBO 7 "bloom_excess" OpMemberName %UBO 8 "beam_min_sigma" OpMemberName %UBO 9 "beam_max_sigma" OpMemberName %UBO 10 "beam_spot_power" OpMemberName %UBO 11 "beam_min_shape" OpMemberName %UBO 12 "beam_max_shape" OpMemberName %UBO 13 "beam_shape_power" OpMemberName %UBO 14 "beam_horiz_filter" OpMemberName %UBO 15 "beam_horiz_sigma" OpMemberName %UBO 16 "beam_horiz_linear_rgb_weight" OpMemberName %UBO 17 "convergence_offset_x_r" OpMemberName %UBO 18 "convergence_offset_x_g" OpMemberName %UBO 19 "convergence_offset_x_b" OpMemberName %UBO 20 "convergence_offset_y_r" OpMemberName %UBO 21 "convergence_offset_y_g" OpMemberName %UBO 22 "convergence_offset_y_b" OpMemberName %UBO 23 "mask_type" OpMemberName %UBO 24 "mask_sample_mode_desired" OpMemberName %UBO 25 "mask_num_triads_desired" OpMemberName %UBO 26 "mask_triad_size_desired" OpMemberName %UBO 27 "mask_specify_num_triads" OpMemberName %UBO 28 "aa_subpixel_r_offset_x_runtime" OpMemberName %UBO 29 "aa_subpixel_r_offset_y_runtime" OpMemberName %UBO 30 "aa_cubic_c" OpMemberName %UBO 31 "aa_gauss_sigma" OpMemberName %UBO 32 "geom_mode_runtime" OpMemberName %UBO 33 "geom_radius" OpMemberName %UBO 34 "geom_view_dist" OpMemberName %UBO 35 "geom_tilt_angle_x" OpMemberName %UBO 36 "geom_tilt_angle_y" OpMemberName %UBO 37 "geom_aspect_ratio_x" OpMemberName %UBO 38 "geom_aspect_ratio_y" OpMemberName %UBO 39 "geom_overscan_x" OpMemberName %UBO 40 "geom_overscan_y" OpMemberName %UBO 41 "border_size" OpMemberName %UBO 42 "border_darkness" OpMemberName %UBO 43 "border_compress" OpMemberName %UBO 44 "interlace_bff" OpMemberName %UBO 45 "interlace_1080i" OpMemberName %UBO 46 "MASKED_SCANLINESSize" OpMemberName %UBO 47 "HALATION_BLURSize" OpMemberName %UBO 48 "BRIGHTPASSSize" OpName %global "global" OpName %square_uv "square_uv" OpName %arc_len "arc_len" OpName %angle_from_image_center "angle_from_image_center" OpName %x_pos "x_pos" OpName %z_pos "z_pos" OpName %intersection_pos_local "intersection_pos_local" OpName %square_uv_0 "square_uv" OpName %square_uv_unit "square_uv_unit" OpName %arc_len_0 "arc_len" OpName %angle_from_image_center_0 "angle_from_image_center" OpName %xy_dist_from_sphere_center "xy_dist_from_sphere_center" OpName %xy_pos "xy_pos" OpName %z_pos_0 "z_pos" OpName %intersection_pos_local_0 "intersection_pos_local" OpName %square_uv_1 "square_uv" OpName %arc_len_1 "arc_len" OpName %angle_from_image_center_1 "angle_from_image_center" OpName %xy_pos_0 "xy_pos" OpName %z_pos_1 "z_pos" OpName %iter "iter" OpName %i "i" OpName %eyespace_coords "eyespace_coords" OpName %indexable "indexable" OpName %abs_radius "abs_radius" OpName %offset_dr_min "offset_dr_min" OpName %offset_ul_max "offset_ul_max" OpName %i_0 "i" OpName %eyespace_xyz "eyespace_xyz" OpName %offset_dr "offset_dr" OpName %offset_ul "offset_ul" OpName %center_offset "center_offset" OpName %i_1 "i" OpName %indexable_0 "indexable" OpName %offset_z_max "offset_z_max" OpName %i_2 "i" OpName %eyespace_xyz_flipy "eyespace_xyz_flipy" OpName %offset_zzzz "offset_zzzz" OpName %high_view "high_view" OpName %low_view "low_view" OpName %len_sq "len_sq" OpName %fov "fov" OpName %eye_z_spherical "eye_z_spherical" OpName %eye_pos_0 "eye_pos" OpName %global_coords_0 "global_coords" OpName %num_negative_z_coords "num_negative_z_coords" OpName %i_3 "i" OpName %param "param" OpName %gl_PerVertex "gl_PerVertex" OpMemberName %gl_PerVertex 0 "gl_Position" OpMemberName %gl_PerVertex 1 "gl_PointSize" OpMemberName %gl_PerVertex 2 "gl_ClipDistance" OpMemberName %gl_PerVertex 3 "gl_CullDistance" OpName %_ "" OpName %Position "Position" OpName %tex_uv "tex_uv" OpName %TexCoord "TexCoord" OpName %video_and_texture_size_inv "video_and_texture_size_inv" OpName %Push "Push" OpMemberName %Push 0 "SourceSize" OpMemberName %Push 1 "OriginalSize" OpMemberName %Push 2 "OutputSize" OpMemberName %Push 3 "FrameCount" OpName %params "params" OpName %output_size_inv "output_size_inv" OpName %viewport_aspect_ratio "viewport_aspect_ratio" OpName %geom_aspect_6 "geom_aspect" OpName %geom_overscan "geom_overscan" OpName %geom_aspect_and_overscan "geom_aspect_and_overscan" OpName %geom_tilt_angle "geom_tilt_angle" OpName %sin_tilt "sin_tilt" OpName %cos_tilt "cos_tilt" OpName %local_to_global_0 "local_to_global" OpName %global_to_local "global_to_local" OpName %global_to_local_row0 "global_to_local_row0" OpName %global_to_local_row1 "global_to_local_row1" OpName %global_to_local_row2 "global_to_local_row2" OpName %geom_mode_1 "geom_mode" OpName %eye_pos_global "eye_pos_global" OpName %eye_pos_local "eye_pos_local" OpName %aa_cubic_b "aa_cubic_b" OpName %cubic_branch1_x3_coeff "cubic_branch1_x3_coeff" OpName %cubic_branch1_x2_coeff "cubic_branch1_x2_coeff" OpName %cubic_branch1_x0_coeff "cubic_branch1_x0_coeff" OpName %cubic_branch2_x3_coeff "cubic_branch2_x3_coeff" OpName %cubic_branch2_x2_coeff "cubic_branch2_x2_coeff" OpName %cubic_branch2_x1_coeff "cubic_branch2_x1_coeff" OpName %cubic_branch2_x0_coeff "cubic_branch2_x0_coeff" OpMemberDecorate %UBO 0 ColMajor OpMemberDecorate %UBO 0 Offset 0 OpMemberDecorate %UBO 0 MatrixStride 16 OpMemberDecorate %UBO 1 Offset 64 OpMemberDecorate %UBO 2 Offset 68 OpMemberDecorate %UBO 3 Offset 72 OpMemberDecorate %UBO 4 Offset 76 OpMemberDecorate %UBO 5 Offset 80 OpMemberDecorate %UBO 6 Offset 84 OpMemberDecorate %UBO 7 Offset 88 OpMemberDecorate %UBO 8 Offset 92 OpMemberDecorate %UBO 9 Offset 96 OpMemberDecorate %UBO 10 Offset 100 OpMemberDecorate %UBO 11 Offset 104 OpMemberDecorate %UBO 12 Offset 108 OpMemberDecorate %UBO 13 Offset 112 OpMemberDecorate %UBO 14 Offset 116 OpMemberDecorate %UBO 15 Offset 120 OpMemberDecorate %UBO 16 Offset 124 OpMemberDecorate %UBO 17 Offset 128 OpMemberDecorate %UBO 18 Offset 132 OpMemberDecorate %UBO 19 Offset 136 OpMemberDecorate %UBO 20 Offset 140 OpMemberDecorate %UBO 21 Offset 144 OpMemberDecorate %UBO 22 Offset 148 OpMemberDecorate %UBO 23 Offset 152 OpMemberDecorate %UBO 24 Offset 156 OpMemberDecorate %UBO 25 Offset 160 OpMemberDecorate %UBO 26 Offset 164 OpMemberDecorate %UBO 27 Offset 168 OpMemberDecorate %UBO 28 Offset 172 OpMemberDecorate %UBO 29 Offset 176 OpMemberDecorate %UBO 30 Offset 180 OpMemberDecorate %UBO 31 Offset 184 OpMemberDecorate %UBO 32 Offset 188 OpMemberDecorate %UBO 33 Offset 192 OpMemberDecorate %UBO 34 Offset 196 OpMemberDecorate %UBO 35 Offset 200 OpMemberDecorate %UBO 36 Offset 204 OpMemberDecorate %UBO 37 Offset 208 OpMemberDecorate %UBO 38 Offset 212 OpMemberDecorate %UBO 39 Offset 216 OpMemberDecorate %UBO 40 Offset 220 OpMemberDecorate %UBO 41 Offset 224 OpMemberDecorate %UBO 42 Offset 228 OpMemberDecorate %UBO 43 Offset 232 OpMemberDecorate %UBO 44 Offset 236 OpMemberDecorate %UBO 45 Offset 240 OpMemberDecorate %UBO 46 Offset 256 OpMemberDecorate %UBO 47 Offset 272 OpMemberDecorate %UBO 48 Offset 288 OpDecorate %UBO Block OpDecorate %global DescriptorSet 0 OpDecorate %global Binding 0 OpMemberDecorate %gl_PerVertex 0 BuiltIn Position OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance OpDecorate %gl_PerVertex Block OpDecorate %Position Location 0 OpDecorate %tex_uv Location 0 OpDecorate %TexCoord Location 1 OpDecorate %video_and_texture_size_inv Location 1 OpMemberDecorate %Push 0 Offset 0 OpMemberDecorate %Push 1 Offset 16 OpMemberDecorate %Push 2 Offset 32 OpMemberDecorate %Push 3 Offset 48 OpDecorate %Push Block OpDecorate %output_size_inv Location 2 OpDecorate %geom_aspect_and_overscan Location 4 OpDecorate %global_to_local_row0 Location 5 OpDecorate %global_to_local_row1 Location 6 OpDecorate %global_to_local_row2 Location 7 OpDecorate %eye_pos_local Location 3 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %v2float = OpTypeVector %float 2 %8 = OpTypeFunction %v2float %float %12 = OpTypeFunction %v2float %v3float = OpTypeVector %float 3 %18 = OpTypeFunction %v3float %v2float %v2float %31 = OpTypeFunction %v3float %v2float %v2float %float %_ptr_Function_v3float = OpTypePointer Function %v3float %uint = OpTypeInt 32 0 %uint_9 = OpConstant %uint 9 %_arr_v3float_uint_9 = OpTypeArray %v3float %uint_9 %int = OpTypeInt 32 1 %42 = OpTypeFunction %v3float %_ptr_Function_v3float %v2float %_arr_v3float_uint_9 %int %mat3v3float = OpTypeMatrix %v3float 3 %50 = OpTypeFunction %v3float %mat3v3float %v2float %float %_ptr_Function_float = OpTypePointer Function %float %float_1_33333337 = OpConstant %float 1.33333337 %_ptr_Function_v2float = OpTypePointer Function %v2float %float_1 = OpConstant %float 1 %v4float = OpTypeVector %float 4 %mat4v4float = OpTypeMatrix %v4float 4 %UBO = OpTypeStruct %mat4v4float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %float %v4float %v4float %v4float %_ptr_Uniform_UBO = OpTypePointer Uniform %UBO %global = OpVariable %_ptr_Uniform_UBO Uniform %int_39 = OpConstant %int 39 %_ptr_Uniform_float = OpTypePointer Uniform %float %int_40 = OpConstant %int 40 %int_35 = OpConstant %int 35 %int_36 = OpConstant %int 36 %uint_0 = OpConstant %uint 0 %int_33 = OpConstant %int 33 %uint_1 = OpConstant %uint 1 %float_1_5 = OpConstant %float 1.5 %bool = OpTypeBool %float_2_5 = OpConstant %float 2.5 %_ptr_Function_int = OpTypePointer Function %int %int_0 = OpConstant %int 0 %int_1 = OpConstant %int 1 %_ptr_Function__arr_v3float_uint_9 = OpTypePointer Function %_arr_v3float_uint_9 %float_10 = OpConstant %float 10 %float_n10 = OpConstant %float -10 %float_n0_5 = OpConstant %float -0.5 %292 = OpConstantComposite %v2float %float_n0_5 %float_n0_5 %uint_2 = OpConstant %uint 2 %int_34 = OpConstant %int 34 %float_n1 = OpConstant %float -1 %303 = OpConstantComposite %v2float %float_1 %float_n1 %float_0_5 = OpConstant %float 0.5 %311 = OpConstantComposite %v2float %float_0_5 %float_0_5 %378 = OpConstantComposite %v3float %float_1 %float_n1 %float_1 %_ptr_Function_v4float = OpTypePointer Function %v4float %389 = OpConstantComposite %v4float %float_n0_5 %float_n0_5 %float_0_5 %float_0_5 %float_0 = OpConstant %float 0 %uint_3 = OpConstant %uint 3 %511 = OpConstantComposite %v2float %float_0 %float_0 %515 = OpConstantComposite %v2float %float_0 %float_n0_5 %int_2 = OpConstant %int 2 %520 = OpConstantComposite %v2float %float_0 %float_0_5 %int_3 = OpConstant %int 3 %525 = OpConstantComposite %v2float %float_n0_5 %float_0 %int_4 = OpConstant %int 4 %530 = OpConstantComposite %v2float %float_0_5 %float_0 %int_5 = OpConstant %int 5 %int_6 = OpConstant %int 6 %539 = OpConstantComposite %v2float %float_0_5 %float_n0_5 %int_7 = OpConstant %int 7 %544 = OpConstantComposite %v2float %float_n0_5 %float_0_5 %int_8 = OpConstant %int 8 %int_9 = OpConstant %int 9 %_arr_float_uint_1 = OpTypeArray %float %uint_1 %gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1 %_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex %_ = OpVariable %_ptr_Output_gl_PerVertex Output %_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float %_ptr_Input_v4float = OpTypePointer Input %v4float %Position = OpVariable %_ptr_Input_v4float Input %_ptr_Output_v4float = OpTypePointer Output %v4float %_ptr_Output_v2float = OpTypePointer Output %v2float %tex_uv = OpVariable %_ptr_Output_v2float Output %_ptr_Input_v2float = OpTypePointer Input %v2float %TexCoord = OpVariable %_ptr_Input_v2float Input %video_and_texture_size_inv = OpVariable %_ptr_Output_v4float Output %603 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %Push = OpTypeStruct %v4float %v4float %v4float %uint %_ptr_PushConstant_Push = OpTypePointer PushConstant %Push %params = OpVariable %_ptr_PushConstant_Push PushConstant %_ptr_PushConstant_v4float = OpTypePointer PushConstant %v4float %output_size_inv = OpVariable %_ptr_Output_v2float Output %621 = OpConstantComposite %v2float %float_1 %float_1 %_ptr_PushConstant_float = OpTypePointer PushConstant %float %geom_aspect_and_overscan = OpVariable %_ptr_Output_v4float Output %_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float %_ptr_Output_v3float = OpTypePointer Output %v3float %global_to_local_row0 = OpVariable %_ptr_Output_v3float Output %global_to_local_row1 = OpVariable %_ptr_Output_v3float Output %global_to_local_row2 = OpVariable %_ptr_Output_v3float Output %int_32 = OpConstant %int 32 %eye_pos_local = OpVariable %_ptr_Output_v3float Output %float_2_20000005 = OpConstant %float 2.20000005 %float_0_075000003 = OpConstant %float 0.075000003 %float_0_800000012 = OpConstant %float 0.800000012 %float_2 = OpConstant %float 2 %float_3 = OpConstant %float 3 %true = OpConstantTrue %bool %float_0_0199999996 = OpConstant %float 0.0199999996 %float_0_300000012 = OpConstant %float 0.300000012 %float_0_333333343 = OpConstant %float 0.333333343 %float_4 = OpConstant %float 4 %float_0_25 = OpConstant %float 0.25 %float_0_349999994 = OpConstant %float 0.349999994 %float_0_100000001 = OpConstant %float 0.100000001 %float_0_200000003 = OpConstant %float 0.200000003 %745 = OpConstantComposite %v2float %float_0_100000001 %float_0_200000003 %float_0_400000006 = OpConstant %float 0.400000006 %747 = OpConstantComposite %v2float %float_0_300000012 %float_0_400000006 %float_0_600000024 = OpConstant %float 0.600000024 %749 = OpConstantComposite %v2float %float_0_5 %float_0_600000024 %false = OpConstantFalse %bool %float_12 = OpConstant %float 12 %float_6 = OpConstant %float 6 %float_n0_333333343 = OpConstant %float -0.333333343 %754 = OpConstantComposite %v2float %float_n0_333333343 %float_0 %float_480 = OpConstant %float 480 %float_1_31306994 = OpConstant %float 1.31306994 %float_0_0149999997 = OpConstant %float 0.0149999997 %float_320 = OpConstant %float 320 %float_400 = OpConstant %float 400 %float_0_0625 = OpConstant %float 0.0625 %761 = OpConstantComposite %v2float %float_0_0625 %float_0_0625 %float_64 = OpConstant %float 64 %763 = OpConstantComposite %v2float %float_64 %float_64 %float_512 = OpConstant %float 512 %765 = OpConstantComposite %v2float %float_512 %float_512 %float_8 = OpConstant %float 8 %float_0_198692814 = OpConstant %float 0.198692814 %float_0_20784314 = OpConstant %float 0.20784314 %float_0_180392161 = OpConstant %float 0.180392161 %float_0_160784319 = OpConstant %float 0.160784319 %float_16 = OpConstant %float 16 %float_256 = OpConstant %float 256 %773 = OpConstantComposite %v2float %float_256 %float_256 %float_3_14159274 = OpConstant %float 3.14159274 %float_0_499500006 = OpConstant %float 0.499500006 %float_3_5 = OpConstant %float 3.5 %float_2_79999995 = OpConstant %float 2.79999995 %float_2_3499999 = OpConstant %float 2.3499999 %779 = OpConstantComposite %v2float %float_1 %float_0 %_ptr_Private_float = OpTypePointer Private %float %aa_cubic_b = OpVariable %_ptr_Private_float Private %cubic_branch1_x3_coeff = OpVariable %_ptr_Private_float Private %cubic_branch1_x2_coeff = OpVariable %_ptr_Private_float Private %cubic_branch1_x0_coeff = OpVariable %_ptr_Private_float Private %cubic_branch2_x3_coeff = OpVariable %_ptr_Private_float Private %cubic_branch2_x2_coeff = OpVariable %_ptr_Private_float Private %cubic_branch2_x1_coeff = OpVariable %_ptr_Private_float Private %cubic_branch2_x0_coeff = OpVariable %_ptr_Private_float Private %main = OpFunction %void None %3 %5 = OpLabel %viewport_aspect_ratio = OpVariable %_ptr_Function_float Function %geom_aspect_6 = OpVariable %_ptr_Function_v2float Function %geom_overscan = OpVariable %_ptr_Function_v2float Function %geom_tilt_angle = OpVariable %_ptr_Function_v2float Function %sin_tilt = OpVariable %_ptr_Function_v2float Function %cos_tilt = OpVariable %_ptr_Function_v2float Function %local_to_global_0 = OpVariable %_ptr_Function_mat3v3float Function %global_to_local = OpVariable %_ptr_Function_mat3v3float Function %geom_mode_1 = OpVariable %_ptr_Function_float Function %eye_pos_global = OpVariable %_ptr_Function_v3float Function %589 = OpAccessChain %_ptr_Uniform_mat4v4float %global %int_0 %590 = OpLoad %mat4v4float %589 %593 = OpLoad %v4float %Position %594 = OpMatrixTimesVector %v4float %590 %593 %596 = OpAccessChain %_ptr_Output_v4float %_ %int_0 OpStore %596 %594 %601 = OpLoad %v2float %TexCoord OpStore %tex_uv %601 %608 = OpAccessChain %_ptr_PushConstant_v4float %params %int_0 %609 = OpLoad %v4float %608 %610 = OpVectorShuffle %v2float %609 %609 0 1 %611 = OpAccessChain %_ptr_PushConstant_v4float %params %int_0 %612 = OpLoad %v4float %611 %613 = OpVectorShuffle %v2float %612 %612 0 1 %614 = OpCompositeExtract %float %610 0 %615 = OpCompositeExtract %float %610 1 %616 = OpCompositeExtract %float %613 0 %617 = OpCompositeExtract %float %613 1 %618 = OpCompositeConstruct %v4float %614 %615 %616 %617 %619 = OpFDiv %v4float %603 %618 OpStore %video_and_texture_size_inv %619 %622 = OpAccessChain %_ptr_PushConstant_v4float %params %int_2 %623 = OpLoad %v4float %622 %624 = OpVectorShuffle %v2float %623 %623 0 1 %625 = OpFDiv %v2float %621 %624 OpStore %output_size_inv %625 %628 = OpAccessChain %_ptr_PushConstant_float %params %int_2 %uint_0 %629 = OpLoad %float %628 %630 = OpAccessChain %_ptr_PushConstant_float %params %int_2 %uint_1 %631 = OpLoad %float %630 %632 = OpFDiv %float %629 %631 OpStore %viewport_aspect_ratio %632 %634 = OpLoad %float %viewport_aspect_ratio %635 = OpFunctionCall %v2float %get_aspect_vector_f1_ %634 OpStore %geom_aspect_6 %635 %637 = OpFunctionCall %v2float %get_geom_overscan_vector_ OpStore %geom_overscan %637 %639 = OpLoad %v2float %geom_aspect_6 %640 = OpLoad %v2float %geom_overscan %641 = OpCompositeExtract %float %639 0 %642 = OpCompositeExtract %float %639 1 %643 = OpCompositeExtract %float %640 0 %644 = OpCompositeExtract %float %640 1 %645 = OpCompositeConstruct %v4float %641 %642 %643 %644 OpStore %geom_aspect_and_overscan %645 %647 = OpFunctionCall %v2float %get_geom_tilt_angle_vector_ OpStore %geom_tilt_angle %647 %649 = OpLoad %v2float %geom_tilt_angle %650 = OpExtInst %v2float %1 Sin %649 OpStore %sin_tilt %650 %652 = OpLoad %v2float %geom_tilt_angle %653 = OpExtInst %v2float %1 Cos %652 OpStore %cos_tilt %653 %656 = OpAccessChain %_ptr_Function_float %cos_tilt %uint_0 %657 = OpLoad %float %656 %658 = OpAccessChain %_ptr_Function_float %sin_tilt %uint_1 %659 = OpLoad %float %658 %660 = OpAccessChain %_ptr_Function_float %sin_tilt %uint_0 %661 = OpLoad %float %660 %662 = OpFMul %float %659 %661 %663 = OpAccessChain %_ptr_Function_float %cos_tilt %uint_1 %664 = OpLoad %float %663 %665 = OpAccessChain %_ptr_Function_float %sin_tilt %uint_0 %666 = OpLoad %float %665 %667 = OpFMul %float %664 %666 %668 = OpAccessChain %_ptr_Function_float %cos_tilt %uint_1 %669 = OpLoad %float %668 %670 = OpAccessChain %_ptr_Function_float %sin_tilt %uint_1 %671 = OpLoad %float %670 %672 = OpFNegate %float %671 %673 = OpAccessChain %_ptr_Function_float %sin_tilt %uint_0 %674 = OpLoad %float %673 %675 = OpFNegate %float %674 %676 = OpAccessChain %_ptr_Function_float %sin_tilt %uint_1 %677 = OpLoad %float %676 %678 = OpAccessChain %_ptr_Function_float %cos_tilt %uint_0 %679 = OpLoad %float %678 %680 = OpFMul %float %677 %679 %681 = OpAccessChain %_ptr_Function_float %cos_tilt %uint_1 %682 = OpLoad %float %681 %683 = OpAccessChain %_ptr_Function_float %cos_tilt %uint_0 %684 = OpLoad %float %683 %685 = OpFMul %float %682 %684 %686 = OpCompositeConstruct %v3float %657 %662 %667 %687 = OpCompositeConstruct %v3float %float_0 %669 %672 %688 = OpCompositeConstruct %v3float %675 %680 %685 %689 = OpCompositeConstruct %mat3v3float %686 %687 %688 OpStore %local_to_global_0 %689 %691 = OpLoad %mat3v3float %local_to_global_0 %692 = OpTranspose %mat3v3float %691 OpStore %global_to_local %692 %695 = OpAccessChain %_ptr_Function_float %global_to_local %int_0 %uint_0 %696 = OpLoad %float %695 %697 = OpAccessChain %_ptr_Function_float %global_to_local %int_0 %uint_1 %698 = OpLoad %float %697 %699 = OpAccessChain %_ptr_Function_float %global_to_local %int_0 %uint_2 %700 = OpLoad %float %699 %701 = OpCompositeConstruct %v3float %696 %698 %700 OpStore %global_to_local_row0 %701 %703 = OpAccessChain %_ptr_Function_float %global_to_local %int_1 %uint_0 %704 = OpLoad %float %703 %705 = OpAccessChain %_ptr_Function_float %global_to_local %int_1 %uint_1 %706 = OpLoad %float %705 %707 = OpAccessChain %_ptr_Function_float %global_to_local %int_1 %uint_2 %708 = OpLoad %float %707 %709 = OpCompositeConstruct %v3float %704 %706 %708 OpStore %global_to_local_row1 %709 %711 = OpAccessChain %_ptr_Function_float %global_to_local %int_2 %uint_0 %712 = OpLoad %float %711 %713 = OpAccessChain %_ptr_Function_float %global_to_local %int_2 %uint_1 %714 = OpLoad %float %713 %715 = OpAccessChain %_ptr_Function_float %global_to_local %int_2 %uint_2 %716 = OpLoad %float %715 %717 = OpCompositeConstruct %v3float %712 %714 %716 OpStore %global_to_local_row2 %717 %720 = OpAccessChain %_ptr_Uniform_float %global %int_32 %721 = OpLoad %float %720 OpStore %geom_mode_1 %721 %723 = OpLoad %mat3v3float %local_to_global_0 %724 = OpLoad %v2float %geom_aspect_6 %725 = OpLoad %float %geom_mode_1 %726 = OpFunctionCall %v3float %get_ideal_global_eye_pos_mf33_vf2_f1_ %723 %724 %725 OpStore %eye_pos_global %726 %728 = OpLoad %v3float %eye_pos_global %729 = OpLoad %mat3v3float %global_to_local %730 = OpVectorTimesMatrix %v3float %728 %729 OpStore %eye_pos_local %730 OpReturn OpFunctionEnd %get_aspect_vector_f1_ = OpFunction %v2float None %8 %geom_aspect_ratio = OpFunctionParameter %float %11 = OpLabel %geom_clamped_aspect_ratio = OpVariable %_ptr_Function_float Function %geom_aspect_5 = OpVariable %_ptr_Function_v2float Function %59 = OpExtInst %float %1 FMin %geom_aspect_ratio %float_1_33333337 OpStore %geom_clamped_aspect_ratio %59 %62 = OpLoad %float %geom_clamped_aspect_ratio %64 = OpCompositeConstruct %v2float %62 %float_1 %65 = OpExtInst %v2float %1 Normalize %64 OpStore %geom_aspect_5 %65 %66 = OpLoad %v2float %geom_aspect_5 OpReturnValue %66 OpFunctionEnd %get_geom_overscan_vector_ = OpFunction %v2float None %12 %14 = OpLabel %76 = OpAccessChain %_ptr_Uniform_float %global %int_39 %77 = OpLoad %float %76 %79 = OpAccessChain %_ptr_Uniform_float %global %int_40 %80 = OpLoad %float %79 %81 = OpCompositeConstruct %v2float %77 %80 OpReturnValue %81 OpFunctionEnd %get_geom_tilt_angle_vector_ = OpFunction %v2float None %12 %16 = OpLabel %85 = OpAccessChain %_ptr_Uniform_float %global %int_35 %86 = OpLoad %float %85 %88 = OpAccessChain %_ptr_Uniform_float %global %int_36 %89 = OpLoad %float %88 %90 = OpCompositeConstruct %v2float %86 %89 OpReturnValue %90 OpFunctionEnd %cylinder_uv_to_xyz_vf2_vf2_ = OpFunction %v3float None %18 %video_uv = OpFunctionParameter %v2float %geom_aspect = OpFunctionParameter %v2float %22 = OpLabel %square_uv = OpVariable %_ptr_Function_v2float Function %arc_len = OpVariable %_ptr_Function_float Function %angle_from_image_center = OpVariable %_ptr_Function_float Function %x_pos = OpVariable %_ptr_Function_float Function %z_pos = OpVariable %_ptr_Function_float Function %intersection_pos_local = OpVariable %_ptr_Function_v3float Function %94 = OpFMul %v2float %video_uv %geom_aspect OpStore %square_uv %94 %97 = OpAccessChain %_ptr_Function_float %square_uv %uint_0 %98 = OpLoad %float %97 OpStore %arc_len %98 %100 = OpLoad %float %arc_len %102 = OpAccessChain %_ptr_Uniform_float %global %int_33 %103 = OpLoad %float %102 %104 = OpFDiv %float %100 %103 OpStore %angle_from_image_center %104 %106 = OpLoad %float %angle_from_image_center %107 = OpExtInst %float %1 Sin %106 %108 = OpAccessChain %_ptr_Uniform_float %global %int_33 %109 = OpLoad %float %108 %110 = OpFMul %float %107 %109 OpStore %x_pos %110 %112 = OpLoad %float %angle_from_image_center %113 = OpExtInst %float %1 Cos %112 %114 = OpAccessChain %_ptr_Uniform_float %global %int_33 %115 = OpLoad %float %114 %116 = OpFMul %float %113 %115 OpStore %z_pos %116 %118 = OpLoad %float %x_pos %120 = OpAccessChain %_ptr_Function_float %square_uv %uint_1 %121 = OpLoad %float %120 %122 = OpFNegate %float %121 %123 = OpLoad %float %z_pos %124 = OpCompositeConstruct %v3float %118 %122 %123 OpStore %intersection_pos_local %124 %125 = OpLoad %v3float %intersection_pos_local OpReturnValue %125 OpFunctionEnd %sphere_uv_to_xyz_vf2_vf2_ = OpFunction %v3float None %18 %video_uv_0 = OpFunctionParameter %v2float %geom_aspect_0 = OpFunctionParameter %v2float %26 = OpLabel %square_uv_0 = OpVariable %_ptr_Function_v2float Function %square_uv_unit = OpVariable %_ptr_Function_v2float Function %arc_len_0 = OpVariable %_ptr_Function_float Function %angle_from_image_center_0 = OpVariable %_ptr_Function_float Function %xy_dist_from_sphere_center = OpVariable %_ptr_Function_float Function %xy_pos = OpVariable %_ptr_Function_v2float Function %z_pos_0 = OpVariable %_ptr_Function_float Function %intersection_pos_local_0 = OpVariable %_ptr_Function_v3float Function %129 = OpFMul %v2float %video_uv_0 %geom_aspect_0 OpStore %square_uv_0 %129 %131 = OpLoad %v2float %square_uv_0 %132 = OpExtInst %v2float %1 Normalize %131 OpStore %square_uv_unit %132 %134 = OpAccessChain %_ptr_Function_float %square_uv_0 %uint_1 %135 = OpLoad %float %134 %136 = OpAccessChain %_ptr_Function_float %square_uv_unit %uint_1 %137 = OpLoad %float %136 %138 = OpFDiv %float %135 %137 OpStore %arc_len_0 %138 %140 = OpLoad %float %arc_len_0 %141 = OpAccessChain %_ptr_Uniform_float %global %int_33 %142 = OpLoad %float %141 %143 = OpFDiv %float %140 %142 OpStore %angle_from_image_center_0 %143 %145 = OpLoad %float %angle_from_image_center_0 %146 = OpExtInst %float %1 Sin %145 %147 = OpAccessChain %_ptr_Uniform_float %global %int_33 %148 = OpLoad %float %147 %149 = OpFMul %float %146 %148 OpStore %xy_dist_from_sphere_center %149 %151 = OpLoad %float %xy_dist_from_sphere_center %152 = OpLoad %v2float %square_uv_unit %153 = OpVectorTimesScalar %v2float %152 %151 OpStore %xy_pos %153 %155 = OpLoad %float %angle_from_image_center_0 %156 = OpExtInst %float %1 Cos %155 %157 = OpAccessChain %_ptr_Uniform_float %global %int_33 %158 = OpLoad %float %157 %159 = OpFMul %float %156 %158 OpStore %z_pos_0 %159 %161 = OpAccessChain %_ptr_Function_float %xy_pos %uint_0 %162 = OpLoad %float %161 %163 = OpAccessChain %_ptr_Function_float %xy_pos %uint_1 %164 = OpLoad %float %163 %165 = OpFNegate %float %164 %166 = OpLoad %float %z_pos_0 %167 = OpCompositeConstruct %v3float %162 %165 %166 OpStore %intersection_pos_local_0 %167 %168 = OpLoad %v3float %intersection_pos_local_0 OpReturnValue %168 OpFunctionEnd %sphere_alt_uv_to_xyz_vf2_vf2_ = OpFunction %v3float None %18 %video_uv_1 = OpFunctionParameter %v2float %geom_aspect_1 = OpFunctionParameter %v2float %30 = OpLabel %square_uv_1 = OpVariable %_ptr_Function_v2float Function %arc_len_1 = OpVariable %_ptr_Function_v2float Function %angle_from_image_center_1 = OpVariable %_ptr_Function_v2float Function %xy_pos_0 = OpVariable %_ptr_Function_v2float Function %z_pos_1 = OpVariable %_ptr_Function_float Function %172 = OpFMul %v2float %video_uv_1 %geom_aspect_1 OpStore %square_uv_1 %172 %174 = OpLoad %v2float %square_uv_1 OpStore %arc_len_1 %174 %176 = OpLoad %v2float %arc_len_1 %177 = OpAccessChain %_ptr_Uniform_float %global %int_33 %178 = OpLoad %float %177 %179 = OpCompositeConstruct %v2float %178 %178 %180 = OpFDiv %v2float %176 %179 OpStore %angle_from_image_center_1 %180 %182 = OpLoad %v2float %angle_from_image_center_1 %183 = OpExtInst %v2float %1 Sin %182 %184 = OpAccessChain %_ptr_Uniform_float %global %int_33 %185 = OpLoad %float %184 %186 = OpVectorTimesScalar %v2float %183 %185 OpStore %xy_pos_0 %186 %188 = OpAccessChain %_ptr_Uniform_float %global %int_33 %189 = OpLoad %float %188 %190 = OpAccessChain %_ptr_Uniform_float %global %int_33 %191 = OpLoad %float %190 %192 = OpFMul %float %189 %191 %193 = OpLoad %v2float %xy_pos_0 %194 = OpLoad %v2float %xy_pos_0 %195 = OpDot %float %193 %194 %196 = OpFSub %float %192 %195 %197 = OpExtInst %float %1 Sqrt %196 OpStore %z_pos_1 %197 %198 = OpAccessChain %_ptr_Function_float %xy_pos_0 %uint_0 %199 = OpLoad %float %198 %200 = OpAccessChain %_ptr_Function_float %xy_pos_0 %uint_1 %201 = OpLoad %float %200 %202 = OpFNegate %float %201 %203 = OpLoad %float %z_pos_1 %204 = OpCompositeConstruct %v3float %199 %202 %203 OpReturnValue %204 OpFunctionEnd %uv_to_xyz_vf2_vf2_f1_ = OpFunction %v3float None %31 %uv = OpFunctionParameter %v2float %geom_aspect_2 = OpFunctionParameter %v2float %geom_mode = OpFunctionParameter %float %36 = OpLabel %210 = OpVariable %_ptr_Function_v3float Function %217 = OpVariable %_ptr_Function_v3float Function %209 = OpFOrdLessThan %bool %geom_mode %float_1_5 OpSelectionMerge %212 None OpBranchConditional %209 %211 %214 %211 = OpLabel %213 = OpFunctionCall %v3float %sphere_uv_to_xyz_vf2_vf2_ %uv %geom_aspect_2 OpStore %210 %213 OpBranch %212 %214 = OpLabel %216 = OpFOrdLessThan %bool %geom_mode %float_2_5 OpSelectionMerge %219 None OpBranchConditional %216 %218 %221 %218 = OpLabel %220 = OpFunctionCall %v3float %sphere_alt_uv_to_xyz_vf2_vf2_ %uv %geom_aspect_2 OpStore %217 %220 OpBranch %219 %221 = OpLabel %222 = OpFunctionCall %v3float %cylinder_uv_to_xyz_vf2_vf2_ %uv %geom_aspect_2 OpStore %217 %222 OpBranch %219 %219 = OpLabel %223 = OpLoad %v3float %217 OpStore %210 %223 OpBranch %212 %212 = OpLabel %224 = OpLoad %v3float %210 OpReturnValue %224 OpFunctionEnd %get_ideal_global_eye_pos_for_points_vf3_vf2_vf3_9__i1_ = OpFunction %v3float None %42 %eye_pos = OpFunctionParameter %_ptr_Function_v3float %geom_aspect_3 = OpFunctionParameter %v2float %global_coords = OpFunctionParameter %_arr_v3float_uint_9 %num_points = OpFunctionParameter %int %48 = OpLabel %iter = OpVariable %_ptr_Function_int Function %i = OpVariable %_ptr_Function_int Function %eyespace_coords = OpVariable %_ptr_Function__arr_v3float_uint_9 Function %indexable = OpVariable %_ptr_Function__arr_v3float_uint_9 Function %abs_radius = OpVariable %_ptr_Function_float Function %offset_dr_min = OpVariable %_ptr_Function_v2float Function %offset_ul_max = OpVariable %_ptr_Function_v2float Function %i_0 = OpVariable %_ptr_Function_int Function %eyespace_xyz = OpVariable %_ptr_Function_v3float Function %offset_dr = OpVariable %_ptr_Function_v2float Function %offset_ul = OpVariable %_ptr_Function_v2float Function %center_offset = OpVariable %_ptr_Function_v2float Function %i_1 = OpVariable %_ptr_Function_int Function %indexable_0 = OpVariable %_ptr_Function__arr_v3float_uint_9 Function %offset_z_max = OpVariable %_ptr_Function_float Function %i_2 = OpVariable %_ptr_Function_int Function %eyespace_xyz_flipy = OpVariable %_ptr_Function_v3float Function %offset_zzzz = OpVariable %_ptr_Function_v4float Function %402 = OpVariable %_ptr_Function_float Function %415 = OpVariable %_ptr_Function_float Function %428 = OpVariable %_ptr_Function_float Function %441 = OpVariable %_ptr_Function_float Function OpStore %iter %int_0 OpBranch %230 %230 = OpLabel OpLoopMerge %232 %233 None OpBranch %234 %234 = OpLabel %235 = OpLoad %int %iter %237 = OpSLessThan %bool %235 %int_1 OpBranchConditional %237 %231 %232 %231 = OpLabel OpStore %i %int_0 OpBranch %239 %239 = OpLabel OpLoopMerge %241 %242 None OpBranch %243 %243 = OpLabel %244 = OpLoad %int %i %245 = OpSLessThan %bool %244 %num_points OpBranchConditional %245 %240 %241 %240 = OpLabel %248 = OpLoad %int %i %249 = OpLoad %int %i OpStore %indexable %global_coords %251 = OpAccessChain %_ptr_Function_v3float %indexable %249 %252 = OpLoad %v3float %251 %253 = OpLoad %v3float %eye_pos %254 = OpFSub %v3float %252 %253 %255 = OpAccessChain %_ptr_Function_v3float %eyespace_coords %248 OpStore %255 %254 OpBranch %242 %242 = OpLabel %256 = OpLoad %int %i %257 = OpIAdd %int %256 %int_1 OpStore %i %257 OpBranch %239 %241 = OpLabel %259 = OpAccessChain %_ptr_Uniform_float %global %int_33 %260 = OpLoad %float %259 %261 = OpExtInst %float %1 FAbs %260 OpStore %abs_radius %261 %264 = OpLoad %float %abs_radius %265 = OpFMul %float %float_10 %264 %266 = OpLoad %float %abs_radius %267 = OpFMul %float %float_10 %266 %268 = OpCompositeConstruct %v2float %265 %267 OpStore %offset_dr_min %268 %271 = OpLoad %float %abs_radius %272 = OpFMul %float %float_n10 %271 %273 = OpLoad %float %abs_radius %274 = OpFMul %float %float_n10 %273 %275 = OpCompositeConstruct %v2float %272 %274 OpStore %offset_ul_max %275 OpStore %i_0 %int_0 OpBranch %277 %277 = OpLabel OpLoopMerge %279 %280 None OpBranch %281 %281 = OpLabel %282 = OpLoad %int %i_0 %283 = OpSLessThan %bool %282 %num_points OpBranchConditional %283 %278 %279 %278 = OpLabel %285 = OpLoad %int %i_0 %286 = OpAccessChain %_ptr_Function_v3float %eyespace_coords %285 %287 = OpLoad %v3float %286 OpStore %eyespace_xyz %287 %289 = OpLoad %v3float %eyespace_xyz %290 = OpVectorShuffle %v2float %289 %289 0 1 %294 = OpAccessChain %_ptr_Function_float %eyespace_xyz %uint_2 %295 = OpLoad %float %294 %296 = OpFNegate %float %295 %297 = OpVectorTimesScalar %v2float %geom_aspect_3 %296 %298 = OpFMul %v2float %292 %297 %300 = OpAccessChain %_ptr_Uniform_float %global %int_34 %301 = OpLoad %float %300 %304 = OpVectorTimesScalar %v2float %303 %301 %305 = OpFDiv %v2float %298 %304 %306 = OpFSub %v2float %290 %305 OpStore %offset_dr %306 %308 = OpLoad %v3float %eyespace_xyz %309 = OpVectorShuffle %v2float %308 %308 0 1 %312 = OpAccessChain %_ptr_Function_float %eyespace_xyz %uint_2 %313 = OpLoad %float %312 %314 = OpFNegate %float %313 %315 = OpVectorTimesScalar %v2float %geom_aspect_3 %314 %316 = OpFMul %v2float %311 %315 %317 = OpAccessChain %_ptr_Uniform_float %global %int_34 %318 = OpLoad %float %317 %319 = OpVectorTimesScalar %v2float %303 %318 %320 = OpFDiv %v2float %316 %319 %321 = OpFSub %v2float %309 %320 OpStore %offset_ul %321 %322 = OpLoad %v2float %offset_dr_min %323 = OpLoad %v2float %offset_dr %324 = OpExtInst %v2float %1 FMin %322 %323 OpStore %offset_dr_min %324 %325 = OpLoad %v2float %offset_ul_max %326 = OpLoad %v2float %offset_ul %327 = OpExtInst %v2float %1 FMax %325 %326 OpStore %offset_ul_max %327 OpBranch %280 %280 = OpLabel %328 = OpLoad %int %i_0 %329 = OpIAdd %int %328 %int_1 OpStore %i_0 %329 OpBranch %277 %279 = OpLabel %331 = OpLoad %v2float %offset_ul_max %332 = OpLoad %v2float %offset_dr_min %333 = OpFAdd %v2float %331 %332 %334 = OpVectorTimesScalar %v2float %333 %float_0_5 OpStore %center_offset %334 %335 = OpLoad %v2float %center_offset %336 = OpLoad %v3float %eye_pos %337 = OpVectorShuffle %v2float %336 %336 0 1 %338 = OpFAdd %v2float %337 %335 %339 = OpLoad %v3float %eye_pos %340 = OpVectorShuffle %v3float %339 %338 3 4 2 OpStore %eye_pos %340 OpStore %i_1 %int_0 OpBranch %342 %342 = OpLabel OpLoopMerge %344 %345 None OpBranch %346 %346 = OpLabel %347 = OpLoad %int %i_1 %348 = OpSLessThan %bool %347 %num_points OpBranchConditional %348 %343 %344 %343 = OpLabel %349 = OpLoad %int %i_1 %350 = OpLoad %int %i_1 OpStore %indexable_0 %global_coords %352 = OpAccessChain %_ptr_Function_v3float %indexable_0 %350 %353 = OpLoad %v3float %352 %354 = OpLoad %v3float %eye_pos %355 = OpFSub %v3float %353 %354 %356 = OpAccessChain %_ptr_Function_v3float %eyespace_coords %349 OpStore %356 %355 OpBranch %345 %345 = OpLabel %357 = OpLoad %int %i_1 %358 = OpIAdd %int %357 %int_1 OpStore %i_1 %358 OpBranch %342 %344 = OpLabel %360 = OpAccessChain %_ptr_Uniform_float %global %int_33 %361 = OpLoad %float %360 %362 = OpFMul %float %float_n10 %361 %363 = OpAccessChain %_ptr_Uniform_float %global %int_34 %364 = OpLoad %float %363 %365 = OpFMul %float %362 %364 OpStore %offset_z_max %365 OpStore %i_2 %int_0 OpBranch %367 %367 = OpLabel OpLoopMerge %369 %370 None OpBranch %371 %371 = OpLabel %372 = OpLoad %int %i_2 %373 = OpSLessThan %bool %372 %num_points OpBranchConditional %373 %368 %369 %368 = OpLabel %375 = OpLoad %int %i_2 %376 = OpAccessChain %_ptr_Function_v3float %eyespace_coords %375 %377 = OpLoad %v3float %376 %379 = OpFMul %v3float %377 %378 OpStore %eyespace_xyz_flipy %379 %382 = OpLoad %v3float %eyespace_xyz_flipy %383 = OpVectorShuffle %v4float %382 %382 2 2 2 2 %384 = OpLoad %v3float %eyespace_xyz_flipy %385 = OpVectorShuffle %v4float %384 %384 0 1 0 1 %386 = OpAccessChain %_ptr_Uniform_float %global %int_34 %387 = OpLoad %float %386 %388 = OpVectorTimesScalar %v4float %385 %387 %390 = OpCompositeExtract %float %geom_aspect_3 0 %391 = OpCompositeExtract %float %geom_aspect_3 1 %392 = OpCompositeExtract %float %geom_aspect_3 0 %393 = OpCompositeExtract %float %geom_aspect_3 1 %394 = OpCompositeConstruct %v4float %390 %391 %392 %393 %395 = OpFMul %v4float %389 %394 %396 = OpFDiv %v4float %388 %395 %397 = OpFAdd %v4float %383 %396 OpStore %offset_zzzz %397 %398 = OpAccessChain %_ptr_Function_float %eyespace_xyz_flipy %uint_0 %399 = OpLoad %float %398 %401 = OpFOrdLessThan %bool %399 %float_0 OpSelectionMerge %404 None OpBranchConditional %401 %403 %409 %403 = OpLabel %405 = OpLoad %float %offset_z_max %406 = OpAccessChain %_ptr_Function_float %offset_zzzz %uint_0 %407 = OpLoad %float %406 %408 = OpExtInst %float %1 FMax %405 %407 OpStore %402 %408 OpBranch %404 %409 = OpLabel %410 = OpLoad %float %offset_z_max OpStore %402 %410 OpBranch %404 %404 = OpLabel %411 = OpLoad %float %402 OpStore %offset_z_max %411 %412 = OpAccessChain %_ptr_Function_float %eyespace_xyz_flipy %uint_1 %413 = OpLoad %float %412 %414 = OpFOrdLessThan %bool %413 %float_0 OpSelectionMerge %417 None OpBranchConditional %414 %416 %422 %416 = OpLabel %418 = OpLoad %float %offset_z_max %419 = OpAccessChain %_ptr_Function_float %offset_zzzz %uint_1 %420 = OpLoad %float %419 %421 = OpExtInst %float %1 FMax %418 %420 OpStore %415 %421 OpBranch %417 %422 = OpLabel %423 = OpLoad %float %offset_z_max OpStore %415 %423 OpBranch %417 %417 = OpLabel %424 = OpLoad %float %415 OpStore %offset_z_max %424 %425 = OpAccessChain %_ptr_Function_float %eyespace_xyz_flipy %uint_0 %426 = OpLoad %float %425 %427 = OpFOrdGreaterThan %bool %426 %float_0 OpSelectionMerge %430 None OpBranchConditional %427 %429 %435 %429 = OpLabel %431 = OpLoad %float %offset_z_max %432 = OpAccessChain %_ptr_Function_float %offset_zzzz %uint_2 %433 = OpLoad %float %432 %434 = OpExtInst %float %1 FMax %431 %433 OpStore %428 %434 OpBranch %430 %435 = OpLabel %436 = OpLoad %float %offset_z_max OpStore %428 %436 OpBranch %430 %430 = OpLabel %437 = OpLoad %float %428 OpStore %offset_z_max %437 %438 = OpAccessChain %_ptr_Function_float %eyespace_xyz_flipy %uint_1 %439 = OpLoad %float %438 %440 = OpFOrdGreaterThan %bool %439 %float_0 OpSelectionMerge %443 None OpBranchConditional %440 %442 %449 %442 = OpLabel %444 = OpLoad %float %offset_z_max %446 = OpAccessChain %_ptr_Function_float %offset_zzzz %uint_3 %447 = OpLoad %float %446 %448 = OpExtInst %float %1 FMax %444 %447 OpStore %441 %448 OpBranch %443 %449 = OpLabel %450 = OpLoad %float %offset_z_max OpStore %441 %450 OpBranch %443 %443 = OpLabel %451 = OpLoad %float %441 OpStore %offset_z_max %451 %452 = OpLoad %float %offset_z_max %453 = OpAccessChain %_ptr_Function_float %eyespace_xyz_flipy %uint_2 %454 = OpLoad %float %453 %455 = OpExtInst %float %1 FMax %452 %454 OpStore %offset_z_max %455 OpBranch %370 %370 = OpLabel %456 = OpLoad %int %i_2 %457 = OpIAdd %int %456 %int_1 OpStore %i_2 %457 OpBranch %367 %369 = OpLabel %458 = OpLoad %float %offset_z_max %459 = OpAccessChain %_ptr_Function_float %eye_pos %uint_2 %460 = OpLoad %float %459 %461 = OpFAdd %float %460 %458 %462 = OpAccessChain %_ptr_Function_float %eye_pos %uint_2 OpStore %462 %461 OpBranch %233 %233 = OpLabel %463 = OpLoad %int %iter %464 = OpIAdd %int %463 %int_1 OpStore %iter %464 OpBranch %230 %232 = OpLabel %465 = OpLoad %v3float %eye_pos OpReturnValue %465 OpFunctionEnd %get_ideal_global_eye_pos_mf33_vf2_f1_ = OpFunction %v3float None %50 %local_to_global = OpFunctionParameter %mat3v3float %geom_aspect_4 = OpFunctionParameter %v2float %geom_mode_0 = OpFunctionParameter %float %55 = OpLabel %high_view = OpVariable %_ptr_Function_v3float Function %low_view = OpVariable %_ptr_Function_v3float Function %len_sq = OpVariable %_ptr_Function_float Function %fov = OpVariable %_ptr_Function_float Function %eye_z_spherical = OpVariable %_ptr_Function_float Function %eye_pos_0 = OpVariable %_ptr_Function_v3float Function %498 = OpVariable %_ptr_Function_v3float Function %global_coords_0 = OpVariable %_ptr_Function__arr_v3float_uint_9 Function %num_negative_z_coords = OpVariable %_ptr_Function_float Function %i_3 = OpVariable %_ptr_Function_int Function %572 = OpVariable %_ptr_Function_v3float Function %param = OpVariable %_ptr_Function_v3float Function %469 = OpCompositeExtract %float %geom_aspect_4 1 %470 = OpAccessChain %_ptr_Uniform_float %global %int_34 %471 = OpLoad %float %470 %472 = OpFNegate %float %471 %473 = OpCompositeConstruct %v3float %float_0 %469 %472 OpStore %high_view %473 %475 = OpLoad %v3float %high_view %476 = OpFMul %v3float %475 %378 OpStore %low_view %476 %478 = OpLoad %v3float %high_view %479 = OpLoad %v3float %high_view %480 = OpDot %float %478 %479 OpStore %len_sq %480 %482 = OpLoad %v3float %high_view %483 = OpLoad %v3float %low_view %484 = OpDot %float %482 %483 %485 = OpLoad %float %len_sq %486 = OpFDiv %float %484 %485 %487 = OpExtInst %float %1 Acos %486 %488 = OpExtInst %float %1 FAbs %487 OpStore %fov %488 %490 = OpAccessChain %_ptr_Uniform_float %global %int_33 %491 = OpLoad %float %490 %492 = OpLoad %float %fov %493 = OpFMul %float %492 %float_0_5 %494 = OpExtInst %float %1 Sin %493 %495 = OpFDiv %float %491 %494 OpStore %eye_z_spherical %495 %497 = OpFOrdLessThan %bool %geom_mode_0 %float_2_5 OpSelectionMerge %500 None OpBranchConditional %497 %499 %503 %499 = OpLabel %501 = OpLoad %float %eye_z_spherical %502 = OpCompositeConstruct %v3float %float_0 %float_0 %501 OpStore %498 %502 OpBranch %500 %503 = OpLabel %504 = OpAccessChain %_ptr_Uniform_float %global %int_34 %505 = OpLoad %float %504 %506 = OpLoad %float %eye_z_spherical %507 = OpExtInst %float %1 FMax %505 %506 %508 = OpCompositeConstruct %v3float %float_0 %float_0 %507 OpStore %498 %508 OpBranch %500 %500 = OpLabel %509 = OpLoad %v3float %498 OpStore %eye_pos_0 %509 %512 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %511 %geom_aspect_4 %geom_mode_0 %513 = OpVectorTimesMatrix %v3float %512 %local_to_global %514 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_0 OpStore %514 %513 %516 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %515 %geom_aspect_4 %geom_mode_0 %517 = OpVectorTimesMatrix %v3float %516 %local_to_global %518 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_1 OpStore %518 %517 %521 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %520 %geom_aspect_4 %geom_mode_0 %522 = OpVectorTimesMatrix %v3float %521 %local_to_global %523 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_2 OpStore %523 %522 %526 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %525 %geom_aspect_4 %geom_mode_0 %527 = OpVectorTimesMatrix %v3float %526 %local_to_global %528 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_3 OpStore %528 %527 %531 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %530 %geom_aspect_4 %geom_mode_0 %532 = OpVectorTimesMatrix %v3float %531 %local_to_global %533 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_4 OpStore %533 %532 %535 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %292 %geom_aspect_4 %geom_mode_0 %536 = OpVectorTimesMatrix %v3float %535 %local_to_global %537 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_5 OpStore %537 %536 %540 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %539 %geom_aspect_4 %geom_mode_0 %541 = OpVectorTimesMatrix %v3float %540 %local_to_global %542 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_6 OpStore %542 %541 %545 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %544 %geom_aspect_4 %geom_mode_0 %546 = OpVectorTimesMatrix %v3float %545 %local_to_global %547 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_7 OpStore %547 %546 %549 = OpFunctionCall %v3float %uv_to_xyz_vf2_vf2_f1_ %311 %geom_aspect_4 %geom_mode_0 %550 = OpVectorTimesMatrix %v3float %549 %local_to_global %551 = OpAccessChain %_ptr_Function_v3float %global_coords_0 %int_8 OpStore %551 %550 OpStore %num_negative_z_coords %float_0 OpStore %i_3 %int_0 OpBranch %554 %554 = OpLabel OpLoopMerge %556 %557 None OpBranch %558 %558 = OpLabel %559 = OpLoad %int %i_3 %561 = OpSLessThan %bool %559 %int_9 OpBranchConditional %561 %555 %556 %555 = OpLabel %562 = OpAccessChain %_ptr_Function_float %global_coords_0 %int_0 %uint_2 %563 = OpLoad %float %562 %564 = OpFOrdLessThan %bool %563 %float_0 %565 = OpSelect %float %564 %float_1 %float_0 %566 = OpLoad %float %num_negative_z_coords %567 = OpFAdd %float %566 %565 OpStore %num_negative_z_coords %567 OpBranch %557 %557 = OpLabel %568 = OpLoad %int %i_3 %569 = OpIAdd %int %568 %int_1 OpStore %i_3 %569 OpBranch %554 %556 = OpLabel %570 = OpLoad %float %num_negative_z_coords %571 = OpFOrdGreaterThan %bool %570 %float_0_5 OpSelectionMerge %574 None OpBranchConditional %571 %573 %576 %573 = OpLabel %575 = OpLoad %v3float %eye_pos_0 OpStore %572 %575 OpBranch %574 %576 = OpLabel %577 = OpLoad %_arr_v3float_uint_9 %global_coords_0 %579 = OpLoad %v3float %eye_pos_0 OpStore %param %579 %580 = OpFunctionCall %v3float %get_ideal_global_eye_pos_for_points_vf3_vf2_vf3_9__i1_ %param %geom_aspect_4 %577 %int_9 OpStore %572 %580 OpBranch %574 %574 = OpLabel %581 = OpLoad %v3float %572 OpReturnValue %581 OpFunctionEnd