naga
naga copied to clipboard
Add SPIRV parsing test case with Embark Rust shaders
This adds SPIRV binary shaders and a test case to reproduce the SPIRV parsing issues with a set of shaders we have here at Embark Studios as repro for gfx-rs/wgpu#4308. It is a single SPIRV binary module with multiple shaders inside it.
Since I filed the original we have switched from using GLSL for our shaders to use Rust and our new Rust GPU shader compiler backend which generates SPIRV. Note as this is a very young SPIRV compiler there may be SPIRV code generation issues in the resulting binary, but at least the shaders to work with Nvidia and AMD drivers on PC and Linux and render correctly in our engine.
The new test case here will fails to parse, initially with this error:
---- parse_embark_spv stdout ----
thread 'parse_embark_spv' panicked at 'Module parsing failed: UnsupportedCapability(VulkanMemoryModel)', tests\parse_embark.rs:12:14
But as described in issue gfx-rs/wgpu#4308 there likely are additional SPIRV input parsing issues as well.
We could potentially merge this in but with the test marked as #[ignored] so it is not run by default (and as such fail), so one can do incremental fixes and improvements to the SPIRV parsing to get this running?
Thank you for providing the shader! It does use a hell lot of features that are not supported by WebGPU (multiview, variable pointers). That doesn't mean Naga will not be able to process it, but it means we can't prioritize support for these at this moment.
We could potentially merge this in but with the test marked as #[ignored] so it is not run by default (and as such fail), so one can do incremental fixes and improvements to the SPIRV parsing to get this running?
I think it's ok to keep this PR open and link it to progress we make towards supporting that test.
Didn't we add VkMEMModel support? Should we test these again? So this should work right?
It was just the first blocker out of an unknown number. We are a few steps closer now.
Current blockers seem to be:
-
nested pointers (and multiple corresponding load/stores)
%149 = OpTypeImage %float 2D 0 0 0 1 Unknown %_ptr_Uniform_149 = OpTypePointer Uniform %149 %_ptr_Function__ptr_Uniform_149 = OpTypePointer Function %_ptr_Uniform_149 -
variable with pointer to image type
%149 = OpTypeImage %float 2D 0 0 0 1 Unknown %_ptr_Uniform_149 = OpTypePointer Uniform %149 ... %in_texture = OpVariable %_ptr_Uniform_149 Uniform
Full Disassembled Shader
; SPIR-V
; Version: 1.5
; Generator: Google rspirv; 0
; Bound: 2829
; Schema: 0
OpCapability Shader
OpCapability VulkanMemoryModel
OpCapability VariablePointers
OpCapability MultiView
OpCapability DerivativeControl
OpExtension "SPV_KHR_multiview"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical Vulkan
OpEntryPoint Vertex %2 "line::main_vs" %view_idx %in_pos %in_color %global_uniforms %diffuse_color %builtin_pos
OpEntryPoint Fragment %9 "line::main_fs" %diffuse_color_0 %out_color
OpEntryPoint Vertex %12 "imgui::main_vs" %in_pos_0 %in_uv %in_color_0 %out_uv %out_color_0 %proj_matrix %builtin_pos_0
OpEntryPoint Fragment %20 "imgui::main_fs" %output %in_uv_0 %in_color_1 %in_texture %sampler
OpEntryPoint Vertex %26 "sky::main_vs" %vertex_idx %view_idx_0 %out_world_pos %sky_uniforms %builtin_pos_1
OpEntryPoint Fragment %32 "sky::main_fs" %output_0 %in_world_pos %sky_uniforms_0
OpEntryPoint Vertex %36 "fullscreen_triangle" %vert_idx %view_index %out_pos %out_uv_0
OpEntryPoint Fragment %41 "gaussian_blur::main_fs" %input %output_1 %direction %in_image %sampler_0
OpEntryPoint Fragment %47 "spectate::main_fs" %uv %output_2 %in_texture_0 %sampler_1
OpEntryPoint Vertex %52 "canvas::main_vs" %in_pos_1 %in_uv_1 %in_color_2 %push_constants %out_uv_1 %out_color_1 %builtin_pos_2
OpEntryPoint Fragment %60 "canvas::main_fs" %font_tex %font_sampler %in_uv_2 %in_color_3 %out_color_2
OpEntryPoint Fragment %66 "downsample::main_fs" %input_0 %output_3 %in_texture_1 %sampler_2
OpEntryPoint Fragment %71 "downsample::main_fs_stereo" %input_1 %output_4 %in_texture_2 %sampler_3
OpEntryPoint Fragment %76 "tonemap::main_fs" %in_frag_coord %uv_0 %output_5 %img %bloom %sampler_4 %push_constants_0
OpEntryPoint Fragment %84 "tonemap::main_fs_stereo" %uv_1 %output_l %output_r %img_0 %bloom_0 %sampler_5 %push_constants_1
OpExecutionMode %9 OriginUpperLeft
OpExecutionMode %20 OriginUpperLeft
OpExecutionMode %32 OriginUpperLeft
OpExecutionMode %41 OriginUpperLeft
OpExecutionMode %47 OriginUpperLeft
OpExecutionMode %60 OriginUpperLeft
OpExecutionMode %66 OriginUpperLeft
OpExecutionMode %71 OriginUpperLeft
OpExecutionMode %76 OriginUpperLeft
OpExecutionMode %84 OriginUpperLeft
OpName %macaw__Vec3 "macaw::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %ark_shaders__color__decode_srgb "ark_shaders::color::decode_srgb"
OpName %ark_shaders__color__decode_srgba "ark_shaders::color::decode_srgba"
OpName %macaw__Mat4 "macaw::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %line__GlobalUniforms "line::GlobalUniforms"
OpMemberName %line__GlobalUniforms 0 "view_proj_matrix"
OpMemberName %line__GlobalUniforms 1 "view_proj_matrix_stereo"
OpName %view_idx "view_idx"
OpName %in_pos "in_pos"
OpName %in_color "in_color"
OpName %global_uniforms "global_uniforms"
OpName %diffuse_color "diffuse_color"
OpName %builtin_pos "builtin_pos"
OpName %diffuse_color_0 "diffuse_color"
OpName %out_color "out_color"
OpName %macaw__Mat4 "macaw::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %in_pos_0 "in_pos"
OpName %in_uv "in_uv"
OpName %in_color_0 "in_color"
OpName %out_uv "out_uv"
OpName %out_color_0 "out_color"
OpName %proj_matrix "proj_matrix"
OpName %builtin_pos_0 "builtin_pos"
OpName %output "output"
OpName %in_uv_0 "in_uv"
OpName %in_color_1 "in_color"
OpName %in_texture "in_texture"
OpName %sampler "sampler"
OpName %macaw__Vec3 "macaw::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Mat4 "macaw::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %sky__SkyUniforms "sky::SkyUniforms"
OpMemberName %sky__SkyUniforms 0 "view_proj_inverse"
OpMemberName %sky__SkyUniforms 1 "view_proj_inverse_stereo"
OpMemberName %sky__SkyUniforms 2 "sun_dir"
OpMemberName %sky__SkyUniforms 3 "sun_color"
OpMemberName %sky__SkyUniforms 4 "ground_color"
OpMemberName %sky__SkyUniforms 5 "sky_color"
OpMemberName %sky__SkyUniforms 6 "horizon_color"
OpName %vertex_idx "vertex_idx"
OpName %view_idx_0 "view_idx"
OpName %out_world_pos "out_world_pos"
OpName %sky_uniforms "sky_uniforms"
OpName %builtin_pos_1 "builtin_pos"
OpName %output_0 "output"
OpName %in_world_pos "in_world_pos"
OpName %sky_uniforms_0 "sky_uniforms"
OpName %vert_idx "vert_idx"
OpName %view_index "view_index"
OpName %out_pos "out_pos"
OpName %out_uv_0 "out_uv"
OpName %input "input"
OpName %output_1 "output"
OpName %direction "direction"
OpName %in_image "in_image"
OpName %sampler_0 "sampler"
OpName %uv "uv"
OpName %output_2 "output"
OpName %in_texture_0 "in_texture"
OpName %sampler_1 "sampler"
OpName %macaw__Vec3 "macaw::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %_glam__f32__vec4__Vec4_as_core__convert__Into_glam__f32__vec3__Vec3____into "<glam::f32::vec4::Vec4 as core::convert::Into<glam::f32::vec3::Vec3>>::into"
OpName %macaw__Vec3 "macaw::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Mat4 "macaw::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %canvas__Constants "canvas::Constants"
OpMemberName %canvas__Constants 0 "projection_matrix"
OpName %in_pos_1 "in_pos"
OpName %in_uv_1 "in_uv"
OpName %in_color_2 "in_color"
OpName %push_constants "push_constants"
OpName %out_uv_1 "out_uv"
OpName %out_color_1 "out_color"
OpName %builtin_pos_2 "builtin_pos"
OpName %font_tex "font_tex"
OpName %font_sampler "font_sampler"
OpName %in_uv_2 "in_uv"
OpName %in_color_3 "in_color"
OpName %out_color_2 "out_color"
OpName %input_0 "input"
OpName %output_3 "output"
OpName %in_texture_1 "in_texture"
OpName %sampler_2 "sampler"
OpName %input_1 "input"
OpName %output_4 "output"
OpName %in_texture_2 "in_texture"
OpName %sampler_3 "sampler"
OpName %macaw__Vec3 "macaw::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %tonemap__TonemapConstants "tonemap::TonemapConstants"
OpName %ark_shaders__tonemap__calculate_luma "ark_shaders::tonemap::calculate_luma"
OpName %ark_shaders__tonemap__vignette "ark_shaders::tonemap::vignette"
OpName %ark_shaders__tonemap__tonemap_neutral "ark_shaders::tonemap::tonemap_neutral"
OpName %ark_shaders__tonemap__dither_pattern_at_coordinate "ark_shaders::tonemap::dither_pattern_at_coordinate"
OpName %in_frag_coord "in_frag_coord"
OpName %uv_0 "uv"
OpName %output_5 "output"
OpName %img "img"
OpName %bloom "bloom"
OpName %sampler_4 "sampler"
OpName %push_constants_0 "push_constants"
OpName %uv_1 "uv"
OpName %output_l "output_l"
OpName %output_r "output_r"
OpName %img_0 "img"
OpName %bloom_0 "bloom"
OpName %sampler_5 "sampler"
OpName %push_constants_1 "push_constants"
OpName %_f32_as_macaw__float_ext__FloatExt___step_select "<f32 as macaw::float_ext::FloatExt>::step_select"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Mat4 "glam::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %macaw__Vec3 "(f32, f32, f32)"
OpMemberName %macaw__Vec3 0 "0"
OpMemberName %macaw__Vec3 1 "1"
OpMemberName %macaw__Vec3 2 "2"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Mat4 "glam::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Mat4 "glam::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %_glam__f32__vec3__Vec3_as_macaw__vec3_ext__Vec3Ext___step_select "<glam::f32::vec3::Vec3 as macaw::vec3_ext::Vec3Ext>::step_select"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Vec3 "(f32, f32, f32)"
OpMemberName %macaw__Vec3 0 "0"
OpMemberName %macaw__Vec3 1 "1"
OpMemberName %macaw__Vec3 2 "2"
OpName %macaw__Vec3 "glam::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %_spirv_std__textures__Image2d___sample "<spirv_std::textures::Image2d>::sample"
OpName %_spirv_std__textures__Image2dArray___sample "<spirv_std::textures::Image2dArray>::sample"
OpName %tonemap__TonemapConstants "(f32, f32)"
OpName %macaw__Vec3 "f32::vec3::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Mat4 "f32::mat4::Mat4"
OpMemberName %macaw__Mat4 0 "x_axis"
OpMemberName %macaw__Mat4 1 "y_axis"
OpMemberName %macaw__Mat4 2 "z_axis"
OpMemberName %macaw__Mat4 3 "w_axis"
OpName %macaw__Vec3 "(f32, f32, f32)"
OpMemberName %macaw__Vec3 0 "0"
OpMemberName %macaw__Vec3 1 "1"
OpMemberName %macaw__Vec3 2 "2"
OpName %macaw__Vec3 "(f32, f32, f32)"
OpMemberName %macaw__Vec3 0 "0"
OpMemberName %macaw__Vec3 1 "1"
OpMemberName %macaw__Vec3 2 "2"
OpName %macaw__Vec3 "(f32, f32, f32)"
OpMemberName %macaw__Vec3 0 "0"
OpMemberName %macaw__Vec3 1 "1"
OpMemberName %macaw__Vec3 2 "2"
OpName %macaw__Vec3 "f32::vec3::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %macaw__Vec3 "f32::vec3::Vec3"
OpMemberName %macaw__Vec3 0 "x"
OpMemberName %macaw__Vec3 1 "y"
OpMemberName %macaw__Vec3 2 "z"
OpName %tonemap__TonemapConstants "(f32, f32)"
OpName %tonemap__TonemapConstants "(f32, f32)"
OpName %tonemap__TonemapConstants "(f32, f32)"
OpMemberDecorate %macaw__Vec3 0 Offset 0
OpMemberDecorate %macaw__Vec3 1 Offset 4
OpMemberDecorate %macaw__Vec3 2 Offset 8
OpMemberDecorate %macaw__Mat4 0 Offset 0
OpMemberDecorate %macaw__Mat4 1 Offset 16
OpMemberDecorate %macaw__Mat4 2 Offset 32
OpMemberDecorate %macaw__Mat4 3 Offset 48
OpMemberDecorate %line__GlobalUniforms 0 Offset 0
OpMemberDecorate %line__GlobalUniforms 1 Offset 64
OpDecorate %view_idx BuiltIn ViewIndex
OpDecorate %in_pos Location 0
OpDecorate %in_color Location 1
OpDecorate %global_uniforms DescriptorSet 0
OpDecorate %global_uniforms Binding 0
OpDecorate %diffuse_color Location 0
OpDecorate %builtin_pos BuiltIn Position
OpDecorate %diffuse_color_0 Location 0
OpDecorate %out_color Location 0
OpDecorate %in_pos_0 Location 0
OpDecorate %in_uv Location 1
OpDecorate %in_color_0 Location 2
OpDecorate %out_uv Location 0
OpDecorate %out_color_0 Location 1
OpDecorate %builtin_pos_0 BuiltIn Position
OpDecorate %output Location 0
OpDecorate %in_uv_0 Location 0
OpDecorate %in_color_1 Location 1
OpDecorate %in_texture DescriptorSet 0
OpDecorate %in_texture Binding 0
OpDecorate %sampler DescriptorSet 0
OpDecorate %sampler Binding 1
OpMemberDecorate %sky__SkyUniforms 0 Offset 0
OpMemberDecorate %sky__SkyUniforms 1 Offset 64
OpMemberDecorate %sky__SkyUniforms 2 Offset 128
OpMemberDecorate %sky__SkyUniforms 3 Offset 144
OpMemberDecorate %sky__SkyUniforms 4 Offset 160
OpMemberDecorate %sky__SkyUniforms 5 Offset 176
OpMemberDecorate %sky__SkyUniforms 6 Offset 192
OpDecorate %vertex_idx BuiltIn VertexIndex
OpDecorate %view_idx_0 BuiltIn ViewIndex
OpDecorate %out_world_pos Location 0
OpDecorate %sky_uniforms DescriptorSet 0
OpDecorate %sky_uniforms Binding 0
OpDecorate %builtin_pos_1 BuiltIn Position
OpDecorate %output_0 Location 0
OpDecorate %in_world_pos Location 0
OpDecorate %sky_uniforms_0 DescriptorSet 0
OpDecorate %sky_uniforms_0 Binding 0
OpDecorate %vert_idx BuiltIn VertexIndex
OpDecorate %view_index BuiltIn ViewIndex
OpDecorate %out_pos BuiltIn Position
OpDecorate %out_uv_0 Location 0
OpDecorate %input Location 0
OpDecorate %output_1 Location 0
OpDecorate %in_image DescriptorSet 0
OpDecorate %in_image Binding 0
OpDecorate %sampler_0 DescriptorSet 0
OpDecorate %sampler_0 Binding 1
OpDecorate %_arr_float_uint_18 ArrayStride 4
OpDecorate %uv Location 0
OpDecorate %output_2 Location 0
OpDecorate %in_texture_0 DescriptorSet 0
OpDecorate %in_texture_0 Binding 0
OpDecorate %sampler_1 DescriptorSet 0
OpDecorate %sampler_1 Binding 1
OpMemberDecorate %canvas__Constants 0 Offset 0
OpDecorate %canvas__Constants Block
OpDecorate %in_pos_1 Location 0
OpDecorate %in_uv_1 Location 1
OpDecorate %in_color_2 Location 2
OpDecorate %out_uv_1 Location 0
OpDecorate %out_color_1 Location 1
OpDecorate %builtin_pos_2 BuiltIn Position
OpDecorate %font_tex DescriptorSet 0
OpDecorate %font_tex Binding 0
OpDecorate %font_sampler DescriptorSet 0
OpDecorate %font_sampler Binding 1
OpDecorate %in_uv_2 Location 0
OpDecorate %in_color_3 Location 1
OpDecorate %out_color_2 Location 0
OpDecorate %input_0 Location 0
OpDecorate %output_3 Location 0
OpDecorate %in_texture_1 DescriptorSet 0
OpDecorate %in_texture_1 Binding 0
OpDecorate %sampler_2 DescriptorSet 0
OpDecorate %sampler_2 Binding 1
OpDecorate %input_1 Location 0
OpDecorate %output_4 Location 0
OpDecorate %in_texture_2 DescriptorSet 0
OpDecorate %in_texture_2 Binding 0
OpDecorate %sampler_3 DescriptorSet 0
OpDecorate %sampler_3 Binding 1
OpMemberDecorate %tonemap__TonemapConstants 0 Offset 0
OpMemberDecorate %tonemap__TonemapConstants 1 Offset 4
OpDecorate %in_frag_coord BuiltIn FragCoord
OpDecorate %uv_0 Location 0
OpDecorate %output_5 Location 0
OpDecorate %img DescriptorSet 0
OpDecorate %img Binding 0
OpDecorate %bloom DescriptorSet 0
OpDecorate %bloom Binding 1
OpDecorate %sampler_4 DescriptorSet 0
OpDecorate %sampler_4 Binding 2
OpDecorate %uv_1 Location 0
OpDecorate %output_l Location 0
OpDecorate %output_r Location 1
OpDecorate %img_0 DescriptorSet 0
OpDecorate %img_0 Binding 0
OpDecorate %bloom_0 DescriptorSet 0
OpDecorate %bloom_0 Binding 1
OpDecorate %sampler_5 DescriptorSet 0
OpDecorate %sampler_5 Binding 2
OpDecorate %_arr_int_uint_16 ArrayStride 4
%float = OpTypeFloat 32
%macaw__Vec3 = OpTypeStruct %float %float %float
%_ptr_Function_macaw__Vec3 = OpTypePointer Function %macaw__Vec3
%void = OpTypeVoid
%v4float = OpTypeVector %float 4
%_ptr_Function_v4float = OpTypePointer Function %v4float
%116 = OpTypeFunction %void %_ptr_Function_macaw__Vec3 %_ptr_Function_v4float
%117 = OpTypeFunction %void %_ptr_Function_macaw__Vec3 %_ptr_Function_macaw__Vec3
%118 = OpTypeFunction %void %_ptr_Function_v4float %_ptr_Function_v4float
%_ptr_Function_float = OpTypePointer Function %float
%uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3
%uint_12 = OpConstant %uint 12
%float_12_9200001 = OpConstant %float 12.9200001
%float_0_0549999997 = OpConstant %float 0.0549999997
%float_2_4000001 = OpConstant %float 2.4000001
%float_0_0404499993 = OpConstant %float 0.0404499993
%130 = OpTypeFunction %void %_ptr_Function_macaw__Vec3 %_ptr_Function_macaw__Vec3 %_ptr_Function_macaw__Vec3 %_ptr_Function_macaw__Vec3 %_ptr_Function_macaw__Vec3
%v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%macaw__Mat4 = OpTypeStruct %v4float %v4float %v4float %v4float
%line__GlobalUniforms = OpTypeStruct %macaw__Mat4 %macaw__Mat4
%_ptr_Function_line__GlobalUniforms = OpTypePointer Function %line__GlobalUniforms
%_ptr_Uniform_line__GlobalUniforms = OpTypePointer Uniform %line__GlobalUniforms
%_ptr_Function__ptr_Uniform_line__GlobalUniforms = OpTypePointer Function %_ptr_Uniform_line__GlobalUniforms
%_ptr_Output_v4float = OpTypePointer Output %v4float
%_ptr_Function__ptr_Output_v4float = OpTypePointer Function %_ptr_Output_v4float
%_ptr_Input_v4float = OpTypePointer Input %v4float
%_ptr_Function__ptr_Input_v4float = OpTypePointer Function %_ptr_Input_v4float
%_ptr_Input_v3float = OpTypePointer Input %v3float
%_ptr_Function__ptr_Input_v3float = OpTypePointer Function %_ptr_Input_v3float
%_ptr_Input_uint = OpTypePointer Input %uint
%_ptr_Function__ptr_Input_uint = OpTypePointer Function %_ptr_Input_uint
%_ptr_Function_macaw__Mat4 = OpTypePointer Function %macaw__Mat4
%145 = OpTypeFunction %void
%view_idx = OpVariable %_ptr_Input_uint Input
%in_pos = OpVariable %_ptr_Input_v3float Input
%in_color = OpVariable %_ptr_Input_v4float Input
%global_uniforms = OpVariable %_ptr_Uniform_line__GlobalUniforms Uniform
%diffuse_color = OpVariable %_ptr_Output_v4float Output
%builtin_pos = OpVariable %_ptr_Output_v4float Output
%diffuse_color_0 = OpVariable %_ptr_Input_v4float Input
%out_color = OpVariable %_ptr_Output_v4float Output
%_ptr_Function_uint = OpTypePointer Function %uint
%bool = OpTypeBool
%float_1 = OpConstant %float 1
%149 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_Uniform_149 = OpTypePointer Uniform %149
%_ptr_Function__ptr_Uniform_149 = OpTypePointer Function %_ptr_Uniform_149
%152 = OpTypeSampler
%_ptr_Uniform_152 = OpTypePointer Uniform %152
%_ptr_Function__ptr_Uniform_152 = OpTypePointer Function %_ptr_Uniform_152
%v2float = OpTypeVector %float 2
%_ptr_Output_v2float = OpTypePointer Output %v2float
%_ptr_Function__ptr_Output_v2float = OpTypePointer Function %_ptr_Output_v2float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%_ptr_Input_v2float = OpTypePointer Input %v2float
%_ptr_Function__ptr_Input_v2float = OpTypePointer Function %_ptr_Input_v2float
%_ptr_PushConstant_macaw__Mat4 = OpTypePointer PushConstant %macaw__Mat4
%_ptr_Function__ptr_PushConstant_macaw__Mat4 = OpTypePointer Function %_ptr_PushConstant_macaw__Mat4
%in_pos_0 = OpVariable %_ptr_Input_v2float Input
%in_uv = OpVariable %_ptr_Input_v2float Input
%in_color_0 = OpVariable %_ptr_Input_v4float Input
%out_uv = OpVariable %_ptr_Output_v2float Output
%out_color_0 = OpVariable %_ptr_Output_v4float Output
%proj_matrix = OpVariable %_ptr_PushConstant_macaw__Mat4 PushConstant
%builtin_pos_0 = OpVariable %_ptr_Output_v4float Output
%output = OpVariable %_ptr_Output_v4float Output
%in_uv_0 = OpVariable %_ptr_Input_v2float Input
%in_color_1 = OpVariable %_ptr_Input_v4float Input
%in_texture = OpVariable %_ptr_Uniform_149 Uniform
%sampler = OpVariable %_ptr_Uniform_152 Uniform
%_ptr_Function_149 = OpTypePointer Function %149
%_ptr_Function_152 = OpTypePointer Function %152
%float_0 = OpConstant %float 0
%166 = OpTypeFunction %void %_ptr_Function_v4float %_ptr_Function_149 %152 %_ptr_Function_v2float
%167 = OpTypeFunction %float %_ptr_Function_macaw__Vec3
%sky__SkyUniforms = OpTypeStruct %macaw__Mat4 %macaw__Mat4 %v4float %v4float %v4float %v4float %v4float
%_ptr_Function_sky__SkyUniforms = OpTypePointer Function %sky__SkyUniforms
%_ptr_Uniform_sky__SkyUniforms = OpTypePointer Uniform %sky__SkyUniforms
%_ptr_Function__ptr_Uniform_sky__SkyUniforms = OpTypePointer Function %_ptr_Uniform_sky__SkyUniforms
%int = OpTypeInt 32 1
%_ptr_Input_int = OpTypePointer Input %int
%_ptr_Function__ptr_Input_int = OpTypePointer Function %_ptr_Input_int
%vertex_idx = OpVariable %_ptr_Input_int Input
%view_idx_0 = OpVariable %_ptr_Input_uint Input
%out_world_pos = OpVariable %_ptr_Output_v4float Output
%sky_uniforms = OpVariable %_ptr_Uniform_sky__SkyUniforms Uniform
%builtin_pos_1 = OpVariable %_ptr_Output_v4float Output
%output_0 = OpVariable %_ptr_Output_v4float Output
%in_world_pos = OpVariable %_ptr_Input_v4float Input
%sky_uniforms_0 = OpVariable %_ptr_Uniform_sky__SkyUniforms Uniform
%_ptr_Function_int = OpTypePointer Function %int
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%int_31 = OpConstant %int 31
%float_n1 = OpConstant %float -1
%uint_6 = OpConstant %uint 6
%uint_5 = OpConstant %uint 5
%uint_4 = OpConstant %uint 4
%float_0_998000026 = OpConstant %float 0.998000026
%float_0_00199997425 = OpConstant %float 0.00199997425
%float_30 = OpConstant %float 30
%float_0_920000017 = OpConstant %float 0.920000017
%float_0_0799999833 = OpConstant %float 0.0799999833
%float_3 = OpConstant %float 3
%float_0_5 = OpConstant %float 0.5
%_ptr_Output_v3float = OpTypePointer Output %v3float
%_ptr_Function__ptr_Output_v3float = OpTypePointer Function %_ptr_Output_v3float
%vert_idx = OpVariable %_ptr_Input_int Input
%view_index = OpVariable %_ptr_Input_int Input
%out_pos = OpVariable %_ptr_Output_v4float Output
%out_uv_0 = OpVariable %_ptr_Output_v3float Output
%191 = OpTypeImage %float 2D 0 1 0 1 Unknown
%_ptr_Uniform_191 = OpTypePointer Uniform %191
%_ptr_Function__ptr_Uniform_191 = OpTypePointer Function %_ptr_Uniform_191
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
%_ptr_Function__ptr_PushConstant_v2float = OpTypePointer Function %_ptr_PushConstant_v2float
%input = OpVariable %_ptr_Input_v3float Input
%output_1 = OpVariable %_ptr_Output_v4float Output
%direction = OpVariable %_ptr_PushConstant_v2float PushConstant
%in_image = OpVariable %_ptr_Uniform_191 Uniform
%sampler_0 = OpVariable %_ptr_Uniform_152 Uniform
%_ptr_Function_191 = OpTypePointer Function %191
%uint_18 = OpConstant %uint 18
%_arr_float_uint_18 = OpTypeArray %float %uint_18
%_ptr_Function__arr_float_uint_18 = OpTypePointer Function %_arr_float_uint_18
%199 = OpTypeFunction %void %_ptr_Function_v4float %_ptr_Function_191 %152 %_ptr_Function_v3float
%float_0_0500140004 = OpConstant %float 0.0500140004
%float_1_49411798 = OpConstant %float 1.49411798
%float_3_48627496 = OpConstant %float 3.48627496
%float_5_47843122 = OpConstant %float 5.47843122
%float_7_47058821 = OpConstant %float 7.47058821
%float_9_46274471 = OpConstant %float 9.46274471
%float_11_4549017 = OpConstant %float 11.4549017
%float_13_4470587 = OpConstant %float 13.4470587
%float_15_4392157 = OpConstant %float 15.4392157
%float_17_4313736 = OpConstant %float 17.4313736
%float_19_4235287 = OpConstant %float 19.4235287
%float_21_4156857 = OpConstant %float 21.4156857
%float_23_4078426 = OpConstant %float 23.4078426
%float_25_3999996 = OpConstant %float 25.3999996
%float_27_3921566 = OpConstant %float 27.3921566
%float_29_3843136 = OpConstant %float 29.3843136
%float_31_3764706 = OpConstant %float 31.3764706
%float_33_3686256 = OpConstant %float 33.3686256
%218 = OpConstantComposite %_arr_float_uint_18 %float_0 %float_1_49411798 %float_3_48627496 %float_5_47843122 %float_7_47058821 %float_9_46274471 %float_11_4549017 %float_13_4470587 %float_15_4392157 %float_17_4313736 %float_19_4235287 %float_21_4156857 %float_23_4078426 %float_25_3999996 %float_27_3921566 %float_29_3843136 %float_31_3764706 %float_33_3686256
%float_0_098093003 = OpConstant %float 0.098093003
%float_0_0907210037 = OpConstant %float 0.0907210037
%float_0_0788149983 = OpConstant %float 0.0788149983
%float_0_0643149987 = OpConstant %float 0.0643149987
%float_0_0492930003 = OpConstant %float 0.0492930003
%float_0_0354779996 = OpConstant %float 0.0354779996
%float_0_0239749998 = OpConstant %float 0.0239749998
%float_0_0152099999 = OpConstant %float 0.0152099999
%float_0_00905600004 = OpConstant %float 0.00905600004
%float_0_0050590001 = OpConstant %float 0.0050590001
%float_0_00265099993 = OpConstant %float 0.00265099993
%float_0_00130300003 = OpConstant %float 0.00130300003
%float_0_000600000028 = OpConstant %float 0.000600000028
%float_0_000258999993 = OpConstant %float 0.000258999993
%float_0_000104999999 = OpConstant %float 0.000104999999
%float_3_9999999en05 = OpConstant %float 3.9999999e-05
%float_1_40000002en05 = OpConstant %float 1.40000002e-05
%236 = OpConstantComposite %_arr_float_uint_18 %float_0_0500140004 %float_0_098093003 %float_0_0907210037 %float_0_0788149983 %float_0_0643149987 %float_0_0492930003 %float_0_0354779996 %float_0_0239749998 %float_0_0152099999 %float_0_00905600004 %float_0_0050590001 %float_0_00265099993 %float_0_00130300003 %float_0_000600000028 %float_0_000258999993 %float_0_000104999999 %float_3_9999999en05 %float_1_40000002en05
%uv = OpVariable %_ptr_Input_v3float Input
%output_2 = OpVariable %_ptr_Output_v4float Output
%in_texture_0 = OpVariable %_ptr_Uniform_191 Uniform
%sampler_1 = OpVariable %_ptr_Uniform_152 Uniform
%canvas__Constants = OpTypeStruct %macaw__Mat4
%_ptr_Function_canvas__Constants = OpTypePointer Function %canvas__Constants
%_ptr_PushConstant_canvas__Constants = OpTypePointer PushConstant %canvas__Constants
%_ptr_Function__ptr_PushConstant_canvas__Constants = OpTypePointer Function %_ptr_PushConstant_canvas__Constants
%in_pos_1 = OpVariable %_ptr_Input_v2float Input
%in_uv_1 = OpVariable %_ptr_Input_v2float Input
%in_color_2 = OpVariable %_ptr_Input_v4float Input
%push_constants = OpVariable %_ptr_PushConstant_canvas__Constants PushConstant
%out_uv_1 = OpVariable %_ptr_Output_v2float Output
%out_color_1 = OpVariable %_ptr_Output_v4float Output
%builtin_pos_2 = OpVariable %_ptr_Output_v4float Output
%font_tex = OpVariable %_ptr_Uniform_149 Uniform
%font_sampler = OpVariable %_ptr_Uniform_152 Uniform
%in_uv_2 = OpVariable %_ptr_Input_v2float Input
%in_color_3 = OpVariable %_ptr_Input_v4float Input
%out_color_2 = OpVariable %_ptr_Output_v4float Output
%input_0 = OpVariable %_ptr_Input_v3float Input
%output_3 = OpVariable %_ptr_Output_v4float Output
%in_texture_1 = OpVariable %_ptr_Uniform_149 Uniform
%sampler_2 = OpVariable %_ptr_Uniform_152 Uniform
%input_1 = OpVariable %_ptr_Input_v3float Input
%output_4 = OpVariable %_ptr_Output_v4float Output
%in_texture_2 = OpVariable %_ptr_Uniform_191 Uniform
%sampler_3 = OpVariable %_ptr_Uniform_152 Uniform
%tonemap__TonemapConstants = OpTypeStruct %float %float
%_ptr_PushConstant_tonemap__TonemapConstants = OpTypePointer PushConstant %tonemap__TonemapConstants
%_ptr_Function__ptr_PushConstant_tonemap__TonemapConstants = OpTypePointer Function %_ptr_PushConstant_tonemap__TonemapConstants
%242 = OpTypeFunction %float %_ptr_Function_v2float %float %float
%243 = OpTypeFunction %float %_ptr_Function_v2float
%in_frag_coord = OpVariable %_ptr_Input_v4float Input
%uv_0 = OpVariable %_ptr_Input_v3float Input
%output_5 = OpVariable %_ptr_Output_v4float Output
%img = OpVariable %_ptr_Uniform_149 Uniform
%bloom = OpVariable %_ptr_Uniform_191 Uniform
%sampler_4 = OpVariable %_ptr_Uniform_152 Uniform
%push_constants_0 = OpVariable %_ptr_PushConstant_tonemap__TonemapConstants PushConstant
%uv_1 = OpVariable %_ptr_Input_v3float Input
%output_l = OpVariable %_ptr_Output_v4float Output
%output_r = OpVariable %_ptr_Output_v4float Output
%img_0 = OpVariable %_ptr_Uniform_191 Uniform
%bloom_0 = OpVariable %_ptr_Uniform_191 Uniform
%sampler_5 = OpVariable %_ptr_Uniform_152 Uniform
%push_constants_1 = OpVariable %_ptr_PushConstant_tonemap__TonemapConstants PushConstant
%244 = OpConstantComposite %v2float %float_1 %float_1
%245 = OpConstantComposite %macaw__Vec3 %float_1 %float_1 %float_1
%_ptr_Function_tonemap__TonemapConstants = OpTypePointer Function %tonemap__TonemapConstants
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%248 = OpUndef %tonemap__TonemapConstants
%float_0_212599993 = OpConstant %float 0.212599993
%float_0_715200007 = OpConstant %float 0.715200007
%float_0_0722000003 = OpConstant %float 0.0722000003
%float_2 = OpConstant %float 2
%float_9_99999975en06 = OpConstant %float 9.99999975e-06
%uint_16 = OpConstant %uint 16
%_arr_int_uint_16 = OpTypeArray %int %uint_16
%_ptr_Function__arr_int_uint_16 = OpTypePointer Function %_arr_int_uint_16
%int_0 = OpConstant %int 0
%int_8 = OpConstant %int 8
%int_10 = OpConstant %int 10
%int_12 = OpConstant %int 12
%int_4 = OpConstant %int 4
%int_14 = OpConstant %int 14
%int_6 = OpConstant %int 6
%uint_7 = OpConstant %uint 7
%int_3 = OpConstant %int 3
%uint_8 = OpConstant %uint 8
%int_11 = OpConstant %int 11
%uint_9 = OpConstant %uint 9
%uint_10 = OpConstant %uint 10
%int_9 = OpConstant %int 9
%uint_11 = OpConstant %uint 11
%int_15 = OpConstant %int 15
%int_7 = OpConstant %int 7
%uint_13 = OpConstant %uint 13
%int_13 = OpConstant %int 13
%uint_14 = OpConstant %uint 14
%int_5 = OpConstant %int 5
%uint_15 = OpConstant %uint 15
%uint_3472883712 = OpConstant %uint 3472883712
%uint_1325400063 = OpConstant %uint 1325400063
%int_2147483647 = OpConstant %int 2147483647
%int_n2147483648 = OpConstant %int -2147483648
%float_7_5 = OpConstant %float 7.5
%float_3825 = OpConstant %float 3825
%float_0_0599999987 = OpConstant %float 0.0599999987
%float_0_100000001 = OpConstant %float 0.100000001
%286 = OpTypeFunction %float %float %float %float %float
%287 = OpTypeSampledImage %149
%288 = OpTypeSampledImage %191
%false = OpConstantFalse %bool
%true = OpConstantTrue %bool
%false_0 = OpConstantFalse %bool
%true_0 = OpConstantTrue %bool
%false_1 = OpConstantFalse %bool
%true_1 = OpConstantTrue %bool
%false_2 = OpConstantFalse %bool
%true_2 = OpConstantTrue %bool
%false_3 = OpConstantFalse %bool
%true_3 = OpConstantTrue %bool
%false_4 = OpConstantFalse %bool
%true_4 = OpConstantTrue %bool
%false_5 = OpConstantFalse %bool
%true_5 = OpConstantTrue %bool
%false_6 = OpConstantFalse %bool
%true_6 = OpConstantTrue %bool
%false_7 = OpConstantFalse %bool
%true_7 = OpConstantTrue %bool
%false_8 = OpConstantFalse %bool
%true_8 = OpConstantTrue %bool
%false_9 = OpConstantFalse %bool
%true_9 = OpConstantTrue %bool
%false_10 = OpConstantFalse %bool
%true_10 = OpConstantTrue %bool
%313 = OpUndef %macaw__Vec3
%314 = OpUndef %v4float
%315 = OpUndef %v3float
%316 = OpUndef %float
%317 = OpUndef %v2float
%ark_shaders__color__decode_srgb = OpFunction %void None %117
%318 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%319 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%320 = OpLabel
%321 = OpVariable %_ptr_Function_macaw__Vec3 Function
%322 = OpVariable %_ptr_Function_macaw__Vec3 Function
%323 = OpVariable %_ptr_Function_macaw__Vec3 Function
%324 = OpVariable %_ptr_Function_macaw__Vec3 Function
%325 = OpVariable %_ptr_Function_macaw__Vec3 Function
%326 = OpVariable %_ptr_Function_macaw__Vec3 Function
%327 = OpVariable %_ptr_Function_macaw__Vec3 Function
%328 = OpVariable %_ptr_Function_macaw__Vec3 Function
OpCopyMemory %322 %319
%329 = OpAccessChain %_ptr_Function_float %322 %uint_0
%330 = OpLoad %float %329
%331 = OpFDiv %float %330 %float_12_9200001
%332 = OpAccessChain %_ptr_Function_float %322 %uint_1
%333 = OpLoad %float %332
%334 = OpFDiv %float %333 %float_12_9200001
%335 = OpAccessChain %_ptr_Function_float %322 %uint_2
%336 = OpLoad %float %335
%337 = OpFDiv %float %336 %float_12_9200001
%338 = OpAccessChain %_ptr_Function_float %321 %uint_0
OpStore %338 %331
%339 = OpAccessChain %_ptr_Function_float %321 %uint_1
OpStore %339 %334
%340 = OpAccessChain %_ptr_Function_float %321 %uint_2
OpStore %340 %337
OpCopyMemory %324 %319
%341 = OpCompositeInsert %macaw__Vec3 %float_0_0549999997 %313 0
%342 = OpCompositeInsert %macaw__Vec3 %float_0_0549999997 %341 1
%343 = OpCompositeInsert %macaw__Vec3 %float_0_0549999997 %342 2
%344 = OpAccessChain %_ptr_Function_float %324 %uint_0
%345 = OpLoad %float %344
%346 = OpCompositeExtract %float %343 0
%347 = OpFAdd %float %345 %346
%348 = OpAccessChain %_ptr_Function_float %324 %uint_1
%349 = OpLoad %float %348
%350 = OpCompositeExtract %float %343 1
%351 = OpFAdd %float %349 %350
%352 = OpAccessChain %_ptr_Function_float %324 %uint_2
%353 = OpLoad %float %352
%354 = OpCompositeExtract %float %343 2
%355 = OpFAdd %float %353 %354
%356 = OpCompositeInsert %macaw__Vec3 %347 %313 0
%357 = OpCompositeInsert %macaw__Vec3 %351 %356 1
%358 = OpCompositeInsert %macaw__Vec3 %355 %357 2
%359 = OpCompositeExtract %float %358 0
%360 = OpExtInst %float %1 Pow %359 %float_2_4000001
%361 = OpCompositeExtract %float %358 1
%362 = OpExtInst %float %1 Pow %361 %float_2_4000001
%363 = OpCompositeExtract %float %358 2
%364 = OpExtInst %float %1 Pow %363 %float_2_4000001
%365 = OpAccessChain %_ptr_Function_float %323 %uint_0
OpStore %365 %360
%366 = OpAccessChain %_ptr_Function_float %323 %uint_1
OpStore %366 %362
%367 = OpAccessChain %_ptr_Function_float %323 %uint_2
OpStore %367 %364
OpCopyMemory %325 %319
%368 = OpAccessChain %_ptr_Function_float %326 %uint_0
OpStore %368 %float_0_0404499993
%369 = OpAccessChain %_ptr_Function_float %326 %uint_1
OpStore %369 %float_0_0404499993
%370 = OpAccessChain %_ptr_Function_float %326 %uint_2
OpStore %370 %float_0_0404499993
OpCopyMemory %327 %321
OpCopyMemory %328 %323
%371 = OpFunctionCall %void %_glam__f32__vec3__Vec3_as_macaw__vec3_ext__Vec3Ext___step_select %318 %325 %326 %327 %328
OpReturn
OpFunctionEnd
%ark_shaders__color__decode_srgba = OpFunction %void None %118
%372 = OpFunctionParameter %_ptr_Function_v4float
%373 = OpFunctionParameter %_ptr_Function_v4float
%374 = OpLabel
%375 = OpVariable %_ptr_Function_macaw__Vec3 Function
%376 = OpVariable %_ptr_Function_macaw__Vec3 Function
%377 = OpVariable %_ptr_Function_v4float Function
%378 = OpLoad %v4float %373
OpStore %377 %378
%379 = OpFunctionCall %void %_glam__f32__vec4__Vec4_as_core__convert__Into_glam__f32__vec3__Vec3____into %376 %377
%380 = OpFunctionCall %void %ark_shaders__color__decode_srgb %375 %376
%381 = OpAccessChain %_ptr_Function_float %373 %uint_3
%382 = OpLoad %float %381
%383 = OpAccessChain %_ptr_Function_float %375 %uint_0
%384 = OpLoad %float %383
%385 = OpAccessChain %_ptr_Function_float %375 %uint_1
%386 = OpLoad %float %385
%387 = OpAccessChain %_ptr_Function_float %375 %uint_2
%388 = OpLoad %float %387
%389 = OpAccessChain %_ptr_Function_float %372 %uint_0
OpStore %389 %384
%390 = OpAccessChain %_ptr_Function_float %372 %uint_1
OpStore %390 %386
%391 = OpAccessChain %_ptr_Function_float %372 %uint_2
OpStore %391 %388
%392 = OpAccessChain %_ptr_Function_float %372 %uint_3
OpStore %392 %382
OpReturn
OpFunctionEnd
%2 = OpFunction %void None %145
%393 = OpLabel
%394 = OpVariable %_ptr_Function_line__GlobalUniforms Function
%395 = OpVariable %_ptr_Function_macaw__Mat4 Function
%396 = OpVariable %_ptr_Function_macaw__Mat4 Function
OpCopyMemory %394 %global_uniforms
%397 = OpLoad %v3float %in_pos
%398 = OpLoad %v4float %in_color
OpStore %diffuse_color %398
%399 = OpLoad %uint %view_idx
%400 = OpIEqual %bool %399 %uint_0
OpSelectionMerge %401 None
OpBranchConditional %400 %402 %403
%402 = OpLabel
%404 = OpAccessChain %_ptr_Function_macaw__Mat4 %394 %uint_0
OpCopyMemory %395 %404
%405 = OpCompositeExtract %float %397 0
%406 = OpCompositeExtract %float %397 1
%407 = OpCompositeExtract %float %397 2
%408 = OpCompositeInsert %v4float %405 %314 0
%409 = OpCompositeInsert %v4float %406 %408 1
%410 = OpCompositeInsert %v4float %407 %409 2
%411 = OpCompositeInsert %v4float %float_1 %410 3
%412 = OpAccessChain %_ptr_Function_v4float %395 %uint_0
%413 = OpLoad %v4float %412
%414 = OpCompositeExtract %float %411 0
%415 = OpCompositeExtract %float %411 0
%416 = OpCompositeExtract %float %411 0
%417 = OpCompositeExtract %float %411 0
%418 = OpCompositeInsert %v4float %414 %314 0
%419 = OpCompositeInsert %v4float %415 %418 1
%420 = OpCompositeInsert %v4float %416 %419 2
%421 = OpCompositeInsert %v4float %417 %420 3
%422 = OpCompositeExtract %float %413 0
%423 = OpCompositeExtract %float %421 0
%424 = OpFMul %float %422 %423
%425 = OpCompositeExtract %float %413 1
%426 = OpCompositeExtract %float %421 1
%427 = OpFMul %float %425 %426
%428 = OpCompositeExtract %float %413 2
%429 = OpCompositeExtract %float %421 2
%430 = OpFMul %float %428 %429
%431 = OpCompositeExtract %float %413 3
%432 = OpCompositeExtract %float %421 3
%433 = OpFMul %float %431 %432
%434 = OpCompositeInsert %v4float %424 %314 0
%435 = OpCompositeInsert %v4float %427 %434 1
%436 = OpCompositeInsert %v4float %430 %435 2
%437 = OpCompositeInsert %v4float %433 %436 3
%438 = OpAccessChain %_ptr_Function_v4float %395 %uint_1
%439 = OpLoad %v4float %438
%440 = OpCompositeExtract %float %411 1
%441 = OpCompositeExtract %float %411 1
%442 = OpCompositeExtract %float %411 1
%443 = OpCompositeExtract %float %411 1
%444 = OpCompositeInsert %v4float %440 %314 0
%445 = OpCompositeInsert %v4float %441 %444 1
%446 = OpCompositeInsert %v4float %442 %445 2
%447 = OpCompositeInsert %v4float %443 %446 3
%448 = OpCompositeExtract %float %439 0
%449 = OpCompositeExtract %float %447 0
%450 = OpFMul %float %448 %449
%451 = OpCompositeExtract %float %437 0
%452 = OpFAdd %float %450 %451
%453 = OpCompositeExtract %float %439 1
%454 = OpCompositeExtract %float %447 1
%455 = OpFMul %float %453 %454
%456 = OpCompositeExtract %float %437 1
%457 = OpFAdd %float %455 %456
%458 = OpCompositeExtract %float %439 2
%459 = OpCompositeExtract %float %447 2
%460 = OpFMul %float %458 %459
%461 = OpCompositeExtract %float %437 2
%462 = OpFAdd %float %460 %461
%463 = OpCompositeExtract %float %439 3
%464 = OpCompositeExtract %float %447 3
%465 = OpFMul %float %463 %464
%466 = OpCompositeExtract %float %437 3
%467 = OpFAdd %float %465 %466
%468 = OpCompositeInsert %v4float %452 %314 0
%469 = OpCompositeInsert %v4float %457 %468 1
%470 = OpCompositeInsert %v4float %462 %469 2
%471 = OpCompositeInsert %v4float %467 %470 3
%472 = OpAccessChain %_ptr_Function_v4float %395 %uint_2
%473 = OpLoad %v4float %472
%474 = OpCompositeExtract %float %411 2
%475 = OpCompositeExtract %float %411 2
%476 = OpCompositeExtract %float %411 2
%477 = OpCompositeExtract %float %411 2
%478 = OpCompositeInsert %v4float %474 %314 0
%479 = OpCompositeInsert %v4float %475 %478 1
%480 = OpCompositeInsert %v4float %476 %479 2
%481 = OpCompositeInsert %v4float %477 %480 3
%482 = OpCompositeExtract %float %473 0
%483 = OpCompositeExtract %float %481 0
%484 = OpFMul %float %482 %483
%485 = OpCompositeExtract %float %471 0
%486 = OpFAdd %float %484 %485
%487 = OpCompositeExtract %float %473 1
%488 = OpCompositeExtract %float %481 1
%489 = OpFMul %float %487 %488
%490 = OpCompositeExtract %float %471 1
%491 = OpFAdd %float %489 %490
%492 = OpCompositeExtract %float %473 2
%493 = OpCompositeExtract %float %481 2
%494 = OpFMul %float %492 %493
%495 = OpCompositeExtract %float %471 2
%496 = OpFAdd %float %494 %495
%497 = OpCompositeExtract %float %473 3
%498 = OpCompositeExtract %float %481 3
%499 = OpFMul %float %497 %498
%500 = OpCompositeExtract %float %471 3
%501 = OpFAdd %float %499 %500
%502 = OpCompositeInsert %v4float %486 %314 0
%503 = OpCompositeInsert %v4float %491 %502 1
%504 = OpCompositeInsert %v4float %496 %503 2
%505 = OpCompositeInsert %v4float %501 %504 3
%506 = OpAccessChain %_ptr_Function_v4float %395 %uint_3
%507 = OpLoad %v4float %506
%508 = OpCompositeExtract %float %411 3
%509 = OpCompositeExtract %float %411 3
%510 = OpCompositeExtract %float %411 3
%511 = OpCompositeExtract %float %411 3
%512 = OpCompositeInsert %v4float %508 %314 0
%513 = OpCompositeInsert %v4float %509 %512 1
%514 = OpCompositeInsert %v4float %510 %513 2
%515 = OpCompositeInsert %v4float %511 %514 3
%516 = OpCompositeExtract %float %507 0
%517 = OpCompositeExtract %float %515 0
%518 = OpFMul %float %516 %517
%519 = OpCompositeExtract %float %505 0
%520 = OpFAdd %float %518 %519
%521 = OpCompositeExtract %float %507 1
%522 = OpCompositeExtract %float %515 1
%523 = OpFMul %float %521 %522
%524 = OpCompositeExtract %float %505 1
%525 = OpFAdd %float %523 %524
%526 = OpCompositeExtract %float %507 2
%527 = OpCompositeExtract %float %515 2
%528 = OpFMul %float %526 %527
%529 = OpCompositeExtract %float %505 2
%530 = OpFAdd %float %528 %529
%531 = OpCompositeExtract %float %507 3
%532 = OpCompositeExtract %float %515 3
%533 = OpFMul %float %531 %532
%534 = OpCompositeExtract %float %505 3
%535 = OpFAdd %float %533 %534
%536 = OpCompositeInsert %v4float %520 %314 0
%537 = OpCompositeInsert %v4float %525 %536 1
%538 = OpCompositeInsert %v4float %530 %537 2
%539 = OpCompositeInsert %v4float %535 %538 3
OpBranch %401
%403 = OpLabel
%540 = OpAccessChain %_ptr_Function_macaw__Mat4 %394 %uint_1
OpCopyMemory %396 %540
%541 = OpCompositeExtract %float %397 0
%542 = OpCompositeExtract %float %397 1
%543 = OpCompositeExtract %float %397 2
%544 = OpCompositeInsert %v4float %541 %314 0
%545 = OpCompositeInsert %v4float %542 %544 1
%546 = OpCompositeInsert %v4float %543 %545 2
%547 = OpCompositeInsert %v4float %float_1 %546 3
%548 = OpAccessChain %_ptr_Function_v4float %396 %uint_0
%549 = OpLoad %v4float %548
%550 = OpCompositeExtract %float %547 0
%551 = OpCompositeExtract %float %547 0
%552 = OpCompositeExtract %float %547 0
%553 = OpCompositeExtract %float %547 0
%554 = OpCompositeInsert %v4float %550 %314 0
%555 = OpCompositeInsert %v4float %551 %554 1
%556 = OpCompositeInsert %v4float %552 %555 2
%557 = OpCompositeInsert %v4float %553 %556 3
%558 = OpCompositeExtract %float %549 0
%559 = OpCompositeExtract %float %557 0
%560 = OpFMul %float %558 %559
%561 = OpCompositeExtract %float %549 1
%562 = OpCompositeExtract %float %557 1
%563 = OpFMul %float %561 %562
%564 = OpCompositeExtract %float %549 2
%565 = OpCompositeExtract %float %557 2
%566 = OpFMul %float %564 %565
%567 = OpCompositeExtract %float %549 3
%568 = OpCompositeExtract %float %557 3
%569 = OpFMul %float %567 %568
%570 = OpCompositeInsert %v4float %560 %314 0
%571 = OpCompositeInsert %v4float %563 %570 1
%572 = OpCompositeInsert %v4float %566 %571 2
%573 = OpCompositeInsert %v4float %569 %572 3
%574 = OpAccessChain %_ptr_Function_v4float %396 %uint_1
%575 = OpLoad %v4float %574
%576 = OpCompositeExtract %float %547 1
%577 = OpCompositeExtract %float %547 1
%578 = OpCompositeExtract %float %547 1
%579 = OpCompositeExtract %float %547 1
%580 = OpCompositeInsert %v4float %576 %314 0
%581 = OpCompositeInsert %v4float %577 %580 1
%582 = OpCompositeInsert %v4float %578 %581 2
%583 = OpCompositeInsert %v4float %579 %582 3
%584 = OpCompositeExtract %float %575 0
%585 = OpCompositeExtract %float %583 0
%586 = OpFMul %float %584 %585
%587 = OpCompositeExtract %float %573 0
%588 = OpFAdd %float %586 %587
%589 = OpCompositeExtract %float %575 1
%590 = OpCompositeExtract %float %583 1
%591 = OpFMul %float %589 %590
%592 = OpCompositeExtract %float %573 1
%593 = OpFAdd %float %591 %592
%594 = OpCompositeExtract %float %575 2
%595 = OpCompositeExtract %float %583 2
%596 = OpFMul %float %594 %595
%597 = OpCompositeExtract %float %573 2
%598 = OpFAdd %float %596 %597
%599 = OpCompositeExtract %float %575 3
%600 = OpCompositeExtract %float %583 3
%601 = OpFMul %float %599 %600
%602 = OpCompositeExtract %float %573 3
%603 = OpFAdd %float %601 %602
%604 = OpCompositeInsert %v4float %588 %314 0
%605 = OpCompositeInsert %v4float %593 %604 1
%606 = OpCompositeInsert %v4float %598 %605 2
%607 = OpCompositeInsert %v4float %603 %606 3
%608 = OpAccessChain %_ptr_Function_v4float %396 %uint_2
%609 = OpLoad %v4float %608
%610 = OpCompositeExtract %float %547 2
%611 = OpCompositeExtract %float %547 2
%612 = OpCompositeExtract %float %547 2
%613 = OpCompositeExtract %float %547 2
%614 = OpCompositeInsert %v4float %610 %314 0
%615 = OpCompositeInsert %v4float %611 %614 1
%616 = OpCompositeInsert %v4float %612 %615 2
%617 = OpCompositeInsert %v4float %613 %616 3
%618 = OpCompositeExtract %float %609 0
%619 = OpCompositeExtract %float %617 0
%620 = OpFMul %float %618 %619
%621 = OpCompositeExtract %float %607 0
%622 = OpFAdd %float %620 %621
%623 = OpCompositeExtract %float %609 1
%624 = OpCompositeExtract %float %617 1
%625 = OpFMul %float %623 %624
%626 = OpCompositeExtract %float %607 1
%627 = OpFAdd %float %625 %626
%628 = OpCompositeExtract %float %609 2
%629 = OpCompositeExtract %float %617 2
%630 = OpFMul %float %628 %629
%631 = OpCompositeExtract %float %607 2
%632 = OpFAdd %float %630 %631
%633 = OpCompositeExtract %float %609 3
%634 = OpCompositeExtract %float %617 3
%635 = OpFMul %float %633 %634
%636 = OpCompositeExtract %float %607 3
%637 = OpFAdd %float %635 %636
%638 = OpCompositeInsert %v4float %622 %314 0
%639 = OpCompositeInsert %v4float %627 %638 1
%640 = OpCompositeInsert %v4float %632 %639 2
%641 = OpCompositeInsert %v4float %637 %640 3
%642 = OpAccessChain %_ptr_Function_v4float %396 %uint_3
%643 = OpLoad %v4float %642
%644 = OpCompositeExtract %float %547 3
%645 = OpCompositeExtract %float %547 3
%646 = OpCompositeExtract %float %547 3
%647 = OpCompositeExtract %float %547 3
%648 = OpCompositeInsert %v4float %644 %314 0
%649 = OpCompositeInsert %v4float %645 %648 1
%650 = OpCompositeInsert %v4float %646 %649 2
%651 = OpCompositeInsert %v4float %647 %650 3
%652 = OpCompositeExtract %float %643 0
%653 = OpCompositeExtract %float %651 0
%654 = OpFMul %float %652 %653
%655 = OpCompositeExtract %float %641 0
%656 = OpFAdd %float %654 %655
%657 = OpCompositeExtract %float %643 1
%658 = OpCompositeExtract %float %651 1
%659 = OpFMul %float %657 %658
%660 = OpCompositeExtract %float %641 1
%661 = OpFAdd %float %659 %660
%662 = OpCompositeExtract %float %643 2
%663 = OpCompositeExtract %float %651 2
%664 = OpFMul %float %662 %663
%665 = OpCompositeExtract %float %641 2
%666 = OpFAdd %float %664 %665
%667 = OpCompositeExtract %float %643 3
%668 = OpCompositeExtract %float %651 3
%669 = OpFMul %float %667 %668
%670 = OpCompositeExtract %float %641 3
%671 = OpFAdd %float %669 %670
%672 = OpCompositeInsert %v4float %656 %314 0
%673 = OpCompositeInsert %v4float %661 %672 1
%674 = OpCompositeInsert %v4float %666 %673 2
%675 = OpCompositeInsert %v4float %671 %674 3
OpBranch %401
%401 = OpLabel
%676 = OpPhi %v4float %314 %402 %641 %403
%677 = OpPhi %v4float %314 %402 %651 %403
%678 = OpPhi %v4float %314 %402 %643 %403
%679 = OpPhi %v4float %314 %402 %675 %403
%680 = OpPhi %v4float %314 %402 %547 %403
%681 = OpPhi %v4float %314 %402 %651 %403
%682 = OpPhi %v4float %314 %402 %607 %403
%683 = OpPhi %v4float %314 %402 %617 %403
%684 = OpPhi %v4float %314 %402 %609 %403
%685 = OpPhi %v4float %314 %402 %641 %403
%686 = OpPhi %v4float %314 %402 %547 %403
%687 = OpPhi %v4float %314 %402 %617 %403
%688 = OpPhi %v4float %314 %402 %573 %403
%689 = OpPhi %v4float %314 %402 %583 %403
%690 = OpPhi %v4float %314 %402 %575 %403
%691 = OpPhi %v4float %314 %402 %607 %403
%692 = OpPhi %v4float %314 %402 %547 %403
%693 = OpPhi %v4float %314 %402 %583 %403
%694 = OpPhi %v4float %314 %402 %557 %403
%695 = OpPhi %v4float %314 %402 %549 %403
%696 = OpPhi %v4float %314 %402 %547 %403
%697 = OpPhi %v4float %314 %402 %557 %403
%698 = OpPhi %v4float %314 %402 %547 %403
%699 = OpPhi %v4float %505 %402 %314 %403
%700 = OpPhi %v4float %515 %402 %314 %403
%701 = OpPhi %v4float %507 %402 %314 %403
%702 = OpPhi %v4float %539 %402 %314 %403
%703 = OpPhi %v4float %411 %402 %314 %403
%704 = OpPhi %v4float %515 %402 %314 %403
%705 = OpPhi %v4float %471 %402 %314 %403
%706 = OpPhi %v4float %481 %402 %314 %403
%707 = OpPhi %v4float %473 %402 %314 %403
%708 = OpPhi %v4float %505 %402 %314 %403
%709 = OpPhi %v4float %411 %402 %314 %403
%710 = OpPhi %v4float %481 %402 %314 %403
%711 = OpPhi %v4float %437 %402 %314 %403
%712 = OpPhi %v4float %447 %402 %314 %403
%713 = OpPhi %v4float %439 %402 %314 %403
%714 = OpPhi %v4float %471 %402 %314 %403
%715 = OpPhi %v4float %411 %402 %314 %403
%716 = OpPhi %v4float %447 %402 %314 %403
%717 = OpPhi %v4float %421 %402 %314 %403
%718 = OpPhi %v4float %413 %402 %314 %403
%719 = OpPhi %v4float %411 %402 %314 %403
%720 = OpPhi %v4float %421 %402 %314 %403
%721 = OpPhi %v4float %411 %402 %314 %403
%722 = OpPhi %v4float %411 %402 %314 %403
%723 = OpPhi %v3float %397 %402 %315 %403
%724 = OpPhi %v4float %411 %402 %314 %403
%725 = OpPhi %v4float %314 %402 %547 %403
%726 = OpPhi %v3float %315 %402 %397 %403
%727 = OpPhi %v4float %314 %402 %547 %403
%728 = OpPhi %v4float %539 %402 %675 %403
%729 = OpCompositeExtract %float %728 1
%730 = OpFNegate %float %729
%731 = OpCompositeInsert %v4float %730 %728 1
OpStore %builtin_pos %731
OpReturn
OpFunctionEnd
%9 = OpFunction %void None %145
%732 = OpLabel
%733 = OpLoad %v4float %diffuse_color_0
OpStore %out_color %733
OpReturn
OpFunctionEnd
%12 = OpFunction %void None %145
%734 = OpLabel
%735 = OpVariable %_ptr_Function_macaw__Mat4 Function
%736 = OpVariable %_ptr_Function_v4float Function
%737 = OpVariable %_ptr_Function_v4float Function
%738 = OpLoad %v2float %in_pos_0
OpCopyMemory %735 %proj_matrix
%739 = OpCompositeExtract %float %738 0
%740 = OpCompositeExtract %float %738 1
%741 = OpCompositeInsert %v4float %739 %314 0
%742 = OpCompositeInsert %v4float %740 %741 1
%743 = OpCompositeInsert %v4float %float_0 %742 2
%744 = OpCompositeInsert %v4float %float_1 %743 3
%745 = OpAccessChain %_ptr_Function_v4float %735 %uint_0
%746 = OpLoad %v4float %745
%747 = OpCompositeExtract %float %744 0
%748 = OpCompositeExtract %float %744 0
%749 = OpCompositeExtract %float %744 0
%750 = OpCompositeExtract %float %744 0
%751 = OpCompositeInsert %v4float %747 %314 0
%752 = OpCompositeInsert %v4float %748 %751 1
%753 = OpCompositeInsert %v4float %749 %752 2
%754 = OpCompositeInsert %v4float %750 %753 3
%755 = OpCompositeExtract %float %746 0
%756 = OpCompositeExtract %float %754 0
%757 = OpFMul %float %755 %756
%758 = OpCompositeExtract %float %746 1
%759 = OpCompositeExtract %float %754 1
%760 = OpFMul %float %758 %759
%761 = OpCompositeExtract %float %746 2
%762 = OpCompositeExtract %float %754 2
%763 = OpFMul %float %761 %762
%764 = OpCompositeExtract %float %746 3
%765 = OpCompositeExtract %float %754 3
%766 = OpFMul %float %764 %765
%767 = OpCompositeInsert %v4float %757 %314 0
%768 = OpCompositeInsert %v4float %760 %767 1
%769 = OpCompositeInsert %v4float %763 %768 2
%770 = OpCompositeInsert %v4float %766 %769 3
%771 = OpAccessChain %_ptr_Function_v4float %735 %uint_1
%772 = OpLoad %v4float %771
%773 = OpCompositeExtract %float %744 1
%774 = OpCompositeExtract %float %744 1
%775 = OpCompositeExtract %float %744 1
%776 = OpCompositeExtract %float %744 1
%777 = OpCompositeInsert %v4float %773 %314 0
%778 = OpCompositeInsert %v4float %774 %777 1
%779 = OpCompositeInsert %v4float %775 %778 2
%780 = OpCompositeInsert %v4float %776 %779 3
%781 = OpCompositeExtract %float %772 0
%782 = OpCompositeExtract %float %780 0
%783 = OpFMul %float %781 %782
%784 = OpCompositeExtract %float %770 0
%785 = OpFAdd %float %783 %784
%786 = OpCompositeExtract %float %772 1
%787 = OpCompositeExtract %float %780 1
%788 = OpFMul %float %786 %787
%789 = OpCompositeExtract %float %770 1
%790 = OpFAdd %float %788 %789
%791 = OpCompositeExtract %float %772 2
%792 = OpCompositeExtract %float %780 2
%793 = OpFMul %float %791 %792
%794 = OpCompositeExtract %float %770 2
%795 = OpFAdd %float %793 %794
%796 = OpCompositeExtract %float %772 3
%797 = OpCompositeExtract %float %780 3
%798 = OpFMul %float %796 %797
%799 = OpCompositeExtract %float %770 3
%800 = OpFAdd %float %798 %799
%801 = OpCompositeInsert %v4float %785 %314 0
%802 = OpCompositeInsert %v4float %790 %801 1
%803 = OpCompositeInsert %v4float %795 %802 2
%804 = OpCompositeInsert %v4float %800 %803 3
%805 = OpAccessChain %_ptr_Function_v4float %735 %uint_2
%806 = OpLoad %v4float %805
%807 = OpCompositeExtract %float %744 2
%808 = OpCompositeExtract %float %744 2
%809 = OpCompositeExtract %float %744 2
%810 = OpCompositeExtract %float %744 2
%811 = OpCompositeInsert %v4float %807 %314 0
%812 = OpCompositeInsert %v4float %808 %811 1
%813 = OpCompositeInsert %v4float %809 %812 2
%814 = OpCompositeInsert %v4float %810 %813 3
%815 = OpCompositeExtract %float %806 0
%816 = OpCompositeExtract %float %814 0
%817 = OpFMul %float %815 %816
%818 = OpCompositeExtract %float %804 0
%819 = OpFAdd %float %817 %818
%820 = OpCompositeExtract %float %806 1
%821 = OpCompositeExtract %float %814 1
%822 = OpFMul %float %820 %821
%823 = OpCompositeExtract %float %804 1
%824 = OpFAdd %float %822 %823
%825 = OpCompositeExtract %float %806 2
%826 = OpCompositeExtract %float %814 2
%827 = OpFMul %float %825 %826
%828 = OpCompositeExtract %float %804 2
%829 = OpFAdd %float %827 %828
%830 = OpCompositeExtract %float %806 3
%831 = OpCompositeExtract %float %814 3
%832 = OpFMul %float %830 %831
%833 = OpCompositeExtract %float %804 3
%834 = OpFAdd %float %832 %833
%835 = OpCompositeInsert %v4float %819 %314 0
%836 = OpCompositeInsert %v4float %824 %835 1
%837 = OpCompositeInsert %v4float %829 %836 2
%838 = OpCompositeInsert %v4float %834 %837 3
%839 = OpAccessChain %_ptr_Function_v4float %735 %uint_3
%840 = OpLoad %v4float %839
%841 = OpCompositeExtract %float %744 3
%842 = OpCompositeExtract %float %744 3
%843 = OpCompositeExtract %float %744 3
%844 = OpCompositeExtract %float %744 3
%845 = OpCompositeInsert %v4float %841 %314 0
%846 = OpCompositeInsert %v4float %842 %845 1
%847 = OpCompositeInsert %v4float %843 %846 2
%848 = OpCompositeInsert %v4float %844 %847 3
%849 = OpCompositeExtract %float %840 0
%850 = OpCompositeExtract %float %848 0
%851 = OpFMul %float %849 %850
%852 = OpCompositeExtract %float %838 0
%853 = OpFAdd %float %851 %852
%854 = OpCompositeExtract %float %840 1
%855 = OpCompositeExtract %float %848 1
%856 = OpFMul %float %854 %855
%857 = OpCompositeExtract %float %838 1
%858 = OpFAdd %float %856 %857
%859 = OpCompositeExtract %float %840 2
%860 = OpCompositeExtract %float %848 2
%861 = OpFMul %float %859 %860
%862 = OpCompositeExtract %float %838 2
%863 = OpFAdd %float %861 %862
%864 = OpCompositeExtract %float %840 3
%865 = OpCompositeExtract %float %848 3
%866 = OpFMul %float %864 %865
%867 = OpCompositeExtract %float %838 3
%868 = OpFAdd %float %866 %867
%869 = OpCompositeInsert %v4float %853 %314 0
%870 = OpCompositeInsert %v4float %858 %869 1
%871 = OpCompositeInsert %v4float %863 %870 2
%872 = OpCompositeInsert %v4float %868 %871 3
%873 = OpCompositeExtract %float %872 1
%874 = OpFNegate %float %873
%875 = OpCompositeInsert %v4float %874 %872 1
%876 = OpLoad %v2float %in_uv
OpStore %out_uv %876
%877 = OpLoad %v4float %in_color_0
OpStore %737 %877
%878 = OpFunctionCall %void %ark_shaders__color__decode_srgba %736 %737
%879 = OpLoad %v4float %736
OpStore %out_color_0 %879
OpStore %builtin_pos_0 %875
OpReturn
OpFunctionEnd
%20 = OpFunction %void None %145
%880 = OpLabel
%881 = OpVariable %_ptr_Function_149 Function
%882 = OpVariable %_ptr_Function_v4float Function
%883 = OpVariable %_ptr_Function_v2float Function
%884 = OpLoad %149 %in_texture
OpStore %881 %884
%885 = OpLoad %152 %sampler
%886 = OpLoad %v2float %in_uv_0
OpStore %883 %886
%887 = OpFunctionCall %void %_spirv_std__textures__Image2d___sample %882 %881 %885 %883
%888 = OpLoad %v4float %882
%889 = OpLoad %v4float %in_color_1
%890 = OpCompositeExtract %float %889 0
%891 = OpCompositeExtract %float %888 0
%892 = OpFMul %float %890 %891
%893 = OpCompositeExtract %float %889 1
%894 = OpCompositeExtract %float %888 1
%895 = OpFMul %float %893 %894
%896 = OpCompositeExtract %float %889 2
%897 = OpCompositeExtract %float %888 2
%898 = OpFMul %float %896 %897
%899 = OpCompositeExtract %float %889 3
%900 = OpCompositeExtract %float %888 3
%901 = OpFMul %float %899 %900
%902 = OpCompositeInsert %v4float %892 %314 0
%903 = OpCompositeInsert %v4float %895 %902 1
%904 = OpCompositeInsert %v4float %898 %903 2
%905 = OpCompositeInsert %v4float %901 %904 3
OpStore %output %905
OpReturn
OpFunctionEnd
%26 = OpFunction %void None %145
%906 = OpLabel
%907 = OpVariable %_ptr_Function_sky__SkyUniforms Function
%908 = OpVariable %_ptr_Function_macaw__Mat4 Function
%909 = OpVariable %_ptr_Function_macaw__Mat4 Function
%910 = OpLoad %uint %view_idx_0
%911 = OpLoad %int %vertex_idx
OpCopyMemory %907 %sky_uniforms
%912 = OpBitwiseAnd %int %911 %int_1
%913 = OpBitwiseAnd %int %int_2 %int_31
%914 = OpShiftLeftLogical %int %912 %913
%915 = OpConvertSToF %float %914
%916 = OpFAdd %float %float_n1 %915
%917 = OpBitwiseAnd %int %911 %int_2
%918 = OpBitwiseAnd %int %int_1 %int_31
%919 = OpShiftLeftLogical %int %917 %918
%920 = OpConvertSToF %float %919
%921 = OpFAdd %float %float_n1 %920
%922 = OpCompositeInsert %v4float %916 %314 0
%923 = OpCompositeInsert %v4float %921 %922 1
%924 = OpCompositeInsert %v4float %float_0 %923 2
%925 = OpCompositeInsert %v4float %float_1 %924 3
%926 = OpIEqual %bool %910 %uint_0
OpSelectionMerge %927 None
OpBranchConditional %926 %928 %929
%928 = OpLabel
%930 = OpAccessChain %_ptr_Function_macaw__Mat4 %907 %uint_0
OpCopyMemory %908 %930
%931 = OpAccessChain %_ptr_Function_v4float %908 %uint_0
%932 = OpLoad %v4float %931
%933 = OpCompositeExtract %float %925 0
%934 = OpCompositeExtract %float %925 0
%935 = OpCompositeExtract %float %925 0
%936 = OpCompositeExtract %float %925 0
%937 = OpCompositeInsert %v4float %933 %314 0
%938 = OpCompositeInsert %v4float %934 %937 1
%939 = OpCompositeInsert %v4float %935 %938 2
%940 = OpCompositeInsert %v4float %936 %939 3
%941 = OpCompositeExtract %float %932 0
%942 = OpCompositeExtract %float %940 0
%943 = OpFMul %float %941 %942
%944 = OpCompositeExtract %float %932 1
%945 = OpCompositeExtract %float %940 1
%946 = OpFMul %float %944 %945
%947 = OpCompositeExtract %float %932 2
%948 = OpCompositeExtract %float %940 2
%949 = OpFMul %float %947 %948
%950 = OpCompositeExtract %float %932 3
%951 = OpCompositeExtract %float %940 3
%952 = OpFMul %float %950 %951
%953 = OpCompositeInsert %v4float %943 %314 0
%954 = OpCompositeInsert %v4float %946 %953 1
%955 = OpCompositeInsert %v4float %949 %954 2
%956 = OpCompositeInsert %v4float %952 %955 3
%957 = OpAccessChain %_ptr_Function_v4float %908 %uint_1
%958 = OpLoad %v4float %957
%959 = OpCompositeExtract %float %925 1
%960 = OpCompositeExtract %float %925 1
%961 = OpCompositeExtract %float %925 1
%962 = OpCompositeExtract %float %925 1
%963 = OpCompositeInsert %v4float %959 %314 0
%964 = OpCompositeInsert %v4float %960 %963 1
%965 = OpCompositeInsert %v4float %961 %964 2
%966 = OpCompositeInsert %v4float %962 %965 3
%967 = OpCompositeExtract %float %958 0
%968 = OpCompositeExtract %float %966 0
%969 = OpFMul %float %967 %968
%970 = OpCompositeExtract %float %956 0
%971 = OpFAdd %float %969 %970
%972 = OpCompositeExtract %float %958 1
%973 = OpCompositeExtract %float %966 1
%974 = OpFMul %float %972 %973
%975 = OpCompositeExtract %float %956 1
%976 = OpFAdd %float %974 %975
%977 = OpCompositeExtract %float %958 2
%978 = OpCompositeExtract %float %966 2
%979 = OpFMul %float %977 %978
%980 = OpCompositeExtract %float %956 2
%981 = OpFAdd %float %979 %980
%982 = OpCompositeExtract %float %958 3
%983 = OpCompositeExtract %float %966 3
%984 = OpFMul %float %982 %983
%985 = OpCompositeExtract %float %956 3
%986 = OpFAdd %float %984 %985
%987 = OpCompositeInsert %v4float %971 %314 0
%988 = OpCompositeInsert %v4float %976 %987 1
%989 = OpCompositeInsert %v4float %981 %988 2
%990 = OpCompositeInsert %v4float %986 %989 3
%991 = OpAccessChain %_ptr_Function_v4float %908 %uint_2
%992 = OpLoad %v4float %991
%993 = OpCompositeExtract %float %925 2
%994 = OpCompositeExtract %float %925 2
%995 = OpCompositeExtract %float %925 2
%996 = OpCompositeExtract %float %925 2
%997 = OpCompositeInsert %v4float %993 %314 0
%998 = OpCompositeInsert %v4float %994 %997 1
%999 = OpCompositeInsert %v4float %995 %998 2
%1000 = OpCompositeInsert %v4float %996 %999 3
%1001 = OpCompositeExtract %float %992 0
%1002 = OpCompositeExtract %float %1000 0
%1003 = OpFMul %float %1001 %1002
%1004 = OpCompositeExtract %float %990 0
%1005 = OpFAdd %float %1003 %1004
%1006 = OpCompositeExtract %float %992 1
%1007 = OpCompositeExtract %float %1000 1
%1008 = OpFMul %float %1006 %1007
%1009 = OpCompositeExtract %float %990 1
%1010 = OpFAdd %float %1008 %1009
%1011 = OpCompositeExtract %float %992 2
%1012 = OpCompositeExtract %float %1000 2
%1013 = OpFMul %float %1011 %1012
%1014 = OpCompositeExtract %float %990 2
%1015 = OpFAdd %float %1013 %1014
%1016 = OpCompositeExtract %float %992 3
%1017 = OpCompositeExtract %float %1000 3
%1018 = OpFMul %float %1016 %1017
%1019 = OpCompositeExtract %float %990 3
%1020 = OpFAdd %float %1018 %1019
%1021 = OpCompositeInsert %v4float %1005 %314 0
%1022 = OpCompositeInsert %v4float %1010 %1021 1
%1023 = OpCompositeInsert %v4float %1015 %1022 2
%1024 = OpCompositeInsert %v4float %1020 %1023 3
%1025 = OpAccessChain %_ptr_Function_v4float %908 %uint_3
%1026 = OpLoad %v4float %1025
%1027 = OpCompositeExtract %float %925 3
%1028 = OpCompositeExtract %float %925 3
%1029 = OpCompositeExtract %float %925 3
%1030 = OpCompositeExtract %float %925 3
%1031 = OpCompositeInsert %v4float %1027 %314 0
%1032 = OpCompositeInsert %v4float %1028 %1031 1
%1033 = OpCompositeInsert %v4float %1029 %1032 2
%1034 = OpCompositeInsert %v4float %1030 %1033 3
%1035 = OpCompositeExtract %float %1026 0
%1036 = OpCompositeExtract %float %1034 0
%1037 = OpFMul %float %1035 %1036
%1038 = OpCompositeExtract %float %1024 0
%1039 = OpFAdd %float %1037 %1038
%1040 = OpCompositeExtract %float %1026 1
%1041 = OpCompositeExtract %float %1034 1
%1042 = OpFMul %float %1040 %1041
%1043 = OpCompositeExtract %float %1024 1
%1044 = OpFAdd %float %1042 %1043
%1045 = OpCompositeExtract %float %1026 2
%1046 = OpCompositeExtract %float %1034 2
%1047 = OpFMul %float %1045 %1046
%1048 = OpCompositeExtract %float %1024 2
%1049 = OpFAdd %float %1047 %1048
%1050 = OpCompositeExtract %float %1026 3
%1051 = OpCompositeExtract %float %1034 3
%1052 = OpFMul %float %1050 %1051
%1053 = OpCompositeExtract %float %1024 3
%1054 = OpFAdd %float %1052 %1053
%1055 = OpCompositeInsert %v4float %1039 %314 0
%1056 = OpCompositeInsert %v4float %1044 %1055 1
%1057 = OpCompositeInsert %v4float %1049 %1056 2
%1058 = OpCompositeInsert %v4float %1054 %1057 3
OpBranch %927
%929 = OpLabel
%1059 = OpAccessChain %_ptr_Function_macaw__Mat4 %907 %uint_1
OpCopyMemory %909 %1059
%1060 = OpAccessChain %_ptr_Function_v4float %909 %uint_0
%1061 = OpLoad %v4float %1060
%1062 = OpCompositeExtract %float %925 0
%1063 = OpCompositeExtract %float %925 0
%1064 = OpCompositeExtract %float %925 0
%1065 = OpCompositeExtract %float %925 0
%1066 = OpCompositeInsert %v4float %1062 %314 0
%1067 = OpCompositeInsert %v4float %1063 %1066 1
%1068 = OpCompositeInsert %v4float %1064 %1067 2
%1069 = OpCompositeInsert %v4float %1065 %1068 3
%1070 = OpCompositeExtract %float %1061 0
%1071 = OpCompositeExtract %float %1069 0
%1072 = OpFMul %float %1070 %1071
%1073 = OpCompositeExtract %float %1061 1
%1074 = OpCompositeExtract %float %1069 1
%1075 = OpFMul %float %1073 %1074
%1076 = OpCompositeExtract %float %1061 2
%1077 = OpCompositeExtract %float %1069 2
%1078 = OpFMul %float %1076 %1077
%1079 = OpCompositeExtract %float %1061 3
%1080 = OpCompositeExtract %float %1069 3
%1081 = OpFMul %float %1079 %1080
%1082 = OpCompositeInsert %v4float %1072 %314 0
%1083 = OpCompositeInsert %v4float %1075 %1082 1
%1084 = OpCompositeInsert %v4float %1078 %1083 2
%1085 = OpCompositeInsert %v4float %1081 %1084 3
%1086 = OpAccessChain %_ptr_Function_v4float %909 %uint_1
%1087 = OpLoad %v4float %1086
%1088 = OpCompositeExtract %float %925 1
%1089 = OpCompositeExtract %float %925 1
%1090 = OpCompositeExtract %float %925 1
%1091 = OpCompositeExtract %float %925 1
%1092 = OpCompositeInsert %v4float %1088 %314 0
%1093 = OpCompositeInsert %v4float %1089 %1092 1
%1094 = OpCompositeInsert %v4float %1090 %1093 2
%1095 = OpCompositeInsert %v4float %1091 %1094 3
%1096 = OpCompositeExtract %float %1087 0
%1097 = OpCompositeExtract %float %1095 0
%1098 = OpFMul %float %1096 %1097
%1099 = OpCompositeExtract %float %1085 0
%1100 = OpFAdd %float %1098 %1099
%1101 = OpCompositeExtract %float %1087 1
%1102 = OpCompositeExtract %float %1095 1
%1103 = OpFMul %float %1101 %1102
%1104 = OpCompositeExtract %float %1085 1
%1105 = OpFAdd %float %1103 %1104
%1106 = OpCompositeExtract %float %1087 2
%1107 = OpCompositeExtract %float %1095 2
%1108 = OpFMul %float %1106 %1107
%1109 = OpCompositeExtract %float %1085 2
%1110 = OpFAdd %float %1108 %1109
%1111 = OpCompositeExtract %float %1087 3
%1112 = OpCompositeExtract %float %1095 3
%1113 = OpFMul %float %1111 %1112
%1114 = OpCompositeExtract %float %1085 3
%1115 = OpFAdd %float %1113 %1114
%1116 = OpCompositeInsert %v4float %1100 %314 0
%1117 = OpCompositeInsert %v4float %1105 %1116 1
%1118 = OpCompositeInsert %v4float %1110 %1117 2
%1119 = OpCompositeInsert %v4float %1115 %1118 3
%1120 = OpAccessChain %_ptr_Function_v4float %909 %uint_2
%1121 = OpLoad %v4float %1120
%1122 = OpCompositeExtract %float %925 2
%1123 = OpCompositeExtract %float %925 2
%1124 = OpCompositeExtract %float %925 2
%1125 = OpCompositeExtract %float %925 2
%1126 = OpCompositeInsert %v4float %1122 %314 0
%1127 = OpCompositeInsert %v4float %1123 %1126 1
%1128 = OpCompositeInsert %v4float %1124 %1127 2
%1129 = OpCompositeInsert %v4float %1125 %1128 3
%1130 = OpCompositeExtract %float %1121 0
%1131 = OpCompositeExtract %float %1129 0
%1132 = OpFMul %float %1130 %1131
%1133 = OpCompositeExtract %float %1119 0
%1134 = OpFAdd %float %1132 %1133
%1135 = OpCompositeExtract %float %1121 1
%1136 = OpCompositeExtract %float %1129 1
%1137 = OpFMul %float %1135 %1136
%1138 = OpCompositeExtract %float %1119 1
%1139 = OpFAdd %float %1137 %1138
%1140 = OpCompositeExtract %float %1121 2
%1141 = OpCompositeExtract %float %1129 2
%1142 = OpFMul %float %1140 %1141
%1143 = OpCompositeExtract %float %1119 2
%1144 = OpFAdd %float %1142 %1143
%1145 = OpCompositeExtract %float %1121 3
%1146 = OpCompositeExtract %float %1129 3
%1147 = OpFMul %float %1145 %1146
%1148 = OpCompositeExtract %float %1119 3
%1149 = OpFAdd %float %1147 %1148
%1150 = OpCompositeInsert %v4float %1134 %314 0
%1151 = OpCompositeInsert %v4float %1139 %1150 1
%1152 = OpCompositeInsert %v4float %1144 %1151 2
%1153 = OpCompositeInsert %v4float %1149 %1152 3
%1154 = OpAccessChain %_ptr_Function_v4float %909 %uint_3
%1155 = OpLoad %v4float %1154
%1156 = OpCompositeExtract %float %925 3
%1157 = OpCompositeExtract %float %925 3
%1158 = OpCompositeExtract %float %925 3
%1159 = OpCompositeExtract %float %925 3
%1160 = OpCompositeInsert %v4float %1156 %314 0
%1161 = OpCompositeInsert %v4float %1157 %1160 1
%1162 = OpCompositeInsert %v4float %1158 %1161 2
%1163 = OpCompositeInsert %v4float %1159 %1162 3
%1164 = OpCompositeExtract %float %1155 0
%1165 = OpCompositeExtract %float %1163 0
%1166 = OpFMul %float %1164 %1165
%1167 = OpCompositeExtract %float %1153 0
%1168 = OpFAdd %float %1166 %1167
%1169 = OpCompositeExtract %float %1155 1
%1170 = OpCompositeExtract %float %1163 1
%1171 = OpFMul %float %1169 %1170
%1172 = OpCompositeExtract %float %1153 1
%1173 = OpFAdd %float %1171 %1172
%1174 = OpCompositeExtract %float %1155 2
%1175 = OpCompositeExtract %float %1163 2
%1176 = OpFMul %float %1174 %1175
%1177 = OpCompositeExtract %float %1153 2
%1178 = OpFAdd %float %1176 %1177
%1179 = OpCompositeExtract %float %1155 3
%1180 = OpCompositeExtract %float %1163 3
%1181 = OpFMul %float %1179 %1180
%1182 = OpCompositeExtract %float %1153 3
%1183 = OpFAdd %float %1181 %1182
%1184 = OpCompositeInsert %v4float %1168 %314 0
%1185 = OpCompositeInsert %v4float %1173 %1184 1
%1186 = OpCompositeInsert %v4float %1178 %1185 2
%1187 = OpCompositeInsert %v4float %1183 %1186 3
OpBranch %927
%927 = OpLabel
%1188 = OpPhi %v4float %1024 %928 %314 %929
%1189 = OpPhi %v4float %1034 %928 %314 %929
%1190 = OpPhi %v4float %1026 %928 %314 %929
%1191 = OpPhi %v4float %1058 %928 %314 %929
%1192 = OpPhi %v4float %925 %928 %314 %929
%1193 = OpPhi %v4float %1034 %928 %314 %929
%1194 = OpPhi %v4float %990 %928 %314 %929
%1195 = OpPhi %v4float %1000 %928 %314 %929
%1196 = OpPhi %v4float %992 %928 %314 %929
%1197 = OpPhi %v4float %1024 %928 %314 %929
%1198 = OpPhi %v4float %925 %928 %314 %929
%1199 = OpPhi %v4float %1000 %928 %314 %929
%1200 = OpPhi %v4float %956 %928 %314 %929
%1201 = OpPhi %v4float %966 %928 %314 %929
%1202 = OpPhi %v4float %958 %928 %314 %929
%1203 = OpPhi %v4float %990 %928 %314 %929
%1204 = OpPhi %v4float %925 %928 %314 %929
%1205 = OpPhi %v4float %966 %928 %314 %929
%1206 = OpPhi %v4float %940 %928 %314 %929
%1207 = OpPhi %v4float %932 %928 %314 %929
%1208 = OpPhi %v4float %925 %928 %314 %929
%1209 = OpPhi %v4float %940 %928 %314 %929
%1210 = OpPhi %v4float %925 %928 %314 %929
%1211 = OpPhi %v4float %314 %928 %1153 %929
%1212 = OpPhi %v4float %314 %928 %1163 %929
%1213 = OpPhi %v4float %314 %928 %1155 %929
%1214 = OpPhi %v4float %314 %928 %1187 %929
%1215 = OpPhi %v4float %314 %928 %925 %929
%1216 = OpPhi %v4float %314 %928 %1163 %929
%1217 = OpPhi %v4float %314 %928 %1119 %929
%1218 = OpPhi %v4float %314 %928 %1129 %929
%1219 = OpPhi %v4float %314 %928 %1121 %929
%1220 = OpPhi %v4float %314 %928 %1153 %929
%1221 = OpPhi %v4float %314 %928 %925 %929
%1222 = OpPhi %v4float %314 %928 %1129 %929
%1223 = OpPhi %v4float %314 %928 %1085 %929
%1224 = OpPhi %v4float %314 %928 %1095 %929
%1225 = OpPhi %v4float %314 %928 %1087 %929
%1226 = OpPhi %v4float %314 %928 %1119 %929
%1227 = OpPhi %v4float %314 %928 %925 %929
%1228 = OpPhi %v4float %314 %928 %1095 %929
%1229 = OpPhi %v4float %314 %928 %1069 %929
%1230 = OpPhi %v4float %314 %928 %1061 %929
%1231 = OpPhi %v4float %314 %928 %925 %929
%1232 = OpPhi %v4float %314 %928 %1069 %929
%1233 = OpPhi %v4float %314 %928 %925 %929
%1234 = OpPhi %v4float %925 %928 %314 %929
%1235 = OpPhi %v4float %314 %928 %925 %929
%1236 = OpPhi %v4float %1058 %928 %1187 %929
OpStore %out_world_pos %1236
%1237 = OpCompositeExtract %float %925 1
%1238 = OpFNegate %float %1237
%1239 = OpCompositeInsert %v4float %1238 %925 1
OpStore %builtin_pos_1 %1239
OpReturn
OpFunctionEnd
%32 = OpFunction %void None %145
%1240 = OpLabel
%1241 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1242 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1243 = OpVariable %_ptr_Function_sky__SkyUniforms Function
%1244 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1245 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1246 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1247 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1248 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1249 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1250 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1251 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1252 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1253 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1254 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1255 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1256 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1257 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1258 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1259 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1260 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1261 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1262 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1263 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1264 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1265 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1266 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1267 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1268 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1269 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1270 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1271 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1272 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1273 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1274 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1275 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1276 = OpVariable %_ptr_Function_macaw__Vec3 Function
%1277 = OpLoad %v4float %in_world_pos
%1278 = OpCompositeExtract %float %1277 0
%1279 = OpCompositeExtract %float %1277 1
%1280 = OpCompositeExtract %float %1277 2
%1281 = OpAccessChain %_ptr_Function_float %1242 %uint_0
OpStore %1281 %1278
%1282 = OpAccessChain %_ptr_Function_float %1242 %uint_1
OpStore %1282 %1279
%1283 = OpAccessChain %_ptr_Function_float %1242 %uint_2
OpStore %1283 %1280
OpCopyMemory %1261 %1242
OpCopyMemory %1262 %1242
OpCopyMemory %1263 %1262
OpCopyMemory %1264 %1263
OpCopyMemory %1265 %1263
%1284 = OpAccessChain %_ptr_Function_float %1264 %uint_0
%1285 = OpLoad %float %1284
%1286 = OpAccessChain %_ptr_Function_float %1265 %uint_0
%1287 = OpLoad %float %1286
%1288 = OpFMul %float %1285 %1287
%1289 = OpAccessChain %_ptr_Function_float %1264 %uint_1
%1290 = OpLoad %float %1289
%1291 = OpAccessChain %_ptr_Function_float %1265 %uint_1
%1292 = OpLoad %float %1291
%1293 = OpFMul %float %1290 %1292
%1294 = OpFAdd %float %1288 %1293
%1295 = OpAccessChain %_ptr_Function_float %1264 %uint_2
%1296 = OpLoad %float %1295
%1297 = OpAccessChain %_ptr_Function_float %1265 %uint_2
%1298 = OpLoad %float %1297
%1299 = OpFMul %float %1296 %1298
%1300 = OpFAdd %float %1294 %1299
%1301 = OpExtInst %float %1 Sqrt %1300
%1302 = OpFDiv %float %float_1 %1301
%1303 = OpAccessChain %_ptr_Function_float %1261 %uint_0
%1304 = OpLoad %float %1303
%1305 = OpFMul %float %1304 %1302
%1306 = OpAccessChain %_ptr_Function_float %1261 %uint_1
%1307 = OpLoad %float %1306
%1308 = OpFMul %float %1307 %1302
%1309 = OpAccessChain %_ptr_Function_float %1261 %uint_2
%1310 = OpLoad %float %1309
%1311 = OpFMul %float %1310 %1302
%1312 = OpAccessChain %_ptr_Function_float %1241 %uint_0
OpStore %1312 %1305
%1313 = OpAccessChain %_ptr_Function_float %1241 %uint_1
OpStore %1313 %1308
%1314 = OpAccessChain %_ptr_Function_float %1241 %uint_2
OpStore %1314 %1311
OpCopyMemory %1243 %sky_uniforms_0
%1315 = OpAccessChain %_ptr_Function_v4float %1243 %uint_6
%1316 = OpLoad %v4float %1315
%1317 = OpCompositeExtract %float %1316 0
%1318 = OpCompositeExtract %float %1316 1
%1319 = OpCompositeExtract %float %1316 2
%1320 = OpAccessChain %_ptr_Function_float %1244 %uint_0
OpStore %1320 %1317
%1321 = OpAccessChain %_ptr_Function_float %1244 %uint_1
OpStore %1321 %1318
%1322 = OpAccessChain %_ptr_Function_float %1244 %uint_2
OpStore %1322 %1319
%1323 = OpAccessChain %_ptr_Function_v4float %1243 %uint_5
%1324 = OpLoad %v4float %1323
%1325 = OpCompositeExtract %float %1324 0
%1326 = OpCompositeExtract %float %1324 1
%1327 = OpCompositeExtract %float %1324 2
%1328 = OpAccessChain %_ptr_Function_float %1245 %uint_0
OpStore %1328 %1325
%1329 = OpAccessChain %_ptr_Function_float %1245 %uint_1
OpStore %1329 %1326
%1330 = OpAccessChain %_ptr_Function_float %1245 %uint_2
OpStore %1330 %1327
%1331 = OpAccessChain %_ptr_Function_v4float %1243 %uint_4
%1332 = OpLoad %v4float %1331
%1333 = OpCompositeExtract %float %1332 0
%1334 = OpCompositeExtract %float %1332 1
%1335 = OpCompositeExtract %float %1332 2
%1336 = OpAccessChain %_ptr_Function_float %1246 %uint_0
OpStore %1336 %1333
%1337 = OpAccessChain %_ptr_Function_float %1246 %uint_1
OpStore %1337 %1334
%1338 = OpAccessChain %_ptr_Function_float %1246 %uint_2
OpStore %1338 %1335
%1339 = OpAccessChain %_ptr_Function_float %1241 %uint_1
%1340 = OpLoad %float %1339
%1341 = OpFOrdGreaterThan %bool %1340 %float_0
OpSelectionMerge %1342 None
OpBranchConditional %1341 %1343 %1344
%1343 = OpLabel
%1345 = OpAccessChain %_ptr_Function_v4float %1243 %uint_2
%1346 = OpLoad %v4float %1345
%1347 = OpCompositeExtract %float %1346 0
%1348 = OpCompositeExtract %float %1346 1
%1349 = OpCompositeExtract %float %1346 2
%1350 = OpAccessChain %_ptr_Function_float %1249 %uint_0
OpStore %1350 %1347
%1351 = OpAccessChain %_ptr_Function_float %1249 %uint_1
OpStore %1351 %1348
%1352 = OpAccessChain %_ptr_Function_float %1249 %uint_2
OpStore %1352 %1349
OpCopyMemory %1269 %1249
OpCopyMemory %1270 %1249
OpCopyMemory %1271 %1270
OpCopyMemory %1272 %1271
OpCopyMemory %1273 %1271
%1353 = OpAccessChain %_ptr_Function_float %1272 %uint_0
%1354 = OpLoad %float %1353
%1355 = OpAccessChain %_ptr_Function_float %1273 %uint_0
%1356 = OpLoad %float %1355
%1357 = OpFMul %float %1354 %1356
%1358 = OpAccessChain %_ptr_Function_float %1272 %uint_1
%1359 = OpLoad %float %1358
%1360 = OpAccessChain %_ptr_Function_float %1273 %uint_1
%1361 = OpLoad %float %1360
%1362 = OpFMul %float %1359 %1361
%1363 = OpFAdd %float %1357 %1362
%1364 = OpAccessChain %_ptr_Function_float %1272 %uint_2
%1365 = OpLoad %float %1364
%1366 = OpAccessChain %_ptr_Function_float %1273 %uint_2
%1367 = OpLoad %float %1366
%1368 = OpFMul %float %1365 %1367
%1369 = OpFAdd %float %1363 %1368
%1370 = OpExtInst %float %1 Sqrt %1369
%1371 = OpFDiv %float %float_1 %1370
%1372 = OpAccessChain %_ptr_Function_float %1269 %uint_0
%1373 = OpLoad %float %1372
%1374 = OpFMul %float %1373 %1371
%1375 = OpAccessChain %_ptr_Function_float %1269 %uint_1
%1376 = OpLoad %float %1375
%1377 = OpFMul %float %1376 %1371
%1378 = OpAccessChain %_ptr_Function_float %1269 %uint_2
%1379 = OpLoad %float %1378
%1380 = OpFMul %float %1379 %1371
%1381 = OpAccessChain %_ptr_Function_float %1248 %uint_0
OpStore %1381 %1374
%1382 = OpAccessChain %_ptr_Function_float %1248 %uint_1
OpStore %1382 %1377
%1383 = OpAccessChain %_ptr_Function_float %1248 %uint_2
OpStore %1383 %1380
OpCopyMemory %1250 %1248
OpCopyMemory %1251 %1241
%1384 = OpAccessChain %_ptr_Function_float %1250 %uint_0
%1385 = OpLoad %float %1384
%1386 = OpAccessChain %_ptr_Function_float %1251 %uint_0
%1387 = OpLoad %float %1386
%1388 = OpFMul %float %1385 %1387
%1389 = OpAccessChain %_ptr_Function_float %1250 %uint_1
%1390 = OpLoad %float %1389
%1391 = OpAccessChain %_ptr_Function_float %1251 %uint_1
%1392 = OpLoad %float %1391
%1393 = OpFMul %float %1390 %1392
%1394 = OpFAdd %float %1388 %1393
%1395 = OpAccessChain %_ptr_Function_float %1250 %uint_2
%1396 = OpLoad %float %1395
%1397 = OpAccessChain %_ptr_Function_float %1251 %uint_2
%1398 = OpLoad %float %1397
%1399 = OpFMul %float %1396 %1398
%1400 = OpFAdd %float %1394 %1399
%1401 = OpFSub %float %1400 %float_0_998000026
%1402 = OpExtInst %float %1 FMax %1401 %float_0
%1403 = OpFDiv %float %1402 %float_0_00199997425
%1404 = OpFMul %float %1403 %float_30
OpCopyMemory %1252 %1248
OpCopyMemory %1253 %1241
%1405 = OpAccessChain %_ptr_Function_float %1252 %uint_0
%1406 = OpLoad %float %1405
%1407 = OpAccessChain %_ptr_Function_float %1253 %uint_0
%1408 = OpLoad %float %1407
%1409 = OpFMul %float %1406 %1408
%1410 = OpAccessChain %_ptr_Function_float %1252 %uint_1
%1411 = OpLoad %float %1410
%1412 = OpAccessChain %_ptr_Function_float %1253 %uint_1
%1413 = OpLoad %float %1412
%1414 = OpFMul %float %1411 %1413
%1415 = OpFAdd %float %1409 %1414
%1416 = OpAccessChain %_ptr_Function_float %1252 %uint_2
%1417 = OpLoad %float %1416
%1418 = OpAccessChain %_ptr_Function_float %1253 %uint_2
%1419 = OpLoad %float %1418
%1420 = OpFMul %float %1417 %1419
%1421 = OpFAdd %float %1415 %1420
%1422 = OpFSub %float %1421 %float_0_920000017
%1423 = OpExtInst %float %1 FMax %1422 %float_0
%1424 = OpFDiv %float %1423 %float_0_0799999833
%1425 = OpExtInst %float %1 Pow %1424 %float_3
%1426 = OpFMul %float %1425 %float_0_5
%1427 = OpFAdd %float %1404 %1426
%1428 = OpAccessChain %_ptr_Function_v4float %1243 %uint_3
%1429 = OpLoad %v4float %1428
%1430 = OpCompositeExtract %float %1429 0
%1431 = OpCompositeExtract %float %1429 1
%1432 = OpCompositeExtract %float %1429 2
%1433 = OpCompositeInsert %macaw__Vec3 %1430 %313 0
%1434 = OpCompositeInsert %macaw__Vec3 %1431 %1433 1
%1435 = OpCompositeInsert %macaw__Vec3 %1432 %1434 2
%1436 = OpCompositeExtract %float %1435 0
%1437 = OpFMul %float %1436 %1427
%1438 = OpCompositeExtract %float %1435 1
%1439 = OpFMul %float %1438 %1427
%1440 = OpCompositeExtract %float %1435 2
%1441 = OpFMul %float %1440 %1427
%1442 = OpCompositeInsert %macaw__Vec3 %1437 %313 0
%1443 = OpCompositeInsert %macaw__Vec3 %1439 %1442 1
%1444 = OpCompositeInsert %macaw__Vec3 %1441 %1443 2
%1445 = OpCompositeExtract %float %1444 0
%1446 = OpFMul %float %1445 %float_1
%1447 = OpCompositeExtract %float %1444 1
%1448 = OpFMul %float %1447 %float_1
%1449 = OpCompositeExtract %float %1444 2
%1450 = OpFMul %float %1449 %float_1
%1451 = OpAccessChain %_ptr_Function_float %1254 %uint_0
OpStore %1451 %1446
%1452 = OpAccessChain %_ptr_Function_float %1254 %uint_1
OpStore %1452 %1448
%1453 = OpAccessChain %_ptr_Function_float %1254 %uint_2
OpStore %1453 %1450
OpCopyMemory %1255 %1244
OpCopyMemory %1256 %1245
OpCopyMemory %1274 %1255
OpCopyMemory %1275 %1256
OpCopyMemory %1276 %1255
%1454 = OpAccessChain %_ptr_Function_float %1275 %uint_0
%1455 = OpLoad %float %1454
%1456 = OpAccessChain %_ptr_Function_float %1276 %uint_0
%1457 = OpLoad %float %1456
%1458 = OpFSub %float %1455 %1457
%1459 = OpAccessChain %_ptr_Function_float %1275 %uint_1
%1460 = OpLoad %float %1459
%1461 = OpAccessChain %_ptr_Function_float %1276 %uint_1
%1462 = OpLoad %float %1461
%1463 = OpFSub %float %1460 %1462
%1464 = OpAccessChain %_ptr_Function_float %1275 %uint_2
%1465 = OpLoad %float %1464
%1466 = OpAccessChain %_ptr_Function_float %1276 %uint_2
%1467 = OpLoad %float %1466
%1468 = OpFSub %float %1465 %1467
%1469 = OpCompositeInsert %macaw__Vec3 %1458 %313 0
%1470 = OpCompositeInsert %macaw__Vec3 %1463 %1469 1
%1471 = OpCompositeInsert %macaw__Vec3 %1468 %1470 2
%1472 = OpCompositeExtract %float %1471 0
%1473 = OpFMul %float %1472 %1340
%1474 = OpCompositeExtract %float %1471 1
%1475 = OpFMul %float %1474 %1340
%1476 = OpCompositeExtract %float %1471 2
%1477 = OpFMul %float %1476 %1340
%1478 = OpCompositeInsert %macaw__Vec3 %1473 %313 0
%1479 = OpCompositeInsert %macaw__Vec3 %1475 %1478 1
%1480 = OpCompositeInsert %macaw__Vec3 %1477 %1479 2
%1481 = OpAccessChain %_ptr_Function_float %1274 %uint_0
%1482 = OpLoad %float %1481
%1483 = OpCompositeExtract %float %1480 0
%1484 = OpFAdd %float %1482 %1483
%1485 = OpAccessChain %_ptr_Function_float %1274 %uint_1
%1486 = OpLoad %float %1485
%1487 = OpCompositeExtract %float %1480 1
%1488 = OpFAdd %float %1486 %1487
%1489 = OpAccessChain %_ptr_Function_float %1274 %uint_2
%1490 = OpLoad %float %1489
%1491 = OpCompositeExtract %float %1480 2
%1492 = OpFAdd %float %1490 %1491
%1493 = OpCompositeInsert %macaw__Vec3 %1484 %313 0
%1494 = OpCompositeInsert %macaw__Vec3 %1488 %1493 1
%1495 = OpCompositeInsert %macaw__Vec3 %1492 %1494 2
OpCopyMemory %1257 %1254
%1496 = OpCompositeExtract %float %1495 0
%1497 = OpAccessChain %_ptr_Function_float %1257 %uint_0
%1498 = OpLoad %float %1497
%1499 = OpFAdd %float %1496 %1498
%1500 = OpCompositeExtract %float %1495 1
%1501 = OpAccessChain %_ptr_Function_float %1257 %uint_1
%1502 = OpLoad %float %1501
%1503 = OpFAdd %float %1500 %1502
%1504 = OpCompositeExtract %float %1495 2
%1505 = OpAccessChain %_ptr_Function_float %1257 %uint_2
%1506 = OpLoad %float %1505
%1507 = OpFAdd %float %1504 %1506
%1508 = OpAccessChain %_ptr_Function_float %1247 %uint_0
OpStore %1508 %1499
%1509 = OpAccessChain %_ptr_Function_float %1247 %uint_1
OpStore %1509 %1503
%1510 = OpAccessChain %_ptr_Function_float %1247 %uint_2
OpStore %1510 %1507
OpBranch %1342
%1344 = OpLabel
%1511 = OpFNegate %float %1340
OpCopyMemory %1258 %1244
OpCopyMemory %1259 %1246
%1512 = OpFMul %float %1511 %1511
OpCopyMemory %1266 %1258
OpCopyMemory %1267 %1259
OpCopyMemory %1268 %1258
%1513 = OpAccessChain %_ptr_Function_float %1267 %uint_0
%1514 = OpLoad %float %1513
%1515 = OpAccessChain %_ptr_Function_float %1268 %uint_0
%1516 = OpLoad %float %1515
%1517 = OpFSub %float %1514 %1516
%1518 = OpAccessChain %_ptr_Function_float %1267 %uint_1
%1519 = OpLoad %float %1518
%1520 = OpAccessChain %_ptr_Function_float %1268 %uint_1
%1521 = OpLoad %float %1520
%1522 = OpFSub %float %1519 %1521
%1523 = OpAccessChain %_ptr_Function_float %1267 %uint_2
%1524 = OpLoad %float %1523
%1525 = OpAccessChain %_ptr_Function_float %1268 %uint_2
%1526 = OpLoad %float %1525
%1527 = OpFSub %float %1524 %1526
%1528 = OpCompositeInsert %macaw__Vec3 %1517 %313 0
%1529 = OpCompositeInsert %macaw__Vec3 %1522 %1528 1
%1530 = OpCompositeInsert %macaw__Vec3 %1527 %1529 2
%1531 = OpCompositeExtract %float %1530 0
%1532 = OpFMul %float %1531 %1512
%1533 = OpCompositeExtract %float %1530 1
%1534 = OpFMul %float %1533 %1512
%1535 = OpCompositeExtract %float %1530 2
%1536 = OpFMul %float %1535 %1512
%1537 = OpCompositeInsert %macaw__Vec3 %1532 %313 0
%1538 = OpCompositeInsert %macaw__Vec3 %1534 %1537 1
%1539 = OpCompositeInsert %macaw__Vec3 %1536 %1538 2
%1540 = OpAccessChain %_ptr_Function_float %1266 %uint_0
%1541 = OpLoad %float %1540
%1542 = OpCompositeExtract %float %1539 0
%1543 = OpFAdd %float %1541 %1542
%1544 = OpAccessChain %_ptr_Function_float %1266 %uint_1
%1545 = OpLoad %float %1544
%1546 = OpCompositeExtract %float %1539 1
%1547 = OpFAdd %float %1545 %1546
%1548 = OpAccessChain %_ptr_Function_float %1266 %uint_2
%1549 = OpLoad %float %1548
%1550 = OpCompositeExtract %float %1539 2
%1551 = OpFAdd %float %1549 %1550
%1552 = OpAccessChain %_ptr_Function_float %1247 %uint_0
OpStore %1552 %1543
%1553 = OpAccessChain %_ptr_Function_float %1247 %uint_1
OpStore %1553 %1547
%1554 = OpAccessChain %_ptr_Function_float %1247 %uint_2
OpStore %1554 %1551
OpBranch %1342
%1342 = OpLabel
%1555 = OpPhi %macaw__Vec3 %1471 %1343 %313 %1344
%1556 = OpPhi %macaw__Vec3 %1480 %1343 %313 %1344
%1557 = OpPhi %float %1425 %1343 %316 %1344
%1558 = OpPhi %float %1423 %1343 %316 %1344
%1559 = OpPhi %float %1423 %1343 %316 %1344
%1560 = OpPhi %float %1421 %1343 %316 %1344
%1561 = OpPhi %float %1402 %1343 %316 %1344
%1562 = OpPhi %float %1402 %1343 %316 %1344
%1563 = OpPhi %float %1400 %1343 %316 %1344
%1564 = OpPhi %float %1371 %1343 %316 %1344
%1565 = OpPhi %float %1370 %1343 %316 %1344
%1566 = OpPhi %float %1369 %1343 %316 %1344
%1567 = OpPhi %float %1370 %1343 %316 %1344
%1568 = OpPhi %float %1371 %1343 %316 %1344
%1569 = OpPhi %macaw__Vec3 %313 %1343 %1530 %1344
%1570 = OpPhi %macaw__Vec3 %313 %1343 %1539 %1344
%1571 = OpPhi %v4float %1429 %1343 %314 %1344
%1572 = OpPhi %v4float %1346 %1343 %314 %1344
%1573 = OpPhi %macaw__Vec3 %1495 %1343 %313 %1344
%1574 = OpPhi %macaw__Vec3 %1435 %1343 %313 %1344
%1575 = OpPhi %macaw__Vec3 %1444 %1343 %313 %1344
%1576 = OpPhi %float %1427 %1343 %316 %1344
%1577 = OpPhi %float %1340 %1343 %1511 %1344
OpCopyMemory %1260 %1247
%1578 = OpAccessChain %_ptr_Function_float %1260 %uint_0
%1579 = OpLoad %float %1578
%1580 = OpAccessChain %_ptr_Function_float %1260 %uint_1
%1581 = OpLoad %float %1580
%1582 = OpAccessChain %_ptr_Function_float %1260 %uint_2
%1583 = OpLoad %float %1582
%1584 = OpCompositeInsert %v4float %1579 %314 0
%1585 = OpCompositeInsert %v4float %1581 %1584 1
%1586 = OpCompositeInsert %v4float %1583 %1585 2
%1587 = OpCompositeInsert %v4float %float_1 %1586 3
OpStore %output_0 %1587
OpReturn
OpFunctionEnd
%36 = OpFunction %void None %145
%1588 = OpLabel
%1589 = OpLoad %int %vert_idx
%1590 = OpBitwiseAnd %int %1589 %int_1
%1591 = OpBitwiseAnd %int %int_2 %int_31
%1592 = OpShiftLeftLogical %int %1590 %1591
%1593 = OpConvertSToF %float %1592
%1594 = OpFAdd %float %float_n1 %1593
%1595 = OpBitwiseAnd %int %1589 %int_2
%1596 = OpBitwiseAnd %int %int_1 %int_31
%1597 = OpShiftLeftLogical %int %1595 %1596
%1598 = OpConvertSToF %float %1597
%1599 = OpFAdd %float %float_n1 %1598
%1600 = OpCompositeInsert %v3float %1594 %315 0
%1601 = OpCompositeInsert %v3float %1599 %1600 1
%1602 = OpCompositeInsert %v3float %float_0 %1601 2
%1603 = OpCompositeInsert %v3float %float_1 %315 0
%1604 = OpCompositeInsert %v3float %float_1 %1603 1
%1605 = OpCompositeInsert %v3float %float_1 %1604 2
%1606 = OpCompositeExtract %float %1602 0
%1607 = OpCompositeExtract %float %1605 0
%1608 = OpFAdd %float %1606 %1607
%1609 = OpCompositeExtract %float %1602 1
%1610 = OpCompositeExtract %float %1605 1
%1611 = OpFAdd %float %1609 %1610
%1612 = OpCompositeExtract %float %1602 2
%1613 = OpCompositeExtract %float %1605 2
%1614 = OpFAdd %float %1612 %1613
%1615 = OpCompositeInsert %v3float %1608 %315 0
%1616 = OpCompositeInsert %v3float %1611 %1615 1
%1617 = OpCompositeInsert %v3float %1614 %1616 2
%1618 = OpCompositeExtract %float %1617 0
%1619 = OpFMul %float %1618 %float_0_5
%1620 = OpCompositeExtract %float %1617 1
%1621 = OpFMul %float %1620 %float_0_5
%1622 = OpCompositeExtract %float %1617 2
%1623 = OpFMul %float %1622 %float_0_5
%1624 = OpCompositeInsert %v3float %1619 %315 0
%1625 = OpCompositeInsert %v3float %1621 %1624 1
%1626 = OpCompositeInsert %v3float %1623 %1625 2
%1627 = OpCompositeExtract %float %1626 1
%1628 = OpFSub %float %float_1 %1627
%1629 = OpCompositeInsert %v3float %1628 %1626 1
%1630 = OpLoad %int %view_index
%1631 = OpConvertSToF %float %1630
%1632 = OpCompositeInsert %v3float %1631 %1629 2
%1633 = OpCompositeInsert %v4float %1594 %314 0
%1634 = OpCompositeInsert %v4float %1599 %1633 1
%1635 = OpCompositeInsert %v4float %float_0 %1634 2
%1636 = OpCompositeInsert %v4float %float_1 %1635 3
%1637 = OpCompositeExtract %float %1636 1
%1638 = OpFNegate %float %1637
%1639 = OpCompositeInsert %v4float %1638 %1636 1
OpStore %out_pos %1639
OpStore %out_uv_0 %1632
OpReturn
OpFunctionEnd
%41 = OpFunction %void None %145
%1640 = OpLabel
%1641 = OpVariable %_ptr_Function_191 Function
%1642 = OpVariable %_ptr_Function__arr_float_uint_18 Function
%1643 = OpVariable %_ptr_Function__arr_float_uint_18 Function
%1644 = OpVariable %_ptr_Function__arr_float_uint_18 Function
%1645 = OpVariable %_ptr_Function__arr_float_uint_18 Function
%1646 = OpVariable %_ptr_Function_v4float Function
%1647 = OpVariable %_ptr_Function_v3float Function
%1648 = OpVariable %_ptr_Function_v4float Function
%1649 = OpVariable %_ptr_Function_v3float Function
%1650 = OpVariable %_ptr_Function_v4float Function
%1651 = OpVariable %_ptr_Function_v3float Function
%1652 = OpLoad %v3float %input
%1653 = OpLoad %152 %sampler_0
%1654 = OpLoad %v2float %direction
%1655 = OpLoad %191 %in_image
OpStore %1641 %1655
OpStore %1647 %1652
%1656 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %1646 %1641 %1653 %1647
%1657 = OpLoad %v4float %1646
%1658 = OpCompositeExtract %float %1657 0
%1659 = OpFMul %float %1658 %float_0_0500140004
%1660 = OpCompositeExtract %float %1657 1
%1661 = OpFMul %float %1660 %float_0_0500140004
%1662 = OpCompositeExtract %float %1657 2
%1663 = OpFMul %float %1662 %float_0_0500140004
%1664 = OpCompositeExtract %float %1657 3
%1665 = OpFMul %float %1664 %float_0_0500140004
%1666 = OpCompositeInsert %v4float %1659 %314 0
%1667 = OpCompositeInsert %v4float %1661 %1666 1
%1668 = OpCompositeInsert %v4float %1663 %1667 2
%1669 = OpCompositeInsert %v4float %1665 %1668 3
%1670 = OpCompositeExtract %float %1654 0
%1671 = OpCompositeExtract %float %1654 1
%1672 = OpCompositeInsert %v3float %1670 %315 0
%1673 = OpCompositeInsert %v3float %1671 %1672 1
%1674 = OpCompositeInsert %v3float %float_0 %1673 2
OpBranch %1675
%1675 = OpLabel
OpBranch %1676
%1676 = OpLabel
%1677 = OpPhi %v4float %314 %1675 %1678 %1679
%1680 = OpPhi %v4float %314 %1675 %1681 %1679
%1682 = OpPhi %v4float %314 %1675 %1683 %1679
%1684 = OpPhi %v3float %315 %1675 %1685 %1679
%1686 = OpPhi %v3float %315 %1675 %1687 %1679
%1688 = OpPhi %v3float %315 %1675 %1689 %1679
%1690 = OpPhi %v3float %315 %1675 %1691 %1679
%1692 = OpPhi %v3float %315 %1675 %1693 %1679
%1694 = OpPhi %v4float %314 %1675 %1695 %1679
%1696 = OpPhi %v4float %314 %1675 %1697 %1679
%1698 = OpPhi %v4float %314 %1675 %1699 %1679
%1700 = OpPhi %v3float %315 %1675 %1701 %1679
%1702 = OpPhi %v3float %315 %1675 %1703 %1679
%1704 = OpPhi %v3float %315 %1675 %1705 %1679
%1706 = OpPhi %v3float %315 %1675 %1707 %1679
%1708 = OpPhi %v3float %315 %1675 %1709 %1679
%1710 = OpPhi %uint %uint_1 %1675 %1711 %1679
%1712 = OpPhi %v4float %1669 %1675 %1713 %1679
%1714 = OpPhi %bool %true_8 %1675 %1715 %1679
OpLoopMerge %1716 %1679 None
OpBranchConditional %1714 %1717 %1716
%1717 = OpLabel
%1718 = OpULessThan %bool %1710 %uint_18
OpSelectionMerge %1719 None
OpBranchConditional %1718 %1720 %1721
%1720 = OpLabel
OpStore %1642 %218
%1722 = OpULessThan %bool %1710 %uint_18
OpSelectionMerge %1723 None
OpBranchConditional %1722 %1724 %1725
%1724 = OpLabel
%1726 = OpInBoundsAccessChain %_ptr_Function_float %1642 %1710
%1727 = OpLoad %float %1726
%1728 = OpCompositeExtract %float %1674 0
%1729 = OpFMul %float %1728 %1727
%1730 = OpCompositeExtract %float %1674 1
%1731 = OpFMul %float %1730 %1727
%1732 = OpCompositeExtract %float %1674 2
%1733 = OpFMul %float %1732 %1727
%1734 = OpCompositeInsert %v3float %1729 %1708 0
%1735 = OpCompositeInsert %v3float %1731 %1734 1
%1736 = OpCompositeInsert %v3float %1733 %1735 2
%1737 = OpCompositeExtract %float %1652 0
%1738 = OpCompositeExtract %float %1736 0
%1739 = OpFAdd %float %1737 %1738
%1740 = OpCompositeExtract %float %1652 1
%1741 = OpCompositeExtract %float %1736 1
%1742 = OpFAdd %float %1740 %1741
%1743 = OpCompositeExtract %float %1652 2
%1744 = OpCompositeExtract %float %1736 2
%1745 = OpFAdd %float %1743 %1744
%1746 = OpCompositeInsert %v3float %1739 %1704 0
%1747 = OpCompositeInsert %v3float %1742 %1746 1
%1748 = OpCompositeInsert %v3float %1745 %1747 2
OpStore %1649 %1748
%1749 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %1648 %1641 %1653 %1649
%1750 = OpLoad %v4float %1648
OpStore %1643 %236
%1751 = OpULessThan %bool %1710 %uint_18
OpSelectionMerge %1752 None
OpBranchConditional %1751 %1753 %1754
%1753 = OpLabel
%1755 = OpInBoundsAccessChain %_ptr_Function_float %1643 %1710
%1756 = OpLoad %float %1755
%1757 = OpCompositeExtract %float %1750 0
%1758 = OpFMul %float %1757 %1756
%1759 = OpCompositeExtract %float %1750 1
%1760 = OpFMul %float %1759 %1756
%1761 = OpCompositeExtract %float %1750 2
%1762 = OpFMul %float %1761 %1756
%1763 = OpCompositeExtract %float %1750 3
%1764 = OpFMul %float %1763 %1756
%1765 = OpCompositeInsert %v4float %1758 %1698 0
%1766 = OpCompositeInsert %v4float %1760 %1765 1
%1767 = OpCompositeInsert %v4float %1762 %1766 2
%1768 = OpCompositeInsert %v4float %1764 %1767 3
%1769 = OpCompositeExtract %float %1768 0
%1770 = OpCompositeExtract %float %1712 0
%1771 = OpFAdd %float %1770 %1769
%1772 = OpCompositeInsert %v4float %1771 %1712 0
%1773 = OpCompositeExtract %float %1768 1
%1774 = OpCompositeExtract %float %1772 1
%1775 = OpFAdd %float %1774 %1773
%1776 = OpCompositeInsert %v4float %1775 %1772 1
%1777 = OpCompositeExtract %float %1768 2
%1778 = OpCompositeExtract %float %1776 2
%1779 = OpFAdd %float %1778 %1777
%1780 = OpCompositeInsert %v4float %1779 %1776 2
%1781 = OpCompositeExtract %float %1768 3
%1782 = OpCompositeExtract %float %1780 3
%1783 = OpFAdd %float %1782 %1781
%1784 = OpCompositeInsert %v4float %1783 %1780 3
OpStore %1644 %218
%1785 = OpULessThan %bool %1710 %uint_18
OpSelectionMerge %1786 None
OpBranchConditional %1785 %1787 %1788
%1787 = OpLabel
%1789 = OpInBoundsAccessChain %_ptr_Function_float %1644 %1710
%1790 = OpLoad %float %1789
%1791 = OpCompositeExtract %float %1674 0
%1792 = OpFMul %float %1791 %1790
%1793 = OpCompositeExtract %float %1674 1
%1794 = OpFMul %float %1793 %1790
%1795 = OpCompositeExtract %float %1674 2
%1796 = OpFMul %float %1795 %1790
%1797 = OpCompositeInsert %v3float %1792 %1692 0
%1798 = OpCompositeInsert %v3float %1794 %1797 1
%1799 = OpCompositeInsert %v3float %1796 %1798 2
%1800 = OpCompositeExtract %float %1652 0
%1801 = OpCompositeExtract %float %1799 0
%1802 = OpFSub %float %1800 %1801
%1803 = OpCompositeExtract %float %1652 1
%1804 = OpCompositeExtract %float %1799 1
%1805 = OpFSub %float %1803 %1804
%1806 = OpCompositeExtract %float %1652 2
%1807 = OpCompositeExtract %float %1799 2
%1808 = OpFSub %float %1806 %1807
%1809 = OpCompositeInsert %v3float %1802 %1688 0
%1810 = OpCompositeInsert %v3float %1805 %1809 1
%1811 = OpCompositeInsert %v3float %1808 %1810 2
OpStore %1651 %1811
%1812 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %1650 %1641 %1653 %1651
%1813 = OpLoad %v4float %1650
OpStore %1645 %236
%1814 = OpULessThan %bool %1710 %uint_18
OpSelectionMerge %1815 None
OpBranchConditional %1814 %1816 %1817
%1816 = OpLabel
%1818 = OpInBoundsAccessChain %_ptr_Function_float %1645 %1710
%1819 = OpLoad %float %1818
%1820 = OpCompositeExtract %float %1813 0
%1821 = OpFMul %float %1820 %1819
%1822 = OpCompositeExtract %float %1813 1
%1823 = OpFMul %float %1822 %1819
%1824 = OpCompositeExtract %float %1813 2
%1825 = OpFMul %float %1824 %1819
%1826 = OpCompositeExtract %float %1813 3
%1827 = OpFMul %float %1826 %1819
%1828 = OpCompositeInsert %v4float %1821 %1682 0
%1829 = OpCompositeInsert %v4float %1823 %1828 1
%1830 = OpCompositeInsert %v4float %1825 %1829 2
%1831 = OpCompositeInsert %v4float %1827 %1830 3
%1832 = OpCompositeExtract %float %1831 0
%1833 = OpCompositeExtract %float %1784 0
%1834 = OpFAdd %float %1833 %1832
%1835 = OpCompositeInsert %v4float %1834 %1784 0
%1836 = OpCompositeExtract %float %1831 1
%1837 = OpCompositeExtract %float %1835 1
%1838 = OpFAdd %float %1837 %1836
%1839 = OpCompositeInsert %v4float %1838 %1835 1
%1840 = OpCompositeExtract %float %1831 2
%1841 = OpCompositeExtract %float %1839 2
%1842 = OpFAdd %float %1841 %1840
%1843 = OpCompositeInsert %v4float %1842 %1839 2
%1844 = OpCompositeExtract %float %1831 3
%1845 = OpCompositeExtract %float %1843 3
%1846 = OpFAdd %float %1845 %1844
%1847 = OpCompositeInsert %v4float %1846 %1843 3
%1848 = OpIAdd %uint %1710 %uint_1
OpBranch %1815
%1817 = OpLabel
OpBranch %1849
%1849 = OpLabel
OpBranch %1850
%1850 = OpLabel
%1851 = OpPhi %bool %true %1849 %true %1852
OpLoopMerge %1853 %1852 None
OpBranchConditional %1851 %1854 %1853
%1854 = OpLabel
OpBranch %1852
%1852 = OpLabel
OpBranch %1850
%1853 = OpLabel
OpUnreachable
%1815 = OpLabel
%1855 = OpPhi %v4float %1831 %1816
%1856 = OpPhi %v4float %1813 %1816
%1857 = OpPhi %v4float %1831 %1816
%1858 = OpPhi %uint %1848 %1816
%1859 = OpPhi %v4float %1847 %1816
%1860 = OpPhi %bool %true_0 %1816
OpBranch %1786
%1788 = OpLabel
OpBranch %1861
%1861 = OpLabel
OpBranch %1862
%1862 = OpLabel
%1863 = OpPhi %bool %true_1 %1861 %true_1 %1864
OpLoopMerge %1865 %1864 None
OpBranchConditional %1863 %1866 %1865
%1866 = OpLabel
OpBranch %1864
%1864 = OpLabel
OpBranch %1862
%1865 = OpLabel
OpUnreachable
%1786 = OpLabel
%1867 = OpPhi %v4float %1855 %1815
%1868 = OpPhi %v4float %1856 %1815
%1869 = OpPhi %v4float %1857 %1815
%1870 = OpPhi %v3float %1799 %1815
%1871 = OpPhi %v3float %1652 %1815
%1872 = OpPhi %v3float %1811 %1815
%1873 = OpPhi %v3float %1674 %1815
%1874 = OpPhi %v3float %1799 %1815
%1875 = OpPhi %uint %1858 %1815
%1876 = OpPhi %v4float %1859 %1815
%1877 = OpPhi %bool %1860 %1815
OpBranch %1752
%1754 = OpLabel
OpBranch %1878
%1878 = OpLabel
OpBranch %1879
%1879 = OpLabel
%1880 = OpPhi %bool %true_3 %1878 %true_3 %1881
OpLoopMerge %1882 %1881 None
OpBranchConditional %1880 %1883 %1882
%1883 = OpLabel
OpBranch %1881
%1881 = OpLabel
OpBranch %1879
%1882 = OpLabel
OpUnreachable
%1752 = OpLabel
%1884 = OpPhi %v4float %1867 %1786
%1885 = OpPhi %v4float %1868 %1786
%1886 = OpPhi %v4float %1869 %1786
%1887 = OpPhi %v3float %1870 %1786
%1888 = OpPhi %v3float %1871 %1786
%1889 = OpPhi %v3float %1872 %1786
%1890 = OpPhi %v3float %1873 %1786
%1891 = OpPhi %v3float %1874 %1786
%1892 = OpPhi %v4float %1768 %1786
%1893 = OpPhi %v4float %1750 %1786
%1894 = OpPhi %v4float %1768 %1786
%1895 = OpPhi %uint %1875 %1786
%1896 = OpPhi %v4float %1876 %1786
%1897 = OpPhi %bool %1877 %1786
OpBranch %1723
%1725 = OpLabel
OpBranch %1898
%1898 = OpLabel
OpBranch %1899
%1899 = OpLabel
%1900 = OpPhi %bool %true_5 %1898 %true_5 %1901
OpLoopMerge %1902 %1901 None
OpBranchConditional %1900 %1903 %1902
%1903 = OpLabel
OpBranch %1901
%1901 = OpLabel
OpBranch %1899
%1902 = OpLabel
OpUnreachable
%1723 = OpLabel
%1904 = OpPhi %v4float %1884 %1752
%1905 = OpPhi %v4float %1885 %1752
%1906 = OpPhi %v4float %1886 %1752
%1907 = OpPhi %v3float %1887 %1752
%1908 = OpPhi %v3float %1888 %1752
%1909 = OpPhi %v3float %1889 %1752
%1910 = OpPhi %v3float %1890 %1752
%1911 = OpPhi %v3float %1891 %1752
%1912 = OpPhi %v4float %1892 %1752
%1913 = OpPhi %v4float %1893 %1752
%1914 = OpPhi %v4float %1894 %1752
%1915 = OpPhi %v3float %1736 %1752
%1916 = OpPhi %v3float %1652 %1752
%1917 = OpPhi %v3float %1748 %1752
%1918 = OpPhi %v3float %1674 %1752
%1919 = OpPhi %v3float %1736 %1752
%1920 = OpPhi %uint %1895 %1752
%1921 = OpPhi %v4float %1896 %1752
%1922 = OpPhi %bool %1897 %1752
OpBranch %1719
%1721 = OpLabel
OpStore %output_1 %1712
OpReturn
%1719 = OpLabel
%1678 = OpPhi %v4float %1904 %1723
%1681 = OpPhi %v4float %1905 %1723
%1683 = OpPhi %v4float %1906 %1723
%1685 = OpPhi %v3float %1907 %1723
%1687 = OpPhi %v3float %1908 %1723
%1689 = OpPhi %v3float %1909 %1723
%1691 = OpPhi %v3float %1910 %1723
%1693 = OpPhi %v3float %1911 %1723
%1695 = OpPhi %v4float %1912 %1723
%1697 = OpPhi %v4float %1913 %1723
%1699 = OpPhi %v4float %1914 %1723
%1701 = OpPhi %v3float %1915 %1723
%1703 = OpPhi %v3float %1916 %1723
%1705 = OpPhi %v3float %1917 %1723
%1707 = OpPhi %v3float %1918 %1723
%1709 = OpPhi %v3float %1919 %1723
%1711 = OpPhi %uint %1920 %1723
%1713 = OpPhi %v4float %1921 %1723
%1715 = OpPhi %bool %1922 %1723
OpBranch %1679
%1679 = OpLabel
OpBranch %1676
%1716 = OpLabel
OpUnreachable
OpFunctionEnd
%47 = OpFunction %void None %145
%1923 = OpLabel
%1924 = OpVariable %_ptr_Function_191 Function
%1925 = OpVariable %_ptr_Function_v4float Function
%1926 = OpVariable %_ptr_Function_v3float Function
%1927 = OpLoad %191 %in_texture_0
OpStore %1924 %1927
%1928 = OpLoad %152 %sampler_1
%1929 = OpLoad %v3float %uv
%1930 = OpCompositeExtract %float %1929 0
%1931 = OpCompositeExtract %float %1929 1
%1932 = OpCompositeExtract %float %1929 2
%1933 = OpCompositeInsert %v4float %1930 %314 0
%1934 = OpCompositeInsert %v4float %1931 %1933 1
%1935 = OpCompositeInsert %v4float %1932 %1934 2
%1936 = OpCompositeInsert %v4float %float_0 %1935 3
%1937 = OpCompositeExtract %float %1936 0
%1938 = OpCompositeExtract %float %1936 1
%1939 = OpCompositeExtract %float %1936 2
%1940 = OpCompositeInsert %v3float %1937 %315 0
%1941 = OpCompositeInsert %v3float %1938 %1940 1
%1942 = OpCompositeInsert %v3float %1939 %1941 2
OpStore %1926 %1942
%1943 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %1925 %1924 %1928 %1926
%1944 = OpLoad %v4float %1925
OpStore %output_2 %1944
OpReturn
OpFunctionEnd
%_glam__f32__vec4__Vec4_as_core__convert__Into_glam__f32__vec3__Vec3____into = OpFunction %void None %116
%1945 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%1946 = OpFunctionParameter %_ptr_Function_v4float
%1947 = OpLabel
%1948 = OpLoad %v4float %1946
%1949 = OpCompositeExtract %float %1948 0
%1950 = OpCompositeExtract %float %1948 1
%1951 = OpCompositeExtract %float %1948 2
%1952 = OpAccessChain %_ptr_Function_float %1945 %uint_0
OpStore %1952 %1949
%1953 = OpAccessChain %_ptr_Function_float %1945 %uint_1
OpStore %1953 %1950
%1954 = OpAccessChain %_ptr_Function_float %1945 %uint_2
OpStore %1954 %1951
OpReturn
OpFunctionEnd
%52 = OpFunction %void None %145
%1955 = OpLabel
%1956 = OpVariable %_ptr_Function_canvas__Constants Function
%1957 = OpVariable %_ptr_Function_macaw__Mat4 Function
%1958 = OpVariable %_ptr_Function_v4float Function
%1959 = OpVariable %_ptr_Function_v4float Function
%1960 = OpLoad %v2float %in_pos_1
OpCopyMemory %1956 %push_constants
%1961 = OpLoad %v2float %in_uv_1
OpStore %out_uv_1 %1961
%1962 = OpLoad %v4float %in_color_2
OpStore %1959 %1962
%1963 = OpFunctionCall %void %ark_shaders__color__decode_srgba %1958 %1959
%1964 = OpLoad %v4float %1958
OpStore %out_color_1 %1964
%1965 = OpAccessChain %_ptr_Function_macaw__Mat4 %1956 %uint_0
OpCopyMemory %1957 %1965
%1966 = OpCompositeExtract %float %1960 0
%1967 = OpCompositeExtract %float %1960 1
%1968 = OpCompositeInsert %macaw__Vec3 %1966 %313 0
%1969 = OpCompositeInsert %macaw__Vec3 %1967 %1968 1
%1970 = OpCompositeInsert %macaw__Vec3 %float_0 %1969 2
%1971 = OpCompositeExtract %float %1970 0
%1972 = OpCompositeExtract %float %1970 1
%1973 = OpCompositeExtract %float %1970 2
%1974 = OpCompositeInsert %v4float %1971 %314 0
%1975 = OpCompositeInsert %v4float %1972 %1974 1
%1976 = OpCompositeInsert %v4float %1973 %1975 2
%1977 = OpCompositeInsert %v4float %float_1 %1976 3
%1978 = OpAccessChain %_ptr_Function_v4float %1957 %uint_0
%1979 = OpLoad %v4float %1978
%1980 = OpCompositeExtract %float %1977 0
%1981 = OpCompositeExtract %float %1977 0
%1982 = OpCompositeExtract %float %1977 0
%1983 = OpCompositeExtract %float %1977 0
%1984 = OpCompositeInsert %v4float %1980 %314 0
%1985 = OpCompositeInsert %v4float %1981 %1984 1
%1986 = OpCompositeInsert %v4float %1982 %1985 2
%1987 = OpCompositeInsert %v4float %1983 %1986 3
%1988 = OpCompositeExtract %float %1979 0
%1989 = OpCompositeExtract %float %1987 0
%1990 = OpFMul %float %1988 %1989
%1991 = OpCompositeExtract %float %1979 1
%1992 = OpCompositeExtract %float %1987 1
%1993 = OpFMul %float %1991 %1992
%1994 = OpCompositeExtract %float %1979 2
%1995 = OpCompositeExtract %float %1987 2
%1996 = OpFMul %float %1994 %1995
%1997 = OpCompositeExtract %float %1979 3
%1998 = OpCompositeExtract %float %1987 3
%1999 = OpFMul %float %1997 %1998
%2000 = OpCompositeInsert %v4float %1990 %314 0
%2001 = OpCompositeInsert %v4float %1993 %2000 1
%2002 = OpCompositeInsert %v4float %1996 %2001 2
%2003 = OpCompositeInsert %v4float %1999 %2002 3
%2004 = OpAccessChain %_ptr_Function_v4float %1957 %uint_1
%2005 = OpLoad %v4float %2004
%2006 = OpCompositeExtract %float %1977 1
%2007 = OpCompositeExtract %float %1977 1
%2008 = OpCompositeExtract %float %1977 1
%2009 = OpCompositeExtract %float %1977 1
%2010 = OpCompositeInsert %v4float %2006 %314 0
%2011 = OpCompositeInsert %v4float %2007 %2010 1
%2012 = OpCompositeInsert %v4float %2008 %2011 2
%2013 = OpCompositeInsert %v4float %2009 %2012 3
%2014 = OpCompositeExtract %float %2005 0
%2015 = OpCompositeExtract %float %2013 0
%2016 = OpFMul %float %2014 %2015
%2017 = OpCompositeExtract %float %2003 0
%2018 = OpFAdd %float %2016 %2017
%2019 = OpCompositeExtract %float %2005 1
%2020 = OpCompositeExtract %float %2013 1
%2021 = OpFMul %float %2019 %2020
%2022 = OpCompositeExtract %float %2003 1
%2023 = OpFAdd %float %2021 %2022
%2024 = OpCompositeExtract %float %2005 2
%2025 = OpCompositeExtract %float %2013 2
%2026 = OpFMul %float %2024 %2025
%2027 = OpCompositeExtract %float %2003 2
%2028 = OpFAdd %float %2026 %2027
%2029 = OpCompositeExtract %float %2005 3
%2030 = OpCompositeExtract %float %2013 3
%2031 = OpFMul %float %2029 %2030
%2032 = OpCompositeExtract %float %2003 3
%2033 = OpFAdd %float %2031 %2032
%2034 = OpCompositeInsert %v4float %2018 %314 0
%2035 = OpCompositeInsert %v4float %2023 %2034 1
%2036 = OpCompositeInsert %v4float %2028 %2035 2
%2037 = OpCompositeInsert %v4float %2033 %2036 3
%2038 = OpAccessChain %_ptr_Function_v4float %1957 %uint_2
%2039 = OpLoad %v4float %2038
%2040 = OpCompositeExtract %float %1977 2
%2041 = OpCompositeExtract %float %1977 2
%2042 = OpCompositeExtract %float %1977 2
%2043 = OpCompositeExtract %float %1977 2
%2044 = OpCompositeInsert %v4float %2040 %314 0
%2045 = OpCompositeInsert %v4float %2041 %2044 1
%2046 = OpCompositeInsert %v4float %2042 %2045 2
%2047 = OpCompositeInsert %v4float %2043 %2046 3
%2048 = OpCompositeExtract %float %2039 0
%2049 = OpCompositeExtract %float %2047 0
%2050 = OpFMul %float %2048 %2049
%2051 = OpCompositeExtract %float %2037 0
%2052 = OpFAdd %float %2050 %2051
%2053 = OpCompositeExtract %float %2039 1
%2054 = OpCompositeExtract %float %2047 1
%2055 = OpFMul %float %2053 %2054
%2056 = OpCompositeExtract %float %2037 1
%2057 = OpFAdd %float %2055 %2056
%2058 = OpCompositeExtract %float %2039 2
%2059 = OpCompositeExtract %float %2047 2
%2060 = OpFMul %float %2058 %2059
%2061 = OpCompositeExtract %float %2037 2
%2062 = OpFAdd %float %2060 %2061
%2063 = OpCompositeExtract %float %2039 3
%2064 = OpCompositeExtract %float %2047 3
%2065 = OpFMul %float %2063 %2064
%2066 = OpCompositeExtract %float %2037 3
%2067 = OpFAdd %float %2065 %2066
%2068 = OpCompositeInsert %v4float %2052 %314 0
%2069 = OpCompositeInsert %v4float %2057 %2068 1
%2070 = OpCompositeInsert %v4float %2062 %2069 2
%2071 = OpCompositeInsert %v4float %2067 %2070 3
%2072 = OpAccessChain %_ptr_Function_v4float %1957 %uint_3
%2073 = OpLoad %v4float %2072
%2074 = OpCompositeExtract %float %1977 3
%2075 = OpCompositeExtract %float %1977 3
%2076 = OpCompositeExtract %float %1977 3
%2077 = OpCompositeExtract %float %1977 3
%2078 = OpCompositeInsert %v4float %2074 %314 0
%2079 = OpCompositeInsert %v4float %2075 %2078 1
%2080 = OpCompositeInsert %v4float %2076 %2079 2
%2081 = OpCompositeInsert %v4float %2077 %2080 3
%2082 = OpCompositeExtract %float %2073 0
%2083 = OpCompositeExtract %float %2081 0
%2084 = OpFMul %float %2082 %2083
%2085 = OpCompositeExtract %float %2071 0
%2086 = OpFAdd %float %2084 %2085
%2087 = OpCompositeExtract %float %2073 1
%2088 = OpCompositeExtract %float %2081 1
%2089 = OpFMul %float %2087 %2088
%2090 = OpCompositeExtract %float %2071 1
%2091 = OpFAdd %float %2089 %2090
%2092 = OpCompositeExtract %float %2073 2
%2093 = OpCompositeExtract %float %2081 2
%2094 = OpFMul %float %2092 %2093
%2095 = OpCompositeExtract %float %2071 2
%2096 = OpFAdd %float %2094 %2095
%2097 = OpCompositeExtract %float %2073 3
%2098 = OpCompositeExtract %float %2081 3
%2099 = OpFMul %float %2097 %2098
%2100 = OpCompositeExtract %float %2071 3
%2101 = OpFAdd %float %2099 %2100
%2102 = OpCompositeInsert %v4float %2086 %314 0
%2103 = OpCompositeInsert %v4float %2091 %2102 1
%2104 = OpCompositeInsert %v4float %2096 %2103 2
%2105 = OpCompositeInsert %v4float %2101 %2104 3
%2106 = OpCompositeExtract %float %2105 1
%2107 = OpFNegate %float %2106
%2108 = OpCompositeInsert %v4float %2107 %2105 1
OpStore %builtin_pos_2 %2108
OpReturn
OpFunctionEnd
%60 = OpFunction %void None %145
%2109 = OpLabel
%2110 = OpVariable %_ptr_Function_149 Function
%2111 = OpVariable %_ptr_Function_v4float Function
%2112 = OpVariable %_ptr_Function_v2float Function
%2113 = OpLoad %v4float %in_color_3
%2114 = OpLoad %149 %font_tex
OpStore %2110 %2114
%2115 = OpLoad %152 %font_sampler
%2116 = OpLoad %v2float %in_uv_2
OpStore %2112 %2116
%2117 = OpFunctionCall %void %_spirv_std__textures__Image2d___sample %2111 %2110 %2115 %2112
%2118 = OpLoad %v4float %2111
%2119 = OpCompositeExtract %float %2113 0
%2120 = OpCompositeExtract %float %2118 0
%2121 = OpFMul %float %2119 %2120
%2122 = OpCompositeExtract %float %2113 1
%2123 = OpCompositeExtract %float %2118 1
%2124 = OpFMul %float %2122 %2123
%2125 = OpCompositeExtract %float %2113 2
%2126 = OpCompositeExtract %float %2118 2
%2127 = OpFMul %float %2125 %2126
%2128 = OpCompositeExtract %float %2113 3
%2129 = OpCompositeExtract %float %2118 3
%2130 = OpFMul %float %2128 %2129
%2131 = OpCompositeInsert %v4float %2121 %314 0
%2132 = OpCompositeInsert %v4float %2124 %2131 1
%2133 = OpCompositeInsert %v4float %2127 %2132 2
%2134 = OpCompositeInsert %v4float %2130 %2133 3
OpStore %out_color_2 %2134
OpReturn
OpFunctionEnd
%66 = OpFunction %void None %145
%2135 = OpLabel
%2136 = OpVariable %_ptr_Function_149 Function
%2137 = OpVariable %_ptr_Function_v4float Function
%2138 = OpVariable %_ptr_Function_v2float Function
%2139 = OpLoad %149 %in_texture_1
OpStore %2136 %2139
%2140 = OpLoad %152 %sampler_2
%2141 = OpLoad %v3float %input_0
%2142 = OpCompositeExtract %float %2141 0
%2143 = OpCompositeExtract %float %2141 1
%2144 = OpCompositeInsert %v2float %2142 %317 0
%2145 = OpCompositeInsert %v2float %2143 %2144 1
OpStore %2138 %2145
%2146 = OpFunctionCall %void %_spirv_std__textures__Image2d___sample %2137 %2136 %2140 %2138
%2147 = OpLoad %v4float %2137
OpStore %output_3 %2147
OpReturn
OpFunctionEnd
%71 = OpFunction %void None %145
%2148 = OpLabel
%2149 = OpVariable %_ptr_Function_191 Function
%2150 = OpVariable %_ptr_Function_v4float Function
%2151 = OpVariable %_ptr_Function_v3float Function
%2152 = OpLoad %191 %in_texture_2
OpStore %2149 %2152
%2153 = OpLoad %152 %sampler_3
%2154 = OpLoad %v3float %input_1
OpStore %2151 %2154
%2155 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %2150 %2149 %2153 %2151
%2156 = OpLoad %v4float %2150
OpStore %output_4 %2156
OpReturn
OpFunctionEnd
%ark_shaders__tonemap__calculate_luma = OpFunction %float None %167
%2157 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2158 = OpLabel
%2159 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2160 = OpCompositeInsert %macaw__Vec3 %float_0_212599993 %313 0
%2161 = OpCompositeInsert %macaw__Vec3 %float_0_715200007 %2160 1
%2162 = OpCompositeInsert %macaw__Vec3 %float_0_0722000003 %2161 2
OpCopyMemory %2159 %2157
%2163 = OpCompositeExtract %float %2162 0
%2164 = OpAccessChain %_ptr_Function_float %2159 %uint_0
%2165 = OpLoad %float %2164
%2166 = OpFMul %float %2163 %2165
%2167 = OpCompositeExtract %float %2162 1
%2168 = OpAccessChain %_ptr_Function_float %2159 %uint_1
%2169 = OpLoad %float %2168
%2170 = OpFMul %float %2167 %2169
%2171 = OpFAdd %float %2166 %2170
%2172 = OpCompositeExtract %float %2162 2
%2173 = OpAccessChain %_ptr_Function_float %2159 %uint_2
%2174 = OpLoad %float %2173
%2175 = OpFMul %float %2172 %2174
%2176 = OpFAdd %float %2171 %2175
OpReturnValue %2176
OpFunctionEnd
%ark_shaders__tonemap__vignette = OpFunction %float None %242
%2177 = OpFunctionParameter %_ptr_Function_v2float
%2178 = OpFunctionParameter %float
%2179 = OpFunctionParameter %float
%2180 = OpLabel
%2181 = OpLoad %v2float %2177
%2182 = OpCompositeExtract %float %2181 0
%2183 = OpFMul %float %2182 %float_2
%2184 = OpCompositeExtract %float %2181 1
%2185 = OpFMul %float %2184 %float_2
%2186 = OpCompositeInsert %v2float %2183 %317 0
%2187 = OpCompositeInsert %v2float %2185 %2186 1
%2188 = OpCompositeExtract %float %2187 0
%2189 = OpCompositeExtract %float %244 0
%2190 = OpFSub %float %2188 %2189
%2191 = OpCompositeExtract %float %2187 1
%2192 = OpCompositeExtract %float %244 1
%2193 = OpFSub %float %2191 %2192
%2194 = OpCompositeInsert %v2float %2190 %317 0
%2195 = OpCompositeInsert %v2float %2193 %2194 1
%2196 = OpCompositeExtract %float %2195 0
%2197 = OpFMul %float %2196 %2178
%2198 = OpCompositeInsert %v2float %2197 %2195 0
%2199 = OpCompositeExtract %float %2198 0
%2200 = OpCompositeExtract %float %2198 0
%2201 = OpFMul %float %2199 %2200
%2202 = OpCompositeExtract %float %2198 1
%2203 = OpCompositeExtract %float %2198 1
%2204 = OpFMul %float %2202 %2203
%2205 = OpFAdd %float %2201 %2204
%2206 = OpFMul %float %2205 %2179
%2207 = OpFSub %float %float_1 %2206
%2208 = OpExtInst %float %1 FMax %float_0 %2207
OpReturnValue %2208
OpFunctionEnd
%ark_shaders__tonemap__tonemap_neutral = OpFunction %void None %117
%2209 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2210 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2211 = OpLabel
%2212 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2213 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2214 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2215 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2216 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2217 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2218 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2219 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2220 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2221 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2222 = OpVariable %_ptr_Function_macaw__Vec3 Function
OpCopyMemory %2212 %2210
%2223 = OpFunctionCall %float %ark_shaders__tonemap__calculate_luma %2212
%2224 = OpFNegate %float %2223
%2225 = OpExtInst %float %1 Exp %2224
%2226 = OpFSub %float %float_1 %2225
OpCopyMemory %2214 %2210
OpCopyMemory %2215 %2210
%2227 = OpFunctionCall %float %ark_shaders__tonemap__calculate_luma %2215
%2228 = OpExtInst %float %1 FMax %float_9_99999975en06 %2227
%2229 = OpFDiv %float %2226 %2228
%2230 = OpExtInst %float %1 FMax %float_0 %2229
%2231 = OpAccessChain %_ptr_Function_float %2214 %uint_0
%2232 = OpLoad %float %2231
%2233 = OpFMul %float %2232 %2230
%2234 = OpAccessChain %_ptr_Function_float %2214 %uint_1
%2235 = OpLoad %float %2234
%2236 = OpFMul %float %2235 %2230
%2237 = OpAccessChain %_ptr_Function_float %2214 %uint_2
%2238 = OpLoad %float %2237
%2239 = OpFMul %float %2238 %2230
%2240 = OpAccessChain %_ptr_Function_float %2213 %uint_0
OpStore %2240 %2233
%2241 = OpAccessChain %_ptr_Function_float %2213 %uint_1
OpStore %2241 %2236
%2242 = OpAccessChain %_ptr_Function_float %2213 %uint_2
OpStore %2242 %2239
OpCopyMemory %2217 %2210
%2243 = OpAccessChain %_ptr_Function_float %2217 %uint_0
%2244 = OpLoad %float %2243
%2245 = OpFNegate %float %2244
%2246 = OpAccessChain %_ptr_Function_float %2217 %uint_1
%2247 = OpLoad %float %2246
%2248 = OpFNegate %float %2247
%2249 = OpAccessChain %_ptr_Function_float %2217 %uint_2
%2250 = OpLoad %float %2249
%2251 = OpFNegate %float %2250
%2252 = OpCompositeInsert %macaw__Vec3 %2245 %313 0
%2253 = OpCompositeInsert %macaw__Vec3 %2248 %2252 1
%2254 = OpCompositeInsert %macaw__Vec3 %2251 %2253 2
%2255 = OpCompositeExtract %float %2254 0
%2256 = OpExtInst %float %1 Exp %2255
%2257 = OpCompositeExtract %float %2254 1
%2258 = OpExtInst %float %1 Exp %2257
%2259 = OpCompositeExtract %float %2254 2
%2260 = OpExtInst %float %1 Exp %2259
%2261 = OpCompositeInsert %macaw__Vec3 %2256 %313 0
%2262 = OpCompositeInsert %macaw__Vec3 %2258 %2261 1
%2263 = OpCompositeInsert %macaw__Vec3 %2260 %2262 2
%2264 = OpCompositeExtract %float %245 0
%2265 = OpCompositeExtract %float %2263 0
%2266 = OpFSub %float %2264 %2265
%2267 = OpCompositeExtract %float %245 1
%2268 = OpCompositeExtract %float %2263 1
%2269 = OpFSub %float %2267 %2268
%2270 = OpCompositeExtract %float %245 2
%2271 = OpCompositeExtract %float %2263 2
%2272 = OpFSub %float %2270 %2271
%2273 = OpAccessChain %_ptr_Function_float %2216 %uint_0
OpStore %2273 %2266
%2274 = OpAccessChain %_ptr_Function_float %2216 %uint_1
OpStore %2274 %2269
%2275 = OpAccessChain %_ptr_Function_float %2216 %uint_2
OpStore %2275 %2272
OpCopyMemory %2218 %2213
OpCopyMemory %2219 %2216
OpCopyMemory %2220 %2218
OpCopyMemory %2221 %2219
OpCopyMemory %2222 %2218
%2276 = OpAccessChain %_ptr_Function_float %2221 %uint_0
%2277 = OpLoad %float %2276
%2278 = OpAccessChain %_ptr_Function_float %2222 %uint_0
%2279 = OpLoad %float %2278
%2280 = OpFSub %float %2277 %2279
%2281 = OpAccessChain %_ptr_Function_float %2221 %uint_1
%2282 = OpLoad %float %2281
%2283 = OpAccessChain %_ptr_Function_float %2222 %uint_1
%2284 = OpLoad %float %2283
%2285 = OpFSub %float %2282 %2284
%2286 = OpAccessChain %_ptr_Function_float %2221 %uint_2
%2287 = OpLoad %float %2286
%2288 = OpAccessChain %_ptr_Function_float %2222 %uint_2
%2289 = OpLoad %float %2288
%2290 = OpFSub %float %2287 %2289
%2291 = OpCompositeInsert %macaw__Vec3 %2280 %313 0
%2292 = OpCompositeInsert %macaw__Vec3 %2285 %2291 1
%2293 = OpCompositeInsert %macaw__Vec3 %2290 %2292 2
%2294 = OpCompositeExtract %float %2293 0
%2295 = OpFMul %float %2294 %2226
%2296 = OpCompositeExtract %float %2293 1
%2297 = OpFMul %float %2296 %2226
%2298 = OpCompositeExtract %float %2293 2
%2299 = OpFMul %float %2298 %2226
%2300 = OpCompositeInsert %macaw__Vec3 %2295 %313 0
%2301 = OpCompositeInsert %macaw__Vec3 %2297 %2300 1
%2302 = OpCompositeInsert %macaw__Vec3 %2299 %2301 2
%2303 = OpAccessChain %_ptr_Function_float %2220 %uint_0
%2304 = OpLoad %float %2303
%2305 = OpCompositeExtract %float %2302 0
%2306 = OpFAdd %float %2304 %2305
%2307 = OpAccessChain %_ptr_Function_float %2220 %uint_1
%2308 = OpLoad %float %2307
%2309 = OpCompositeExtract %float %2302 1
%2310 = OpFAdd %float %2308 %2309
%2311 = OpAccessChain %_ptr_Function_float %2220 %uint_2
%2312 = OpLoad %float %2311
%2313 = OpCompositeExtract %float %2302 2
%2314 = OpFAdd %float %2312 %2313
%2315 = OpAccessChain %_ptr_Function_float %2209 %uint_0
OpStore %2315 %2306
%2316 = OpAccessChain %_ptr_Function_float %2209 %uint_1
OpStore %2316 %2310
%2317 = OpAccessChain %_ptr_Function_float %2209 %uint_2
OpStore %2317 %2314
OpReturn
OpFunctionEnd
%ark_shaders__tonemap__dither_pattern_at_coordinate = OpFunction %float None %243
%2318 = OpFunctionParameter %_ptr_Function_v2float
%2319 = OpLabel
%2320 = OpVariable %_ptr_Function__arr_int_uint_16 Function
%2321 = OpAccessChain %_ptr_Function_int %2320 %uint_0
OpStore %2321 %int_0
%2322 = OpAccessChain %_ptr_Function_int %2320 %uint_1
OpStore %2322 %int_8
%2323 = OpAccessChain %_ptr_Function_int %2320 %uint_2
OpStore %2323 %int_2
%2324 = OpAccessChain %_ptr_Function_int %2320 %uint_3
OpStore %2324 %int_10
%2325 = OpAccessChain %_ptr_Function_int %2320 %uint_4
OpStore %2325 %int_12
%2326 = OpAccessChain %_ptr_Function_int %2320 %uint_5
OpStore %2326 %int_4
%2327 = OpAccessChain %_ptr_Function_int %2320 %uint_6
OpStore %2327 %int_14
%2328 = OpAccessChain %_ptr_Function_int %2320 %uint_7
OpStore %2328 %int_6
%2329 = OpAccessChain %_ptr_Function_int %2320 %uint_8
OpStore %2329 %int_3
%2330 = OpAccessChain %_ptr_Function_int %2320 %uint_9
OpStore %2330 %int_11
%2331 = OpAccessChain %_ptr_Function_int %2320 %uint_10
OpStore %2331 %int_1
%2332 = OpAccessChain %_ptr_Function_int %2320 %uint_11
OpStore %2332 %int_9
%2333 = OpAccessChain %_ptr_Function_int %2320 %uint_12
OpStore %2333 %int_15
%2334 = OpAccessChain %_ptr_Function_int %2320 %uint_13
OpStore %2334 %int_7
%2335 = OpAccessChain %_ptr_Function_int %2320 %uint_14
OpStore %2335 %int_13
%2336 = OpAccessChain %_ptr_Function_int %2320 %uint_15
OpStore %2336 %int_5
%2337 = OpAccessChain %_ptr_Function_float %2318 %uint_0
%2338 = OpLoad %float %2337
%2339 = OpBitcast %float %uint_3472883712
%2340 = OpBitcast %float %uint_1325400063
%2341 = OpConvertFToS %int %2338
%2342 = OpFUnordLessThan %bool %2338 %2339
%2343 = OpFOrdGreaterThan %bool %2338 %2340
%2344 = OpSelect %int %2342 %int_n2147483648 %2341
%2345 = OpSelect %int %2343 %int_2147483647 %2344
%2346 = OpFOrdEqual %bool %2338 %2338
%2347 = OpSelect %int %2346 %2345 %int_0
%2348 = OpBitwiseAnd %int %2347 %int_3
%2349 = OpAccessChain %_ptr_Function_float %2318 %uint_1
%2350 = OpLoad %float %2349
%2351 = OpBitcast %float %uint_3472883712
%2352 = OpBitcast %float %uint_1325400063
%2353 = OpConvertFToS %int %2350
%2354 = OpFUnordLessThan %bool %2350 %2351
%2355 = OpFOrdGreaterThan %bool %2350 %2352
%2356 = OpSelect %int %2354 %int_n2147483648 %2353
%2357 = OpSelect %int %2355 %int_2147483647 %2356
%2358 = OpFOrdEqual %bool %2350 %2350
%2359 = OpSelect %int %2358 %2357 %int_0
%2360 = OpBitwiseAnd %int %int_2 %int_31
%2361 = OpShiftLeftLogical %int %2359 %2360
%2362 = OpBitwiseAnd %int %2361 %int_12
%2363 = OpIAdd %int %2348 %2362
%2364 = OpBitcast %uint %2363
%2365 = OpULessThan %bool %2364 %uint_16
OpSelectionMerge %2366 None
OpBranchConditional %2365 %2367 %2368
%2367 = OpLabel
%2369 = OpInBoundsAccessChain %_ptr_Function_int %2320 %2364
%2370 = OpLoad %int %2369
%2371 = OpConvertSToF %float %2370
%2372 = OpFSub %float %2371 %float_7_5
%2373 = OpFDiv %float %2372 %float_3825
OpReturnValue %2373
%2368 = OpLabel
OpBranch %2374
%2374 = OpLabel
OpBranch %2375
%2375 = OpLabel
%2376 = OpPhi %bool %true_9 %2374 %true_9 %2377
OpLoopMerge %2378 %2377 None
OpBranchConditional %2376 %2379 %2378
%2379 = OpLabel
OpBranch %2377
%2377 = OpLabel
OpBranch %2375
%2378 = OpLabel
OpUnreachable
%2366 = OpLabel
OpUnreachable
OpFunctionEnd
%76 = OpFunction %void None %145
%2380 = OpLabel
%2381 = OpVariable %_ptr_Function_149 Function
%2382 = OpVariable %_ptr_Function_191 Function
%2383 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2384 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2385 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2386 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2387 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2388 = OpVariable %_ptr_Function_v4float Function
%2389 = OpVariable %_ptr_Function_v2float Function
%2390 = OpVariable %_ptr_Function_v4float Function
%2391 = OpVariable %_ptr_Function_v3float Function
%2392 = OpVariable %_ptr_Function_v2float Function
%2393 = OpVariable %_ptr_Function_v2float Function
%2394 = OpAccessChain %_ptr_PushConstant_float %push_constants_0 %uint_0
%2395 = OpLoad %float %2394
%2396 = OpAccessChain %_ptr_PushConstant_float %push_constants_0 %uint_1
%2397 = OpLoad %float %2396
%2398 = OpCompositeInsert %tonemap__TonemapConstants %2395 %248 0
%2399 = OpCompositeInsert %tonemap__TonemapConstants %2397 %2398 1
%2400 = OpCompositeExtract %float %2399 0
%2401 = OpCompositeExtract %float %2399 1
%2402 = OpLoad %152 %sampler_4
%2403 = OpLoad %v3float %uv_0
%2404 = OpCompositeExtract %float %2403 0
%2405 = OpCompositeExtract %float %2403 1
%2406 = OpCompositeInsert %v2float %2404 %317 0
%2407 = OpCompositeInsert %v2float %2405 %2406 1
%2408 = OpLoad %149 %img
OpStore %2381 %2408
OpStore %2389 %2407
%2409 = OpFunctionCall %void %_spirv_std__textures__Image2d___sample %2388 %2381 %2402 %2389
%2410 = OpLoad %v4float %2388
%2411 = OpLoad %191 %bloom
OpStore %2382 %2411
%2412 = OpCompositeExtract %float %2407 0
%2413 = OpCompositeExtract %float %2407 1
%2414 = OpCompositeInsert %macaw__Vec3 %2412 %313 0
%2415 = OpCompositeInsert %macaw__Vec3 %2413 %2414 1
%2416 = OpCompositeInsert %macaw__Vec3 %float_0 %2415 2
%2417 = OpCompositeExtract %float %2416 0
%2418 = OpCompositeExtract %float %2416 1
%2419 = OpCompositeExtract %float %2416 2
%2420 = OpCompositeInsert %v3float %2417 %315 0
%2421 = OpCompositeInsert %v3float %2418 %2420 1
%2422 = OpCompositeInsert %v3float %2419 %2421 2
OpStore %2391 %2422
%2423 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %2390 %2382 %2402 %2391
%2424 = OpLoad %v4float %2390
%2425 = OpCompositeExtract %float %2424 0
%2426 = OpCompositeExtract %float %2410 0
%2427 = OpFSub %float %2425 %2426
%2428 = OpCompositeExtract %float %2424 1
%2429 = OpCompositeExtract %float %2410 1
%2430 = OpFSub %float %2428 %2429
%2431 = OpCompositeExtract %float %2424 2
%2432 = OpCompositeExtract %float %2410 2
%2433 = OpFSub %float %2431 %2432
%2434 = OpCompositeExtract %float %2424 3
%2435 = OpCompositeExtract %float %2410 3
%2436 = OpFSub %float %2434 %2435
%2437 = OpCompositeInsert %v4float %2427 %314 0
%2438 = OpCompositeInsert %v4float %2430 %2437 1
%2439 = OpCompositeInsert %v4float %2433 %2438 2
%2440 = OpCompositeInsert %v4float %2436 %2439 3
%2441 = OpCompositeExtract %float %2440 0
%2442 = OpFMul %float %2441 %float_0_0599999987
%2443 = OpCompositeExtract %float %2440 1
%2444 = OpFMul %float %2443 %float_0_0599999987
%2445 = OpCompositeExtract %float %2440 2
%2446 = OpFMul %float %2445 %float_0_0599999987
%2447 = OpCompositeExtract %float %2440 3
%2448 = OpFMul %float %2447 %float_0_0599999987
%2449 = OpCompositeInsert %v4float %2442 %314 0
%2450 = OpCompositeInsert %v4float %2444 %2449 1
%2451 = OpCompositeInsert %v4float %2446 %2450 2
%2452 = OpCompositeInsert %v4float %2448 %2451 3
%2453 = OpCompositeExtract %float %2410 0
%2454 = OpCompositeExtract %float %2452 0
%2455 = OpFAdd %float %2453 %2454
%2456 = OpCompositeExtract %float %2410 1
%2457 = OpCompositeExtract %float %2452 1
%2458 = OpFAdd %float %2456 %2457
%2459 = OpCompositeExtract %float %2410 2
%2460 = OpCompositeExtract %float %2452 2
%2461 = OpFAdd %float %2459 %2460
%2462 = OpCompositeExtract %float %2410 3
%2463 = OpCompositeExtract %float %2452 3
%2464 = OpFAdd %float %2462 %2463
%2465 = OpCompositeInsert %v4float %2455 %314 0
%2466 = OpCompositeInsert %v4float %2458 %2465 1
%2467 = OpCompositeInsert %v4float %2461 %2466 2
%2468 = OpCompositeInsert %v4float %2464 %2467 3
OpStore %2392 %2407
%2469 = OpFunctionCall %float %ark_shaders__tonemap__vignette %2392 %2401 %float_0_100000001
%2470 = OpCompositeExtract %float %2468 0
%2471 = OpCompositeExtract %float %2468 1
%2472 = OpCompositeExtract %float %2468 2
%2473 = OpCompositeInsert %macaw__Vec3 %2470 %313 0
%2474 = OpCompositeInsert %macaw__Vec3 %2471 %2473 1
%2475 = OpCompositeInsert %macaw__Vec3 %2472 %2474 2
%2476 = OpFMul %float %2400 %2469
%2477 = OpCompositeExtract %float %2475 0
%2478 = OpFMul %float %2477 %2476
%2479 = OpCompositeExtract %float %2475 1
%2480 = OpFMul %float %2479 %2476
%2481 = OpCompositeExtract %float %2475 2
%2482 = OpFMul %float %2481 %2476
%2483 = OpAccessChain %_ptr_Function_float %2384 %uint_0
OpStore %2483 %2478
%2484 = OpAccessChain %_ptr_Function_float %2384 %uint_1
OpStore %2484 %2480
%2485 = OpAccessChain %_ptr_Function_float %2384 %uint_2
OpStore %2485 %2482
%2486 = OpFunctionCall %void %ark_shaders__tonemap__tonemap_neutral %2383 %2384
%2487 = OpLoad %v4float %in_frag_coord
%2488 = OpCompositeExtract %float %2487 0
%2489 = OpCompositeExtract %float %2487 1
%2490 = OpCompositeInsert %v2float %2488 %317 0
%2491 = OpCompositeInsert %v2float %2489 %2490 1
OpStore %2393 %2491
%2492 = OpFunctionCall %float %ark_shaders__tonemap__dither_pattern_at_coordinate %2393
OpCopyMemory %2386 %2383
%2493 = OpCompositeInsert %macaw__Vec3 %2492 %313 0
%2494 = OpCompositeInsert %macaw__Vec3 %2492 %2493 1
%2495 = OpCompositeInsert %macaw__Vec3 %2492 %2494 2
%2496 = OpCompositeExtract %float %2495 0
%2497 = OpFMul %float %2496 %float_1
%2498 = OpCompositeExtract %float %2495 1
%2499 = OpFMul %float %2498 %float_1
%2500 = OpCompositeExtract %float %2495 2
%2501 = OpFMul %float %2500 %float_1
%2502 = OpCompositeInsert %macaw__Vec3 %2497 %313 0
%2503 = OpCompositeInsert %macaw__Vec3 %2499 %2502 1
%2504 = OpCompositeInsert %macaw__Vec3 %2501 %2503 2
%2505 = OpAccessChain %_ptr_Function_float %2386 %uint_0
%2506 = OpLoad %float %2505
%2507 = OpCompositeExtract %float %2504 0
%2508 = OpFAdd %float %2506 %2507
%2509 = OpAccessChain %_ptr_Function_float %2386 %uint_1
%2510 = OpLoad %float %2509
%2511 = OpCompositeExtract %float %2504 1
%2512 = OpFAdd %float %2510 %2511
%2513 = OpAccessChain %_ptr_Function_float %2386 %uint_2
%2514 = OpLoad %float %2513
%2515 = OpCompositeExtract %float %2504 2
%2516 = OpFAdd %float %2514 %2515
%2517 = OpAccessChain %_ptr_Function_float %2385 %uint_0
OpStore %2517 %2508
%2518 = OpAccessChain %_ptr_Function_float %2385 %uint_1
OpStore %2518 %2512
%2519 = OpAccessChain %_ptr_Function_float %2385 %uint_2
OpStore %2519 %2516
OpCopyMemory %2387 %2385
%2520 = OpAccessChain %_ptr_Function_float %2387 %uint_0
%2521 = OpLoad %float %2520
%2522 = OpAccessChain %_ptr_Function_float %2387 %uint_1
%2523 = OpLoad %float %2522
%2524 = OpAccessChain %_ptr_Function_float %2387 %uint_2
%2525 = OpLoad %float %2524
%2526 = OpCompositeInsert %v4float %2521 %314 0
%2527 = OpCompositeInsert %v4float %2523 %2526 1
%2528 = OpCompositeInsert %v4float %2525 %2527 2
%2529 = OpCompositeInsert %v4float %float_1 %2528 3
OpStore %output_5 %2529
OpReturn
OpFunctionEnd
%84 = OpFunction %void None %145
%2530 = OpLabel
%2531 = OpVariable %_ptr_Function_191 Function
%2532 = OpVariable %_ptr_Function_191 Function
%2533 = OpVariable %_ptr_Function_191 Function
%2534 = OpVariable %_ptr_Function_191 Function
%2535 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2536 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2537 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2538 = OpVariable %_ptr_Function_macaw__Vec3 Function
%2539 = OpVariable %_ptr_Function_v4float Function
%2540 = OpVariable %_ptr_Function_v3float Function
%2541 = OpVariable %_ptr_Function_v4float Function
%2542 = OpVariable %_ptr_Function_v3float Function
%2543 = OpVariable %_ptr_Function_v4float Function
%2544 = OpVariable %_ptr_Function_v3float Function
%2545 = OpVariable %_ptr_Function_v4float Function
%2546 = OpVariable %_ptr_Function_v3float Function
%2547 = OpAccessChain %_ptr_PushConstant_float %push_constants_1 %uint_0
%2548 = OpLoad %float %2547
%2549 = OpAccessChain %_ptr_PushConstant_float %push_constants_1 %uint_1
%2550 = OpLoad %float %2549
%2551 = OpCompositeInsert %tonemap__TonemapConstants %2548 %248 0
%2552 = OpCompositeInsert %tonemap__TonemapConstants %2550 %2551 1
%2553 = OpCompositeExtract %float %2552 0
%2554 = OpCompositeExtract %float %2552 1
%2555 = OpLoad %152 %sampler_5
%2556 = OpLoad %v3float %uv_1
%2557 = OpCompositeExtract %float %2556 0
%2558 = OpCompositeExtract %float %2556 1
%2559 = OpCompositeInsert %v2float %2557 %317 0
%2560 = OpCompositeInsert %v2float %2558 %2559 1
%2561 = OpLoad %191 %img_0
OpStore %2531 %2561
%2562 = OpCompositeExtract %float %2560 0
%2563 = OpCompositeExtract %float %2560 1
%2564 = OpCompositeInsert %macaw__Vec3 %2562 %313 0
%2565 = OpCompositeInsert %macaw__Vec3 %2563 %2564 1
%2566 = OpCompositeInsert %macaw__Vec3 %float_0 %2565 2
%2567 = OpCompositeExtract %float %2566 0
%2568 = OpCompositeExtract %float %2566 1
%2569 = OpCompositeExtract %float %2566 2
%2570 = OpCompositeInsert %v3float %2567 %315 0
%2571 = OpCompositeInsert %v3float %2568 %2570 1
%2572 = OpCompositeInsert %v3float %2569 %2571 2
OpStore %2540 %2572
%2573 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %2539 %2531 %2555 %2540
%2574 = OpLoad %v4float %2539
%2575 = OpLoad %191 %bloom_0
OpStore %2532 %2575
%2576 = OpCompositeExtract %float %2560 0
%2577 = OpCompositeExtract %float %2560 1
%2578 = OpCompositeInsert %macaw__Vec3 %2576 %313 0
%2579 = OpCompositeInsert %macaw__Vec3 %2577 %2578 1
%2580 = OpCompositeInsert %macaw__Vec3 %float_0 %2579 2
%2581 = OpCompositeExtract %float %2580 0
%2582 = OpCompositeExtract %float %2580 1
%2583 = OpCompositeExtract %float %2580 2
%2584 = OpCompositeInsert %v3float %2581 %315 0
%2585 = OpCompositeInsert %v3float %2582 %2584 1
%2586 = OpCompositeInsert %v3float %2583 %2585 2
OpStore %2542 %2586
%2587 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %2541 %2532 %2555 %2542
%2588 = OpLoad %v4float %2541
%2589 = OpCompositeExtract %float %2588 0
%2590 = OpCompositeExtract %float %2574 0
%2591 = OpFSub %float %2589 %2590
%2592 = OpCompositeExtract %float %2588 1
%2593 = OpCompositeExtract %float %2574 1
%2594 = OpFSub %float %2592 %2593
%2595 = OpCompositeExtract %float %2588 2
%2596 = OpCompositeExtract %float %2574 2
%2597 = OpFSub %float %2595 %2596
%2598 = OpCompositeExtract %float %2588 3
%2599 = OpCompositeExtract %float %2574 3
%2600 = OpFSub %float %2598 %2599
%2601 = OpCompositeInsert %v4float %2591 %314 0
%2602 = OpCompositeInsert %v4float %2594 %2601 1
%2603 = OpCompositeInsert %v4float %2597 %2602 2
%2604 = OpCompositeInsert %v4float %2600 %2603 3
%2605 = OpCompositeExtract %float %2604 0
%2606 = OpFMul %float %2605 %float_0_0599999987
%2607 = OpCompositeExtract %float %2604 1
%2608 = OpFMul %float %2607 %float_0_0599999987
%2609 = OpCompositeExtract %float %2604 2
%2610 = OpFMul %float %2609 %float_0_0599999987
%2611 = OpCompositeExtract %float %2604 3
%2612 = OpFMul %float %2611 %float_0_0599999987
%2613 = OpCompositeInsert %v4float %2606 %314 0
%2614 = OpCompositeInsert %v4float %2608 %2613 1
%2615 = OpCompositeInsert %v4float %2610 %2614 2
%2616 = OpCompositeInsert %v4float %2612 %2615 3
%2617 = OpCompositeExtract %float %2574 0
%2618 = OpCompositeExtract %float %2616 0
%2619 = OpFAdd %float %2617 %2618
%2620 = OpCompositeExtract %float %2574 1
%2621 = OpCompositeExtract %float %2616 1
%2622 = OpFAdd %float %2620 %2621
%2623 = OpCompositeExtract %float %2574 2
%2624 = OpCompositeExtract %float %2616 2
%2625 = OpFAdd %float %2623 %2624
%2626 = OpCompositeExtract %float %2574 3
%2627 = OpCompositeExtract %float %2616 3
%2628 = OpFAdd %float %2626 %2627
%2629 = OpCompositeInsert %v4float %2619 %314 0
%2630 = OpCompositeInsert %v4float %2622 %2629 1
%2631 = OpCompositeInsert %v4float %2625 %2630 2
%2632 = OpCompositeInsert %v4float %2628 %2631 3
%2633 = OpLoad %191 %img_0
OpStore %2533 %2633
%2634 = OpCompositeExtract %float %2560 0
%2635 = OpCompositeExtract %float %2560 1
%2636 = OpCompositeInsert %macaw__Vec3 %2634 %313 0
%2637 = OpCompositeInsert %macaw__Vec3 %2635 %2636 1
%2638 = OpCompositeInsert %macaw__Vec3 %float_1 %2637 2
%2639 = OpCompositeExtract %float %2638 0
%2640 = OpCompositeExtract %float %2638 1
%2641 = OpCompositeExtract %float %2638 2
%2642 = OpCompositeInsert %v3float %2639 %315 0
%2643 = OpCompositeInsert %v3float %2640 %2642 1
%2644 = OpCompositeInsert %v3float %2641 %2643 2
OpStore %2544 %2644
%2645 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %2543 %2533 %2555 %2544
%2646 = OpLoad %v4float %2543
%2647 = OpLoad %191 %bloom_0
OpStore %2534 %2647
%2648 = OpCompositeExtract %float %2560 0
%2649 = OpCompositeExtract %float %2560 1
%2650 = OpCompositeInsert %macaw__Vec3 %2648 %313 0
%2651 = OpCompositeInsert %macaw__Vec3 %2649 %2650 1
%2652 = OpCompositeInsert %macaw__Vec3 %float_1 %2651 2
%2653 = OpCompositeExtract %float %2652 0
%2654 = OpCompositeExtract %float %2652 1
%2655 = OpCompositeExtract %float %2652 2
%2656 = OpCompositeInsert %v3float %2653 %315 0
%2657 = OpCompositeInsert %v3float %2654 %2656 1
%2658 = OpCompositeInsert %v3float %2655 %2657 2
OpStore %2546 %2658
%2659 = OpFunctionCall %void %_spirv_std__textures__Image2dArray___sample %2545 %2534 %2555 %2546
%2660 = OpLoad %v4float %2545
%2661 = OpCompositeExtract %float %2660 0
%2662 = OpCompositeExtract %float %2646 0
%2663 = OpFSub %float %2661 %2662
%2664 = OpCompositeExtract %float %2660 1
%2665 = OpCompositeExtract %float %2646 1
%2666 = OpFSub %float %2664 %2665
%2667 = OpCompositeExtract %float %2660 2
%2668 = OpCompositeExtract %float %2646 2
%2669 = OpFSub %float %2667 %2668
%2670 = OpCompositeExtract %float %2660 3
%2671 = OpCompositeExtract %float %2646 3
%2672 = OpFSub %float %2670 %2671
%2673 = OpCompositeInsert %v4float %2663 %314 0
%2674 = OpCompositeInsert %v4float %2666 %2673 1
%2675 = OpCompositeInsert %v4float %2669 %2674 2
%2676 = OpCompositeInsert %v4float %2672 %2675 3
%2677 = OpCompositeExtract %float %2676 0
%2678 = OpFMul %float %2677 %float_0_0599999987
%2679 = OpCompositeExtract %float %2676 1
%2680 = OpFMul %float %2679 %float_0_0599999987
%2681 = OpCompositeExtract %float %2676 2
%2682 = OpFMul %float %2681 %float_0_0599999987
%2683 = OpCompositeExtract %float %2676 3
%2684 = OpFMul %float %2683 %float_0_0599999987
%2685 = OpCompositeInsert %v4float %2678 %314 0
%2686 = OpCompositeInsert %v4float %2680 %2685 1
%2687 = OpCompositeInsert %v4float %2682 %2686 2
%2688 = OpCompositeInsert %v4float %2684 %2687 3
%2689 = OpCompositeExtract %float %2646 0
%2690 = OpCompositeExtract %float %2688 0
%2691 = OpFAdd %float %2689 %2690
%2692 = OpCompositeExtract %float %2646 1
%2693 = OpCompositeExtract %float %2688 1
%2694 = OpFAdd %float %2692 %2693
%2695 = OpCompositeExtract %float %2646 2
%2696 = OpCompositeExtract %float %2688 2
%2697 = OpFAdd %float %2695 %2696
%2698 = OpCompositeExtract %float %2646 3
%2699 = OpCompositeExtract %float %2688 3
%2700 = OpFAdd %float %2698 %2699
%2701 = OpCompositeInsert %v4float %2691 %314 0
%2702 = OpCompositeInsert %v4float %2694 %2701 1
%2703 = OpCompositeInsert %v4float %2697 %2702 2
%2704 = OpCompositeInsert %v4float %2700 %2703 3
%2705 = OpCompositeExtract %float %2632 0
%2706 = OpCompositeExtract %float %2632 1
%2707 = OpCompositeExtract %float %2632 2
%2708 = OpCompositeInsert %macaw__Vec3 %2705 %313 0
%2709 = OpCompositeInsert %macaw__Vec3 %2706 %2708 1
%2710 = OpCompositeInsert %macaw__Vec3 %2707 %2709 2
%2711 = OpCompositeExtract %float %2710 0
%2712 = OpFMul %float %2711 %2553
%2713 = OpCompositeExtract %float %2710 1
%2714 = OpFMul %float %2713 %2553
%2715 = OpCompositeExtract %float %2710 2
%2716 = OpFMul %float %2715 %2553
%2717 = OpAccessChain %_ptr_Function_float %2536 %uint_0
OpStore %2717 %2712
%2718 = OpAccessChain %_ptr_Function_float %2536 %uint_1
OpStore %2718 %2714
%2719 = OpAccessChain %_ptr_Function_float %2536 %uint_2
OpStore %2719 %2716
%2720 = OpFunctionCall %void %ark_shaders__tonemap__tonemap_neutral %2535 %2536
%2721 = OpAccessChain %_ptr_Function_float %2535 %uint_0
%2722 = OpLoad %float %2721
%2723 = OpAccessChain %_ptr_Function_float %2535 %uint_1
%2724 = OpLoad %float %2723
%2725 = OpAccessChain %_ptr_Function_float %2535 %uint_2
%2726 = OpLoad %float %2725
%2727 = OpCompositeInsert %v4float %2722 %314 0
%2728 = OpCompositeInsert %v4float %2724 %2727 1
%2729 = OpCompositeInsert %v4float %2726 %2728 2
%2730 = OpCompositeInsert %v4float %float_1 %2729 3
OpStore %output_l %2730
%2731 = OpCompositeExtract %float %2704 0
%2732 = OpCompositeExtract %float %2704 1
%2733 = OpCompositeExtract %float %2704 2
%2734 = OpCompositeInsert %macaw__Vec3 %2731 %313 0
%2735 = OpCompositeInsert %macaw__Vec3 %2732 %2734 1
%2736 = OpCompositeInsert %macaw__Vec3 %2733 %2735 2
%2737 = OpCompositeExtract %float %2736 0
%2738 = OpFMul %float %2737 %2553
%2739 = OpCompositeExtract %float %2736 1
%2740 = OpFMul %float %2739 %2553
%2741 = OpCompositeExtract %float %2736 2
%2742 = OpFMul %float %2741 %2553
%2743 = OpAccessChain %_ptr_Function_float %2538 %uint_0
OpStore %2743 %2738
%2744 = OpAccessChain %_ptr_Function_float %2538 %uint_1
OpStore %2744 %2740
%2745 = OpAccessChain %_ptr_Function_float %2538 %uint_2
OpStore %2745 %2742
%2746 = OpFunctionCall %void %ark_shaders__tonemap__tonemap_neutral %2537 %2538
%2747 = OpAccessChain %_ptr_Function_float %2537 %uint_0
%2748 = OpLoad %float %2747
%2749 = OpAccessChain %_ptr_Function_float %2537 %uint_1
%2750 = OpLoad %float %2749
%2751 = OpAccessChain %_ptr_Function_float %2537 %uint_2
%2752 = OpLoad %float %2751
%2753 = OpCompositeInsert %v4float %2748 %314 0
%2754 = OpCompositeInsert %v4float %2750 %2753 1
%2755 = OpCompositeInsert %v4float %2752 %2754 2
%2756 = OpCompositeInsert %v4float %float_1 %2755 3
OpStore %output_r %2756
OpReturn
OpFunctionEnd
%_f32_as_macaw__float_ext__FloatExt___step_select = OpFunction %float None %286
%2757 = OpFunctionParameter %float
%2758 = OpFunctionParameter %float
%2759 = OpFunctionParameter %float
%2760 = OpFunctionParameter %float
%2761 = OpLabel
%2762 = OpFOrdLessThan %bool %2757 %2758
OpSelectionMerge %2763 None
OpBranchConditional %2762 %2764 %2765
%2764 = OpLabel
OpBranch %2763
%2765 = OpLabel
OpBranch %2763
%2763 = OpLabel
%2766 = OpPhi %float %2759 %2764 %2760 %2765
OpReturnValue %2766
OpFunctionEnd
%_glam__f32__vec3__Vec3_as_macaw__vec3_ext__Vec3Ext___step_select = OpFunction %void None %130
%2767 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2768 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2769 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2770 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2771 = OpFunctionParameter %_ptr_Function_macaw__Vec3
%2772 = OpLabel
%2773 = OpAccessChain %_ptr_Function_float %2768 %uint_0
%2774 = OpLoad %float %2773
%2775 = OpAccessChain %_ptr_Function_float %2769 %uint_0
%2776 = OpLoad %float %2775
%2777 = OpAccessChain %_ptr_Function_float %2770 %uint_0
%2778 = OpLoad %float %2777
%2779 = OpAccessChain %_ptr_Function_float %2771 %uint_0
%2780 = OpLoad %float %2779
%2781 = OpFunctionCall %float %_f32_as_macaw__float_ext__FloatExt___step_select %2774 %2776 %2778 %2780
%2782 = OpAccessChain %_ptr_Function_float %2768 %uint_1
%2783 = OpLoad %float %2782
%2784 = OpAccessChain %_ptr_Function_float %2769 %uint_1
%2785 = OpLoad %float %2784
%2786 = OpAccessChain %_ptr_Function_float %2770 %uint_1
%2787 = OpLoad %float %2786
%2788 = OpAccessChain %_ptr_Function_float %2771 %uint_1
%2789 = OpLoad %float %2788
%2790 = OpFunctionCall %float %_f32_as_macaw__float_ext__FloatExt___step_select %2783 %2785 %2787 %2789
%2791 = OpAccessChain %_ptr_Function_float %2768 %uint_2
%2792 = OpLoad %float %2791
%2793 = OpAccessChain %_ptr_Function_float %2769 %uint_2
%2794 = OpLoad %float %2793
%2795 = OpAccessChain %_ptr_Function_float %2770 %uint_2
%2796 = OpLoad %float %2795
%2797 = OpAccessChain %_ptr_Function_float %2771 %uint_2
%2798 = OpLoad %float %2797
%2799 = OpFunctionCall %float %_f32_as_macaw__float_ext__FloatExt___step_select %2792 %2794 %2796 %2798
%2800 = OpAccessChain %_ptr_Function_float %2767 %uint_0
OpStore %2800 %2781
%2801 = OpAccessChain %_ptr_Function_float %2767 %uint_1
OpStore %2801 %2790
%2802 = OpAccessChain %_ptr_Function_float %2767 %uint_2
OpStore %2802 %2799
OpReturn
OpFunctionEnd
%_spirv_std__textures__Image2d___sample = OpFunction %void None %166
%2803 = OpFunctionParameter %_ptr_Function_v4float
%2804 = OpFunctionParameter %_ptr_Function_149
%2805 = OpFunctionParameter %152
%2806 = OpFunctionParameter %_ptr_Function_v2float
%2807 = OpLabel
%2808 = OpAccessChain %_ptr_Function_float %2803 %uint_0
OpStore %2808 %float_0
%2809 = OpAccessChain %_ptr_Function_float %2803 %uint_1
OpStore %2809 %float_0
%2810 = OpAccessChain %_ptr_Function_float %2803 %uint_2
OpStore %2810 %float_0
%2811 = OpAccessChain %_ptr_Function_float %2803 %uint_3
OpStore %2811 %float_0
%2812 = OpLoad %149 %2804
%2813 = OpLoad %v2float %2806
%2814 = OpSampledImage %287 %2812 %2805
%2815 = OpImageSampleImplicitLod %v4float %2814 %2813
OpStore %2803 %2815
OpReturn
OpFunctionEnd
%_spirv_std__textures__Image2dArray___sample = OpFunction %void None %199
%2816 = OpFunctionParameter %_ptr_Function_v4float
%2817 = OpFunctionParameter %_ptr_Function_191
%2818 = OpFunctionParameter %152
%2819 = OpFunctionParameter %_ptr_Function_v3float
%2820 = OpLabel
%2821 = OpAccessChain %_ptr_Function_float %2816 %uint_0
OpStore %2821 %float_0
%2822 = OpAccessChain %_ptr_Function_float %2816 %uint_1
OpStore %2822 %float_0
%2823 = OpAccessChain %_ptr_Function_float %2816 %uint_2
OpStore %2823 %float_0
%2824 = OpAccessChain %_ptr_Function_float %2816 %uint_3
OpStore %2824 %float_0
%2825 = OpLoad %191 %2817
%2826 = OpLoad %v3float %2819
%2827 = OpSampledImage %288 %2825 %2818
%2828 = OpImageSampleImplicitLod %v4float %2827 %2826
OpStore %2816 %2828
OpReturn
OpFunctionEnd
Those could modeled with binding arrays, if their usage was well-behaved.
With https://github.com/gfx-rs/naga/pull/2199 merged we are getting closer to get this working.
However, considering this PR is now 2 years old I imagine there have been improvements and fixes in rust-gpu's SPIR-V codegen that the binary in this PR lacks.
@repi could you regenerate the testcase or provide new ones?
They can go in the tests/in/spv dir and added to the convert_spv_all fn in tests/snapshots.rs.
(Ideally, they would be separate so that they are easier to debug.)
did a quick test with our latest set of shaders and they all fail now on UnsupportedExtension("SPV_EXT_descriptor_indexing")
Hmm, I think we forgot to add it here
https://github.com/gfx-rs/naga/blob/a7b52b8663a09506dc417e9149d64abcf637f9f4/src/front/spv/mod.rs#L79-L83
although, which capabilities do the shaders need that are enabled by that extension?
@Patryk27 shouldn't we now support some of those capabilities in the frontend?
here is an one compute shader as an example blur-blur_cs.spv.zip
@Patryk27 shouldn't we now support some of those capabilities in the frontend?
Ah yes, it looks like we at the very least support RuntimeDescriptorArrayEXT now; I'm not sure on the other capabilities there 🤔
here is an one compute shader as an example blur-blur_cs.spv.zip
We are missing
SPV_EXT_descriptor_indexing
RuntimeDescriptorArray
and
StorageImageWriteWithoutFormat.
thanks! once that is implemented I can update this PR to include all of our shaders as individual .spv files and include in the test suite.
Hello, thank you for your PR against Naga!
As part of https://github.com/gfx-rs/wgpu/issues/4231, we have moved development of Naga into the wgpu repository in the Naga subfolder. We have transferred all issues, but we are unable to automatically transfer PRs.
As such, please recreate your PR against the wgpu repository. We apologize for the inconvenience this causes, but will make contributing to both projects more streamlined going forward.
We are leaving PRs open, but once they are transferred, please close the original Naga PR.