➜ Downloads /Applications/Games/Emulators/Playstation\ 4/shadps4.app/Contents/MacOS/shadps4 [mvk-info] MoltenVK version 1.2.12, supporting Vulkan version 1.2.303. The following 109 Vulkan extensions are supported: VK_KHR_16bit_storage v1 VK_KHR_8bit_storage v1 VK_KHR_bind_memory2 v1 VK_KHR_buffer_device_address v1 VK_KHR_calibrated_timestamps v1 VK_KHR_copy_commands2 v1 VK_KHR_create_renderpass2 v1 VK_KHR_dedicated_allocation v3 VK_KHR_deferred_host_operations v4 VK_KHR_depth_stencil_resolve v1 VK_KHR_descriptor_update_template v1 VK_KHR_device_group v4 VK_KHR_device_group_creation v1 VK_KHR_driver_properties v1 VK_KHR_dynamic_rendering v1 VK_KHR_external_fence v1 VK_KHR_external_fence_capabilities v1 VK_KHR_external_memory v1 VK_KHR_external_memory_capabilities v1 VK_KHR_external_semaphore v1 VK_KHR_external_semaphore_capabilities v1 VK_KHR_fragment_shader_barycentric v1 VK_KHR_format_feature_flags2 v2 VK_KHR_get_memory_requirements2 v1 VK_KHR_get_physical_device_properties2 v2 VK_KHR_get_surface_capabilities2 v1 VK_KHR_imageless_framebuffer v1 VK_KHR_image_format_list v1 VK_KHR_incremental_present v2 VK_KHR_maintenance1 v2 VK_KHR_maintenance2 v1 VK_KHR_maintenance3 v1 VK_KHR_map_memory2 v1 VK_KHR_multiview v1 VK_KHR_portability_subset v1 VK_KHR_push_descriptor v2 VK_KHR_relaxed_block_layout v1 VK_KHR_sampler_mirror_clamp_to_edge v3 VK_KHR_sampler_ycbcr_conversion v14 VK_KHR_separate_depth_stencil_layouts v1 VK_KHR_shader_draw_parameters v1 VK_KHR_shader_float_controls v4 VK_KHR_shader_float16_int8 v1 VK_KHR_shader_integer_dot_product v1 VK_KHR_shader_non_semantic_info v1 VK_KHR_shader_subgroup_extended_types v1 VK_KHR_spirv_1_4 v1 VK_KHR_storage_buffer_storage_class v1 VK_KHR_surface v25 VK_KHR_swapchain v70 VK_KHR_swapchain_mutable_format v1 VK_KHR_synchronization2 v1 VK_KHR_timeline_semaphore v2 VK_KHR_uniform_buffer_standard_layout v1 VK_KHR_variable_pointers v1 VK_KHR_vertex_attribute_divisor v1 VK_EXT_4444_formats v1 VK_EXT_buffer_device_address v2 VK_EXT_calibrated_timestamps v2 VK_EXT_debug_marker v4 VK_EXT_debug_report v10 VK_EXT_debug_utils v2 VK_EXT_descriptor_indexing v2 VK_EXT_extended_dynamic_state v1 VK_EXT_extended_dynamic_state2 v1 VK_EXT_extended_dynamic_state3 v2 VK_EXT_external_memory_host v1 VK_EXT_fragment_shader_interlock v1 VK_EXT_hdr_metadata v3 VK_EXT_headless_surface v1 VK_EXT_host_image_copy v1 VK_EXT_host_query_reset v1 VK_EXT_image_robustness v1 VK_EXT_inline_uniform_block v1 VK_EXT_layer_settings v2 VK_EXT_memory_budget v1 VK_EXT_metal_objects v2 VK_EXT_metal_surface v1 VK_EXT_pipeline_creation_cache_control v3 VK_EXT_pipeline_creation_feedback v1 VK_EXT_post_depth_coverage v1 VK_EXT_private_data v1 VK_EXT_robustness2 v1 VK_EXT_sample_locations v1 VK_EXT_scalar_block_layout v1 VK_EXT_separate_stencil_usage v1 VK_EXT_shader_atomic_float v1 VK_EXT_shader_demote_to_helper_invocation v1 VK_EXT_shader_stencil_export v1 VK_EXT_shader_subgroup_ballot v1 VK_EXT_shader_subgroup_vote v1 VK_EXT_shader_viewport_index_layer v1 VK_EXT_subgroup_size_control v2 VK_EXT_surface_maintenance1 v1 VK_EXT_swapchain_colorspace v5 VK_EXT_swapchain_maintenance1 v1 VK_EXT_texel_buffer_alignment v1 VK_EXT_texture_compression_astc_hdr v1 VK_EXT_vertex_attribute_divisor v3 VK_AMD_gpu_shader_half_float v2 VK_AMD_negative_viewport_height v1 VK_AMD_shader_image_load_store_lod v1 VK_AMD_shader_trinary_minmax v1 VK_IMG_format_pvrtc v1 VK_INTEL_shader_integer_functions2 v1 VK_GOOGLE_display_timing v1 VK_MVK_macos_surface v3 VK_MVK_moltenvk v37 VK_NV_fragment_shader_barycentric v1 [mvk-info] maximumConcurrentCompilationTaskCount 2 [mvk-info] GPU device: model: Apple M1 Pro type: Integrated vendorID: 0x106b deviceID: 0xf020207 pipelineCacheUUID: 05AD3EE5-0F02-0207-0000-000100000000 GPU memory available: 10922 MB GPU memory used: 0 MB Metal Shading Language 3.2 supports the following GPU Features: GPU Family Metal 3 GPU Family Apple 7 GPU Family Mac 2 Read-Write Texture Tier 2 [mvk-info] Created VkInstance for Vulkan version 1.2.303, as requested by app, with the following 2 Vulkan extensions enabled: VK_EXT_debug_utils v2 VK_EXT_layer_settings v2 [mvk-info] Destroyed VkPhysicalDevice for GPU Apple M1 Pro with 0 MB of GPU memory still allocated. [mvk-info] Destroying VkInstance for Vulkan version 1.2.303 with 2 Vulkan extensions enabled. 2024-12-27 22:41:21.314 shadps4[68165:2493798] +[IMKClient subclass]: chose IMKClient_Modern 2024-12-27 22:41:21.314 shadps4[68165:2493798] +[IMKInputSession subclass]: chose IMKInputSession_Modern [Loader] emulator.cpp:Emulator:61: Starting shadps4 emulator v0.5.1 WIP [Loader] emulator.cpp:Emulator:62: Revision 49ffb7b120d02286db02a9608b5f6e3f0b149f15 [Loader] emulator.cpp:Emulator:63: Branch main [Loader] emulator.cpp:Emulator:64: Description 49ffb7b [Config] emulator.cpp:Emulator:66: General Logtype: async [Config] emulator.cpp:Emulator:67: General isNeo: false [Config] emulator.cpp:Emulator:68: GPU isNullGpu: false [Config] emulator.cpp:Emulator:69: GPU shouldDumpShaders: false [Config] emulator.cpp:Emulator:70: GPU vblankDivider: 1 [Config] emulator.cpp:Emulator:71: Vulkan gpuId: 0 [Config] emulator.cpp:Emulator:72: Vulkan vkValidation: false [Config] emulator.cpp:Emulator:73: Vulkan vkValidationSync: false [Config] emulator.cpp:Emulator:74: Vulkan vkValidationGpu: true [Config] emulator.cpp:Emulator:75: Vulkan rdocEnable: false [Config] emulator.cpp:Emulator:76: Vulkan rdocMarkersEnable: false [Config] emulator.cpp:Emulator:77: Vulkan crashDiagnostics: false [Kernel.Vmm] address_space.cpp:Impl:423: System managed virtual memory region: 0x400000 - 0x7ffffbfff [Kernel.Vmm] address_space.cpp:Impl:426: System reserved virtual memory region: 0x7ffffc000 - 0xfbfffffff [Kernel.Vmm] address_space.cpp:Impl:428: User virtual memory region: 0x7025b04000 - 0x17025b03fff [Kernel.Vmm] memory.cpp:SetupMemoryRegions:53: Configured memory regions: flexible size = 0x1c000000, direct size = 0x120000000 [Kernel.Vmm] memory.cpp:MemoryManager:36: Usable memory address space: 1086_GB [Loader] emulator.cpp:Run:161: Game id: CUSA03173 Title: Bloodborne™ [Loader] emulator.cpp:Run:164: Fw: 0x4500000 App Version: 01.09 [Lib.Kernel] libs.cpp:InitHLELibs:53: Initializing HLE libraries [Lib.GnmDriver] gnmdriver.cpp:RegisterlibSceGnmDriver:2782: Initializing presenter [Render.Vulkan] vk_platform.cpp:CreateInstance:230: Creating vulkan instance [Render.Vulkan] vk_platform.cpp:operator():186: Candidate instance extension VK_KHR_portability_enumeration is not available [Render.Vulkan] vk_platform.cpp:CreateInstance:272: Enabled instance extensions: VK_EXT_layer_settings, VK_EXT_metal_surface, VK_KHR_surface, VK_EXT_debug_utils [Render.Vulkan] vk_platform.cpp:CreateInstance:273: Enabled instance layers: [mvk-info] MoltenVK version 1.2.12, supporting Vulkan version 1.2.303. The following 109 Vulkan extensions are supported: VK_KHR_16bit_storage v1 VK_KHR_8bit_storage v1 VK_KHR_bind_memory2 v1 VK_KHR_buffer_device_address v1 VK_KHR_calibrated_timestamps v1 VK_KHR_copy_commands2 v1 VK_KHR_create_renderpass2 v1 VK_KHR_dedicated_allocation v3 VK_KHR_deferred_host_operations v4 VK_KHR_depth_stencil_resolve v1 VK_KHR_descriptor_update_template v1 VK_KHR_device_group v4 VK_KHR_device_group_creation v1 VK_KHR_driver_properties v1 VK_KHR_dynamic_rendering v1 VK_KHR_external_fence v1 VK_KHR_external_fence_capabilities v1 VK_KHR_external_memory v1 VK_KHR_external_memory_capabilities v1 VK_KHR_external_semaphore v1 VK_KHR_external_semaphore_capabilities v1 VK_KHR_fragment_shader_barycentric v1 VK_KHR_format_feature_flags2 v2 VK_KHR_get_memory_requirements2 v1 VK_KHR_get_physical_device_properties2 v2 VK_KHR_get_surface_capabilities2 v1 VK_KHR_imageless_framebuffer v1 VK_KHR_image_format_list v1 VK_KHR_incremental_present v2 VK_KHR_maintenance1 v2 VK_KHR_maintenance2 v1 VK_KHR_maintenance3 v1 VK_KHR_map_memory2 v1 VK_KHR_multiview v1 VK_KHR_portability_subset v1 VK_KHR_push_descriptor v2 VK_KHR_relaxed_block_layout v1 VK_KHR_sampler_mirror_clamp_to_edge v3 VK_KHR_sampler_ycbcr_conversion v14 VK_KHR_separate_depth_stencil_layouts v1 VK_KHR_shader_draw_parameters v1 VK_KHR_shader_float_controls v4 VK_KHR_shader_float16_int8 v1 VK_KHR_shader_integer_dot_product v1 VK_KHR_shader_non_semantic_info v1 VK_KHR_shader_subgroup_extended_types v1 VK_KHR_spirv_1_4 v1 VK_KHR_storage_buffer_storage_class v1 VK_KHR_surface v25 VK_KHR_swapchain v70 VK_KHR_swapchain_mutable_format v1 VK_KHR_synchronization2 v1 VK_KHR_timeline_semaphore v2 VK_KHR_uniform_buffer_standard_layout v1 VK_KHR_variable_pointers v1 VK_KHR_vertex_attribute_divisor v1 VK_EXT_4444_formats v1 VK_EXT_buffer_device_address v2 VK_EXT_calibrated_timestamps v2 VK_EXT_debug_marker v4 VK_EXT_debug_report v10 VK_EXT_debug_utils v2 VK_EXT_descriptor_indexing v2 VK_EXT_extended_dynamic_state v1 VK_EXT_extended_dynamic_state2 v1 VK_EXT_extended_dynamic_state3 v2 VK_EXT_external_memory_host v1 VK_EXT_fragment_shader_interlock v1 VK_EXT_hdr_metadata v3 VK_EXT_headless_surface v1 VK_EXT_host_image_copy v1 VK_EXT_host_query_reset v1 VK_EXT_image_robustness v1 VK_EXT_inline_uniform_block v1 VK_EXT_layer_settings v2 VK_EXT_memory_budget v1 VK_EXT_metal_objects v2 VK_EXT_metal_surface v1 VK_EXT_pipeline_creation_cache_control v3 VK_EXT_pipeline_creation_feedback v1 VK_EXT_post_depth_coverage v1 VK_EXT_private_data v1 VK_EXT_robustness2 v1 VK_EXT_sample_locations v1 VK_EXT_scalar_block_layout v1 VK_EXT_separate_stencil_usage v1 VK_EXT_shader_atomic_float v1 VK_EXT_shader_demote_to_helper_invocation v1 VK_EXT_shader_stencil_export v1 VK_EXT_shader_subgroup_ballot v1 VK_EXT_shader_subgroup_vote v1 VK_EXT_shader_viewport_index_layer v1 VK_EXT_subgroup_size_control v2 VK_EXT_surface_maintenance1 v1 VK_EXT_swapchain_colorspace v5 VK_EXT_swapchain_maintenance1 v1 VK_EXT_texel_buffer_alignment v1 VK_EXT_texture_compression_astc_hdr v1 VK_EXT_vertex_attribute_divisor v3 VK_AMD_gpu_shader_half_float v2 VK_AMD_negative_viewport_height v1 VK_AMD_shader_image_load_store_lod v1 VK_AMD_shader_trinary_minmax v1 VK_IMG_format_pvrtc v1 VK_INTEL_shader_integer_functions2 v1 VK_GOOGLE_display_timing v1 VK_MVK_macos_surface v3 VK_MVK_moltenvk v37 VK_NV_fragment_shader_barycentric v1 [mvk-info] maximumConcurrentCompilationTaskCount 2 [mvk-info] GPU device: model: Apple M1 Pro type: Integrated vendorID: 0x106b deviceID: 0xf020207 pipelineCacheUUID: 05AD3EE5-0F02-0207-0000-000100000000 GPU memory available: 10922 MB GPU memory used: 0 MB Metal Shading Language 3.2 supports the following GPU Features: GPU Family Metal 3 GPU Family Apple 7 GPU Family Mac 2 Read-Write Texture Tier 2 [mvk-info] Created VkInstance for Vulkan version 1.2.303, as requested by app, with the following 4 Vulkan extensions enabled: VK_KHR_surface v25 VK_EXT_debug_utils v2 VK_EXT_layer_settings v2 VK_EXT_metal_surface v1 [Render.Vulkan] vk_instance.cpp:Instance:107: Found 1 physical devices [Render.Vulkan] vk_instance.cpp:CollectDeviceParameters:544: GPU_Vendor: MoltenVK [Render.Vulkan] vk_instance.cpp:CollectDeviceParameters:545: GPU_Model: Apple M1 Pro [Render.Vulkan] vk_instance.cpp:CollectDeviceParameters:546: GPU_Vulkan_Driver: MoltenVK 0.2.2020 [Render.Vulkan] vk_instance.cpp:CollectDeviceParameters:547: GPU_Vulkan_Version: 1.2.303 [Render.Vulkan] vk_instance.cpp:CollectDeviceParameters:548: GPU_Vulkan_Extensions: VK_KHR_16bit_storage, VK_KHR_8bit_storage, VK_KHR_bind_memory2, VK_KHR_buffer_device_address, VK_KHR_calibrated_timestamps, VK_KHR_copy_commands2, VK_KHR_create_renderpass2, VK_KHR_dedicated_allocation, VK_KHR_deferred_host_operations, VK_KHR_depth_stencil_resolve, VK_KHR_descriptor_update_template, VK_KHR_device_group, VK_KHR_driver_properties, VK_KHR_dynamic_rendering, VK_KHR_external_fence, VK_KHR_external_memory, VK_KHR_external_semaphore, VK_KHR_fragment_shader_barycentric, VK_KHR_format_feature_flags2, VK_KHR_get_memory_requirements2, VK_KHR_imageless_framebuffer, VK_KHR_image_format_list, VK_KHR_incremental_present, VK_KHR_maintenance1, VK_KHR_maintenance2, VK_KHR_maintenance3, VK_KHR_map_memory2, VK_KHR_multiview, VK_KHR_portability_subset, VK_KHR_push_descriptor, VK_KHR_relaxed_block_layout, VK_KHR_sampler_mirror_clamp_to_edge, VK_KHR_sampler_ycbcr_conversion, VK_KHR_separate_depth_stencil_layouts, VK_KHR_shader_draw_parameters, VK_KHR_shader_float_controls, VK_KHR_shader_float16_int8, VK_KHR_shader_integer_dot_product, VK_KHR_shader_non_semantic_info, VK_KHR_shader_subgroup_extended_types, VK_KHR_spirv_1_4, VK_KHR_storage_buffer_storage_class, VK_KHR_swapchain, VK_KHR_swapchain_mutable_format, VK_KHR_synchronization2, VK_KHR_timeline_semaphore, VK_KHR_uniform_buffer_standard_layout, VK_KHR_variable_pointers, VK_KHR_vertex_attribute_divisor, VK_EXT_4444_formats, VK_EXT_buffer_device_address, VK_EXT_calibrated_timestamps, VK_EXT_debug_marker, VK_EXT_descriptor_indexing, VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2, VK_EXT_extended_dynamic_state3, VK_EXT_external_memory_host, VK_EXT_fragment_shader_interlock, VK_EXT_hdr_metadata, VK_EXT_host_image_copy, VK_EXT_host_query_reset, VK_EXT_image_robustness, VK_EXT_inline_uniform_block, VK_EXT_memory_budget, VK_EXT_metal_objects, VK_EXT_pipeline_creation_cache_control, VK_EXT_pipeline_creation_feedback, VK_EXT_post_depth_coverage, VK_EXT_private_data, VK_EXT_robustness2, VK_EXT_sample_locations, VK_EXT_scalar_block_layout, VK_EXT_separate_stencil_usage, VK_EXT_shader_atomic_float, VK_EXT_shader_demote_to_helper_invocation, VK_EXT_shader_stencil_export, VK_EXT_shader_subgroup_ballot, VK_EXT_shader_subgroup_vote, VK_EXT_shader_viewport_index_layer, VK_EXT_subgroup_size_control, VK_EXT_swapchain_maintenance1, VK_EXT_texel_buffer_alignment, VK_EXT_texture_compression_astc_hdr, VK_EXT_vertex_attribute_divisor, VK_AMD_gpu_shader_half_float, VK_AMD_negative_viewport_height, VK_AMD_shader_image_load_store_lod, VK_AMD_shader_trinary_minmax, VK_IMG_format_pvrtc, VK_INTEL_shader_integer_functions2, VK_GOOGLE_display_timing, VK_NV_fragment_shader_barycentric [Render.Vulkan] vk_instance.cpp:CreateDevice:226: Physical device subgroup size 32 [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_KHR_swapchain [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_EXT_shader_stencil_export [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_EXT_external_memory_host [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_EXT_custom_border_color unavailable. [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_KHR_push_descriptor [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_EXT_depth_clip_control unavailable. [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_EXT_depth_range_unrestricted unavailable. [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_KHR_workgroup_memory_explicit_layout unavailable. [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_EXT_vertex_input_dynamic_state unavailable. [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_KHR_fragment_shader_barycentric [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_EXT_color_write_enable unavailable. [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_EXT_extended_dynamic_state3 [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_EXT_robustness2 [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_EXT_primitive_topology_list_restart unavailable. [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_KHR_maintenance5 unavailable. [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_EXT_legacy_vertex_attributes unavailable. [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_AMD_shader_image_load_store_lod [Render.Vulkan] vk_instance.cpp:operator():246: Extension VK_KHR_maintenance4 unavailable. [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_KHR_format_feature_flags2 [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_KHR_dynamic_rendering [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_EXT_shader_demote_to_helper_invocation [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_KHR_synchronization2 [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_EXT_extended_dynamic_state [Render.Vulkan] vk_instance.cpp:operator():241: Enabling extension: VK_KHR_portability_subset [mvk-info] Vulkan semaphores using Metal implicit guarantees within a single queue. [mvk-info] Descriptor sets binding resources using Metal3 argument buffers. [mvk-info] Created VkDevice to run on GPU Apple M1 Pro with the following 14 Vulkan extensions enabled: VK_KHR_dynamic_rendering v1 VK_KHR_fragment_shader_barycentric v1 VK_KHR_format_feature_flags2 v2 VK_KHR_portability_subset v1 VK_KHR_push_descriptor v2 VK_KHR_swapchain v70 VK_KHR_synchronization2 v1 VK_EXT_extended_dynamic_state v1 VK_EXT_extended_dynamic_state3 v2 VK_EXT_external_memory_host v1 VK_EXT_robustness2 v1 VK_EXT_shader_demote_to_helper_invocation v1 VK_EXT_shader_stencil_export v1 VK_AMD_shader_image_load_store_lod v1 [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=1, number_format=2 is not fully supported (vk_format=R8Uscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=1, number_format=3 is not fully supported (vk_format=R8Sscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=2, number_format=2 is not fully supported (vk_format=R16Uscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=2, number_format=3 is not fully supported (vk_format=R16Sscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=3, number_format=2 is not fully supported (vk_format=R8G8Uscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=3, number_format=3 is not fully supported (vk_format=R8G8Sscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=5, number_format=2 is not fully supported (vk_format=R16G16Uscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=5, number_format=3 is not fully supported (vk_format=R16G16Sscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=9, number_format=1 is not fully supported (vk_format=A2B10G10R10SnormPack32, missing features={ SampledImage | StorageImage | UniformTexelBuffer | StorageTexelBuffer | ColorAttachment | TransferSrc | TransferDst | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=9, number_format=2 is not fully supported (vk_format=A2B10G10R10UscaledPack32, missing features={ SampledImage | UniformTexelBuffer | VertexBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=9, number_format=3 is not fully supported (vk_format=A2B10G10R10SscaledPack32, missing features={ SampledImage | UniformTexelBuffer | VertexBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=9, number_format=4 is not fully supported (vk_format=A2B10G10R10UintPack32, missing features={ VertexBuffer }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=9, number_format=5 is not fully supported (vk_format=A2B10G10R10SintPack32, missing features={ SampledImage | StorageImage | UniformTexelBuffer | StorageTexelBuffer | VertexBuffer | ColorAttachment | TransferSrc | TransferDst | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=10, number_format=2 is not fully supported (vk_format=R8G8B8A8Uscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=10, number_format=3 is not fully supported (vk_format=R8G8B8A8Sscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=12, number_format=2 is not fully supported (vk_format=R16G16B16A16Uscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=12, number_format=3 is not fully supported (vk_format=R16G16B16A16Sscaled, missing features={ SampledImage | UniformTexelBuffer | TransferSrc | TransferDst }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=13, number_format=4 is not fully supported (vk_format=R32G32B32Uint, missing features={ SampledImage | UniformTexelBuffer | StorageTexelBuffer | TransferSrc | TransferDst | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=13, number_format=5 is not fully supported (vk_format=R32G32B32Sint, missing features={ SampledImage | UniformTexelBuffer | StorageTexelBuffer | TransferSrc | TransferDst | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=13, number_format=7 is not fully supported (vk_format=R32G32B32Sfloat, missing features={ SampledImage | UniformTexelBuffer | StorageTexelBuffer | TransferSrc | TransferDst | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=16, number_format=0 is not fully supported (vk_format=B5G6R5UnormPack16, missing features={ StorageImage | ColorAttachment | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=17, number_format=0 is not fully supported (vk_format=R5G5B5A1UnormPack16, missing features={ StorageImage | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:170: Surface format data_format=19, number_format=0 is not fully supported (vk_format=R4G4B4A4UnormPack16, missing features={ StorageImage | StorageReadWithoutFormat | StorageWriteWithoutFormat }) [Render.Vulkan] vk_instance.cpp:Instance:180: Depth format z_format=1, stencil_format=1 is not fully supported (vk_format=D16UnormS8Uint, missing features={ DepthStencilAttachment }) [mvk-info] Created 3 swapchain images with size (1280, 720) and contents scale 1.0 in layer CAMetalLayer: SDL3_cocoametalview (0x600001dae670) on screen Built-in Retina Display. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template inline T spvSubgroupShuffleXor(T value, ushort mask) { return simd_shuffle_xor(value, mask); } template<> inline bool spvSubgroupShuffleXor(bool value, ushort mask) { return !!simd_shuffle_xor((ushort)value, mask); } template inline vec spvSubgroupShuffleXor(vec value, ushort mask) { return (vec)simd_shuffle_xor((vec)value, mask); } struct input_buf { uint in_data[1]; }; struct image_info { uint num_levels; uint pitch; uint height; uint sizes[14]; }; struct output_buf { uint out_data[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(16u, 1u, 1u); kernel void main0(constant image_info& info [[buffer(8)]], device input_buf& _12 [[buffer(9)]], device output_buf& _143 [[buffer(10)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]]) { uint p0 = _12.in_data[gl_GlobalInvocationID.x]; uint p1 = spvSubgroupShuffleXor(p0, 1u); uint hword = gl_LocalInvocationID.x & 1u; uint _39; if (hword == 1u) { _39 = (p0 & 4294901760u) | (p1 >> uint(16)); } else { _39 = (p0 & 65535u) | (p1 << uint(16)); } uint dst_tx = _39; uint col = (gl_LocalInvocationID.x >> uint(2)) & 1u; uint row = (gl_LocalInvocationID.x % 4u) + (4u * (gl_LocalInvocationID.x >> uint(3))); uint mip = 0u; for (int m = 0; uint(m) < info.num_levels; m++) { mip += uint(int((gl_GlobalInvocationID.x * 4u) >= info.sizes[m])); } uint tiles_per_pitch = max(((info.pitch >> mip) / 8u), 1u); uint target_tile_x = gl_WorkGroupID.x % tiles_per_pitch; uint target_tile_y = gl_WorkGroupID.x / tiles_per_pitch; uint dw_ofs_x = (target_tile_x * 2u) + col; uint dw_ofs_y = (((target_tile_y * 8u) + row) * tiles_per_pitch) * 2u; _143.out_data[dw_ofs_x + dw_ofs_y] = dst_tx; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct input_buf { uint in_data[1]; }; struct image_info { uint num_levels; uint pitch; uint height; uint sizes[14]; }; struct output_buf { uint out_data[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(32u, 1u, 1u); constant spvUnsafeArray _27 = spvUnsafeArray({ 285282304u, 824258592u, 318968322u, 857944610u, 1363234880u, 1902211168u, 1396920898u, 1935897186u, 352654340u, 891630628u, 386340358u, 925316646u, 1430606916u, 1969583204u, 1464292934u, 2003269222u }); kernel void main0(constant image_info& info [[buffer(8)]], device input_buf& _33 [[buffer(9)]], device output_buf& _155 [[buffer(10)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]]) { uint src_tx = _33.in_data[gl_GlobalInvocationID.x]; spvUnsafeArray _57 = spvUnsafeArray({ (src_tx >> uint(16)) & 65535u, src_tx & 65535u }); spvUnsafeArray p = _57; uint bit_ofs = 16u * (gl_LocalInvocationID.x % 4u); uint packed_pos = _27[gl_LocalInvocationID.x >> uint(1)] >> bit_ofs; uint col = extract_bits(packed_pos, uint(4), uint(4)); uint row = extract_bits(packed_pos, uint(0), uint(4)); uint mip = 0u; for (int m = 0; uint(m) < info.num_levels; m++) { mip += uint(int((gl_GlobalInvocationID.x * 4u) >= info.sizes[m])); } uint tiles_per_pitch = max(((info.pitch >> mip) / 8u), 1u); uint target_tile_x = gl_WorkGroupID.x % tiles_per_pitch; uint target_tile_y = gl_WorkGroupID.x / tiles_per_pitch; uint dw_ofs_x = (target_tile_x * 8u) + col; uint dw_ofs_y = ((target_tile_y * tiles_per_pitch) * 64u) + ((row * tiles_per_pitch) * 8u); _155.out_data[(dw_ofs_x + dw_ofs_y) / 2u] = src_tx; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct input_buf { uint in_data[1]; }; struct image_info { uint num_levels; uint pitch; uint height; uint sizes[14]; }; struct output_buf { uint out_data[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(64u, 1u, 1u); constant spvUnsafeArray _27 = spvUnsafeArray({ 285282304u, 824258592u, 318968322u, 857944610u, 1363234880u, 1902211168u, 1396920898u, 1935897186u, 352654340u, 891630628u, 386340358u, 925316646u, 1430606916u, 1969583204u, 1464292934u, 2003269222u }); kernel void main0(constant image_info& info [[buffer(8)]], device input_buf& _45 [[buffer(9)]], device output_buf& _150 [[buffer(10)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]]) { uint tile_base = gl_GlobalInvocationID.x - gl_LocalInvocationID.x; uint p0 = _45.in_data[gl_GlobalInvocationID.x]; uint bit_ofs = 8u * (gl_LocalInvocationID.x % 4u); uint packed_pos = _27[gl_LocalInvocationID.x >> uint(2)] >> bit_ofs; uint col = extract_bits(packed_pos, uint(4), uint(4)); uint row = extract_bits(packed_pos, uint(0), uint(4)); uint mip = 0u; for (int m = 0; uint(m) < info.num_levels; m++) { mip += uint(int((gl_GlobalInvocationID.x * 4u) >= info.sizes[m])); } uint tiles_per_pitch = max(((info.pitch >> mip) / 8u), 1u); uint target_tile_x = gl_WorkGroupID.x % tiles_per_pitch; uint target_tile_y = gl_WorkGroupID.x / tiles_per_pitch; uint dw_ofs_x = (target_tile_x * 8u) + col; uint dw_ofs_y = ((target_tile_y * tiles_per_pitch) * 64u) + ((row * tiles_per_pitch) * 8u); _150.out_data[dw_ofs_x + dw_ofs_y] = p0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct input_buf { uint in_data[1]; }; struct image_info { uint num_levels; uint pitch; uint height; uint sizes[14]; }; struct output_buf { uint out_data[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(64u, 1u, 1u); constant spvUnsafeArray _27 = spvUnsafeArray({ 285282304u, 824258592u, 318968322u, 857944610u, 1363234880u, 1902211168u, 1396920898u, 1935897186u, 352654340u, 891630628u, 386340358u, 925316646u, 1430606916u, 1969583204u, 1464292934u, 2003269222u }); kernel void main0(constant image_info& info [[buffer(8)]], device input_buf& _43 [[buffer(9)]], device output_buf& _158 [[buffer(10)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]]) { uint block_ofs = 2u * gl_GlobalInvocationID.x; uint p0 = _43.in_data[block_ofs + 0u]; uint p1 = _43.in_data[block_ofs + 1u]; uint bit_ofs = 8u * (gl_LocalInvocationID.x % 4u); uint packed_pos = _27[gl_LocalInvocationID.x >> uint(2)] >> bit_ofs; uint col = extract_bits(packed_pos, uint(4), uint(4)); uint row = extract_bits(packed_pos, uint(0), uint(4)); uint mip = 0u; for (int m = 0; uint(m) < info.num_levels; m++) { mip += uint(int((gl_GlobalInvocationID.x * 8u) >= info.sizes[m])); } uint tiles_per_pitch = max(((info.pitch >> mip) / 8u), 1u) * 2u; uint target_tile_x = (2u * gl_WorkGroupID.x) % tiles_per_pitch; uint target_tile_y = (2u * gl_WorkGroupID.x) / tiles_per_pitch; uint dw_ofs_x = (target_tile_x * 8u) + (col * 2u); uint dw_ofs_y = ((target_tile_y * tiles_per_pitch) * 64u) + ((row * tiles_per_pitch) * 8u); _158.out_data[dw_ofs_x + dw_ofs_y] = p0; _158.out_data[(dw_ofs_x + dw_ofs_y) + 1u] = p1; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct input_buf { uint in_data[1]; }; struct image_info { uint num_levels; uint pitch; uint height; uint sizes[14]; }; struct output_buf { uint out_data[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(64u, 1u, 1u); constant spvUnsafeArray _27 = spvUnsafeArray({ 285282304u, 824258592u, 318968322u, 857944610u, 1363234880u, 1902211168u, 1396920898u, 1935897186u, 352654340u, 891630628u, 386340358u, 925316646u, 1430606916u, 1969583204u, 1464292934u, 2003269222u }); kernel void main0(constant image_info& info [[buffer(8)]], device input_buf& _43 [[buffer(9)]], device output_buf& _169 [[buffer(10)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]]) { uint block_ofs = 4u * gl_GlobalInvocationID.x; uint p0 = _43.in_data[block_ofs + 0u]; uint p1 = _43.in_data[block_ofs + 1u]; uint p2 = _43.in_data[block_ofs + 2u]; uint p3 = _43.in_data[block_ofs + 3u]; uint bit_ofs = 8u * (gl_LocalInvocationID.x % 4u); uint packed_pos = _27[gl_LocalInvocationID.x >> uint(2)] >> bit_ofs; uint col = extract_bits(packed_pos, uint(4), uint(4)); uint row = extract_bits(packed_pos, uint(0), uint(4)); uint mip = 0u; for (int m = 0; uint(m) < info.num_levels; m++) { mip += uint(int((gl_GlobalInvocationID.x * 16u) >= info.sizes[m])); } uint tiles_per_pitch = max(((info.pitch >> mip) / 8u), 1u) * 4u; uint target_tile_x = (4u * gl_WorkGroupID.x) % tiles_per_pitch; uint target_tile_y = (4u * gl_WorkGroupID.x) / tiles_per_pitch; uint dw_ofs_x = (target_tile_x * 8u) + (4u * col); uint dw_ofs_y = ((target_tile_y * tiles_per_pitch) * 64u) + ((row * tiles_per_pitch) * 8u); _169.out_data[dw_ofs_x + dw_ofs_y] = p0; _169.out_data[(dw_ofs_x + dw_ofs_y) + 1u] = p1; _169.out_data[(dw_ofs_x + dw_ofs_y) + 2u] = p2; _169.out_data[(dw_ofs_x + dw_ofs_y) + 3u] = p3; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct image_info { uint num_levels; uint pitch; uint height; uint c0; uint c1; }; struct input_buf { uint in_data[1]; }; struct output_buf { uint out_data[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(64u, 1u, 1u); constant spvUnsafeArray _121 = spvUnsafeArray({ 0u, 1u, 4u, 5u, 64u, 65u, 68u, 69u, 2u, 3u, 6u, 7u, 66u, 67u, 70u, 71u, 16u, 17u, 20u, 21u, 80u, 81u, 84u, 85u, 18u, 19u, 22u, 23u, 82u, 83u, 86u, 87u, 128u, 129u, 132u, 133u, 192u, 193u, 196u, 197u, 130u, 131u, 134u, 135u, 194u, 195u, 198u, 199u, 144u, 145u, 148u, 149u, 208u, 209u, 212u, 213u, 146u, 147u, 150u, 151u, 210u, 211u, 214u, 215u }); constant spvUnsafeArray _186 = spvUnsafeArray({ 8u, 9u, 12u, 13u, 72u, 73u, 76u, 77u, 10u, 11u, 14u, 15u, 74u, 75u, 78u, 79u, 24u, 25u, 28u, 29u, 88u, 89u, 92u, 93u, 26u, 27u, 30u, 31u, 90u, 91u, 94u, 95u, 136u, 137u, 140u, 141u, 200u, 201u, 204u, 205u, 138u, 139u, 142u, 143u, 202u, 203u, 206u, 207u, 152u, 153u, 156u, 157u, 216u, 217u, 220u, 221u, 154u, 155u, 158u, 159u, 218u, 219u, 222u, 223u }); constant spvUnsafeArray _251 = spvUnsafeArray({ 32u, 33u, 36u, 37u, 96u, 97u, 100u, 101u, 34u, 35u, 38u, 39u, 98u, 99u, 102u, 103u, 48u, 49u, 52u, 53u, 112u, 113u, 116u, 117u, 50u, 51u, 54u, 55u, 114u, 115u, 118u, 119u, 160u, 161u, 164u, 165u, 224u, 225u, 228u, 229u, 162u, 163u, 166u, 167u, 226u, 227u, 230u, 231u, 176u, 177u, 180u, 181u, 240u, 241u, 244u, 245u, 178u, 179u, 182u, 183u, 242u, 243u, 246u, 247u }); constant spvUnsafeArray _316 = spvUnsafeArray({ 40u, 41u, 44u, 45u, 104u, 105u, 108u, 109u, 42u, 43u, 46u, 47u, 106u, 107u, 110u, 111u, 56u, 57u, 60u, 61u, 120u, 121u, 124u, 125u, 58u, 59u, 62u, 63u, 122u, 123u, 126u, 127u, 168u, 169u, 172u, 173u, 232u, 233u, 236u, 237u, 170u, 171u, 174u, 175u, 234u, 235u, 238u, 239u, 184u, 185u, 188u, 189u, 248u, 249u, 252u, 253u, 186u, 187u, 190u, 191u, 250u, 251u, 254u, 255u }); constant spvUnsafeArray, 4> _317 = spvUnsafeArray, 4>({ spvUnsafeArray({ 0u, 1u, 4u, 5u, 64u, 65u, 68u, 69u, 2u, 3u, 6u, 7u, 66u, 67u, 70u, 71u, 16u, 17u, 20u, 21u, 80u, 81u, 84u, 85u, 18u, 19u, 22u, 23u, 82u, 83u, 86u, 87u, 128u, 129u, 132u, 133u, 192u, 193u, 196u, 197u, 130u, 131u, 134u, 135u, 194u, 195u, 198u, 199u, 144u, 145u, 148u, 149u, 208u, 209u, 212u, 213u, 146u, 147u, 150u, 151u, 210u, 211u, 214u, 215u }), spvUnsafeArray({ 8u, 9u, 12u, 13u, 72u, 73u, 76u, 77u, 10u, 11u, 14u, 15u, 74u, 75u, 78u, 79u, 24u, 25u, 28u, 29u, 88u, 89u, 92u, 93u, 26u, 27u, 30u, 31u, 90u, 91u, 94u, 95u, 136u, 137u, 140u, 141u, 200u, 201u, 204u, 205u, 138u, 139u, 142u, 143u, 202u, 203u, 206u, 207u, 152u, 153u, 156u, 157u, 216u, 217u, 220u, 221u, 154u, 155u, 158u, 159u, 218u, 219u, 222u, 223u }), spvUnsafeArray({ 32u, 33u, 36u, 37u, 96u, 97u, 100u, 101u, 34u, 35u, 38u, 39u, 98u, 99u, 102u, 103u, 48u, 49u, 52u, 53u, 112u, 113u, 116u, 117u, 50u, 51u, 54u, 55u, 114u, 115u, 118u, 119u, 160u, 161u, 164u, 165u, 224u, 225u, 228u, 229u, 162u, 163u, 166u, 167u, 226u, 227u, 230u, 231u, 176u, 177u, 180u, 181u, 240u, 241u, 244u, 245u, 178u, 179u, 182u, 183u, 242u, 243u, 246u, 247u }), spvUnsafeArray({ 40u, 41u, 44u, 45u, 104u, 105u, 108u, 109u, 42u, 43u, 46u, 47u, 106u, 107u, 110u, 111u, 56u, 57u, 60u, 61u, 120u, 121u, 124u, 125u, 58u, 59u, 62u, 63u, 122u, 123u, 126u, 127u, 168u, 169u, 172u, 173u, 232u, 233u, 236u, 237u, 170u, 171u, 174u, 175u, 234u, 235u, 238u, 239u, 184u, 185u, 188u, 189u, 248u, 249u, 252u, 253u, 186u, 187u, 190u, 191u, 250u, 251u, 254u, 255u }) }); kernel void main0(constant image_info& info [[buffer(8)]], device input_buf& _362 [[buffer(9)]], device output_buf& _371 [[buffer(10)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]]) { uint x = gl_GlobalInvocationID.x % info.pitch; uint y = (gl_GlobalInvocationID.x / info.pitch) % info.height; uint z = gl_GlobalInvocationID.x / (info.pitch * info.height); uint col = extract_bits(x, uint(0), uint(3)); uint row = extract_bits(y, uint(0), uint(3)); uint lut = extract_bits(z, uint(0), uint(2)); uint idx = _317[lut][col + (row * 8u)]; uint slice_offs = ((z >> 2u) * info.c1) * 1024u; uint tile_row = y / 8u; uint tile_column = x / 8u; uint tile_offs = ((tile_row * info.c0) + tile_column) * 1024u; uint offs = (slice_offs + tile_offs) + ((idx * 32u) / 8u); uint p0 = _362.in_data[offs >> 2u]; _371.out_data[gl_GlobalInvocationID.x] = p0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct image_info { uint num_levels; uint pitch; uint height; uint c0; uint c1; }; struct input_buf { uint in_data[1]; }; struct output_buf { uint out_data[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(64u, 1u, 1u); constant spvUnsafeArray _122 = spvUnsafeArray({ 0u, 1u, 8u, 9u, 64u, 65u, 72u, 73u, 2u, 3u, 10u, 11u, 66u, 67u, 74u, 75u, 16u, 17u, 24u, 25u, 80u, 81u, 88u, 89u, 18u, 19u, 26u, 27u, 82u, 83u, 90u, 91u, 128u, 129u, 136u, 137u, 192u, 193u, 200u, 201u, 130u, 131u, 138u, 139u, 194u, 195u, 202u, 203u, 144u, 145u, 152u, 153u, 208u, 209u, 216u, 217u, 146u, 147u, 154u, 155u, 210u, 211u, 218u, 219u }); constant spvUnsafeArray _186 = spvUnsafeArray({ 4u, 5u, 12u, 13u, 68u, 69u, 76u, 77u, 6u, 7u, 14u, 15u, 70u, 71u, 78u, 79u, 20u, 21u, 28u, 29u, 84u, 85u, 92u, 93u, 22u, 23u, 30u, 31u, 86u, 87u, 94u, 95u, 132u, 133u, 140u, 141u, 196u, 197u, 204u, 205u, 134u, 135u, 142u, 143u, 198u, 199u, 206u, 207u, 148u, 149u, 156u, 157u, 212u, 213u, 220u, 221u, 150u, 151u, 158u, 159u, 214u, 215u, 222u, 223u }); constant spvUnsafeArray _251 = spvUnsafeArray({ 32u, 33u, 40u, 41u, 96u, 97u, 104u, 105u, 34u, 35u, 42u, 43u, 98u, 99u, 106u, 107u, 48u, 49u, 56u, 57u, 112u, 113u, 120u, 121u, 50u, 51u, 58u, 59u, 114u, 115u, 122u, 123u, 160u, 161u, 168u, 169u, 224u, 225u, 232u, 233u, 162u, 163u, 170u, 171u, 226u, 227u, 234u, 235u, 176u, 177u, 184u, 185u, 240u, 241u, 248u, 249u, 178u, 179u, 186u, 187u, 242u, 243u, 250u, 251u }); constant spvUnsafeArray _316 = spvUnsafeArray({ 36u, 37u, 44u, 45u, 100u, 101u, 108u, 109u, 38u, 39u, 46u, 47u, 102u, 103u, 110u, 111u, 52u, 53u, 60u, 61u, 116u, 117u, 124u, 125u, 54u, 55u, 62u, 63u, 118u, 119u, 126u, 127u, 164u, 165u, 172u, 173u, 228u, 229u, 236u, 237u, 166u, 167u, 174u, 175u, 230u, 231u, 238u, 239u, 180u, 181u, 188u, 189u, 244u, 245u, 252u, 253u, 182u, 183u, 190u, 191u, 246u, 247u, 254u, 255u }); constant spvUnsafeArray, 4> _317 = spvUnsafeArray, 4>({ spvUnsafeArray({ 0u, 1u, 8u, 9u, 64u, 65u, 72u, 73u, 2u, 3u, 10u, 11u, 66u, 67u, 74u, 75u, 16u, 17u, 24u, 25u, 80u, 81u, 88u, 89u, 18u, 19u, 26u, 27u, 82u, 83u, 90u, 91u, 128u, 129u, 136u, 137u, 192u, 193u, 200u, 201u, 130u, 131u, 138u, 139u, 194u, 195u, 202u, 203u, 144u, 145u, 152u, 153u, 208u, 209u, 216u, 217u, 146u, 147u, 154u, 155u, 210u, 211u, 218u, 219u }), spvUnsafeArray({ 4u, 5u, 12u, 13u, 68u, 69u, 76u, 77u, 6u, 7u, 14u, 15u, 70u, 71u, 78u, 79u, 20u, 21u, 28u, 29u, 84u, 85u, 92u, 93u, 22u, 23u, 30u, 31u, 86u, 87u, 94u, 95u, 132u, 133u, 140u, 141u, 196u, 197u, 204u, 205u, 134u, 135u, 142u, 143u, 198u, 199u, 206u, 207u, 148u, 149u, 156u, 157u, 212u, 213u, 220u, 221u, 150u, 151u, 158u, 159u, 214u, 215u, 222u, 223u }), spvUnsafeArray({ 32u, 33u, 40u, 41u, 96u, 97u, 104u, 105u, 34u, 35u, 42u, 43u, 98u, 99u, 106u, 107u, 48u, 49u, 56u, 57u, 112u, 113u, 120u, 121u, 50u, 51u, 58u, 59u, 114u, 115u, 122u, 123u, 160u, 161u, 168u, 169u, 224u, 225u, 232u, 233u, 162u, 163u, 170u, 171u, 226u, 227u, 234u, 235u, 176u, 177u, 184u, 185u, 240u, 241u, 248u, 249u, 178u, 179u, 186u, 187u, 242u, 243u, 250u, 251u }), spvUnsafeArray({ 36u, 37u, 44u, 45u, 100u, 101u, 108u, 109u, 38u, 39u, 46u, 47u, 102u, 103u, 110u, 111u, 52u, 53u, 60u, 61u, 116u, 117u, 124u, 125u, 54u, 55u, 62u, 63u, 118u, 119u, 126u, 127u, 164u, 165u, 172u, 173u, 228u, 229u, 236u, 237u, 166u, 167u, 174u, 175u, 230u, 231u, 238u, 239u, 180u, 181u, 188u, 189u, 244u, 245u, 252u, 253u, 182u, 183u, 190u, 191u, 246u, 247u, 254u, 255u }) }); kernel void main0(constant image_info& info [[buffer(8)]], device input_buf& _362 [[buffer(9)]], device output_buf& _378 [[buffer(10)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]]) { uint x = gl_GlobalInvocationID.x % info.pitch; uint y = (gl_GlobalInvocationID.x / info.pitch) % info.height; uint z = gl_GlobalInvocationID.x / (info.pitch * info.height); uint col = extract_bits(x, uint(0), uint(3)); uint row = extract_bits(y, uint(0), uint(3)); uint lut = extract_bits(z, uint(0), uint(2)); uint idx = _317[lut][col + (row * 8u)]; uint slice_offs = ((z >> 2u) * info.c1) * 2048u; uint tile_row = y / 8u; uint tile_column = x / 8u; uint tile_offs = ((tile_row * info.c0) + tile_column) * 2048u; uint offs = (slice_offs + tile_offs) + ((idx * 64u) / 8u); uint p0 = _362.in_data[(offs >> uint(2)) + 0u]; uint p1 = _362.in_data[(offs >> uint(2)) + 1u]; _378.out_data[(2u * gl_GlobalInvocationID.x) + 0u] = p0; _378.out_data[(2u * gl_GlobalInvocationID.x) + 1u] = p1; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float2 uv [[user(locn0)]]; float4 gl_Position [[position]]; }; vertex main0_out main0(uint gl_VertexIndex [[vertex_id]]) { main0_out out = {}; float2 pos = float2(float((uint(int(gl_VertexIndex)) & 1u) << 2u), float((uint(int(gl_VertexIndex)) & 2u) << 1u)); out.gl_Position = float4(pos - float2(1.0), 0.0, 1.0); out.uv = pos * 0.5; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; struct settings { float gamma; }; struct main0_out { float4 color [[color(0)]]; }; struct main0_in { float2 uv [[user(locn0)]]; }; static inline __attribute__((always_inline)) float3 gamma(thread const float3& rgb, constant settings& pp) { return select((powr(rgb, float3(1.0 / (3.400000095367431640625 - pp.gamma))) * 1.05499994754791259765625) - float3(0.054999999701976776123046875), (rgb * 12.9200000762939453125) / float3(pp.gamma), rgb < float3(0.003130800090730190277099609375)); } fragment main0_out main0(main0_in in [[stage_in]], constant settings& pp [[buffer(8)]], texture2d texSampler [[texture(0)]], sampler texSamplerSmplr [[sampler(0)]]) { main0_out out = {}; float4 color_linear = texSampler.sample(texSamplerSmplr, in.uv); float3 param = color_linear.xyz; out.color = float4(gamma(param, pp), color_linear.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct _9 { float4 Color; float2 UV; }; struct uPushConstant { float2 uScale; float2 uTranslate; }; struct main0_out { float4 Out_Color [[user(locn0)]]; float2 Out_UV [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float2 aPos [[attribute(0)]]; float2 aUV [[attribute(1)]]; float4 aColor [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant uPushConstant& pc [[buffer(8)]]) { main0_out out = {}; _9 Out = {}; Out.Color = in.aColor; Out.UV = in.aUV; out.gl_Position = float4((in.aPos * pc.uScale) + pc.uTranslate, 0.0, 1.0); out.Out_Color = Out.Color; out.Out_UV = Out.UV; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct _11 { float4 Color; float2 UV; }; struct spvDescriptorSetBuffer0 { texture2d sTexture [[id(0)]]; sampler sTextureSmplr [[id(1)]]; }; struct main0_out { float4 fColor [[color(0)]]; }; struct main0_in { float4 In_Color [[user(locn0)]]; float2 In_UV [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant spvDescriptorSetBuffer0& spvDescriptorSet0 [[buffer(0)]]) { main0_out out = {}; _11 In = {}; In.Color = in.In_Color; In.UV = in.In_UV; out.fColor = In.Color * spvDescriptorSet0.sTexture.sample(spvDescriptorSet0.sTextureSmplr, In.UV); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module eboot to 0x8ffffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x00000008ffffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x00000000056d4000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x00000000056d4000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000008ffffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 84776668 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 84787200 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009050d8000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 3185464 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 6258688 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type Interpreter Path [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x9050d8040 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 1872 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Comment [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x00000008ffffc0a0 [Loader] memory_patcher.cpp:OnGameLoaded:330: Patches loaded successfully [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Skip Intro, Offset: 38731862328, Value: 00000000 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Skip Intro, Offset: 38731862356, Value: 00000000 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Skip Intro, Offset: 38731862382, Value: 00000000 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: 30 FPS Fix (Proper Frame Pacing), Offset: 38688458883, Value: 3c888889 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: 30 FPS Fix (Proper Frame Pacing), Offset: 38695412191, Value: be010000004989dc9090909090 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Disable HTTP Requests, Offset: 38686663408, Value: 9090909090 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Disable HTTP Requests, Offset: 38688132502, Value: 9090909090 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Disable HTTP Requests, Offset: 38689219241, Value: 9090909090 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38739790328, Value: 00000500 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38739790332, Value: 000002d0 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039637, Value: b880070000 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039642, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039643, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039644, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039645, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039646, Value: c4e1fa2ac8 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039651, Value: b838040000 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039656, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039657, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039658, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678039659, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041287, Value: b880070000 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041292, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041293, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041294, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041295, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041296, Value: c4e1fa2ac8 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041301, Value: b838040000 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041306, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041307, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041308, Value: 90 [Loader] memory_patcher.cpp:PatchMemory:398: Applied patch: Resolution Patch (720p), Offset: 38678041309, Value: 90 [Loader] memory_patcher.cpp:OnGameLoaded:330: Patches loaded successfully [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x000d000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x001c000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0018000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0006000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0026000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0019000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0005000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x001e000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x000a000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x001b000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0014000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0023000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0004000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0009000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0017000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0024000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0010000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0011000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x000f000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0021000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0028000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0013000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0025000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0012000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0016000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0027000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0007000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x000e000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x001d000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0020000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x000b000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x000c000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0015000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0003000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x001f000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0022000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x001a000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x002a000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0008000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0029000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceNgs2.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceNgs2 to 0x90fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000090fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000064000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000064000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000090fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 323432 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 327680 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000091004c000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 1216 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000910050000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 1648 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 65536 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x90fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000090fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0003000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceFiber.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceFiber to 0x91fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000091fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x000000000000c000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x000000000000c000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000091fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 8052 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000920000000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 208 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000920004000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 96 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x91fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000091fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0005000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0003000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0004000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceUlt.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceUlt to 0x92fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000092fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000040000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000040000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000092fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 190476 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 196608 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000093002c000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 568 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000930030000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 2160 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 49152 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x930030020 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 16 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000092fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0003000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceJson.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceJson to 0x93fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000093fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000014000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000014000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000093fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 38748 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 49152 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000940008000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 668 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000094000c000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 112 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x93fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000093fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceJson2.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceJson2 to 0x94fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000094fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x000000000001c000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x000000000001c000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000094fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 76536 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 81920 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000950010000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 368 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000950014000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 128 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x94fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000094fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceLibcInternal.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceLibcInternal to 0x95fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000095fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000158000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000158000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000095fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 1247024 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 1261568 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000960130000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 17184 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 32768 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000960138000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 40960 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 114688 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x96013e900 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 1376 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000095fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceDiscMap.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceDiscMap to 0x96fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000096fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x000000000000c000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x000000000000c000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000096fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 12452 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000970000000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 272 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000970004000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 88 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x96fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000096fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceRtc.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceRtc to 0x97fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000097fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000010000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000010000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000097fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 18688 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 32768 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000980004000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 168 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000980008000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 88 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x97fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000097fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceJpegEnc.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceJpegEnc to 0x98fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000098fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000010000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000010000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000098fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 19472 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 32768 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000990004000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 104 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000990008000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 88 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x98fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000098fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceCesCs.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceCesCs to 0x99fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x000000099fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x000000000008c000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x000000000008c000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x000000099fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 525576 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 540672 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009a0080000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 3920 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009a0084000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 88 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x99fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x000000099fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:313: Loading /Users/user/Library/Application Support/shadPS4/sys_modules/libSceFont.sprx [Loader] elf.cpp:IsSelfFile:237: Not a SELF file. Magic mismatch current = 0x464c457f expected = 0x1d3d154f [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceFont to 0x9afffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x00000009afffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000050000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000050000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009afffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 218736 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 229376 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = SCE Read-Only After Relocation [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009b0034000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 328 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R__) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [2] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009b0038000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 43968 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 81920 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x9afffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x00000009afffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:LoadSystemModules:322: No HLE available for libSceFontFt.sprx module [Loader] emulator.cpp:LoadSystemModules:322: No HLE available for libSceFreeTypeOt.sprx module [Loader] emulator.cpp:Run:259: Loading /Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/sce_module/libSceSmart.prx [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceSmart to 0x9bfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x00000009bfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000164000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000164000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009bfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 905272 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 917504 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009c00dc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 528752 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 540672 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x9bfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x00000009bfffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:Run:259: Loading /Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/sce_module/libc.prx [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libc to 0x9cfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x00000009cfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x00000000000d8000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x00000000000d8000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009cfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 751908 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 753664 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009d00b4000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 27840 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 131072 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x9d00b4018 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 1184 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Comment [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x00000009cfffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:Run:259: Loading /Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/sce_module/libSceFios2.prx [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceFios2 to 0x9dfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x00000009dfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000178000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000178000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009dfffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 309956 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 311296 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009e0048000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 55232 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 1228800 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x9e0048018 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 64 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x00000009dfffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0003000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:Run:259: Loading /Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/sce_module/libSceS3DConversion.prx [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceS3DConversion to 0x9efffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x00000009efffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x0000000000048000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x0000000000048000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009efffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 275856 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 278528 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009f0040000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 6808 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x9efffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x00000009efffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:Run:259: Loading /Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/sce_module/libSceFace.prx [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceFace to 0x9ffffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x00000009ffffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x000000000004c000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x000000000004c000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x00000009ffffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 278568 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 294912 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000a00044000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 4816 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0x9ffffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x00000009ffffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:Run:259: Loading /Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/sce_module/libSceHeadTracker.prx [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceHeadTracker to 0xa0fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x0000000a0fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x00000000001d8000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x00000000001d8000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000a0fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 316792 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 327680 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000a1004c000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 1017000 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 1605632 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0xa0fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x0000000a0fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0004000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0002000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0003000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Loader] emulator.cpp:Run:259: Loading /Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/sce_module/libSceHand.prx [Core.Linker] module.cpp:LoadModuleToMemory:119: Loading module libSceHand to 0xa1fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:127: ======== Load Module to Memory ======== [Core.Linker] module.cpp:LoadModuleToMemory:128: base_virtual_addr ......: 0x0000000a1fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:129: base_size ..............: 0x000000000000c000 [Core.Linker] module.cpp:LoadModuleToMemory:130: aligned_base_size ......: 0x000000000000c000 [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [0] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000a1fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 22288 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 32768 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (R_X) [Core.Linker] module.cpp:LoadModuleToMemory:157: program header = [1] type = Loadable [Core.Linker] module.cpp:LoadModuleToMemory:158: segment_addr ..........: 0x0000000a20004000 [Core.Linker] module.cpp:LoadModuleToMemory:159: segment_file_size .....: 184 [Core.Linker] module.cpp:LoadModuleToMemory:160: segment_memory_size ...: 16384 [Core.Linker] module.cpp:LoadModuleToMemory:161: segment_mode ..........: (RW_) [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Module Parameters [Core.Linker] module.cpp:LoadModuleToMemory:196: TLS virtual address = 0xa1fffc000 [Core.Linker] module.cpp:LoadModuleToMemory:197: TLS image size = 0 [Core.Linker] module.cpp:LoadModuleToMemory:219: Unimplemented type SCE Library Version [Core.Linker] module.cpp:LoadModuleToMemory:224: program entry addr ..........: 0x0000000a1fffc000 [Core.Linker] module.cpp:LoadDynamicInfo:329: DT_FLAGS is NOT 0x04 should check! [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x000000000000000e [Core.Linker] module.cpp:LoadDynamicInfo:393: unsupported dynamic tag ..........: 0x0000000061000017 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0001000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:367: unsupported DT_SCE_IMPORT_LIB_ATTR value = ......: 0x0000000000000009 [Core.Linker] module.cpp:LoadDynamicInfo:360: DT_SCE_FINGERPRINT value = 0x0000000000000000 [Core.Linker] module.cpp:LoadDynamicInfo:383: unsupported DT_SCE_MODULE_ATTR value = ..........: 0x0000000000000000 [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved NN01qLRhiqU as rename (lib: libScePosix, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved bt3CTBKmGyI as scePthreadSetaffinity (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Qs0wWulgl7U as sceMouseInit (lib: libSceMouse, mod: libSceMouse) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved cAnT0Rw-IwU as sceMouseClose (lib: libSceMouse, mod: libSceMouse) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved RaqxZIf6DvE as sceMouseOpen (lib: libSceMouse, mod: libSceMouse) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved x8qnXqh-tiM as sceMouseRead (lib: libSceMouse, mod: libSceMouse) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved i8UmXTSq7N4 as sceNpCmpNpId (lib: libSceNpCommon, mod: libSceNpCommon) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved dj+O5aD2a0Q as sceNpCmpOnlineId (lib: libSceNpCommon, mod: libSceNpCommon) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved CQtPRSF6Ds8 as sceNpWebApiReadData (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved G3AnLNdRBjE as sceNpWebApiInitialize (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved x1Y7yiYSk7c as sceNpWebApiCreateContext (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved y5Ta5JCzQHY as sceNpWebApiCreatePushEventFilter (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved PfSTDCgNMgc as sceNpWebApiRegisterPushEventCallback (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved JzhYTP2fG18 as sceNpWebApiAbortRequest (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved qK4o2656W4w as sceNpWebApiUnregisterPushEventCallback (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved zE+R6Rcx3W0 as sceNpWebApiDeletePushEventFilter (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved XUjdsSTTZ3U as sceNpWebApiDeleteContext (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved asz3TtIqGF8 as sceNpWebApiTerminate (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved noQgleu+KLE as sceNpWebApiDeleteRequest (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved rdgs5Z1MyFw as sceNpWebApiCreateRequest (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved kVbL4hL3K7w as sceNpWebApiSendRequest (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved k210oKgP80Y as sceNpWebApiGetHttpStatusCode (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved or0e885BlXo as sceNpWebApiUtilityParseNpId (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 743ZzEBzlV8 as sceNpWebApiGetHttpResponseHeaderValueLength (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved VwJ5L0Higg0 as sceNpWebApiGetHttpResponseHeaderValue (lib: libSceNpWebApi, mod: libSceNpWebApi) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved haVZE9FgKqE as sceNpProfileDialogUpdateStatus (lib: libSceNpProfileDialog, mod: libSceNpProfileDialog) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 8rhLl1-0W-o as sceNpProfileDialogGetResult (lib: libSceNpProfileDialog, mod: libSceNpProfileDialog) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Lg+NCE6pTwQ as sceNpProfileDialogInitialize (lib: libSceNpProfileDialog, mod: libSceNpProfileDialog) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved uj9Cz7Tk0cc as sceNpProfileDialogOpen (lib: libSceNpProfileDialog, mod: libSceNpProfileDialog) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 0Sp9vJcB1-w as sceNpProfileDialogTerminate (lib: libSceNpProfileDialog, mod: libSceNpProfileDialog) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 10t3e5+JPnU as sceNpMatching2Initialize (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Mqp3lJ+sjy4 as sceNpMatching2Terminate (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved fQQfP87I7hs as sceNpMatching2RegisterContextCallback (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved YfmpW719rMo as sceNpMatching2CreateContext (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 7vjNQ6Z1op0 as sceNpMatching2ContextStart (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved LhCPctIICxQ as sceNpMatching2GetServerId (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved +8e7wXLmjds as sceNpMatching2SetDefaultRequestOptParam (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved p+2EnxmaAMM as sceNpMatching2RegisterRoomEventCallback (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 0UMeWRGnZKA as sceNpMatching2RegisterSignalingCallback (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 4Nj7u5B5yCA as sceNpMatching2RegisterLobbyEventCallback (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 3KOuC4RmZZU as sceNpSignalingInitialize (lib: libSceNpSignaling, mod: libSceNpSignaling) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 5yYjEdd4t8Y as sceNpSignalingCreateContext (lib: libSceNpSignaling, mod: libSceNpSignaling) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 8533Q+LU7EQ as sceNpLookupCreateTitleCtx (lib: libSceNpUtility, mod: libSceNpUtility) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved hx+LIg-1koI as sceNpSignalingDeleteContext (lib: libSceNpSignaling, mod: libSceNpSignaling) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved NPhw0UXaNrk as sceNpSignalingTerminate (lib: libSceNpSignaling, mod: libSceNpSignaling) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved mtqDK9zkoIE as sceNpLookupDeleteTitleCtx (lib: libSceNpUtility, mod: libSceNpUtility) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 6UEembipgrM as sceNpSignalingDeactivateConnection (lib: libSceNpSignaling, mod: libSceNpSignaling) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved n5JmImxTiZU as sceNpMatching2JoinLobby (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved BBbJ92uUdCg as sceNpMatching2LeaveLobby (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved -f6M4caNe8k as sceNpMatching2ContextStop (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Nz-ZE7ur32I as sceNpMatching2DestroyContext (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved VqZX7POg2Mk as sceNpMatching2SearchRoom (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved wyvlEgZ-55w as sceNpMatching2GetLobbyInfoList (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved rJNPJqDCpiI as sceNpMatching2GetWorldInfoList (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved wUmwXZHaX1w as sceNpMatching2SignalingGetPingInfo (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved zCWZmXXN600 as sceNpMatching2CreateJoinRoom (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved CSIMDsVjs-g as sceNpMatching2JoinRoom (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved BD6kfx442Do as sceNpMatching2LeaveRoom (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved AUVfU6byg3c as sceNpMatching2KickoutRoomMember (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved NCP3bLGPt+o as sceNpMatching2GrantRoomOwner (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved S9D8JSYIrjE as sceNpMatching2SetRoomDataInternal (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved q7GK98-nYSE as sceNpMatching2SetRoomDataExternal (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved HoqTrkS9c5Q as sceNpMatching2SetRoomMemberDataInternal (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved tHD5FPFXtu4 as sceNpMatching2SignalingGetConnectionStatus (lib: libSceNpMatching2, mod: libSceNpMatching2) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved b7kJI+nx2hg as sceVoiceDeletePort (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Oo0S5PH7FIQ as sceVoiceEnd (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 9TrhuGzberQ as sceVoiceInit (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved nXpje5yNpaE as sceVoiceCreatePort (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved oV9GAdJ23Gw as sceVoiceConnectIPortToOPort (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 54phPH2LZls as sceVoiceStart (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Ao2YNSA7-Qo as sceVoiceStop (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved ajVj3QG2um4 as sceVoiceDisconnectIPortFromOPort (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved CrLqDwWLoXM as sceVoiceGetPortInfo (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved cQ6DGsQEjV4 as sceVoiceReadFromOPort (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved YeJl6yDlhW0 as sceVoiceWriteToIPort (lib: libSceVoice, mod: libSceVoice) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved eYz4v5Uek9U as sceNpLookupAbortRequest (lib: libSceNpUtility, mod: libSceNpUtility) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved wLaxchvEEnk as sceNpLookupDeleteRequest (lib: libSceNpUtility, mod: libSceNpUtility) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 0UvTFeomAUM as sceNpSignalingActivateConnection (lib: libSceNpSignaling, mod: libSceNpSignaling) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved JA4+sS39GMs as sceNpLookupCreateAsyncRequest (lib: libSceNpUtility, mod: libSceNpUtility) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved V4EVrruHuy8 as sceNpLookupPollAsync (lib: libSceNpUtility, mod: libSceNpUtility) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved T6tnM1Uti4g as sceNpLookupNpId (lib: libSceNpUtility, mod: libSceNpUtility) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved bD-JizUb3JM as sceNpSignalingGetConnectionStatus (lib: libSceNpSignaling, mod: libSceNpSignaling) [Core.Linker] linker.cpp:operator():182: symbol visibility !=0 [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved LR5cwFMMCVE as sceNpCommerceDialogUpdateStatus (lib: libSceNpCommerce, mod: libSceNpCommerce) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved m-I92Ab50W8 as sceNpCommerceDialogTerminate (lib: libSceNpCommerce, mod: libSceNpCommerce) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 0aR2aWmQal4 as sceNpCommerceDialogInitialize (lib: libSceNpCommerce, mod: libSceNpCommerce) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved DfSCDRA3EjY as sceNpCommerceDialogOpen (lib: libSceNpCommerce, mod: libSceNpCommerce) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved gjSyfzSsDcE as sceNpAuthPollAsync (lib: libSceNpAuth, mod: libSceNpAuth) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved N+mr7GjTvr8 as sceNpAuthCreateAsyncRequest (lib: libSceNpAuth, mod: libSceNpAuth) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved KxGkOrQJTqY as sceNpAuthGetAuthorizationCode (lib: libSceNpAuth, mod: libSceNpAuth) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved H8wG9Bk-nPc as sceNpAuthDeleteRequest (lib: libSceNpAuth, mod: libSceNpAuth) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved WlyEA-sLDf0 as sceKernelTruncate (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved teiItL2boFw as sceKernelReleaseFlexibleMemory (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 7Xl257M4VNI as pthread_equal (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved cYlYsDQY500 as __sanitizer_finish_switch_fiber (lib: libSceDbgAddressSanitizer, mod: libSceDbgAddressSanitizer) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved jh+8XiK4LeE as sceKernelIsAddressSanitizerEnabled (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved BG26hBGiNlw as Unknown !!! (lib: ulobjmgr, mod: ulobjmgr) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Smf+fUNblPc as Unknown !!! (lib: ulobjmgr, mod: ulobjmgr) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved jachrbjpHnM as __asan_destroy_fake_stack (lib: libSceDbgAddressSanitizer, mod: libSceDbgAddressSanitizer) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved AM5dbXp3qbI as __sanitizer_start_switch_fiber (lib: libSceDbgAddressSanitizer, mod: libSceDbgAddressSanitizer) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved ruZ9hhQ8oUk as pthread_getstack_np (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved BG26hBGiNlw as Unknown !!! (lib: ulobjmgr, mod: ulobjmgr) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Smf+fUNblPc as Unknown !!! (lib: ulobjmgr, mod: ulobjmgr) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved SweJO7t3pkk as Unknown !!! (lib: ulobjmgr, mod: ulobjmgr) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved HZ9Q2c+4BU4 as Unknown !!! (lib: ulobjmgr, mod: ulobjmgr) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved +2thxYZ4syk as environ (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved nQVWJEGHObc as _sigintr (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved kbw4UHHSYy0 as __pthread_cxa_finalize (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved djxxOmW6-aw as __progname (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved HoLVWNanBBc as getpid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved +g+UP8Pyfmo as sceKernelGetProcessType (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved VADc3MNQ3cM as signal (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved bt0POEUZddE as sceKernelGetSanitizerMallocReplace (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 3eqs37G74-s as pthread_getthreadid_np (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Wl2o5hOVZdw as sceKernelPrintBacktraceWithModuleInfo (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved -YTW+qXc3CQ as sceKernelInternalMemoryGetModuleSegmentInfo (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved kc+LEEIYakc as sceKernelMapNamedSystemFlexibleMemory (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 3k6kx-zOOSQ as sceKernelMlock (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved jh+8XiK4LeE as sceKernelIsAddressSanitizerEnabled (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved FN4gaPmuFV8 as write (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved NhpspxdjEKU as _nanosleep (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved zE-wXIZjLoM as sceKernelDebugRaiseExceptionOnReleaseMode (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved NNtFaKJbPt0 as _close (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved VAzswvTOCzI as unlink (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 2VRU7xiqLO8 as setcontext (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Nd-u09VFSCA as sigdelset (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved +F7C-hdk7+E as sigemptyset (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved UDCI-WazohQ as _sigaction (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 9zpLsLESzTs as _sigsuspend (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved JUimFtKe0Kc as sigaddset (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved JnNl8Xr-z4Y as sigismember (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved hPWDGx8ioXQ as setitimer (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved cjt-4ySmYTs as fork (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved edJoqV2FIWs as setsid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 6mMQ1MSPW-Q as chdir (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved W8f1adVl+48 as _dup2 (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 6Z83sYWFlA8 as _exit (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved MhC53TKmjVA as sysctlbyname (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Qsxbb+aty0U as __getcwd (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved A0O5kF5x4LQ as _fstat (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved bGVEgWXy6dg as _openat (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved DRGXpDDh8Ng as lstat (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved t6haf4s-eE0 as fstatat (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved DFmMT80xcNI as sysctl (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved t0fXUzq61Z4 as _fcntl (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 17Mfe1B3X6U as _fstatfs (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved sfKygSjIbI8 as _getdirentries (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 9jJTRrWCWK0 as vfork (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved -3nj+K1elI0 as _execve (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved ScfDTOqLOMw as _execvpe (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 8fryvN6BDtY as setpgid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved yawdym+zDvw as sched_setparam (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved puT82CSQzDE as sched_setscheduler (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved AfuS23bX6kg as getgid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 4oKwKmeOKjM as setegid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved kg4x8Prhfxw as getuid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved HTxb6gmexa0 as seteuid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved cZq1zIzFN7s as _fpathconf (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved ngZnQWyUvGI as statfs (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved oc98+zOImus as pathconf (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved GDuV00CHrUg as utimes (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 4pYihoPggn8 as __inet_ntop (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved kbw4UHHSYy0 as __pthread_cxa_finalize (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Fjc4-n1+y2g as __elf_phdr_match_addr (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved pd02UI9TbOA as readlink (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Pd7KtJ1gybk as link (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved ayrtszI7GBg as truncate (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved z0dtnPxYgtg as chmod (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved F4Kib3Mb0wI as sceKernelGetSanitizerNewReplace (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved crb5j7mkk1c as _is_signal_return (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved hHlZQUnlxSM as getrusage (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved D4yla3vx4tY as sceKernelError (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 7NwggrWJ5cA as __sys_regmgr_call (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved hI7oVeOluPM as recvmsg (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved TU-d9PfIHPM as socket (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved HoLVWNanBBc as getpid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved G-MYv5erXaU as sceKernelGetAppInfo (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved ChCOChPU-YM as sceKernelSettimeofday (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved D4yla3vx4tY as sceKernelError (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved d7nUj1LOdDU as clock_settime (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 3k6kx-zOOSQ as sceKernelMlock (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved xQIIfJ860sk as sceKernelMunlock (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved HoLVWNanBBc as getpid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved G-MYv5erXaU as sceKernelGetAppInfo (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 1yca4VvfcNA as sceKernelTitleWorkaroundIsEnabled (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_stop [Core.Linker] linker.cpp:operator():215: Function not patched! module_stop [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_start [Core.Linker] linker.cpp:operator():215: Function not patched! module_start [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved djxxOmW6-aw as __progname (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved kbw4UHHSYy0 as __pthread_cxa_finalize (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved zE-wXIZjLoM as sceKernelDebugRaiseExceptionOnReleaseMode (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved VADc3MNQ3cM as signal (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Wl2o5hOVZdw as sceKernelPrintBacktraceWithModuleInfo (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 3k6kx-zOOSQ as sceKernelMlock (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved hHlZQUnlxSM as getrusage (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved Fjc4-n1+y2g as __elf_phdr_match_addr (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved kbw4UHHSYy0 as __pthread_cxa_finalize (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved DFmMT80xcNI as sysctl (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved VkTAsrZDcJ0 as sigfillset (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved aPcyptbOiZs as sigprocmask (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved tZY4+SZNFhA as msync (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved HoLVWNanBBc as getpid (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved crb5j7mkk1c as _is_signal_return (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved mo0bFmWppIw as sigreturn (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved OjWstbIRPUo as __Ux86_64_setcontext (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved 6Z83sYWFlA8 as _exit (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_stop [Core.Linker] linker.cpp:operator():215: Function not patched! module_stop [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_start [Core.Linker] linker.cpp:operator():215: Function not patched! module_start [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved WlyEA-sLDf0 as sceKernelTruncate (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved bt3CTBKmGyI as scePthreadSetaffinity (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:273: Linker: Stub resolved rcrVFJsQWRY as scePthreadGetaffinity (lib: libkernel, mod: libkernel) [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_stop [Core.Linker] linker.cpp:operator():215: Function not patched! module_stop [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_start [Core.Linker] linker.cpp:operator():215: Function not patched! module_start [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_stop [Core.Linker] linker.cpp:operator():215: Function not patched! module_stop [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_start [Core.Linker] linker.cpp:operator():215: Function not patched! module_start [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_stop [Core.Linker] linker.cpp:operator():215: Function not patched! module_stop [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_start [Core.Linker] linker.cpp:operator():215: Function not patched! module_start [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_stop [Core.Linker] linker.cpp:operator():215: Function not patched! module_stop [Core.Linker] linker.cpp:Resolve:234: Not Resolved module_start [Core.Linker] linker.cpp:operator():215: Function not patched! module_start [Kernel.Vmm] memory.cpp:operator():212: in_addr = 0x880000000, out_addr = 0x880000000, len = 0x4000, prot = 0x3, flags = 0x0 [Core.Linker] module.cpp:Start:98: Module started : libSceNgs2 [Core.Linker] module.cpp:Start:98: Module started : libSceFiber [Core.Linker] module.cpp:Start:98: Module started : libSceUlt [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Kernel.Event] event_flag.cpp:sceKernelCreateEventFlag:186: called name = libult eventflag attr = 0x21 initPattern = 0x0 [Core] stubs.cpp:CommonStub:45: Stub: Unknown (nid: SweJO7t3pkk) called, returning zero to 0x930021a63 [Core.Linker] module.cpp:Start:98: Module started : libSceJson [Core.Linker] module.cpp:Start:98: Module started : libSceJson2 [Core.Linker] module.cpp:Start:98: Module started : libSceLibcInternal [Kernel.Fs] file_system.cpp:posix_open:153: posix open redirect to sceKernelOpen [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /dev/console flags = 0x1 mode = 0 [Core] stubs.cpp:CommonStub:42: Stub: getpid (nid: HoLVWNanBBc) called, returning zero to 0x95fffc99e [Core] stubs.cpp:CommonStub:42: Stub: sceKernelGetProcessType (nid: +g+UP8Pyfmo) called, returning zero to 0x95fffc9a5 [Kernel.Fs] file_system.cpp:posix_open:153: posix open redirect to sceKernelOpen [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /dev/deci_tty6 flags = 0x1 mode = 0 [Core.Linker] module.cpp:Start:98: Module started : libSceDiscMap [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/sce_discmap.plt flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/sce_discmap_patch.plt flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/sce_discmap.plt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/sce_discmap_patch.plt [Kernel.Vmm] memory.cpp:posix_mmap:473: posix mmap redirect to sceKernelMmap [Kernel.Vmm] memory.cpp:sceKernelMmap:456: called addr = 0x0, len = 3473408, prot = 3, flags = 4098, fd = -1, offset = 0 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/sce_discmap.plt flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/sce_discmap.plt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/sce_discmap_patch.plt flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/sce_discmap_patch.plt [Core] stubs.cpp:CommonStub:42: Stub: socket (nid: TU-d9PfIHPM) called, returning zero to 0x96fffe361 [Kernel.Pthread] file_system.cpp:posix_close:197: posix_close: error = -2147352575 [Core.Linker] module.cpp:Start:98: Module started : libSceRtc [Core.Linker] module.cpp:Start:98: Module started : libSceJpegEnc [Core.Linker] module.cpp:Start:98: Module started : libSceCesCs [Core.Linker] module.cpp:Start:98: Module started : libSceFont [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelMlock (nid: 3k6kx-zOOSQ) called, returning zero to 0x9afffc42d [Core] stubs.cpp:CommonStub:42: Stub: getpid (nid: HoLVWNanBBc) called, returning zero to 0x9afffc543 [Core] stubs.cpp:CommonStub:42: Stub: sceKernelGetAppInfo (nid: G-MYv5erXaU) called, returning zero to 0x9afffc54d [Core] stubs.cpp:CommonStub:42: Stub: sceKernelTitleWorkaroundIsEnabled (nid: 1yca4VvfcNA) called, returning zero to 0x9afffc5b0 [Core.Linker] module.cpp:Start:98: Module started : libSceSmart [Core.Linker] module.cpp:Start:98: Module started : libc [Core.Linker] module.cpp:Start:98: Module started : libSceFios2 [Core.Linker] module.cpp:Start:98: Module started : libSceS3DConversion [Core.Linker] module.cpp:Start:98: Module started : libSceFace [Core.Linker] module.cpp:Start:98: Module started : libSceHeadTracker [Core.Linker] module.cpp:Start:98: Module started : libSceHand [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x7400000, alignment = 0x200000, memoryType = 0x0, physAddrOut = 0x0 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x800000, len = 0x7400000, prot = 0x3, flags = 0x0, directMemoryStart = 0x0, alignment = 0x200000 [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_APP_CONTENT [Lib.AppContent] app_content.cpp:sceAppContentInitialize:243: (DUMMY) called [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902087add [Lib.UserService] userservice.cpp:sceUserServiceInitialize:1126: (dummy) called [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Lib.NpManager] np_manager.cpp:sceNpSetContentRestriction:1967: (STUBBED) called [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9020137a4 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x20c00000, alignment = 0x4000, memoryType = 0x0, physAddrOut = 0x7400000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x7c00000, len = 0x20c00000, prot = 0x3, flags = 0x0, directMemoryStart = 0x7400000, alignment = 0x4000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x11400000, alignment = 0x4000, memoryType = 0x0, physAddrOut = 0x28000000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x28800000, len = 0x11400000, prot = 0x3, flags = 0x0, directMemoryStart = 0x28000000, alignment = 0x4000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x9800000, alignment = 0x10000, memoryType = 0x0, physAddrOut = 0x39400000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x39c00000, len = 0x9800000, prot = 0x33, flags = 0x0, directMemoryStart = 0x39400000, alignment = 0x10000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x8ef00000, alignment = 0x10000, memoryType = 0x3, physAddrOut = 0x42c00000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x43400000, len = 0x8ef00000, prot = 0x33, flags = 0x0, directMemoryStart = 0x42c00000, alignment = 0x10000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x37600000, alignment = 0x10000, memoryType = 0x3, physAddrOut = 0xd1b00000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0xd2300000, len = 0x37600000, prot = 0x33, flags = 0x0, directMemoryStart = 0xd1b00000, alignment = 0x10000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0xa00000, alignment = 0x4000, memoryType = 0x0, physAddrOut = 0x109100000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x109900000, len = 0xa00000, prot = 0x3, flags = 0x0, directMemoryStart = 0x109100000, alignment = 0x4000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x600000, alignment = 0x4000, memoryType = 0x0, physAddrOut = 0x109b00000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x10a300000, len = 0x600000, prot = 0x3, flags = 0x0, directMemoryStart = 0x109b00000, alignment = 0x4000 [Kernel.Vmm] memory.cpp:operator():212: in_addr = 0x0, out_addr = 0x10a900000, len = 0x3000000, prot = 0x3, flags = 0x0 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0xe00000, alignment = 0x4000, memoryType = 0x0, physAddrOut = 0x10a100000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x10d900000, len = 0xe00000, prot = 0x3, flags = 0x0, directMemoryStart = 0x10a100000, alignment = 0x4000 [Kernel.Vmm] memory.cpp:operator():212: in_addr = 0x0, out_addr = 0x10e700000, len = 0x5200000, prot = 0x3, flags = 0x0 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x500000, alignment = 0x10000, memoryType = 0x0, physAddrOut = 0x10af00000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x113900000, len = 0x500000, prot = 0x33, flags = 0x0, directMemoryStart = 0x10af00000, alignment = 0x10000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x800000, alignment = 0x10000, memoryType = 0x3, physAddrOut = 0x10b400000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x113e00000, len = 0x800000, prot = 0x33, flags = 0x0, directMemoryStart = 0x10b400000, alignment = 0x10000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x900000, alignment = 0x4000, memoryType = 0x0, physAddrOut = 0x10bc00000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x114600000, len = 0x900000, prot = 0x3, flags = 0x0, directMemoryStart = 0x10bc00000, alignment = 0x4000 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x12800000, alignment = 0x4000, memoryType = 0x0, physAddrOut = 0x10c500000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0x0, out_addr = 0x114f00000, len = 0x12800000, prot = 0x3, flags = 0x0, directMemoryStart = 0x10c500000, alignment = 0x4000 [Kernel.Vmm] memory.cpp:operator():212: in_addr = 0x0, out_addr = 0x127700000, len = 0x2000000, prot = 0x3, flags = 0x0 [Kernel.Vmm] memory.cpp:operator():212: in_addr = 0x0, out_addr = 0x129700000, len = 0x6000000, prot = 0x3, flags = 0x0 [Kernel.Vmm] memory.cpp:operator():212: in_addr = 0x0, out_addr = 0x12f700000, len = 0x2000000, prot = 0x3, flags = 0x0 [Kernel.Vmm] memory.cpp:operator():212: in_addr = 0x0, out_addr = 0x131700000, len = 0x2000000, prot = 0x3, flags = 0x0 [Lib.Net] net.cpp:sceNetInit:770: (DUMMY) called [Lib.Net] net.cpp:sceNetPoolCreate:813: (DUMMY) name = FD4HttpMan size = 16384 flags = 0 [Lib.Ssl] ssl.cpp:sceSslInit:697: (DUMMY) called poolSize = 311296 [Lib.Http] http.cpp:sceHttpInit:263: (DUMMY) called libnetMemId = 0 libsslCtxId = 1 poolSize = 311296 [Lib.Http] http.cpp:sceHttpCreateTemplate:117: (STUBBED) called [Lib.Http] http.cpp:sceHttpSetNonblock:420: (STUBBED) called [Lib.Http] http.cpp:sceHttpCreateEpoll:92: (STUBBED) called [Lib.Http] http.cpp:sceHttpAddRequestHeader:37: (STUBBED) called [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Lib.Ajm] ajm.cpp:sceAjmInitialize:137: called reserved = 0 [Lib.Ajm] ajm.cpp:sceAjmModuleRegister:197: called context = 1, codec_type = 1 [Lib.AudioOut] audioout.cpp:sceAudioOutOpen:366: id = 255 port_type = MAIN index = 0 length = 256 sample_rate = 48000 param_type = FLOAT_8CH attr = NONE [Lib.AudioOut] cubeb_audio.cpp:StateCallback:124: Cubeb stream started [Lib.AudioOut] audioout.cpp:sceAudioOutOpen:366: id = 255 port_type = BGM index = 0 length = 256 sample_rate = 48000 param_type = FLOAT_8CH attr = NONE [Lib.AudioOut] cubeb_audio.cpp:StateCallback:124: Cubeb stream started [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_mixer.fev [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_mixer.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_mixer.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_mixer.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_mixer.fev [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multirpc.rpc [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multirpc.rpc [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_multirpc.rpc flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multirpc.rpc [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_multirpc.rpc [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multimix.mix [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multimix.mix [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_multimix.mix flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multimix.mix [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_multimix.mix [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multich.mch [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multich.mch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_multich.mch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_multich.mch [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_multich.mch [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Kernel.Vmm] memory.cpp:sceKernelGetDirectMemorySize:22: called [Kernel.Vmm] memory.cpp:sceKernelAllocateDirectMemory:54: searchStart = 0x0, searchEnd = 0x120000000, len = 0x20000, alignment = 0x10000, memoryType = 0x3, physAddrOut = 0x11ed00000 [Kernel.Vmm] memory.cpp:sceKernelMapDirectMemory:183: called, redirected to sceKernelMapNamedDirectMemory [Kernel.Vmm] memory.cpp:operator():173: in_addr = 0xfb0000000, out_addr = 0xfb0000000, len = 0x20000, prot = 0x33, flags = 0x0, directMemoryStart = 0x11ed00000, alignment = 0x10000 [Lib.GnmDriver] gnmdriver.cpp:sceGnmMapComputeQueue:1288: ASC pipe 0 queue 0 mapped to vqueue 1 [Lib.VideoOut] video_out.cpp:sceVideoOutOpen:229: called [Kernel.Event] equeue.cpp:sceKernelCreateEqueue:182: name = FlipEventQueue [Lib.VideoOut] video_out.cpp:sceVideoOutAddFlipEvent:41: handle = 1 [Lib.VideoOut] video_out.cpp:sceVideoOutSetBufferAttribute:28: pixelFormat = A8R8G8B8Srgb, tilingMode = 0, aspectRatio = 0, width = 1280, height = 720, pitchInPixel = 1280 [Lib.VideoOut] driver.cpp:RegisterBuffers:123: startIndex = 0, bufferNum = 3, pixelFormat = A8R8G8B8Srgb, aspectRatio = 0, tilingMode = 0, width = 1280, height = 720, pitchInPixel = 1280, option = 0x0 [Lib.VideoOut] driver.cpp:RegisterBuffers:138: buffers[0] = 0x4dc08000 [Lib.VideoOut] driver.cpp:RegisterBuffers:138: buffers[1] = 0x4dfc8000 [Lib.VideoOut] driver.cpp:RegisterBuffers:138: buffers[2] = 0x4e388000 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x306ce628 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture2d_array cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint2 _101 = uint2((cbuf_16.data[1u + buf0_dword_off] + cbuf_16.data[4u + buf0_dword_off]) + _75, 0u); cs_img8.write((float4(float4(float4(texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))).x, 0.0, 0.0, 1.0)).x, 0.0, 0.0, 1.0)), uint2(uint(_101.x), 0), uint(_101.y)); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x83450e2f [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /data/cache.bin flags = 0x602 mode = 511 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture3d cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _82 = 2u + buf0_dword_off; uint _86 = 3u + buf0_dword_off; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint _105 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_86]))); uint _106 = cbuf_16.data[_86] * _105; bool _110 = 0u != (spvMulExtended(cbuf_16.data[_86], _105))._m1; uint _116 = (spvMulExtended(as_type(_110 ? as_type(_106) : as_type(0u - _106)), _105))._m1; uint _119 = cbuf_16.data[1u + buf0_dword_off] + _75; uint _125 = (spvMulExtended(as_type(_110 ? as_type(_105 - _116) : as_type(_105 + _116)), _119))._m1; uint _126 = _125 * cbuf_16.data[_86]; bool _128 = _119 >= _126; uint _133 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_82]))); uint _136 = cbuf_16.data[_82] * _133; bool _145 = 0u != (spvMulExtended(cbuf_16.data[_82], _133))._m1; uint _155 = as_type((0u != cbuf_16.data[_86]) ? (_128 ? ((_128 && ((_119 - _126) >= cbuf_16.data[_86])) ? as_type(_125 + 1u) : as_type(_125)) : as_type(_125 + 4294967295u)) : as_type(0xffffffffu /* nan */)); uint _158 = (spvMulExtended(as_type(_145 ? as_type(_136) : as_type(0u - _136)), _133))._m1; uint _162 = _119 + ((0u - cbuf_16.data[_86]) * _155); uint _168 = (spvMulExtended(as_type(_145 ? as_type(_133 - _158) : as_type(_133 + _158)), _162))._m1; uint _169 = _168 * cbuf_16.data[_82]; bool _171 = _162 >= _169; uint _194 = as_type((0u != cbuf_16.data[_82]) ? (_171 ? ((_171 && ((_162 - _169) >= cbuf_16.data[_82])) ? as_type(_168 + 1u) : as_type(_168)) : as_type(_168 + 4294967295u)) : as_type(0xffffffffu /* nan */)); cs_img8.write((float4(float4(float4(texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))).x, 0.0, 0.0, 1.0)).x, 0.0, 0.0, 1.0)), uint3(uint3(cbuf_16.data[4u + buf0_dword_off] + (_162 + ((0u - cbuf_16.data[_82]) * _194)), cbuf_16.data[5u + buf0_dword_off] + _194, cbuf_16.data[6u + buf0_dword_off] + _155))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] tile_manager.cpp:TryDetile:271: Unsupported tiled image: R8Unorm (Texture_Volume) [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xe2c27f0c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture2d cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _82 = 2u + buf0_dword_off; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint _104 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_82]))); uint _105 = cbuf_16.data[_82] * _104; bool _109 = 0u != (spvMulExtended(cbuf_16.data[_82], _104))._m1; uint _115 = (spvMulExtended(as_type(_109 ? as_type(_105) : as_type(0u - _105)), _104))._m1; uint _118 = cbuf_16.data[1u + buf0_dword_off] + _75; uint _124 = (spvMulExtended(as_type(_109 ? as_type(_104 - _115) : as_type(_104 + _115)), _118))._m1; uint _125 = _124 * cbuf_16.data[_82]; bool _127 = _118 >= _125; uint _149 = as_type((0u != cbuf_16.data[_82]) ? (_127 ? ((_127 && ((_118 - _125) >= cbuf_16.data[_82])) ? as_type(_124 + 1u) : as_type(_124)) : as_type(_124 + 4294967295u)) : as_type(0xffffffffu /* nan */)); cs_img8.write((float4(float4(float4(texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))).zyxw)).zyxw)), uint2(uint2((cbuf_16.data[4u + buf0_dword_off] + _118) + ((0u - cbuf_16.data[_82]) * _149), cbuf_16.data[5u + buf0_dword_off] + _149))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/shader/gxshader.shaderbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/shader/gxshader.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/systex.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/systex.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/movtaesprj.movtae.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/movtaesprj.movtae.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/eventnameid.txt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/eventnameid.txt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/variablenameid.txt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/variablenameid.txt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/statenameid.txt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/statenameid.txt [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xe2c27f0c (permutation) [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/eventnameid.txt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/variablenameid.txt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/statenameid.txt [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture2d_array cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _82 = 2u + buf0_dword_off; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint _104 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_82]))); uint _105 = cbuf_16.data[_82] * _104; bool _109 = 0u != (spvMulExtended(cbuf_16.data[_82], _104))._m1; uint _115 = (spvMulExtended(as_type(_109 ? as_type(_105) : as_type(0u - _105)), _104))._m1; uint _118 = cbuf_16.data[1u + buf0_dword_off] + _75; uint _124 = (spvMulExtended(as_type(_109 ? as_type(_104 - _115) : as_type(_104 + _115)), _118))._m1; uint _125 = _124 * cbuf_16.data[_82]; bool _127 = _118 >= _125; uint _149 = as_type((0u != cbuf_16.data[_82]) ? (_127 ? ((_127 && ((_118 - _125) >= cbuf_16.data[_82])) ? as_type(_124 + 1u) : as_type(_124)) : as_type(_124 + 4294967295u)) : as_type(0xffffffffu /* nan */)); uint3 _156 = uint3((cbuf_16.data[4u + buf0_dword_off] + _118) + ((0u - cbuf_16.data[_82]) * _149), cbuf_16.data[5u + buf0_dword_off] + _149, 0u); cs_img8.write((float4(float4(float4(texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))).zyxw)).zyxw)), uint2(_156.xy), uint(_156.z)); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/shader/gxshader.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/systex.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/movtaesprj.movtae.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/shader/gxgui.shaderbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/shader/gxgui.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/shader/gxgui.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/shader/gxrenderershader.shaderbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/shader/gxrenderershader.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/shader/gxposteffect.shaderbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/shader/gxposteffect.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/shader/gxflvershader.shaderbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/shader/gxflvershader.shaderbnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xe2c27f0c (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture2d cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _82 = 2u + buf0_dword_off; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint _104 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_82]))); uint _105 = cbuf_16.data[_82] * _104; bool _109 = 0u != (spvMulExtended(cbuf_16.data[_82], _104))._m1; uint _115 = (spvMulExtended(as_type(_109 ? as_type(_105) : as_type(0u - _105)), _104))._m1; uint _118 = cbuf_16.data[1u + buf0_dword_off] + _75; uint _124 = (spvMulExtended(as_type(_109 ? as_type(_104 - _115) : as_type(_104 + _115)), _118))._m1; uint _125 = _124 * cbuf_16.data[_82]; bool _127 = _118 >= _125; uint _149 = as_type((0u != cbuf_16.data[_82]) ? (_127 ? ((_127 && ((_118 - _125) >= cbuf_16.data[_82])) ? as_type(_124 + 1u) : as_type(_124)) : as_type(_124 + 4294967295u)) : as_type(0xffffffffu /* nan */)); cs_img8.write((float4(float4(float4(texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))))))), uint2(uint2((cbuf_16.data[4u + buf0_dword_off] + _118) + ((0u - cbuf_16.data[_82]) * _149), cbuf_16.data[5u + buf0_dword_off] + _149))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/shader/gxposteffect.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/shader/gxrenderershader.shaderbnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xe2c27f0c (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture2d cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _82 = 2u + buf0_dword_off; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint _102 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_82]))); uint _103 = cbuf_16.data[_82] * _102; bool _107 = 0u != (spvMulExtended(cbuf_16.data[_82], _102))._m1; uint _113 = (spvMulExtended(as_type(_107 ? as_type(_103) : as_type(0u - _103)), _102))._m1; uint _116 = cbuf_16.data[1u + buf0_dword_off] + _75; uint _122 = (spvMulExtended(as_type(_107 ? as_type(_102 - _113) : as_type(_102 + _113)), _116))._m1; uint _123 = _122 * cbuf_16.data[_82]; bool _125 = _116 >= _123; uint _147 = as_type((0u != cbuf_16.data[_82]) ? (_125 ? ((_125 && ((_116 - _123) >= cbuf_16.data[_82])) ? as_type(_122 + 1u) : as_type(_122)) : as_type(_122 + 4294967295u)) : as_type(0xffffffffu /* nan */)); cs_img8.write((float4(float4(float4(texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))).xy, 0.0, 1.0)).xy, 0.0, 1.0)), uint2(uint2((cbuf_16.data[4u + buf0_dword_off] + _116) + ((0u - cbuf_16.data[_82]) * _147), cbuf_16.data[5u + buf0_dword_off] + _147))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xe2c27f0c (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture2d cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _82 = 2u + buf0_dword_off; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint _101 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_82]))); uint _102 = cbuf_16.data[_82] * _101; bool _106 = 0u != (spvMulExtended(cbuf_16.data[_82], _101))._m1; uint _112 = (spvMulExtended(as_type(_106 ? as_type(_102) : as_type(0u - _102)), _101))._m1; uint _115 = cbuf_16.data[1u + buf0_dword_off] + _75; uint _121 = (spvMulExtended(as_type(_106 ? as_type(_101 - _112) : as_type(_101 + _112)), _115))._m1; uint _122 = _121 * cbuf_16.data[_82]; bool _124 = _115 >= _122; uint _146 = as_type((0u != cbuf_16.data[_82]) ? (_124 ? ((_124 && ((_115 - _122) >= cbuf_16.data[_82])) ? as_type(_121 + 1u) : as_type(_121)) : as_type(_121 + 4294967295u)) : as_type(0xffffffffu /* nan */)); cs_img8.write((float4(0.0, 0.0, 0.0, float4(float4(0.0, 0.0, 0.0, texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))).x)).x)), uint2(uint2((cbuf_16.data[4u + buf0_dword_off] + _115) + ((0u - cbuf_16.data[_82]) * _146), cbuf_16.data[5u + buf0_dword_off] + _146))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/shader/gxflvershader.shaderbnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x8b355b5a [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], texture_buffer imgbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint texbuf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 6u); uint _65 = extract_bits(push_data.buf_offsets0[0u], 14u, 2u); uint _71 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _72 = 0u + buf0_dword_off; uint _75 = 1u + buf0_dword_off; uint _78 = 2u + buf0_dword_off; uint _82 = 3u + buf0_dword_off; uint _85 = _71 >> 6u; uint _91 = (_71 + ((0u - _85) << 6u)) + (_85 << 7u); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82])).zyxw), uint(((_91 << _65) + texbuf1_off))); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82])).zyxw), uint((((_91 + 64u) << _65) + texbuf1_off))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xa224d59e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], texture_buffer imgbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; imgbuf_4.write(as_type(float4(float4(as_type(cbuf_8.data[0u + buf0_dword_off]), as_type(cbuf_8.data[1u + buf0_dword_off]), as_type(cbuf_8.data[2u + buf0_dword_off]), as_type(cbuf_8.data[3u + buf0_dword_off])))), uint(((((gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x) << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x38d65b32 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x89cda9e4 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/mtd/allmaterialbnd.mtdbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/mtd/allmaterialbnd.mtdbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/drawparam/default.gparam.dcx flags = 0x0 mode = 365 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocat[Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/drawparam/default.gparam.dcx ionID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/drawparam/m_template.gparam.dcx flags = 0x0 mode = 365 [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/drawparam/m_template.gparam.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/drawparam/s_template.gparam.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/drawparam/s_template.gparam.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/drawparam/empty.gparam.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/drawparam/empty.gparam.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/global_snow_a.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/global_snow_a.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/global_snow_r.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/global_snow_r.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/global_snow_s.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/global_snow_s.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/global_snow_n.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/global_snow_n.tpf.dcx [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 gl_Position; }; struct main0_in { uint4 m_118; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _58 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _61 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _64 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; bool _79 = (_61.x && _58.y) || (_61.y && _58.x); bool _87 = (_64.x && _61.y) || (_64.y && _61.x); gl_out[gl_InvocationID].gl_Position = (gl_InvocationID == 3) ? ((gl_in[0].gl_Position * (((_58.x && _64.y) || (_58.y && _64.x)) ? (-1.0) : 1.0)) + ((gl_in[1].gl_Position * (_79 ? (-1.0) : 1.0)) + (gl_in[2].gl_Position * (_87 ? (-1.0) : 1.0)))) : gl_in[((_79 ? 1 : (_87 ? 2 : 0)) + gl_InvocationID) % 3].gl_Position; } End MSL [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [mvk-info] Compiling Metal shader with FastMath enabled. [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x9017f639d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 gl_Position [[position]]; }; struct main0_in { float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); out.gl_Position = gl_in[(int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x)].gl_Position; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; fragment main0_out main0(texture2d fs_img4 [[texture(0)]], texture2d_array fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], float4 gl_FragCoord [[position]]) { float gl_FragDepth; main0_out out = {}; uint4 _71 = as_type(fs_img4.read(uint2(uint2(uint(int(floor(gl_FragCoord.x))), uint(int(floor(gl_FragCoord.y))))), 0u)); float2 _77 = float2(as_type(_71.x), 0.0); float2 _85 = float2(as_type(_71.y), 1.0); float2 _93 = float2(as_type(_71.z), 2.0); out.frag_color0.x = fs_img16.sample(fs_samp12, float2(_77.x, 0.5), uint(rint(_77.y))).x; out.frag_color0.y = fs_img16.sample(fs_samp12, float2(_85.x, 0.5), uint(rint(_85.y))).x; out.frag_color0.z = fs_img16.sample(fs_samp12, float2(_93.x, 0.5), uint(rint(_93.y))).x; out.frag_color0.w = as_type(_71.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/modelviewer_default_rem.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/modelviewer_default_rem.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/modelviewer_default_iem.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/modelviewer_default_iem.tpf.dcx [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x901e3b1c4 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x901e3b1c4 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x901e3b1c4 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x901e3b1c4 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x901e3b1c4 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x901e3b1c4 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_NP_TROPHY [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_PLAYGO [Lib.PlayGo] playgo.cpp:scePlayGoInitialize:239: called, bufSize = 2097152 [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Lib.UserService] userservice.cpp:sceUserServiceGetUserName:1071: called user_id = 1 ,size = 17 [Lib.Pad] pad.cpp:scePadInit:206: (STUBBED) called [Lib.Pad] pad.cpp:scePadOpen:251: (DUMMY) called user_id = 1 type = 0 index = 0 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/black.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/black.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/black.gfx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x9837d1c8 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x34e8a281 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = in.vs_in_attr1.z; out.out_attr0.w = in.vs_in_attr1.w; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[4]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; frag_color0.x = spvFMul(as_type(cbuf_4.data[0u + buf0_dword_off]), in.fs_in_attr0.x); frag_color0.y = spvFMul(as_type(cbuf_4.data[1u + buf0_dword_off]), in.fs_in_attr0.y); frag_color0.z = spvFMul(as_type(cbuf_4.data[2u + buf0_dword_off]), in.fs_in_attr0.z); frag_color0.w = spvFMul(as_type(cbuf_4.data[3u + buf0_dword_off]), in.fs_in_attr0.w); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xfefebf9f [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], texture_buffer texbuf_8 [[texture(0)]], texture_buffer texbuf_4 [[texture(1)]], texture_buffer imgbuf_12 [[texture(2)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { float4 _91 = float4(as_type(texbuf_8.read(uint(((gl_WorkGroupID.x << extract_bits(push_data.buf_offsets0[0u], 6u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 0u, 6u))))).xyz, 0.0); uint _95 = as_type(_91.y); bool _98 = as_type(_91.z) >= gl_LocalInvocationID.x; uint _100; if (_98) { _100 = gl_LocalInvocationID.x + _95; } else { _100 = _95; } if (_98) { uint _109 = gl_LocalInvocationID.x + as_type(_91.x); if (_98 && (push_data.ud_regs0[0u] > _109)) { imgbuf_12.write(as_type(float4(float4(float4(as_type(texbuf_4.read(uint(((_100 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u))))).x, 0.0, 0.0, 0.0).x, 0.0, 0.0, 0.0).x, 0.0, 0.0, 0.0)), uint(((_109 << extract_bits(push_data.buf_offsets0[0u], 22u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 16u, 6u)))); } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x89cda9e4 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/nowloading.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/nowloading.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/common.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/common.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/dummy.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/dummy.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/logo.tpf.dcx flags = 0x0 mode = 365 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_42; float4 gl_Position; }; struct main0_in { float4 m_27; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _64 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _67 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _70 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _78 = ((_64.x && _70.y) || (_64.y && _70.x)) ? (-1.0) : 1.0; bool _85 = (_67.x && _64.y) || (_67.y && _64.x); float _86 = _85 ? (-1.0) : 1.0; bool _93 = (_70.x && _67.y) || (_70.y && _67.x); float _94 = _93 ? (-1.0) : 1.0; bool _98 = gl_InvocationID == 3; int _100 = ((_85 ? 1 : (_93 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _98 ? ((gl_in[0].gl_Position * _78) + ((gl_in[1].gl_Position * _86) + (gl_in[2].gl_Position * _94))) : gl_in[_100].gl_Position; gl_out[gl_InvocationID].m_42 = _98 ? ((gl_in[0].m_27 * _78) + ((gl_in[1].m_27 * _86) + (gl_in[2].m_27 * _94))) : gl_in[_100].m_27; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/menu/logo.tpf.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/title.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/title.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake.tpf.dcx [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_31 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _43 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_43].gl_Position; out.m_31 = gl_in[_43].m_27; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/drawparam/default.gparam.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/drawparam/m_template.gparam.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/drawparam/s_template.gparam.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/drawparam/empty.gparam.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/global_snow_a.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/global_snow_r.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/global_snow_s.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/mtd/allmaterialbnd.mtdbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/global_snow_n.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/modelviewer_default_iem.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/modelviewer_default_rem.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/nowloading.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/common.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/dummy.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/title.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/shader/gxffxshader.shaderbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/shader/gxffxshader.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/enggb/font.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/enggb/font.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/shader/gxffxshader.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/enggb/font.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/autogenalter.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/autogenalter.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/autogenalter.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/shader/gxdecal.shaderbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/shader/gxdecal.shaderbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/decaltex_0.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/decaltex_0.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/decaltex_1.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/decaltex_1.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/decaltex_2.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/decaltex_2.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/decaltex_3.tpf.dcx flags = 0x0 mode = 365 [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_NP_AUTH [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/decaltex_3.tpf.dcx [Lib.NetCtl] netctl.cpp:sceNetCtlGetNatInfo:204: (STUBBED) called [Lib.NetCtl] netctl.cpp:sceNetCtlGetNatInfo:204: (STUBBED) called [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/shader/gxdecal.shaderbnd.dcx [Lib.Http] http.cpp:sceHttpCreateTemplate:117: (STUBBED) called [Lib.Http] http.cpp:sceHttpSetNonblock:420: (STUBBED) called [Lib.Http] http.cpp:sceHttpCreateEpoll:92: (STUBBED) called [Lib.Http] http.cpp:sceHttpsEnableOption:310: (STUBBED) called [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_NP_MATCHING2 [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_NP_SIGNALING [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_NP_UTILITY [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_NP_PROFILE_DIALOG [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902087add [Lib.NpManager] np_manager.cpp:sceNpSetNpTitleId:1982: (STUBBED) called [Lib.UserService] userservice.cpp:sceUserServiceInitialize:1126: (dummy) called [Core] stubs.cpp:CommonStub:42: Stub: sceNpMatching2Initialize (nid: 10t3e5+JPnU) called, returning zero to 0x900cb62d5 [Lib.NpManager] np_manager.cpp:sceNpRegisterStateCallback:1942: (STUBBED) called [Lib.NpManager] np_manager.cpp:sceNpRegisterGamePresenceCallback:1922: (STUBBED) called [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902087add [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/decaltex_1.tpf.dcx [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Lib.Net] net.cpp:sceNetEpollCreate:554: (STUBBED) called [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902087add [Lib.SysModule] sysmodule.cpp:sceSysmoduleLoadModule:56: (DUMMY) called module = ORBIS_SYSMODULE_NP_SCORE_RANKING [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902087add [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Lib.PlayGo] playgo.cpp:scePlayGoOpen:268: called [Lib.PlayGo] playgo.cpp:scePlayGoGetChunkId:42: called [Lib.NpTrophy] np_trophy.cpp:sceNpTrophyCreateContext:169: New context = 0, user_id = 1 service label = 0 [Lib.NpTrophy] np_trophy.cpp:sceNpTrophyCreateHandle:183: New handle = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/decaltex_0.tpf.dcx [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Lib.NpTrophy] np_trophy.cpp:sceNpTrophyRegisterContext:614: (STUBBED) called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/bloodmessage.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/bloodmessage.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/bloodmessage.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/bloodmessageedit.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/bloodmessageedit.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/bloodmessageedit.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/decaltex_3.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/decaltex_2.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/facegen/facegen.fgbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/facegen/facegen.fgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/bloodmessagelist.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/bloodmessagelist.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/bloodmessagelist.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/caption.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/caption.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/caption.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/channelgenerate.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/channelgenerate.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/channelgenerate.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/channelinvest.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/channelinvest.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/channelinvest.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/channelsearchcondition.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/channelsearchcondition.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/channelsearchcondition.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/channelsearchresult.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/channelsearchresult.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/channelsearchresult.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/channeltop.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/channeltop.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/channeltop.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/channelwarp.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/channelwarp.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/channelwarp.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/facegen/facegen.fgbnd.dcx [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_basicparamselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_basicparamselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_basicparamselect.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_bg.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_bg.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_bg.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_bodyicongrid.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_bodyicongrid.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_bodyicongrid.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_childcommandlist.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_childcommandlist.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_childcommandlist.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_icongrid.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_icongrid.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_icongrid.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_multislider.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_multislider.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_multislider.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_originselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_originselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_originselect.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmake_skincolorselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmake_skincolorselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmake_skincolorselect.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmakecommandlist.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmakecommandlist.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmakecommandlist.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/chrmaketop.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/chrmaketop.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/chrmaketop.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/colorselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/colorselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/colorselect.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/commandlist.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/commandlist.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/commandlist.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/depository.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/depository.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/depository.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/detailkeyguide.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/detailkeyguide.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/detailkeyguide.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/emergencynotice.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/emergencynotice.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/emergencynotice.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/equipment.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/equipment.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/equipment.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/fade.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/fade.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/fade.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/fe.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/fe.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/fe.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/gesturerepository.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/gesturerepository.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/gesturerepository.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/gesturetop.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/gesturetop.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/gesturetop.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/iconhelp.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/iconhelp.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/iconhelp.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/ingamemessagebox.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/ingamemessagebox.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/ingamemessagebox.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/msg/enggb/item.msgbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/msg/enggb/item.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/msg/enggb/menu.msgbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/msg/enggb/menu.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/msg/eu/sellregion.msgbnd.dcx flags = 0x0 mode = 365 [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/msg/eu/sellregion.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/paramdef/paramdef.paramdefbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/paramdef/paramdef.paramdefbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/drawparam/default_drawparam.parambnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/drawparam/default_drawparam.parambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/gameparam/gameparam.parambnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/gameparam/gameparam.parambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/msg/enggb/item.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/msg/eu/sellregion.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/ingametop.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/ingametop.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/ingametop.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/paramdef/paramdef.paramdefbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/drawparam/default_drawparam.parambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/inventory.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/inventory.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/inventory.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/msg/enggb/menu.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/gameparam/gameparam.parambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_psml.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_psml.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_psml.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_psml.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_main.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_main.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_main_eng.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_main_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_main.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_main.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_smain.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_smain.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_smain.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/gemequip.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_smain.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/gemequip.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/gemequip.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemdetailtext.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemdetailtext.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemdetailtext.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_psml.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_psml.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_main.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_main_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_main.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_smain.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_smain.itl [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemlist_gem.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemlist_gem.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemlist_gem.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemlist_normalitem.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemlist_normalitem.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemlist_normalitem.gfx [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 1 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 2 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 3 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 4 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 5 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 6 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 7 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 8 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 9 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 10 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 11 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 12 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 13 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 14 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 15 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 16 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 17 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 18 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 19 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 20 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 21 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 22 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 23 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 24 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 25 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 26 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 27 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 28 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 29 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 30 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 31 [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x411 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 32 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemlist_protector.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemlist_protector.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemlist_protector.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemlist_weapon.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemlist_weapon.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemlist_weapon.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemquantityselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemquantityselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemquantityselect.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_gem.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_gem.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_gem.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_holygrail.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_holygrail.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_holygrail.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_normalitem.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_normalitem.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_normalitem.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_protector.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_protector.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_protector.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_weapon.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_weapon.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_weapon.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_weapondetail.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_weapondetail.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_weapondetail.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_weapondetail_equip.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_weapondetail_equip.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_weapondetail_equip.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/itemstatus_weapondetail_gemequip.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/itemstatus_weapondetail_gemequip.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/itemstatus_weapondetail_gemequip.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/kickout.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/kickout.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/kickout.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/kickouttop.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/kickouttop.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/kickouttop.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/largenumselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/largenumselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/largenumselect.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/levelup.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/levelup.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/levelup.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/messagebox.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/messagebox.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/messagebox.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/messengertop.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/messengertop.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/messengertop.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/movie.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/movie.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/movie.gfx [Lib.AppContent] app_content.cpp:sceAppContentGetAddcontInfoList:189: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/nowloading.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/nowloading.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/nowloading.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/numselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/numselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/numselect.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/optionsetting.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/optionsetting.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/optionsetting.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/playerstatus.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/playerstatus.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/playerstatus.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/ingamestay.loadlist flags = 0x0 mode = 365 [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/ingamestay.loadlist [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_dlceffects.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_dlceffects.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_patcheffects.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_patcheffects.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_commoneffects.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_commoneffects.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/playerstatus_equipment.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/playerstatus_equipment.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/playerstatus_equipment.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/profileselect.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/profileselect.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/profileselect.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/ingamestay.loadlist [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/other/default.rumblebnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/other/default.rumblebnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/common_body.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/common_body.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_0100.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_0100.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_0101.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_0101.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_0102.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_0102.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1500.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1501.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1501.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1502.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1502.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1503.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1503.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1504.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1504.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1505.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1505.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1506.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1506.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1507.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1507.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1508.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1508.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1600.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1600.partsbnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xac1a838d [Lib.SystemService] systemservice.cpp:sceSystemServiceHideSplashScreen:1795: called [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x17e76c08 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[8]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = in.vs_in_attr1.z; out.out_attr1.w = in.vs_in_attr1.w; out.gl_Position.x = fma(as_type(cbuf_8.data[0u + buf0_dword_off]), in.vs_in_attr2.x, fma(as_type(cbuf_8.data[1u + buf0_dword_off]), in.vs_in_attr2.y, fma(as_type(cbuf_8.data[2u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[3u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[4u + buf0_dword_off]), in.vs_in_attr2.x, fma(as_type(cbuf_8.data[5u + buf0_dword_off]), in.vs_in_attr2.y, fma(as_type(cbuf_8.data[6u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[7u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; float4 _143 = out.gl_Position; _143.z = (_143.z + _143.w) * 0.5; out.gl_Position = _143; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.frag_color0.x = in.fs_in_attr0.x; out.frag_color0.y = in.fs_in_attr0.y; out.frag_color0.z = in.fs_in_attr0.z; out.frag_color0.w = spvFMul(in.fs_in_attr0.w, in.fs_in_attr1.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/quickmatchalter.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/quickmatchalter.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/quickmatchalter.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/leagueranking.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/leagueranking.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/leagueranking.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1601.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1601.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1602.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1602.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1603.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1603.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1604.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1604.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1605.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1605.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1606.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1606.partsbnd.dcx [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/ranking.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/ranking.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/ranking.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/rankingplayerstatus.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/rankingplayerstatus.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/rankingplayerstatus.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/rankingplayerstatus_equipment.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/rankingplayerstatus_equipment.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/rankingplayerstatus_equipment.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/secondaryshortcut.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/secondaryshortcut.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/secondaryshortcut.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/slider.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/slider.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/slider.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/summonmessage.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/summonmessage.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/summonmessage.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_dlceffects.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/title.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/title.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/title.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/titleinformation.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/titleinformation.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/titleinformation.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/tos.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/tos.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/tos.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/warpmenu.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/warpmenu.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/warpmenu.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1607.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1607.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/weaponupgrade.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/weaponupgrade.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/weaponupgrade.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/title_dlc.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/title_dlc.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/title_dlc.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/title_dlc_eu.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/title_dlc_eu.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/title_dlc_eu.gfx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_patcheffects.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_1608.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_1608.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_commoneffects.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/other/default.rumblebnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fc_m_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fc_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a00_lo.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a00_lo.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a00_md.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a00_md.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a00_hi.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a00_hi.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a0x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a0x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a1x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a1x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a2x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a2x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a3x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a3x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a4x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a4x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a5x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a5x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a6x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a6x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a7x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a7x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a8x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a8x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/common_body.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_0100.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_0101.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1501.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1502.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1503.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1504.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1505.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1506.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1507.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1508.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1600.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_0102.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1601.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1602.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1603.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1604.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1605.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1606.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1607.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_1608.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a00_lo.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a00_md.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fc_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fc_m_0001.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fc_m_0001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fc_m_0002.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fc_m_0002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fc_f_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fc_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fc_f_0001.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fc_f_0001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fc_f_0002.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fc_f_0002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_m_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_m_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_f_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_f_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_m_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_m_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_f_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_f_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_m_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_m_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_f_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_f_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_m_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_m_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_f_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_f_0000_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_0009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_0009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_a9x.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_a9x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000_dlc.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000_dlc.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a00_hi.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a1x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a2x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c0000.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c0000.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a3x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a4x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a5x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a6x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a7x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a8x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fc_m_0001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a0x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fc_m_0002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fc_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fc_f_0001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_m_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_m_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_f_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_f_0000_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fc_f_0002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_0009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_0009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_1109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_1109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_1409.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_1409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c0000.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c0000.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_1409.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_1409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_1509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_1509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_1509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_1509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_1609.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_1609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_1609.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_1609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_1609.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_1609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_2109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_m_2109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_m_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_f_2109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_f_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_2109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_2209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_2209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_2309.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_2309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_m_3009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_m_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_f_3009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_f_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_3009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_m_3009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_m_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_f_3009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_f_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_3109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_3109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_3209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_3209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_3209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_3209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_a9x.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c0000.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_0009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_1109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_1409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000_dlc.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_1409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_1509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_1509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_1609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_1609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_3209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_3209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_4009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_4009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_4009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_1609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_m_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_f_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_2109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_2209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c0000.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_m_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_f_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_2309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_m_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_f_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_3009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_3209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_3109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_3209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_3209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_4009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_4109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_4109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_4109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_4109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_4309.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_4309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_4509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_4509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_4509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_4509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_5109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_5109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_5209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_5209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_5219.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_5219.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_6009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_6009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_6109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_6109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_6109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_6109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_6109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_6109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_6209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_6209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_6209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_6209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_6309.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_6309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_6309.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_6309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_4109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_4009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_6409.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_6409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_6509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_6509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_6509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_6509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_7009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_7009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_7009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_7009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_7009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_7009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_7109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_7109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_4309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_4509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_4509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_5109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_5209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_5219.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_4109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_6009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_6109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_6109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_6209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_6109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_6309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_6309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_6409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_6509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_7109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_7109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_7209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_7209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_7209.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_7209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_8009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_8009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_8009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_8009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_8009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_8009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_3800.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_3800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4001.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4011.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4011.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4020.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4020.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_6509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_7009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_6209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_7009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_7009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_7109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_7209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_7209.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_8009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_7109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_8009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_3800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4011.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_8009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4020.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4021.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4021.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4030.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4030.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4031.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4031.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4040.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4040.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4041.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4041.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4051.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4051.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4052.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4052.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4060.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4060.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4061.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4061.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4063.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4063.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4070.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4070.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4501.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4501.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_4800.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_4800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_5500.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_5500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_5510.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_5510.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_5520.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_5520.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_5600.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_5600.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_5610.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_5610.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_5700.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_5700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_5711.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_5711.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_9109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_9109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9309.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4030.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4021.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4031.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4040.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4051.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4041.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4060.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4052.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4063.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4070.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4061.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_4501.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_5500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_5520.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_5510.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_5600.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_5610.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_5700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_5711.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_9109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_9309.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_9309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9409.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_9409.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_9409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_9509.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_9509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_9609.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_9609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_9609.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_a_9609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9809.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9809.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6001.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6002.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6003.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6003.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6004.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6004.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6005.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6005.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6006.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6006.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6007.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6007.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6008.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6008.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6009.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6010.partsbnd.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/parts/wp_a_6010.partsbnd.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6011.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6011.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6050.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6050.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6051.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6051.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6052.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6052.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6053.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6053.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_9309.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_9409.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_9609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_a_9609.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9809.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_9509.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6003.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6004.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6005.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6006.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6008.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6007.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6009.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6050.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6051.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6011.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6053.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6052.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_6055.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_6055.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000210.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000211.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000211.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_6055.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000221.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000221.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000222.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000222.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000260.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000260.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2050.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2050.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000610.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000611.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000611.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000612.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000612.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000613.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000613.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000630.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000630.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000631.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000631.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000632.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000632.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000633.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000633.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o009900.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o009900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1180.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1180.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9010.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9010.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9011.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9011.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9030.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9030.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1180.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1180.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9010.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9011.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9011.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000221.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000222.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000260.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9030.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9030.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1170.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1170.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1170.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1170.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000211.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2050.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000611.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000612.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000613.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000630.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000631.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000632.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_5200.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_5200.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_5200_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_5200_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_5210.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_5210.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_5210_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_5210_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_9700.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_9700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_9700_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_9700_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9700.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9700_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9700_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_9700.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_9700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000633.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o009900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9010.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9011.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9030.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1180.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1180.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9011.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9030.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1170.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_5200.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_5200_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_a_9700_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_a_9700_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_9700.partsbnd.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/parts/lg_a_9700.partsbnd.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_a_9700_l.partsbnd.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/parts/lg_a_9700_l.partsbnd.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_9750.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_9750.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_a_9750_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_a_9750_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9750.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9750.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_5210.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1170.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_a_9750_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_a_9750_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1712.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1712.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/msg/enggb/item.msgbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/msg/enggb/item.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/msg/enggb/menu.msgbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/msg/enggb/menu.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/msg/eu/sellregion.msgbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/msg/eu/sellregion.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_5210_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_9700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_9700_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9700_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_9700_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_psml.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_psml.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_psml.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_psml.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_main.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_main.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_main_eng.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_main_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_main.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_main.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_smain.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_smain.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_smain.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_smain.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c9999.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c9999.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_a_9700.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_psml.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_psml.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_main.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_9750_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_a_9750.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9750_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1712.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_a_9750.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/msg/enggb/item.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/msg/eu/sellregion.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/msg/enggb/menu.msgbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_main_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_main.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_smain.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_smain.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c9999.hks [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/enggb/font.gfx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/.gfx [Kernel.Pthread] file_system.cpp:posix_stat:502: posix_stat: error = -2147352574 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/.gfx flags = 0x0 mode = 0 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/menu/.gfx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/.gfx [Kernel.Pthread] file_system.cpp:posix_stat:502: posix_stat: error = -2147352574 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/.gfx flags = 0x0 mode = 0 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/menu/.gfx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/.gfx [Kernel.Pthread] file_system.cpp:posix_stat:502: posix_stat: error = -2147352574 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/.gfx flags = 0x0 mode = 0 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/menu/.gfx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 33 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xbabda34d [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x9957251 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[72]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; float _84 = spvFMul(255.0099945068359375, in.vs_in_attr0.z); float _90 = spvFAdd(0.100000001490116119384765625, fma(_84, 6.0, 2.0)); float _97 = spvFAdd(0.100000001490116119384765625, fma(_84, 6.0, 4.0)); uint _110 = ((0u + (uint(int(_90)) * 16u)) + buf0_off) >> 2u; uint4 _123 = uint4(cbuf_8.data[_110 + 0u], cbuf_8.data[_110 + 1u], cbuf_8.data[_110 + 2u], cbuf_8.data[_110 + 3u]); uint _131 = ((0u + (uint(int(spvFAdd(1.0, _90))) * 16u)) + buf0_off) >> 2u; uint4 _144 = uint4(cbuf_8.data[_131 + 0u], cbuf_8.data[_131 + 1u], cbuf_8.data[_131 + 2u], cbuf_8.data[_131 + 3u]); uint _152 = ((0u + (uint(int(_97)) * 16u)) + buf0_off) >> 2u; uint4 _165 = uint4(cbuf_8.data[_152 + 0u], cbuf_8.data[_152 + 1u], cbuf_8.data[_152 + 2u], cbuf_8.data[_152 + 3u]); uint _173 = ((0u + (uint(int(spvFAdd(1.0, _97))) * 16u)) + buf0_off) >> 2u; uint4 _186 = uint4(cbuf_8.data[_173 + 0u], cbuf_8.data[_173 + 1u], cbuf_8.data[_173 + 2u], cbuf_8.data[_173 + 3u]); uint _194 = ((0u + (uint(int(fma(6.0, _84, 0.100000001490116119384765625))) * 16u)) + buf0_off) >> 2u; uint4 _207 = uint4(cbuf_8.data[_194 + 0u], cbuf_8.data[_194 + 1u], cbuf_8.data[_194 + 2u], cbuf_8.data[_194 + 3u]); uint _215 = ((0u + (uint(int(spvFAdd(0.100000001490116119384765625, fma(_84, 6.0, 1.0)))) * 16u)) + buf0_off) >> 2u; uint4 _228 = uint4(cbuf_8.data[_215 + 0u], cbuf_8.data[_215 + 1u], cbuf_8.data[_215 + 2u], cbuf_8.data[_215 + 3u]); out.out_attr1.x = as_type(_207.x); out.out_attr1.y = as_type(_207.y); out.out_attr1.z = as_type(_207.z); out.out_attr1.w = as_type(_207.w); out.out_attr2.x = as_type(_228.x); out.out_attr2.y = as_type(_228.y); out.out_attr2.z = as_type(_228.z); out.out_attr2.w = as_type(_228.w); out.gl_Position.x = fma(in.vs_in_attr1.x, as_type(_123.x), fma(in.vs_in_attr1.y, as_type(_123.y), fma(0.0, as_type(_123.z), spvFMul(1.0, as_type(_123.w))))); out.gl_Position.y = fma(in.vs_in_attr1.x, as_type(_144.x), fma(in.vs_in_attr1.y, as_type(_144.y), fma(0.0, as_type(_144.z), spvFMul(1.0, as_type(_144.w))))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr3.x = fma(in.vs_in_attr1.x, as_type(_165.x), fma(in.vs_in_attr1.y, as_type(_165.y), fma(0.0, as_type(_165.z), spvFMul(1.0, as_type(_165.w))))); out.out_attr3.y = fma(in.vs_in_attr1.x, as_type(_186.x), fma(in.vs_in_attr1.y, as_type(_186.y), fma(0.0, as_type(_186.z), spvFMul(1.0, as_type(_186.w))))); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; float4 _289 = out.gl_Position; _289.z = (_289.z + _289.w) * 0.5; out.gl_Position = _289; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _67 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y)); out.frag_color0.x = fma(in.fs_in_attr2.x, _67.x, in.fs_in_attr1.x); out.frag_color0.y = fma(in.fs_in_attr2.y, _67.y, in.fs_in_attr1.y); out.frag_color0.z = fma(in.fs_in_attr2.z, _67.z, in.fs_in_attr1.z); out.frag_color0.w = spvFMul(fma(in.fs_in_attr2.w, _67.w, in.fs_in_attr1.w), in.fs_in_attr0.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x5e4596f4 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xe94b5b06 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.gl_Position.x = fma(as_type(cbuf_8.data[8u + buf0_dword_off]), in.vs_in_attr2.x, fma(as_type(cbuf_8.data[9u + buf0_dword_off]), in.vs_in_attr2.y, fma(as_type(cbuf_8.data[10u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[11u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[12u + buf0_dword_off]), in.vs_in_attr2.x, fma(as_type(cbuf_8.data[13u + buf0_dword_off]), in.vs_in_attr2.y, fma(as_type(cbuf_8.data[14u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[15u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr0.x = fma(as_type(cbuf_8.data[4u + buf0_dword_off]), in.vs_in_attr0.x, as_type(cbuf_8.data[0u + buf0_dword_off])); out.out_attr0.y = fma(as_type(cbuf_8.data[5u + buf0_dword_off]), in.vs_in_attr0.y, as_type(cbuf_8.data[1u + buf0_dword_off])); out.out_attr0.z = fma(as_type(cbuf_8.data[6u + buf0_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[2u + buf0_dword_off])); out.out_attr0.w = fma(as_type(cbuf_8.data[7u + buf0_dword_off]), in.vs_in_attr0.w, as_type(cbuf_8.data[3u + buf0_dword_off])); out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; float4 _183 = out.gl_Position; _183.z = (_183.z + _183.w) * 0.5; out.gl_Position = _183; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; out.frag_color0.x = in.fs_in_attr0.x; out.frag_color0.y = in.fs_in_attr0.y; out.frag_color0.z = in.fs_in_attr0.z; out.frag_color0.w = spvFMul(in.fs_in_attr0.w, fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8ed26d31 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x16742d13 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.gl_Position.x = fma(as_type(cbuf_8.data[8u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[9u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[10u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[11u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[12u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[13u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[14u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[15u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr0.x = as_type(cbuf_8.data[0u + buf0_dword_off]); out.out_attr0.y = as_type(cbuf_8.data[1u + buf0_dword_off]); out.out_attr0.z = as_type(cbuf_8.data[2u + buf0_dword_off]); out.out_attr0.w = as_type(cbuf_8.data[3u + buf0_dword_off]); out.out_attr1.x = as_type(cbuf_8.data[4u + buf0_dword_off]); out.out_attr1.y = as_type(cbuf_8.data[5u + buf0_dword_off]); out.out_attr1.z = as_type(cbuf_8.data[6u + buf0_dword_off]); out.out_attr1.w = as_type(cbuf_8.data[7u + buf0_dword_off]); out.out_attr2.x = in.vs_in_attr0.x; out.out_attr2.y = in.vs_in_attr0.y; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; float4 _175 = out.gl_Position; _175.z = (_175.z + _175.w) * 0.5; out.gl_Position = _175; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _66 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y)); out.frag_color0.x = fma(in.fs_in_attr1.x, _66.x, in.fs_in_attr0.x); out.frag_color0.y = fma(in.fs_in_attr1.y, _66.y, in.fs_in_attr0.y); out.frag_color0.z = fma(in.fs_in_attr1.z, _66.z, in.fs_in_attr0.z); out.frag_color0.w = fma(in.fs_in_attr1.w, _66.w, in.fs_in_attr0.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x24042a9b [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[24]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.gl_Position.x = fma(as_type(cbuf_8.data[8u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[9u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[10u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[11u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[12u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[13u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[14u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[15u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr1.x = as_type(cbuf_8.data[0u + buf0_dword_off]); out.out_attr1.y = as_type(cbuf_8.data[1u + buf0_dword_off]); out.out_attr1.z = as_type(cbuf_8.data[2u + buf0_dword_off]); out.out_attr1.w = as_type(cbuf_8.data[3u + buf0_dword_off]); out.out_attr2.x = as_type(cbuf_8.data[4u + buf0_dword_off]); out.out_attr2.y = as_type(cbuf_8.data[5u + buf0_dword_off]); out.out_attr2.z = as_type(cbuf_8.data[6u + buf0_dword_off]); out.out_attr2.w = as_type(cbuf_8.data[7u + buf0_dword_off]); out.out_attr3.x = fma(as_type(cbuf_8.data[16u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[17u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[18u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[19u + buf0_dword_off]), 1.0)))); out.out_attr3.y = fma(as_type(cbuf_8.data[20u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[21u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[22u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[23u + buf0_dword_off]), 1.0)))); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; float4 _232 = out.gl_Position; _232.z = (_232.z + _232.w) * 0.5; out.gl_Position = _232; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 1 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 1 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xcfa96da9 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xbb4d5f8c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[48]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); float _78 = spvFMul(255.0099945068359375, in.vs_in_attr0.z); float _84 = fma(4.0, _78, 0.100000001490116119384765625); float _85 = spvFAdd(0.100000001490116119384765625, fma(4.0, _78, 2.0)); uint _97 = ((0u + (uint(int(_84)) * 16u)) + buf0_off) >> 2u; uint4 _110 = uint4(cbuf_8.data[_97 + 0u], cbuf_8.data[_97 + 1u], cbuf_8.data[_97 + 2u], cbuf_8.data[_97 + 3u]); uint _118 = ((0u + (uint(int(spvFAdd(1.0, _84))) * 16u)) + buf0_off) >> 2u; uint4 _131 = uint4(cbuf_8.data[_118 + 0u], cbuf_8.data[_118 + 1u], cbuf_8.data[_118 + 2u], cbuf_8.data[_118 + 3u]); uint _139 = ((0u + (uint(int(_85)) * 16u)) + buf0_off) >> 2u; uint4 _152 = uint4(cbuf_8.data[_139 + 0u], cbuf_8.data[_139 + 1u], cbuf_8.data[_139 + 2u], cbuf_8.data[_139 + 3u]); uint _160 = ((0u + (uint(int(spvFAdd(1.0, _85))) * 16u)) + buf0_off) >> 2u; uint4 _173 = uint4(cbuf_8.data[_160 + 0u], cbuf_8.data[_160 + 1u], cbuf_8.data[_160 + 2u], cbuf_8.data[_160 + 3u]); out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.gl_Position.x = fma(in.vs_in_attr1.x, as_type(_110.x), fma(in.vs_in_attr1.y, as_type(_110.y), fma(0.0, as_type(_110.z), spvFMul(1.0, as_type(_110.w))))); out.gl_Position.y = fma(in.vs_in_attr1.x, as_type(_131.x), fma(in.vs_in_attr1.y, as_type(_131.y), fma(0.0, as_type(_131.z), spvFMul(1.0, as_type(_131.w))))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr1.x = fma(in.vs_in_attr1.x, as_type(_152.x), fma(in.vs_in_attr1.y, as_type(_152.y), fma(0.0, as_type(_152.z), spvFMul(1.0, as_type(_152.w))))); out.out_attr1.y = fma(in.vs_in_attr1.x, as_type(_173.x), fma(in.vs_in_attr1.y, as_type(_173.y), fma(0.0, as_type(_173.z), spvFMul(1.0, as_type(_173.w))))); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; float4 _222 = out.gl_Position; _222.z = (_222.z + _222.w) * 0.5; out.gl_Position = _222; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _65 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); out.frag_color0.x = _65.x; out.frag_color0.y = _65.y; out.frag_color0.z = _65.z; out.frag_color0.w = spvFMul(_65.w, in.fs_in_attr0.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xfc52ba5e [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x9951d199 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[8]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.gl_Position.x = fma(as_type(cbuf_8.data[0u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[1u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[2u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[3u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[4u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[5u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[6u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[7u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; float4 _125 = out.gl_Position; _125.z = (_125.z + _125.w) * 0.5; out.gl_Position = _125; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _64 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y)); out.frag_color0.x = _64.x; out.frag_color0.y = _64.y; out.frag_color0.z = _64.z; out.frag_color0.w = _64.w; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x44072322 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.gl_Position.x = fma(as_type(cbuf_8.data[0u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[1u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[2u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[3u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[4u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[5u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[6u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[7u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[8u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[9u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[10u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[11u + buf0_dword_off]), 1.0)))); out.out_attr1.y = fma(as_type(cbuf_8.data[12u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[13u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[14u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[15u + buf0_dword_off]), 1.0)))); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; float4 _182 = out.gl_Position; _182.z = (_182.z + _182.w) * 0.5; out.gl_Position = _182; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Lib.AppContent] app_content.cpp:sceAppContentGetAddcontInfoList:189: called [Lib.AppContent] app_content.cpp:sceAppContentGetAddcontInfoList:189: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Lib.SystemService] systemservice.cpp:sceSystemServiceParamGetInt:1892: called param_id 1 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xa334a845 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[48]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint _88 = as_type(as_type(in.vs_in_attr3.x)) << 2u; float _92 = spvFAdd(0.100000001490116119384765625, float(_88 + 2u)); uint _106 = ((0u + (uint(int(_92)) * 16u)) + buf0_off) >> 2u; uint4 _119 = uint4(cbuf_8.data[_106 + 0u], cbuf_8.data[_106 + 1u], cbuf_8.data[_106 + 2u], cbuf_8.data[_106 + 3u]); uint _127 = ((0u + (uint(int(spvFAdd(1.0, _92))) * 16u)) + buf0_off) >> 2u; uint4 _140 = uint4(cbuf_8.data[_127 + 0u], cbuf_8.data[_127 + 1u], cbuf_8.data[_127 + 2u], cbuf_8.data[_127 + 3u]); uint _150 = ((0u + (uint(int(spvFAdd(0.100000001490116119384765625, float(_88 + 1u)))) * 16u)) + buf0_off) >> 2u; uint4 _163 = uint4(cbuf_8.data[_150 + 0u], cbuf_8.data[_150 + 1u], cbuf_8.data[_150 + 2u], cbuf_8.data[_150 + 3u]); uint _171 = ((0u + (uint(int(spvFAdd(0.100000001490116119384765625, float(_88)))) * 16u)) + buf0_off) >> 2u; uint4 _184 = uint4(cbuf_8.data[_171 + 0u], cbuf_8.data[_171 + 1u], cbuf_8.data[_171 + 2u], cbuf_8.data[_171 + 3u]); out.gl_Position.x = fma(in.vs_in_attr2.x, as_type(_119.x), fma(in.vs_in_attr2.y, as_type(_119.y), fma(0.0, as_type(_119.z), spvFMul(1.0, as_type(_119.w))))); out.gl_Position.y = fma(in.vs_in_attr2.x, as_type(_140.x), fma(in.vs_in_attr2.y, as_type(_140.y), fma(0.0, as_type(_140.z), spvFMul(1.0, as_type(_140.w))))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr0.x = fma(in.vs_in_attr0.x, as_type(_163.x), as_type(_184.x)); out.out_attr0.y = fma(in.vs_in_attr0.y, as_type(_163.y), as_type(_184.y)); out.out_attr0.z = fma(in.vs_in_attr0.z, as_type(_163.z), as_type(_184.z)); out.out_attr0.w = fma(in.vs_in_attr0.w, as_type(_163.w), as_type(_184.w)); out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; float4 _230 = out.gl_Position; _230.z = (_230.z + _230.w) * 0.5; out.gl_Position = _230; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; out.frag_color0.x = in.fs_in_attr0.x; out.frag_color0.y = in.fs_in_attr0.y; out.frag_color0.z = in.fs_in_attr0.z; out.frag_color0.w = spvFMul(in.fs_in_attr0.w, fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Lib.AppContent] app_content.cpp:sceAppContentGetAddcontInfoList:189: called [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/menu/nowloading2.gfx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/menu/nowloading2.gfx flags = 0x0 mode = 0 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/menu/nowloading2.gfx [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/worldmsblist.worldloadlistlist flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/worldmsblist.worldloadlistlist [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/worldmsblist.worldloadlistlist [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xb7de74d9 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x81d336ce [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = in.vs_in_attr1.z; out.out_attr1.w = in.vs_in_attr1.w; out.gl_Position.x = fma(as_type(cbuf_8.data[8u + buf0_dword_off]), in.vs_in_attr2.x, fma(as_type(cbuf_8.data[9u + buf0_dword_off]), in.vs_in_attr2.y, fma(as_type(cbuf_8.data[10u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[11u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[12u + buf0_dword_off]), in.vs_in_attr2.x, fma(as_type(cbuf_8.data[13u + buf0_dword_off]), in.vs_in_attr2.y, fma(as_type(cbuf_8.data[14u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[15u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr2.x = as_type(cbuf_8.data[0u + buf0_dword_off]); out.out_attr2.y = as_type(cbuf_8.data[1u + buf0_dword_off]); out.out_attr2.z = as_type(cbuf_8.data[2u + buf0_dword_off]); out.out_attr2.w = as_type(cbuf_8.data[3u + buf0_dword_off]); out.out_attr3.x = as_type(cbuf_8.data[4u + buf0_dword_off]); out.out_attr3.y = as_type(cbuf_8.data[5u + buf0_dword_off]); out.out_attr3.z = as_type(cbuf_8.data[6u + buf0_dword_off]); out.out_attr3.w = as_type(cbuf_8.data[7u + buf0_dword_off]); float4 _193 = out.gl_Position; _193.z = (_193.z + _193.w) * 0.5; out.gl_Position = _193; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.frag_color0.x = fma(in.fs_in_attr0.x, in.fs_in_attr3.x, in.fs_in_attr2.x); out.frag_color0.y = fma(in.fs_in_attr0.y, in.fs_in_attr3.y, in.fs_in_attr2.y); out.frag_color0.z = fma(in.fs_in_attr0.z, in.fs_in_attr3.z, in.fs_in_attr2.z); out.frag_color0.w = spvFMul(fma(in.fs_in_attr0.w, in.fs_in_attr3.w, in.fs_in_attr2.w), in.fs_in_attr1.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x4fd8db00 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xa400228b [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[8]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); float _72 = spvFAdd(0.100000001490116119384765625, float(as_type(in.vs_in_attr1.x) << 1u)); uint _81 = ((0u + (uint(int(_72)) * 16u)) + buf1_off) >> 2u; uint4 _95 = uint4(cbuf_8.data[_81 + 0u], cbuf_8.data[_81 + 1u], cbuf_8.data[_81 + 2u], cbuf_8.data[_81 + 3u]); uint _103 = ((0u + (uint(int(spvFAdd(1.0, _72))) * 16u)) + buf1_off) >> 2u; uint4 _116 = uint4(cbuf_8.data[_103 + 0u], cbuf_8.data[_103 + 1u], cbuf_8.data[_103 + 2u], cbuf_8.data[_103 + 3u]); out.gl_Position.x = fma(in.vs_in_attr0.x, as_type(_95.x), fma(in.vs_in_attr0.y, as_type(_95.y), fma(0.0, as_type(_95.z), spvFMul(1.0, as_type(_95.w))))); out.gl_Position.y = fma(in.vs_in_attr0.x, as_type(_116.x), fma(in.vs_in_attr0.y, as_type(_116.y), fma(0.0, as_type(_116.z), spvFMul(1.0, as_type(_116.w))))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr0.x = 1.0; out.out_attr0.y = 1.0; out.out_attr0.z = 1.0; out.out_attr0.w = 1.0; float4 _146 = out.gl_Position; _146.z = (_146.z + _146.w) * 0.5; out.gl_Position = _146; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[4]; }; fragment void main0(constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; frag_color0.x = as_type(cbuf_4.data[0u + buf0_dword_off]); frag_color0.y = as_type(cbuf_4.data[1u + buf0_dword_off]); frag_color0.z = as_type(cbuf_4.data[2u + buf0_dword_off]); frag_color0.w = as_type(cbuf_4.data[3u + buf0_dword_off]); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x6dfebc16 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[8]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = fma(as_type(cbuf_8.data[0u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf1_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[3u + buf1_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[4u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf1_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[7u + buf1_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr0.x = 1.0; out.out_attr0.y = 1.0; out.out_attr0.z = 1.0; out.out_attr0.w = 1.0; float4 _120 = out.gl_Position; _120.z = (_120.z + _120.w) * 0.5; out.gl_Position = _120; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[4]; }; fragment void main0(constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; frag_color0.x = as_type(cbuf_4.data[0u + buf0_dword_off]); frag_color0.y = as_type(cbuf_4.data[1u + buf0_dword_off]); frag_color0.z = as_type(cbuf_4.data[2u + buf0_dword_off]); frag_color0.w = as_type(cbuf_4.data[3u + buf0_dword_off]); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x8b355b5a (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], texture_buffer imgbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint texbuf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 6u); uint _65 = extract_bits(push_data.buf_offsets0[0u], 14u, 2u); uint _71 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _72 = 0u + buf0_dword_off; uint _75 = 1u + buf0_dword_off; uint _78 = 2u + buf0_dword_off; uint _82 = 3u + buf0_dword_off; uint _85 = _71 >> 6u; uint _91 = (_71 + ((0u - _85) << 6u)) + (_85 << 7u); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82])).xy, 0.0, 1.0), uint(((_91 << _65) + texbuf1_off))); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82])).xy, 0.0, 1.0), uint((((_91 + 64u) << _65) + texbuf1_off))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 gl_Position; }; struct main0_in { uint4 m_118; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _58 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _61 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _64 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; bool _79 = (_61.x && _58.y) || (_61.y && _58.x); bool _87 = (_64.x && _61.y) || (_64.y && _61.x); gl_out[gl_InvocationID].gl_Position = (gl_InvocationID == 3) ? ((gl_in[0].gl_Position * (((_58.x && _64.y) || (_58.y && _64.x)) ? (-1.0) : 1.0)) + ((gl_in[1].gl_Position * (_79 ? (-1.0) : 1.0)) + (gl_in[2].gl_Position * (_87 ? (-1.0) : 1.0)))) : gl_in[((_79 ? 1 : (_87 ? 2 : 0)) + gl_InvocationID) % 3].gl_Position; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 gl_Position [[position]]; }; struct main0_in { float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); out.gl_Position = gl_in[(int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x)].gl_Position; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; float4 _68 = out.gl_Position; _68.z = (_68.z + _68.w) * 0.5; out.gl_Position = _68; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 gl_Position; }; struct main0_in { uint4 m_118; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _58 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _61 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _64 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; bool _79 = (_61.x && _58.y) || (_61.y && _58.x); bool _87 = (_64.x && _61.y) || (_64.y && _61.x); gl_out[gl_InvocationID].gl_Position = (gl_InvocationID == 3) ? ((gl_in[0].gl_Position * (((_58.x && _64.y) || (_58.y && _64.x)) ? (-1.0) : 1.0)) + ((gl_in[1].gl_Position * (_79 ? (-1.0) : 1.0)) + (gl_in[2].gl_Position * (_87 ? (-1.0) : 1.0)))) : gl_in[((_79 ? 1 : (_87 ? 2 : 0)) + gl_InvocationID) % 3].gl_Position; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 gl_Position [[position]]; }; struct main0_in { float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); out.gl_Position = gl_in[(int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x)].gl_Position; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xa361a1e5 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template void spvImageFence(ImageT img) { img.fence(); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], texture_buffer imgbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint texbuf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 6u); uint _71 = extract_bits(push_data.buf_offsets0[0u], 14u, 2u); uint _77 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; bool _84 = cbuf_8.data[0u + buf0_dword_off] > _77; if (_84) { spvImageFence(imgbuf_4); bool _98 = _84 && (13u != (15u & as_type(float4(as_type(imgbuf_4.read(uint(((_77 << _71) + texbuf1_off)))).x, 0.0, 0.0, 0.0).x))); if (_98) { } if (_98) { imgbuf_4.write(as_type(float4(float4(as_type(cbuf_8.data[1u + buf0_dword_off]), 0.0, 0.0, 0.0).x, 0.0, 0.0, 0.0)), uint(((_77 << _71) + texbuf1_off))); } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x8b355b5a (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], texture_buffer imgbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint texbuf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 6u); uint _65 = extract_bits(push_data.buf_offsets0[0u], 14u, 2u); uint _71 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _72 = 0u + buf0_dword_off; uint _75 = 1u + buf0_dword_off; uint _78 = 2u + buf0_dword_off; uint _82 = 3u + buf0_dword_off; uint _85 = _71 >> 6u; uint _91 = (_71 + ((0u - _85) << 6u)) + (_85 << 7u); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82]))), uint(((_91 << _65) + texbuf1_off))); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82]))), uint((((_91 + 64u) << _65) + texbuf1_off))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x8b355b5a (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], texture_buffer imgbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint texbuf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 6u); uint _65 = extract_bits(push_data.buf_offsets0[0u], 14u, 2u); uint _71 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _72 = 0u + buf0_dword_off; uint _75 = 1u + buf0_dword_off; uint _78 = 2u + buf0_dword_off; uint _82 = 3u + buf0_dword_off; uint _85 = _71 >> 6u; uint _91 = (_71 + ((0u - _85) << 6u)) + (_85 << 7u); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82])).xyz, 1.0), uint(((_91 << _65) + texbuf1_off))); imgbuf_4.write(float4(float4(as_type(cbuf_8.data[_72]), as_type(cbuf_8.data[_75]), as_type(cbuf_8.data[_78]), as_type(cbuf_8.data[_82])).xyz, 1.0), uint((((_91 + 64u) << _65) + texbuf1_off))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x3d5ebf4e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], texture_buffer texbuf_4 [[texture(0)]], texture_buffer imgbuf_8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint _73 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; if (push_data.ud_regs0[0u] > _73) { imgbuf_8.write(as_type(float4(float4(float4(as_type(texbuf_4.read(uint(((_73 << extract_bits(push_data.buf_offsets0[0u], 6u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 0u, 6u))))).x, 0.0, 0.0, 0.0).x, 0.0, 0.0, 0.0).x, 0.0, 0.0, 0.0)), uint(((_73 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u)))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x1ae5388 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.frag_color0.x = fast::min(fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[0u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[1u + buf0_dword_off]), in.fs_in_attr0.y))).x, fast::min(fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[4u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[5u + buf0_dword_off]), in.fs_in_attr0.y))).x, fast::min(fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[8u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[9u + buf0_dword_off]), in.fs_in_attr0.y))).x, fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[12u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[13u + buf0_dword_off]), in.fs_in_attr0.y))).x))); out.frag_color0.y = 0.0; out.frag_color0.z = 0.0; out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xcbbca5dc [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[68]; }; struct fs_cbuf_block_f32_1 { uint data[64]; }; struct fs_cbuf_block_f32_2 { uint data[12]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_48 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_44 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_40 [[buffer(11)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], texture2d fs_img24 [[texture(2)]], sampler fs_samp36 [[sampler(0)]], sampler fs_samp32 [[sampler(1)]], sampler fs_samp12 [[sampler(2)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _110 = fs_img4.sample(fs_samp36, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _111 = _110.x; uint _112 = 0u + buf0_dword_off; uint _115 = 1u + buf0_dword_off; uint _118 = 2u + buf0_dword_off; uint _122 = 3u + buf0_dword_off; uint _126 = 4u + buf0_dword_off; uint _130 = 5u + buf0_dword_off; uint _134 = 6u + buf0_dword_off; uint _138 = 7u + buf0_dword_off; uint _141 = 8u + buf0_dword_off; uint _145 = 9u + buf0_dword_off; uint _149 = 10u + buf0_dword_off; uint _153 = 11u + buf0_dword_off; uint _156 = 12u + buf0_dword_off; uint _160 = 13u + buf0_dword_off; uint _164 = 14u + buf0_dword_off; uint _168 = 15u + buf0_dword_off; float _174 = fma(-2.0, in.fs_in_attr0.y, 1.0); float4 _179 = fs_img16.sample(fs_samp32, float2(in.fs_in_attr0.x, in.fs_in_attr0.y)); float _188 = fma(2.0, in.fs_in_attr0.x, -1.0); float _209 = fma(as_type(cbuf_48.data[_141]), _188, fma(as_type(cbuf_48.data[_145]), _174, fma(as_type(cbuf_48.data[_149]), _111, as_type(cbuf_48.data[_153])))); float _210 = 1.0 / fma(as_type(cbuf_48.data[_156]), _188, fma(as_type(cbuf_48.data[_160]), _174, fma(as_type(cbuf_48.data[_164]), _111, as_type(cbuf_48.data[_168])))); float _212 = fma(as_type(cbuf_48.data[_112]), _188, fma(as_type(cbuf_48.data[_115]), _174, fma(as_type(cbuf_48.data[_118]), _111, as_type(cbuf_48.data[_122])))); float _214 = fma(as_type(cbuf_48.data[_126]), _188, fma(as_type(cbuf_48.data[_130]), _174, fma(as_type(cbuf_48.data[_134]), _111, as_type(cbuf_48.data[_138])))); float _215 = spvFMul(_209, _210); bool _216 = 1.0 == _111; uint _217; if (_216) { _217 = 1065353216u; } else { _217 = as_type(in.fs_in_attr0.y); } uint _519; if (!_216) { uint _227 = 18u + buf0_dword_off; uint _231 = 19u + buf0_dword_off; float4 _246 = fs_img24.sample(fs_samp12, float2(spvFMul(0.015625, spvFMul(as_type(cbuf_48.data[16u + buf0_dword_off]), in.fs_in_attr0.x)), spvFMul(0.015625, spvFMul(as_type(cbuf_48.data[17u + buf0_dword_off]), as_type(_217)))), level(0.0)); float _249 = fma(2.0, _179.z, -1.0); float _298 = fma(2.0, _179.y, -1.0); float _300 = fma(2.0, _179.x, -1.0); float _303 = rsqrt(fma(_300, _300, fma(_298, _298, spvFMul(_249, _249)))); float _304 = 1.0 / _215; float _305 = spvFMul(_249, _303); float _306 = spvFMul(_298, _303); float _315 = spvFMul(_300, _303); float _325 = fma(as_type(cbuf_48.data[20u + buf0_dword_off]), _315, fma(as_type(cbuf_48.data[21u + buf0_dword_off]), _306, spvFMul(as_type(cbuf_48.data[22u + buf0_dword_off]), _305))); float _327 = fma(as_type(cbuf_48.data[24u + buf0_dword_off]), _315, fma(as_type(cbuf_48.data[25u + buf0_dword_off]), _306, spvFMul(as_type(cbuf_48.data[26u + buf0_dword_off]), _305))); float _329 = fma(as_type(cbuf_48.data[28u + buf0_dword_off]), _315, fma(as_type(cbuf_48.data[29u + buf0_dword_off]), _306, spvFMul(as_type(cbuf_48.data[30u + buf0_dword_off]), _305))); float _331 = fast::max(as_type(cbuf_48.data[41u + buf0_dword_off]), fast::min(as_type(cbuf_48.data[42u + buf0_dword_off]), spvFMul(as_type(cbuf_48.data[40u + buf0_dword_off]), _304))); float _332 = fma(2.0, _246.x, -1.0); float _333 = fma(2.0, _246.y, -1.0); uint _352; uint _516; uint _517; uint _518; uint _334 = 0u; uint _335 = 0u; uint _336 = 8u; for (;;) { if (!(_336 > 0u)) { _518 = _334; break; } else { uint _340 = (_335 << 4u) >> 2u; uint _341 = _340 + buf1_dword_off; uint _345 = (_340 + 1u) + buf1_dword_off; _352 = _335 + 1u; float _358 = fma(as_type(cbuf_44.data[_341]), _333, spvFMul(as_type(cbuf_44.data[_345]), _332)); float _361 = fma(-_332, as_type(cbuf_44.data[_341]), spvFMul(as_type(cbuf_44.data[_345]), _333)); float _363 = spvFMul(as_type(cbuf_48.data[_227]), _331); float _365 = spvFMul(as_type(cbuf_48.data[_231]), _331); float _366 = fma(_363, _358, in.fs_in_attr0.x); float _368 = fma(_365, _361, as_type(_217)); float _370 = fma(-_358, _363, in.fs_in_attr0.x); float _373 = fma(-_361, _365, as_type(_217)); float4 _378 = fs_img4.sample(fs_samp36, float2(_366, _368), level(0.0)); float _379 = _378.x; float4 _384 = fs_img4.sample(fs_samp36, float2(_370, _373), level(0.0)); float _385 = _384.x; float _386 = fma(-2.0, _368, 1.0); float _387 = fma(-2.0, _373, 1.0); float _388 = fma(2.0, _366, -1.0); float _389 = fma(2.0, _370, -1.0); float _427 = 1.0 / fma(as_type(cbuf_48.data[_156]), _388, fma(as_type(cbuf_48.data[_160]), _386, fma(as_type(cbuf_48.data[_164]), _379, as_type(cbuf_48.data[_168])))); float _435 = 1.0 / fma(as_type(cbuf_48.data[_156]), _389, fma(as_type(cbuf_48.data[_160]), _387, fma(as_type(cbuf_48.data[_164]), _385, as_type(cbuf_48.data[_168])))); float _439 = fma(as_type(cbuf_48.data[_126]), _388, fma(as_type(cbuf_48.data[_130]), _386, fma(as_type(cbuf_48.data[_134]), _379, as_type(cbuf_48.data[_138])))); float _441 = spvFMul(fma(as_type(cbuf_48.data[_141]), _388, fma(as_type(cbuf_48.data[_145]), _386, fma(as_type(cbuf_48.data[_149]), _379, as_type(cbuf_48.data[_153])))), _427); float _446 = spvFMul(fma(as_type(cbuf_48.data[_141]), _389, fma(as_type(cbuf_48.data[_145]), _387, fma(as_type(cbuf_48.data[_149]), _385, as_type(cbuf_48.data[_153])))), _435); float _454 = fma(-_209, _210, _441); float _456 = fma(-_209, _210, _446); float _460 = fma(-_214, _210, spvFMul(_439, _427)); float _463 = fma(-_214, _210, spvFMul(fma(as_type(cbuf_48.data[_126]), _389, fma(as_type(cbuf_48.data[_130]), _387, fma(as_type(cbuf_48.data[_134]), _385, as_type(cbuf_48.data[_138])))), _435)); float _466 = fma(-_212, _210, spvFMul(fma(as_type(cbuf_48.data[_112]), _388, fma(as_type(cbuf_48.data[_115]), _386, fma(as_type(cbuf_48.data[_118]), _379, as_type(cbuf_48.data[_122])))), _427)); float _469 = fma(-_212, _210, spvFMul(fma(as_type(cbuf_48.data[_112]), _389, fma(as_type(cbuf_48.data[_115]), _387, fma(as_type(cbuf_48.data[_118]), _385, as_type(cbuf_48.data[_122])))), _435)); float _473 = rsqrt(fma(_466, _466, fma(_460, _460, spvFMul(_454, _454)))); float _474 = rsqrt(fma(_469, _469, fma(_463, _463, spvFMul(_456, _456)))); float _507 = spvFMul(spvFAdd(fast::clamp(spvFAdd(-fma(spvFMul(_466, _473), _325, fma(spvFMul(_460, _473), _327, spvFMul(_329, spvFMul(_454, _473)))), 1.0), 0.0, 1.0), fast::clamp(spvFAdd(-fma(spvFMul(_469, _474), _325, fma(spvFMul(_463, _474), _327, spvFMul(_329, spvFMul(_456, _474)))), 1.0), 0.0, 1.0)), 0.5); _516 = as_type(fma(as_type(cbuf_44.data[(_340 + 2u) + buf1_dword_off]), fma(fast::max(fast::clamp(spvFMul(spvFMul(_304, fma(_215, 0.89999997615814208984375, -_441)), 10.0), 0.0, 1.0), fast::clamp(spvFMul(spvFMul(_304, fma(_215, 0.89999997615814208984375, -_446)), 10.0), 0.0, 1.0)), fma(-_507, _507, 1.0), spvFMul(_507, _507)), as_type(_334))); _517 = _336 - 1u; if (true) { _334 = _516; _335 = _352; _336 = _517; continue; } else { _518 = _516; break; } } } _519 = _518; } else { _519 = _217; } float _537 = spvFMul(_215, 1.0 / as_type(cbuf_40.data[2u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u)])); float _542 = fract(spvFMul(65025.0, _537)); float _543 = fract(spvFMul(255.0, _537)); if (false) { discard_fragment(); } out.frag_color0.x = fma(as_type(cbuf_48.data[36u + buf0_dword_off]), as_type(_519), as_type(cbuf_48.data[37u + buf0_dword_off])); out.frag_color0.y = _542; out.frag_color0.z = fma(_542, -0.0039215688593685626983642578125, _543); out.frag_color0.w = fma(_537, 1.0, -spvFMul(0.0039215688593685626983642578125, _543)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Tty] logger.cpp:log_flush:60: [stdout] == Stall during rendering at flush 1 [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xf55643de [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x61fbbf6 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[84]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_32 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], depth2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _89 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _90 = _89.x; float _183 = 1.0 / fma(as_type(cbuf_28.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_28.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_28.data[14u + buf0_dword_off]), _90, as_type(cbuf_28.data[15u + buf0_dword_off])))); float _184 = spvFMul(fma(as_type(cbuf_28.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_28.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_28.data[10u + buf0_dword_off]), _90, as_type(cbuf_28.data[11u + buf0_dword_off])))), _183); uint _202 = ((((as_type((as_type(cbuf_28.data[80u + buf0_dword_off]) < _184) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_184 > as_type(cbuf_28.data[81u + buf0_dword_off]))) + uint(abs(int(0u)))) + uint(_184 > as_type(cbuf_28.data[82u + buf0_dword_off]))) << 2u; uint _211 = ((0u + ((_202 + 4u) * 16u)) + buf0_off) >> 2u; uint4 _224 = uint4(cbuf_28.data[_211 + 0u], cbuf_28.data[_211 + 1u], cbuf_28.data[_211 + 2u], cbuf_28.data[_211 + 3u]); uint _232 = ((0u + ((_202 + 5u) * 16u)) + buf0_off) >> 2u; uint4 _245 = uint4(cbuf_28.data[_232 + 0u], cbuf_28.data[_232 + 1u], cbuf_28.data[_232 + 2u], cbuf_28.data[_232 + 3u]); uint _253 = ((0u + ((_202 + 7u) * 16u)) + buf0_off) >> 2u; uint4 _266 = uint4(cbuf_28.data[_253 + 0u], cbuf_28.data[_253 + 1u], cbuf_28.data[_253 + 2u], cbuf_28.data[_253 + 3u]); uint _274 = ((0u + ((_202 + 6u) * 16u)) + buf0_off) >> 2u; uint4 _287 = uint4(cbuf_28.data[_274 + 0u], cbuf_28.data[_274 + 1u], cbuf_28.data[_274 + 2u], cbuf_28.data[_274 + 3u]); uint _297 = 73u + buf1_dword_off; uint _301 = 74u + buf1_dword_off; uint _305 = 75u + buf1_dword_off; float _329 = fma(as_type(_224.x), in.fs_in_attr0.x, fma(as_type(_224.y), in.fs_in_attr0.y, fma(as_type(_224.z), _90, as_type(_224.w)))); float _331 = fma(as_type(_245.x), in.fs_in_attr0.x, fma(as_type(_245.y), in.fs_in_attr0.y, fma(as_type(_245.z), _90, as_type(_245.w)))); float _333 = fma(as_type(_266.x), in.fs_in_attr0.x, fma(as_type(_266.y), in.fs_in_attr0.y, fma(as_type(_266.z), _90, as_type(_266.w)))); float _336 = 1.0 / _333; float _346 = spvFMul(fma(as_type(_287.x), in.fs_in_attr0.x, fma(as_type(_287.y), in.fs_in_attr0.y, fma(as_type(_287.z), _90, as_type(_287.w)))), _336); float _408 = spvFMul(fma(as_type(cbuf_28.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_28.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_28.data[6u + buf0_dword_off]), _90, as_type(cbuf_28.data[7u + buf0_dword_off])))), _183); float _410 = spvFMul(fma(as_type(cbuf_28.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_28.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_28.data[2u + buf0_dword_off]), _90, as_type(cbuf_28.data[3u + buf0_dword_off])))), _183); float _424 = fast::clamp(spvFAdd(spvFMul(as_type(cbuf_32.data[72u + buf1_dword_off]), as_type(cbuf_32.data[_297])), -spvFMul(as_type(cbuf_32.data[_297]), sqrt(fma(_410, _410, fma(_408, _408, spvFMul(_184, _184)))))), 0.0, 1.0); float _431 = fract(spvFMul(255.0, _90)); float _434 = fract(spvFMul(65025.0, _90)); out.frag_color0.x = _434; out.frag_color0.y = fma(_434, -0.0039215688593685626983642578125, _431); out.frag_color0.z = fma(_90, 1.0, -spvFMul(0.0039215688593685626983642578125, _431)); out.frag_color0.w = spvFSub(1.0, fma(-fma(float4(fs_img16.sample_compare(fs_samp24, float2(spvFMul(fma(-_333, as_type(cbuf_32.data[_305]), _329), _336), spvFMul(fma(as_type(cbuf_32.data[_301]), _333, _331), _336)), _346, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img16.sample_compare(fs_samp24, float2(spvFMul(fma(-_333, as_type(cbuf_32.data[_301]), _329), _336), spvFMul(fma(-_333, as_type(cbuf_32.data[_305]), _331), _336)), _346, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img16.sample_compare(fs_samp24, float2(spvFMul(fma(_333, as_type(cbuf_32.data[_301]), _329), _336), spvFMul(fma(_333, as_type(cbuf_32.data[_305]), _331), _336)), _346, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img16.sample_compare(fs_samp24, float2(spvFMul(fma(_333, as_type(cbuf_32.data[_305]), _329), _336), spvFMul(fma(-_333, as_type(cbuf_32.data[_301]), _331), _336)), _346, level(0.0)), 0.0, 0.0, 0.0).x)))), _424, _424)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xa291c498 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8747a367 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint _75 = 0u + (extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u); out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[_75]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = as_type(cbuf_8.data[_75]); out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[8]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _78 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _79 = _78.z; out.frag_color0.x = fs_img16.sample(fs_samp24, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).x; out.frag_color0.y = fma(as_type(cbuf_28.data[1u + buf0_dword_off]), _79, as_type(cbuf_28.data[5u + buf0_dword_off])); out.frag_color0.z = fma(as_type(cbuf_28.data[2u + buf0_dword_off]), _79, as_type(cbuf_28.data[6u + buf0_dword_off])); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x89cda9e4 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_42; float4 gl_Position; }; struct main0_in { uint4 m_139; float4 m_27; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _64 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _67 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _70 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _78 = ((_64.x && _70.y) || (_64.y && _70.x)) ? (-1.0) : 1.0; bool _85 = (_67.x && _64.y) || (_67.y && _64.x); float _86 = _85 ? (-1.0) : 1.0; bool _93 = (_70.x && _67.y) || (_70.y && _67.x); float _94 = _93 ? (-1.0) : 1.0; bool _98 = gl_InvocationID == 3; int _100 = ((_85 ? 1 : (_93 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _98 ? ((gl_in[0].gl_Position * _78) + ((gl_in[1].gl_Position * _86) + (gl_in[2].gl_Position * _94))) : gl_in[_100].gl_Position; gl_out[gl_InvocationID].m_42 = _98 ? ((gl_in[0].m_27 * _78) + ((gl_in[1].m_27 * _86) + (gl_in[2].m_27 * _94))) : gl_in[_100].m_27; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_31 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _43 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_43].gl_Position; out.m_31 = gl_in[_43].m_27; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x3fe9e964 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8747a367 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint _76 = 0u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[_76]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = as_type(cbuf_8.data[_76]); out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_24 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], texture2d fs_img48 [[texture(0)]], texture2d fs_img40 [[texture(1)]], texture2d fs_img32 [[texture(2)]], texture2d fs_img56 [[texture(3)]], texture2d fs_img80 [[texture(4)]], texture2d fs_img72 [[texture(5)]], texture2d fs_img88 [[texture(6)]], texture2d fs_img64 [[texture(7)]], sampler fs_samp8 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _98 = fs_img48.sample(fs_samp8, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _99 = _98.x; float4 _104 = fs_img40.sample(fs_samp8, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _105 = _104.x; float4 _110 = fs_img32.sample(fs_samp4, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _118 = fs_img56.sample(fs_samp8, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _119 = _118.x; float _120 = _118.y; float _121 = _118.z; float4 _126 = fs_img80.sample(fs_samp16, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _129 = _126.w; float4 _143 = fs_img72.sample(fs_samp8, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _144 = _143.x; float _145 = _143.y; float _146 = _143.z; float _147 = _143.w; float4 _152 = fs_img88.sample(fs_samp20, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_99, 13.0), 0.5))))); float _156 = _152.w; float4 _161 = fs_img64.sample(fs_samp8, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _252 = 1.0 / fma(as_type(cbuf_24.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_24.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_24.data[14u + buf0_dword_off]), _105, as_type(cbuf_24.data[15u + buf0_dword_off])))); float _257 = spvFMul(fma(as_type(cbuf_24.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_24.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_24.data[10u + buf0_dword_off]), _105, as_type(cbuf_24.data[11u + buf0_dword_off])))), _252); float _272 = spvFMul(fma(as_type(cbuf_24.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_24.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_24.data[6u + buf0_dword_off]), _105, as_type(cbuf_24.data[7u + buf0_dword_off])))), _252); float _286 = spvFMul(fma(as_type(cbuf_24.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_24.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_24.data[2u + buf0_dword_off]), _105, as_type(cbuf_24.data[3u + buf0_dword_off])))), _252); float _303 = fma(2.0, _110.z, -1.0); float _304 = rsqrt(fma(_286, _286, fma(_272, _272, spvFMul(_257, _257)))); float _305 = fma(2.0, _110.y, -1.0); float _307 = spvFMul(_257, _304); float _308 = fma(2.0, _110.x, -1.0); float _310 = spvFMul(_272, _304); float _315 = spvFMul(_286, _304); float _322 = rsqrt(fma(_308, _308, fma(_305, _305, spvFMul(_303, _303)))); float _359 = fast::clamp(fma(fma(as_type(cbuf_24.data[32u + buf0_dword_off]), -_315, fma(as_type(cbuf_24.data[33u + buf0_dword_off]), -_310, spvFMul(-_307, as_type(cbuf_24.data[34u + buf0_dword_off])))), spvFMul(_308, _322), fma(fma(as_type(cbuf_24.data[36u + buf0_dword_off]), -_315, fma(as_type(cbuf_24.data[37u + buf0_dword_off]), -_310, spvFMul(-_307, as_type(cbuf_24.data[38u + buf0_dword_off])))), spvFMul(_305, _322), spvFMul(fma(as_type(cbuf_24.data[40u + buf0_dword_off]), -_315, fma(as_type(cbuf_24.data[41u + buf0_dword_off]), -_310, spvFMul(-_307, as_type(cbuf_24.data[42u + buf0_dword_off])))), spvFMul(_303, _322)))), 0.0, 1.0); float _365 = spvFSub(1.0, as_type(cbuf_28.data[76u + buf1_dword_off])); float _367 = spvFSub(1.0, as_type(cbuf_28.data[77u + buf1_dword_off])); float _369 = spvFSub(1.0, as_type(cbuf_28.data[78u + buf1_dword_off])); float _373 = exp2(spvFMul(5.0, log2(spvFSub(1.0, _359)))); float _383 = spvFMul(_99, _99); float _396 = spvFMul(_126.x, _126.y); float _406 = spvFMul(_396, fma(_147, spvFAdd(-1.0, fma(_129, spvFSub(1.0, _365), _365)), 1.0)); float _407 = spvFMul(_396, fma(_147, spvFAdd(-1.0, fma(_129, spvFSub(1.0, _367), _367)), 1.0)); float _408 = spvFMul(_396, fma(_147, spvFAdd(-1.0, fma(_129, spvFSub(1.0, _369), _369)), 1.0)); out.frag_color1.x = spvFMul(_406, fma(_156, fma(fma(_119, _119, spvFMul(fma(-spvFMul(_119, _119), _373, _373), _383)), _152.x, -_144), _144)); out.frag_color1.y = spvFMul(_407, fma(_156, fma(fma(_120, _120, spvFMul(fma(-spvFMul(_120, _120), _373, _373), _383)), _152.y, -_145), _145)); out.frag_color1.z = spvFMul(_408, fma(_156, fma(fma(_121, _121, spvFMul(fma(-spvFMul(_121, _121), _373, _373), _383)), _152.z, -_146), _146)); out.frag_color1.w = 1.0; out.frag_color0.x = spvFMul(_161.x, _406); out.frag_color0.y = spvFMul(_161.y, _407); out.frag_color0.z = spvFMul(_161.z, _408); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xd92266b9 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8747a367 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(12)]]) { main0_out out = {}; uint _76 = 0u + (extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u); out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[_76]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = as_type(cbuf_8.data[_76]); out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[16200]; }; struct fs_cbuf_block_f32_1 { uint data[52]; }; struct fs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_56 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_52 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_60 [[buffer(11)]], texture2d fs_img32 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img16 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; float4 _123 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _124 = _123.x; float _125 = _123.y; float _126 = _123.z; float4 _132 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _140 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _142 = _140.y; float4 _148 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _149 = _148.x; uint _154 = uint(int(spvFMul(255.0, _123.w))) * 18u; float4 _161 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _163 = _161.z; float _164 = _161.w; uint _168 = ((0u + ((_154 + 17u) * 16u)) + buf0_off) >> 2u; uint4 _182 = uint4(cbuf_56.data[_168 + 0u], cbuf_56.data[_168 + 1u], cbuf_56.data[_168 + 2u], cbuf_56.data[_168 + 3u]); uint _186 = _182.w; uint _259 = 35u + buf1_dword_off; uint _275 = 39u + buf1_dword_off; uint _291 = 43u + buf1_dword_off; float _328 = fma(2.0, _132.z, -1.0); float _337 = 1.0 / fma(as_type(cbuf_52.data[12u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf1_dword_off]), _149, as_type(cbuf_52.data[15u + buf1_dword_off])))); float _341 = fma(2.0, _132.y, -1.0); float _347 = spvFMul(fma(as_type(cbuf_52.data[8u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf1_dword_off]), _149, as_type(cbuf_52.data[11u + buf1_dword_off])))), _337); float _348 = fma(2.0, _132.x, -1.0); float _352 = spvFMul(fma(as_type(cbuf_52.data[4u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf1_dword_off]), _149, as_type(cbuf_52.data[7u + buf1_dword_off])))), _337); float _363 = spvFSub(1.0, as_type(cbuf_60.data[76u + buf2_dword_off])); float _365 = spvFSub(1.0, as_type(cbuf_60.data[77u + buf2_dword_off])); float _367 = spvFSub(1.0, as_type(cbuf_60.data[78u + buf2_dword_off])); float _369 = spvFMul(fma(as_type(cbuf_52.data[0u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf1_dword_off]), _149, as_type(cbuf_52.data[3u + buf1_dword_off])))), _337); float _376 = rsqrt(fma(_348, _348, fma(_341, _341, spvFMul(_328, _328)))); float _383 = spvFMul(_348, _376); float _384 = spvFMul(_341, _376); float _385 = spvFMul(_328, _376); float _387 = spvFSub(as_type(cbuf_52.data[_259]), fma(as_type(cbuf_52.data[32u + buf1_dword_off]), _369, fma(as_type(cbuf_52.data[33u + buf1_dword_off]), _352, fma(as_type(cbuf_52.data[34u + buf1_dword_off]), _347, as_type(cbuf_52.data[_259]))))); float _389 = spvFSub(as_type(cbuf_52.data[_275]), fma(as_type(cbuf_52.data[36u + buf1_dword_off]), _369, fma(as_type(cbuf_52.data[37u + buf1_dword_off]), _352, fma(as_type(cbuf_52.data[38u + buf1_dword_off]), _347, as_type(cbuf_52.data[_275]))))); float _391 = spvFSub(as_type(cbuf_52.data[_291]), fma(as_type(cbuf_52.data[40u + buf1_dword_off]), _369, fma(as_type(cbuf_52.data[41u + buf1_dword_off]), _352, fma(as_type(cbuf_52.data[42u + buf1_dword_off]), _347, as_type(cbuf_52.data[_291]))))); float _397 = fma(as_type(_182.x), spvFAdd(-1.0, _161.x), 1.0); float _399 = spvFMul(10.0, _142); float _403 = fma(_164, spvFSub(1.0, _367), _367); float _405 = spvFAdd(-1.0, _397); uint _409 = ((0u + (_154 * 16u)) + buf0_off) >> 2u; uint4 _422 = uint4(cbuf_56.data[_409 + 0u], cbuf_56.data[_409 + 1u], cbuf_56.data[_409 + 2u], cbuf_56.data[_409 + 3u]); uint _423 = _422.x; uint _424 = _422.y; uint _425 = _422.z; uint _426 = _422.w; uint _430 = ((0u + ((_154 + 1u) * 16u)) + buf0_off) >> 2u; uint4 _443 = uint4(cbuf_56.data[_430 + 0u], cbuf_56.data[_430 + 1u], cbuf_56.data[_430 + 2u], cbuf_56.data[_430 + 3u]); uint _444 = _443.x; uint _445 = _443.y; uint _446 = _443.z; uint _447 = _443.w; uint _451 = ((0u + ((_154 + 4u) * 16u)) + buf0_off) >> 2u; uint3 _461 = uint3(cbuf_56.data[_451 + 0u], cbuf_56.data[_451 + 1u], cbuf_56.data[_451 + 2u]); uint _462 = _461.x; uint _463 = _461.y; uint _464 = _461.z; uint _468 = ((0u + ((_154 + 5u) * 16u)) + buf0_off) >> 2u; uint3 _478 = uint3(cbuf_56.data[_468 + 0u], cbuf_56.data[_468 + 1u], cbuf_56.data[_468 + 2u]); uint _479 = _478.x; uint _480 = _478.y; uint _481 = _478.z; float _482 = spvFMul(_124, _124); float _483 = spvFMul(_125, _125); float _484 = spvFMul(_126, _126); float _487 = spvFMul(_163, fma(_164, spvFSub(1.0, _363), _363)); float _488 = spvFMul(_163, fma(_164, spvFSub(1.0, _365), _365)); float _489 = spvFMul(_163, _403); float _491 = fma(as_type(_182.y), _405, 1.0); float _493 = fma(as_type(_182.z), _405, 1.0); float _495 = fma(as_type(_186), _405, 1.0); bool _496 = _399 > 0.0; uint _500; if (_496) { _500 = as_type(spvFMul(_385, as_type(_425))); } else { _500 = _186; } uint _544; uint _545; uint _546; if (_496) { float _509 = 1.0 / fma(2.0, _399, 1.0); float _510 = spvFMul(fast::max(0.0, fma(_142, 10.0, fma(as_type(_423), _383, fma(as_type(_424), _384, as_type(_500))))), _509); float _528 = spvFMul(fast::max(0.0, fma(_142, 10.0, fma(as_type(_444), _383, fma(as_type(_445), _384, spvFMul(_385, as_type(_446)))))), _509); _544 = as_type(fma(spvFMul(_397, spvFMul(as_type(_464), _510)), _489, spvFMul(_491, spvFMul(as_type(_481), _528)))); _545 = as_type(fma(spvFMul(_397, spvFMul(as_type(_463), _510)), _488, spvFMul(_491, spvFMul(as_type(_480), _528)))); _546 = as_type(fma(spvFMul(_397, spvFMul(as_type(_462), _510)), _487, spvFMul(_491, spvFMul(as_type(_479), _528)))); } else { _544 = as_type(_403); _545 = _500; _546 = as_type(_142); } uint _551; if (!_496) { _551 = as_type(spvFMul(as_type(_479), _491)); } else { _551 = _546; } uint _602; uint _603; uint _604; if (!_496) { float _563 = fast::clamp(fma(as_type(_423), _383, fma(as_type(_424), _384, spvFMul(_385, as_type(_425)))), 0.0, 1.0); float _570 = fast::clamp(fma(as_type(_444), _383, fma(as_type(_445), _384, spvFMul(_385, as_type(_446)))), 0.0, 1.0); _602 = as_type(fma(spvFMul(fma(-_484, _563, _563), spvFMul(as_type(_464), _397)), _489, spvFMul(spvFMul(as_type(_481), _491), fma(-_484, _570, _570)))); _603 = as_type(fma(spvFMul(fma(-_483, _563, _563), spvFMul(as_type(_463), _397)), _488, spvFMul(spvFMul(as_type(_480), _491), fma(-_483, _570, _570)))); _604 = as_type(fma(spvFMul(fma(-_482, _563, _563), spvFMul(as_type(_462), _397)), _487, spvFMul(as_type(_551), fma(-_482, _570, _570)))); } else { _602 = _544; _603 = _545; _604 = _551; } float _608 = rsqrt(fma(_387, _387, fma(_389, _389, spvFMul(_391, _391)))); float _609 = spvFMul(_387, _608); float _610 = spvFMul(_389, _608); float _611 = spvFMul(_391, _608); float _625 = fma(_387, _608, as_type(_423)); float _627 = fma(_389, _608, as_type(_424)); float _629 = fma(_391, _608, as_type(_425)); float _633 = rsqrt(fma(_625, _625, fma(_627, _627, spvFMul(_629, _629)))); float _634 = spvFMul(_625, _633); float _635 = spvFMul(_627, _633); float _637 = spvFMul(_629, _633); float _639 = fma(_387, _608, as_type(_444)); float _641 = fma(_389, _608, as_type(_445)); float _643 = fma(_391, _608, as_type(_446)); float _647 = rsqrt(fma(_639, _639, fma(_641, _641, spvFMul(_643, _643)))); float _648 = spvFMul(_639, _647); float _649 = spvFMul(_641, _647); float _650 = spvFMul(_643, _647); uint _671; if (_496) { _671 = as_type(spvFMul(as_type(_425), -_611)); } else { _671 = _425; } uint _739; uint _740; uint _741; uint _742; uint _743; if (_496) { float _686 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(_609, _383, fma(_610, _384, spvFMul(_385, _611)))))); float _691 = spvFMul(_686, _686); float _692 = spvFMul(exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(_423), -_609, fma(as_type(_424), -_610, as_type(_671))), 0.0, 1.0)))), _691); float _715 = spvFMul(_691, exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(_444), -_609, fma(as_type(_445), -_610, spvFMul(as_type(_446), -_611))), 0.0, 1.0))))); float _728 = fma(spvFMul(_399, spvFMul(as_type(_463), _692)), _397, as_type(_603)); float _731 = fma(spvFMul(_399, spvFMul(as_type(_464), _692)), _397, as_type(_602)); _739 = as_type(fma(spvFMul(_399, spvFMul(as_type(_480), _715)), _491, _728)); _740 = as_type(fma(spvFMul(_399, spvFMul(as_type(_481), _715)), _491, _731)); _741 = as_type(fma(spvFMul(_399, spvFMul(as_type(_479), _715)), _491, fma(spvFMul(_399, spvFMul(as_type(_462), _692)), _397, as_type(_604)))); _742 = as_type(_731); _743 = as_type(_728); } else { _739 = as_type(_635); _740 = as_type(_399); _741 = _604; _742 = _602; _743 = _603; } uint _745; uint _746; if (!_496) { _745 = _743; _746 = _742; } else { _745 = _739; _746 = _740; } float _749 = exp2(spvFMul(13.0, _140.x)); uint _755 = ((0u + ((_154 + 8u) * 16u)) + buf0_off) >> 2u; uint3 _765 = uint3(cbuf_56.data[_755 + 0u], cbuf_56.data[_755 + 1u], cbuf_56.data[_755 + 2u]); uint _772 = ((0u + ((_154 + 9u) * 16u)) + buf0_off) >> 2u; uint3 _782 = uint3(cbuf_56.data[_772 + 0u], cbuf_56.data[_772 + 1u], cbuf_56.data[_772 + 2u]); uint _794 = ((0u + ((_154 + 16u) * 16u)) + buf0_off) >> 2u; uint2 _801 = uint2(cbuf_56.data[_794 + 0u], cbuf_56.data[_794 + 1u]); float _817 = fast::max(1.0, spvFMul(spvFMul(as_type(_426), _749), 1.0 / fma(_749, 0.01000213623046875, as_type(_426)))); float _818 = fast::max(1.0, spvFMul(spvFMul(as_type(_447), _749), 1.0 / fma(_749, 0.01000213623046875, as_type(_447)))); float _821 = fma(_817, 0.125, 0.25); float _822 = fma(0.125, _818, 0.25); float _827 = exp2(spvFMul(_817, log2(fast::clamp(fma(_634, _383, fma(_635, _384, spvFMul(_385, _637))), 0.0, 1.0)))); float _828 = exp2(spvFMul(_818, log2(fast::clamp(fma(_648, _383, fma(_649, _384, spvFMul(_385, _650))), 0.0, 1.0)))); float _830 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_609, _648, fma(_610, _649, spvFMul(_611, _650))), 0.0, 1.0))))); float _831 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_609, _634, fma(_610, _635, spvFMul(_611, _637))), 0.0, 1.0))))); float _855 = fast::clamp(spvFMul(fma(_383, as_type(_423), fma(_384, as_type(_424), spvFMul(_385, as_type(_425)))), 16.0), 0.0, 1.0); float _857 = fast::clamp(spvFMul(fma(_383, as_type(_444), fma(_384, as_type(_445), spvFMul(_385, as_type(_446)))), 16.0), 0.0, 1.0); float _885 = spvFMul(_487, spvFMul(_855, spvFMul(_827, spvFMul(_397, spvFMul(as_type(_765.x), _821))))); float _892 = fma(_885, fma(-_831, _482, fma(_124, _124, _831)), spvFMul(fma(-_830, _482, fma(_124, _124, _830)), spvFMul(_857, spvFMul(_828, spvFMul(_491, spvFMul(as_type(_782.x), _822)))))); float _894 = fma(spvFMul(_488, spvFMul(_855, spvFMul(_827, spvFMul(_397, spvFMul(as_type(_765.y), _821))))), fma(-_831, _483, fma(_125, _125, _831)), spvFMul(fma(-_830, _483, fma(_125, _125, _830)), spvFMul(_857, spvFMul(_828, spvFMul(_491, spvFMul(as_type(_782.y), _822)))))); float _896 = fma(spvFMul(_489, spvFMul(_855, spvFMul(_827, spvFMul(_397, spvFMul(as_type(_765.z), _821))))), fma(-_831, _484, fma(_126, _126, _831)), spvFMul(fma(-_830, _484, fma(_126, _126, _830)), spvFMul(_857, spvFMul(_828, spvFMul(_491, spvFMul(as_type(_782.z), _822)))))); bool _898 = 0u < _801.x; uint _900; if (_898) { _900 = _154 + 2u; } else { _900 = as_type(_885); } uint _1051; uint _1052; uint _1053; uint _1054; uint _1055; uint _1056; if (_898) { uint _906 = ((0u + (_900 * 16u)) + buf0_off) >> 2u; uint4 _919 = uint4(cbuf_56.data[_906 + 0u], cbuf_56.data[_906 + 1u], cbuf_56.data[_906 + 2u], cbuf_56.data[_906 + 3u]); uint _920 = _919.x; uint _921 = _919.y; uint _922 = _919.z; uint _923 = _919.w; uint _927 = ((0u + ((_154 + 6u) * 16u)) + buf0_off) >> 2u; uint3 _937 = uint3(cbuf_56.data[_927 + 0u], cbuf_56.data[_927 + 1u], cbuf_56.data[_927 + 2u]); uint _944 = ((0u + ((_154 + 10u) * 16u)) + buf0_off) >> 2u; uint3 _954 = uint3(cbuf_56.data[_944 + 0u], cbuf_56.data[_944 + 1u], cbuf_56.data[_944 + 2u]); float _970 = fma(0.5, fma(as_type(_920), _383, fma(as_type(_921), _384, spvFMul(_385, as_type(_922)))), 0.5); float _972 = fast::clamp(spvFMul(_970, _970), 0.0, 1.0); float _989 = fma(_387, _608, as_type(_920)); float _991 = fma(_389, _608, as_type(_921)); float _993 = fma(_391, _608, as_type(_922)); float _997 = rsqrt(fma(_989, _989, fma(_991, _991, spvFMul(_993, _993)))); float _998 = spvFMul(_989, _997); float _999 = spvFMul(_991, _997); float _1000 = spvFMul(_993, _997); float _1011 = fast::max(1.0, spvFMul(spvFMul(_749, as_type(_923)), 1.0 / fma(_749, 0.01000213623046875, as_type(_923)))); float _1014 = exp2(spvFMul(_1011, log2(fast::clamp(fma(_998, _383, fma(_999, _384, spvFMul(_385, _1000))), 0.0, 1.0)))); float _1022 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_609, _998, fma(_610, _999, spvFMul(_611, _1000))), 0.0, 1.0))))); float _1032 = fma(0.125, _1011, 0.25); _1051 = as_type(fma(spvFMul(_493, as_type(_937.y)), fma(-_483, _972, _972), as_type(_745))); _1052 = as_type(fma(spvFMul(_1014, spvFMul(_493, spvFMul(as_type(_954.y), _1032))), fma(-_1022, _483, fma(_125, _125, _1022)), _894)); _1053 = as_type(fma(spvFMul(_1014, spvFMul(_493, spvFMul(as_type(_954.z), _1032))), fma(-_1022, _484, fma(_126, _126, _1022)), _896)); _1054 = as_type(fma(spvFMul(_1014, spvFMul(_493, spvFMul(as_type(_954.x), _1032))), fma(-_1022, _482, fma(_124, _124, _1022)), _892)); _1055 = as_type(fma(spvFMul(_493, as_type(_937.z)), fma(-_484, _972, _972), as_type(_746))); _1056 = as_type(fma(spvFMul(_493, as_type(_937.x)), fma(-_482, _972, _972), as_type(_741))); } else { _1051 = _745; _1052 = as_type(_894); _1053 = as_type(_896); _1054 = as_type(_892); _1055 = _746; _1056 = _741; } uint _1212; uint _1213; uint _1214; uint _1215; uint _1216; uint _1217; if (0u < _801.y) { uint _1064 = ((0u + ((_154 + 3u) * 16u)) + buf0_off) >> 2u; uint4 _1077 = uint4(cbuf_56.data[_1064 + 0u], cbuf_56.data[_1064 + 1u], cbuf_56.data[_1064 + 2u], cbuf_56.data[_1064 + 3u]); uint _1078 = _1077.x; uint _1079 = _1077.y; uint _1080 = _1077.z; uint _1081 = _1077.w; uint _1085 = ((0u + ((_154 + 7u) * 16u)) + buf0_off) >> 2u; uint3 _1095 = uint3(cbuf_56.data[_1085 + 0u], cbuf_56.data[_1085 + 1u], cbuf_56.data[_1085 + 2u]); uint _1102 = ((0u + ((_154 + 11u) * 16u)) + buf0_off) >> 2u; uint3 _1112 = uint3(cbuf_56.data[_1102 + 0u], cbuf_56.data[_1102 + 1u], cbuf_56.data[_1102 + 2u]); float _1117 = fma(_387, _608, as_type(_1078)); float _1130 = fma(0.5, fma(as_type(_1078), _383, fma(as_type(_1079), _384, spvFMul(_385, as_type(_1080)))), 0.5); float _1132 = fast::clamp(spvFMul(_1130, _1130), 0.0, 1.0); float _1149 = fma(_389, _608, as_type(_1079)); float _1151 = fma(_391, _608, as_type(_1080)); float _1155 = rsqrt(fma(_1117, _1117, fma(_1149, _1149, spvFMul(_1151, _1151)))); float _1156 = spvFMul(_1117, _1155); float _1157 = spvFMul(_1149, _1155); float _1158 = spvFMul(_1151, _1155); float _1169 = fast::max(1.0, spvFMul(spvFMul(_749, as_type(_1081)), 1.0 / fma(_749, 0.01000213623046875, as_type(_1081)))); float _1172 = exp2(spvFMul(_1169, log2(fast::clamp(fma(_1156, _383, fma(_1157, _384, spvFMul(_385, _1158))), 0.0, 1.0)))); float _1180 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_609, _1156, fma(_610, _1157, spvFMul(_611, _1158))), 0.0, 1.0))))); float _1190 = fma(0.125, _1169, 0.25); _1212 = as_type(fma(spvFMul(_495, as_type(_1095.z)), fma(-_484, _1132, _1132), as_type(_1055))); _1213 = as_type(fma(spvFMul(_495, as_type(_1095.y)), fma(-_483, _1132, _1132), as_type(_1051))); _1214 = as_type(fma(spvFMul(_495, as_type(_1095.x)), fma(-_482, _1132, _1132), as_type(_1056))); _1215 = as_type(fma(spvFMul(_1172, spvFMul(_495, spvFMul(as_type(_1112.z), _1190))), fma(-_1180, _484, fma(_126, _126, _1180)), as_type(_1053))); _1216 = as_type(fma(spvFMul(_1172, spvFMul(_495, spvFMul(as_type(_1112.y), _1190))), fma(-_1180, _483, fma(_125, _125, _1180)), as_type(_1052))); _1217 = as_type(fma(spvFMul(_1172, spvFMul(_495, spvFMul(as_type(_1112.x), _1190))), fma(-_1180, _482, fma(_124, _124, _1180)), as_type(_1054))); } else { _1212 = _1055; _1213 = _1051; _1214 = _1056; _1215 = _1053; _1216 = _1052; _1217 = _1054; } if (false) { discard_fragment(); } out.frag_color1.x = as_type(_1217); out.frag_color1.y = as_type(_1216); out.frag_color1.z = as_type(_1215); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = as_type(_1214); out.frag_color0.y = as_type(_1213); out.frag_color0.z = as_type(_1212); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_43; float4 m_44; float4 gl_Position; }; struct main0_in { float4 m_27; float4 m_28; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _66 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _69 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _72 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _80 = ((_66.x && _72.y) || (_66.y && _72.x)) ? (-1.0) : 1.0; bool _87 = (_69.x && _66.y) || (_69.y && _66.x); float _88 = _87 ? (-1.0) : 1.0; bool _95 = (_72.x && _69.y) || (_72.y && _69.x); float _96 = _95 ? (-1.0) : 1.0; bool _100 = gl_InvocationID == 3; int _102 = ((_87 ? 1 : (_95 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _100 ? ((gl_in[0].gl_Position * _80) + ((gl_in[1].gl_Position * _88) + (gl_in[2].gl_Position * _96))) : gl_in[_102].gl_Position; gl_out[gl_InvocationID].m_43 = _100 ? ((gl_in[0].m_27 * _80) + ((gl_in[1].m_27 * _88) + (gl_in[2].m_27 * _96))) : gl_in[_102].m_27; gl_out[gl_InvocationID].m_44 = _100 ? ((gl_in[0].m_28 * _80) + ((gl_in[1].m_28 * _88) + (gl_in[2].m_28 * _96))) : gl_in[_102].m_28; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_32 [[user(locn0)]]; float4 m_33 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 m_28; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _45 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_45].gl_Position; out.m_32 = gl_in[_45].m_27; out.m_33 = gl_in[_45].m_28; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8650418f [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8747a367 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint _75 = 0u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u); out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[_75]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = as_type(cbuf_8.data[_75]); out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; float4 _65 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _73 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); out.frag_color0.x = spvFMul(_65.x, _73.x); out.frag_color0.y = spvFMul(_65.y, _73.y); out.frag_color0.z = spvFMul(_65.z, _73.z); out.frag_color0.w = _73.w; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x2eacb983 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8cbc58fa [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[7200]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_36 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img24 [[texture(1)]], texture2d fs_img4 [[texture(2)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp32 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint _82 = 68u + buf0_dword_off; uint _86 = 70u + buf0_dword_off; float4 _103 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _104 = _103.x; float _105 = _103.y; float _106 = _103.z; float _107 = _103.w; float _120 = 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).x); uint _126 = uint(int(spvFMul(255.0, fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).w))) * 18u; uint _141 = ((0u + (_126 * 16u)) + buf1_off) >> 2u; uint _147 = ((0u + ((_126 + 1u) * 16u)) + buf1_off) >> 2u; uint3 _157 = uint3(cbuf_36.data[_147 + 0u], cbuf_36.data[_147 + 1u], cbuf_36.data[_147 + 2u]); uint _164 = ((0u + ((_126 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _177 = uint4(cbuf_36.data[_164 + 0u], cbuf_36.data[_164 + 1u], cbuf_36.data[_164 + 2u], cbuf_36.data[_164 + 3u]); uint _181 = _177.w; uint _185 = ((0u + ((_126 + 3u) * 16u)) + buf1_off) >> 2u; uint4 _198 = uint4(cbuf_36.data[_185 + 0u], cbuf_36.data[_185 + 1u], cbuf_36.data[_185 + 2u], cbuf_36.data[_185 + 3u]); uint _202 = _198.w; uint _206 = ((0u + ((_126 + 4u) * 16u)) + buf1_off) >> 2u; uint4 _219 = uint4(cbuf_36.data[_206 + 0u], cbuf_36.data[_206 + 1u], cbuf_36.data[_206 + 2u], cbuf_36.data[_206 + 3u]); uint _223 = _219.w; uint _227 = ((0u + ((_126 + 5u) * 16u)) + buf1_off) >> 2u; uint4 _240 = uint4(cbuf_36.data[_227 + 0u], cbuf_36.data[_227 + 1u], cbuf_36.data[_227 + 2u], cbuf_36.data[_227 + 3u]); uint _244 = _240.w; uint _248 = ((0u + ((_126 + 6u) * 16u)) + buf1_off) >> 2u; uint4 _261 = uint4(cbuf_36.data[_248 + 0u], cbuf_36.data[_248 + 1u], cbuf_36.data[_248 + 2u], cbuf_36.data[_248 + 3u]); uint _265 = _261.w; float _268 = spvFMul(_107, spvFMul(1.0 / spvFMul(-as_type(cbuf_40.data[_86]), _120), as_type(cbuf_36.data[_141]))); float _270 = spvFMul(0.3333333432674407958984375, _268); float _271 = spvFMul(0.0, _268); float _274 = spvFMul(300.0, as_type(cbuf_36.data[_141])); float _277 = fma(as_type(_181), _270, in.fs_in_attr1.x); float _279 = fma(as_type(_181), _271, in.fs_in_attr1.y); float _281 = fma(as_type(_202), _270, in.fs_in_attr1.x); float _283 = fma(as_type(_202), _271, in.fs_in_attr1.y); float _285 = fma(as_type(_223), _270, in.fs_in_attr1.x); float _287 = fma(as_type(_223), _271, in.fs_in_attr1.y); float _289 = fma(as_type(_244), _270, in.fs_in_attr1.x); float _291 = fma(as_type(_244), _271, in.fs_in_attr1.y); float4 _296 = fs_img24.sample(fs_samp32, float2(_277, _279)); float _297 = _296.x; float _298 = _296.y; float _299 = _296.z; float4 _310 = fs_img24.sample(fs_samp32, float2(_281, _283)); float _311 = _310.x; float _312 = _310.y; float _313 = _310.z; float _326 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_277, _279)).x))))), 0.0, 1.0); float _349 = fma(as_type(_265), _270, in.fs_in_attr1.x); float _351 = fma(as_type(_265), _271, in.fs_in_attr1.y); float4 _364 = fs_img24.sample(fs_samp32, float2(_285, _287)); float _365 = _364.x; float _366 = _364.y; float _367 = _364.z; float4 _378 = fs_img24.sample(fs_samp32, float2(_289, _291)); float _379 = _378.x; float _380 = _378.y; float _381 = _378.z; float _400 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_281, _283)).x))))), 0.0, 1.0); float _422 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_285, _287)).x))))), 0.0, 1.0); float _447 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_289, _291)).x))))), 0.0, 1.0); float4 _469 = fs_img24.sample(fs_samp32, float2(_349, _351)); float _470 = _469.x; float _471 = _469.y; float _472 = _469.z; uint _482 = ((0u + ((_126 + 7u) * 16u)) + buf1_off) >> 2u; uint4 _495 = uint4(cbuf_36.data[_482 + 0u], cbuf_36.data[_482 + 1u], cbuf_36.data[_482 + 2u], cbuf_36.data[_482 + 3u]); uint _499 = _495.w; uint _503 = ((0u + ((_126 + 8u) * 16u)) + buf1_off) >> 2u; uint4 _516 = uint4(cbuf_36.data[_503 + 0u], cbuf_36.data[_503 + 1u], cbuf_36.data[_503 + 2u], cbuf_36.data[_503 + 3u]); uint _520 = _516.w; uint _524 = ((0u + ((_126 + 9u) * 16u)) + buf1_off) >> 2u; uint4 _537 = uint4(cbuf_36.data[_524 + 0u], cbuf_36.data[_524 + 1u], cbuf_36.data[_524 + 2u], cbuf_36.data[_524 + 3u]); uint _541 = _537.w; uint _545 = ((0u + ((_126 + 10u) * 16u)) + buf1_off) >> 2u; uint4 _558 = uint4(cbuf_36.data[_545 + 0u], cbuf_36.data[_545 + 1u], cbuf_36.data[_545 + 2u], cbuf_36.data[_545 + 3u]); uint _562 = _558.w; float _575 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_349, _351)).x))))), 0.0, 1.0); float _589 = fma(as_type(_499), _270, in.fs_in_attr1.x); float _591 = fma(as_type(_499), _271, in.fs_in_attr1.y); float _593 = fma(as_type(_520), _270, in.fs_in_attr1.x); float _595 = fma(as_type(_520), _271, in.fs_in_attr1.y); float _597 = fma(as_type(_541), _270, in.fs_in_attr1.x); float _599 = fma(as_type(_541), _271, in.fs_in_attr1.y); float _601 = fma(as_type(_562), _270, in.fs_in_attr1.x); float _603 = fma(as_type(_562), _271, in.fs_in_attr1.y); float4 _608 = fs_img24.sample(fs_samp32, float2(_589, _591)); float _609 = _608.x; float _610 = _608.y; float _611 = _608.z; float4 _622 = fs_img24.sample(fs_samp32, float2(_593, _595)); float _623 = _622.x; float _624 = _622.y; float _625 = _622.z; float4 _636 = fs_img24.sample(fs_samp32, float2(_597, _599)); float _637 = _636.x; float _638 = _636.y; float _639 = _636.z; float _658 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_589, _591)).x))))), 0.0, 1.0); float _683 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_593, _595)).x))))), 0.0, 1.0); float _708 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_597, _599)).x))))), 0.0, 1.0); float4 _733 = fs_img24.sample(fs_samp32, float2(_601, _603)); float _734 = _733.x; float _735 = _733.y; float _736 = _733.z; uint _746 = ((0u + ((_126 + 11u) * 16u)) + buf1_off) >> 2u; uint4 _759 = uint4(cbuf_36.data[_746 + 0u], cbuf_36.data[_746 + 1u], cbuf_36.data[_746 + 2u], cbuf_36.data[_746 + 3u]); uint _763 = _759.w; uint _767 = ((0u + ((_126 + 12u) * 16u)) + buf1_off) >> 2u; uint4 _780 = uint4(cbuf_36.data[_767 + 0u], cbuf_36.data[_767 + 1u], cbuf_36.data[_767 + 2u], cbuf_36.data[_767 + 3u]); uint _784 = _780.w; uint _788 = ((0u + ((_126 + 13u) * 16u)) + buf1_off) >> 2u; uint4 _801 = uint4(cbuf_36.data[_788 + 0u], cbuf_36.data[_788 + 1u], cbuf_36.data[_788 + 2u], cbuf_36.data[_788 + 3u]); uint _805 = _801.w; uint _809 = ((0u + ((_126 + 14u) * 16u)) + buf1_off) >> 2u; uint4 _822 = uint4(cbuf_36.data[_809 + 0u], cbuf_36.data[_809 + 1u], cbuf_36.data[_809 + 2u], cbuf_36.data[_809 + 3u]); uint _826 = _822.w; float _839 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_601, _603)).x))))), 0.0, 1.0); float _847 = fma(as_type(_558.x), fma(_839, spvFSub(_104, _734), _734), fma(as_type(_537.x), fma(_708, spvFSub(_104, _637), _637), fma(as_type(_516.x), fma(_683, spvFSub(_104, _623), _623), fma(as_type(_495.x), fma(_658, spvFSub(_104, _609), _609), fma(as_type(_261.x), fma(_575, spvFSub(_104, _470), _470), fma(as_type(_240.x), fma(_447, spvFSub(_104, _379), _379), fma(as_type(_219.x), fma(_422, spvFSub(_104, _365), _365), fma(as_type(_198.x), fma(_400, spvFSub(_104, _311), _311), fma(as_type(_157.x), _104, spvFMul(as_type(_177.x), fma(_326, spvFSub(_104, _297), _297))))))))))); float _849 = fma(as_type(_558.y), fma(_839, spvFSub(_105, _735), _735), fma(as_type(_537.y), fma(_708, spvFSub(_105, _638), _638), fma(as_type(_516.y), fma(_683, spvFSub(_105, _624), _624), fma(as_type(_495.y), fma(_658, spvFSub(_105, _610), _610), fma(as_type(_261.y), fma(_575, spvFSub(_105, _471), _471), fma(as_type(_240.y), fma(_447, spvFSub(_105, _380), _380), fma(as_type(_219.y), fma(_422, spvFSub(_105, _366), _366), fma(as_type(_198.y), fma(_400, spvFSub(_105, _312), _312), fma(as_type(_157.y), _105, spvFMul(as_type(_177.y), fma(_326, spvFSub(_105, _298), _298))))))))))); float _851 = fma(as_type(_558.z), fma(_839, spvFSub(_106, _736), _736), fma(as_type(_537.z), fma(_708, spvFSub(_106, _639), _639), fma(as_type(_516.z), fma(_683, spvFSub(_106, _625), _625), fma(as_type(_495.z), fma(_658, spvFSub(_106, _611), _611), fma(as_type(_261.z), fma(_575, spvFSub(_106, _472), _472), fma(as_type(_240.z), fma(_447, spvFSub(_106, _381), _381), fma(as_type(_219.z), fma(_422, spvFSub(_106, _367), _367), fma(as_type(_198.z), fma(_400, spvFSub(_106, _313), _313), fma(as_type(_157.z), _106, spvFMul(as_type(_177.z), fma(_326, spvFSub(_106, _299), _299))))))))))); float _853 = fma(as_type(_763), _270, in.fs_in_attr1.x); float _855 = fma(as_type(_763), _271, in.fs_in_attr1.y); float _857 = fma(as_type(_784), _270, in.fs_in_attr1.x); float _859 = fma(as_type(_784), _271, in.fs_in_attr1.y); float _861 = fma(as_type(_805), _270, in.fs_in_attr1.x); float _863 = fma(as_type(_805), _271, in.fs_in_attr1.y); float _865 = fma(as_type(_826), _270, in.fs_in_attr1.x); float _867 = fma(as_type(_826), _271, in.fs_in_attr1.y); float4 _872 = fs_img24.sample(fs_samp32, float2(_853, _855)); float _873 = _872.x; float _874 = _872.y; float _875 = _872.z; float4 _886 = fs_img24.sample(fs_samp32, float2(_857, _859)); float _887 = _886.x; float _888 = _886.y; float _889 = _886.z; float4 _900 = fs_img24.sample(fs_samp32, float2(_861, _863)); float _901 = _900.x; float _902 = _900.y; float _903 = _900.z; float _922 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_853, _855)).x))))), 0.0, 1.0); float _947 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_857, _859)).x))))), 0.0, 1.0); float _972 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_861, _863)).x))))), 0.0, 1.0); float4 _994 = fs_img24.sample(fs_samp32, float2(_865, _867)); float _995 = _994.x; float _996 = _994.y; float _997 = _994.z; uint _1007 = ((0u + ((_126 + 15u) * 16u)) + buf1_off) >> 2u; uint4 _1020 = uint4(cbuf_36.data[_1007 + 0u], cbuf_36.data[_1007 + 1u], cbuf_36.data[_1007 + 2u], cbuf_36.data[_1007 + 3u]); uint _1024 = _1020.w; uint _1028 = ((0u + ((_126 + 16u) * 16u)) + buf1_off) >> 2u; uint4 _1041 = uint4(cbuf_36.data[_1028 + 0u], cbuf_36.data[_1028 + 1u], cbuf_36.data[_1028 + 2u], cbuf_36.data[_1028 + 3u]); uint _1045 = _1041.w; uint _1049 = ((0u + ((_126 + 17u) * 16u)) + buf1_off) >> 2u; uint4 _1062 = uint4(cbuf_36.data[_1049 + 0u], cbuf_36.data[_1049 + 1u], cbuf_36.data[_1049 + 2u], cbuf_36.data[_1049 + 3u]); uint _1066 = _1062.w; float _1079 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_865, _867)).x))))), 0.0, 1.0); float _1093 = fma(as_type(_1024), _270, in.fs_in_attr1.x); float _1095 = fma(as_type(_1024), _271, in.fs_in_attr1.y); float _1097 = fma(as_type(_1045), _270, in.fs_in_attr1.x); float _1099 = fma(as_type(_1045), _271, in.fs_in_attr1.y); float _1101 = fma(as_type(_1066), _270, in.fs_in_attr1.x); float _1103 = fma(as_type(_1066), _271, in.fs_in_attr1.y); float4 _1108 = fs_img24.sample(fs_samp32, float2(_1093, _1095)); float _1109 = _1108.x; float _1110 = _1108.y; float _1111 = _1108.z; float4 _1122 = fs_img24.sample(fs_samp32, float2(_1097, _1099)); float _1123 = _1122.x; float _1124 = _1122.y; float _1125 = _1122.z; float4 _1136 = fs_img24.sample(fs_samp32, float2(_1101, _1103)); float _1137 = _1136.x; float _1138 = _1136.y; float _1139 = _1136.z; float _1158 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_1093, _1095)).x))))), 0.0, 1.0); float _1183 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_1097, _1099)).x))))), 0.0, 1.0); float _1208 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_1101, _1103)).x))))), 0.0, 1.0); out.frag_color0.x = fma(as_type(_1062.x), fma(_1208, spvFSub(_104, _1137), _1137), fma(as_type(_1041.x), fma(_1183, spvFSub(_104, _1123), _1123), fma(as_type(_1020.x), fma(_1158, spvFSub(_104, _1109), _1109), fma(as_type(_822.x), fma(_1079, spvFSub(_104, _995), _995), fma(as_type(_801.x), fma(_972, spvFSub(_104, _901), _901), fma(as_type(_780.x), fma(_947, spvFSub(_104, _887), _887), fma(as_type(_759.x), fma(_922, spvFSub(_104, _873), _873), _847))))))); out.frag_color0.y = fma(as_type(_1062.y), fma(_1208, spvFSub(_105, _1138), _1138), fma(as_type(_1041.y), fma(_1183, spvFSub(_105, _1124), _1124), fma(as_type(_1020.y), fma(_1158, spvFSub(_105, _1110), _1110), fma(as_type(_822.y), fma(_1079, spvFSub(_105, _996), _996), fma(as_type(_801.y), fma(_972, spvFSub(_105, _902), _902), fma(as_type(_780.y), fma(_947, spvFSub(_105, _888), _888), fma(as_type(_759.y), fma(_922, spvFSub(_105, _874), _874), _849))))))); out.frag_color0.z = fma(as_type(_1062.z), fma(_1208, spvFSub(_106, _1139), _1139), fma(as_type(_1041.z), fma(_1183, spvFSub(_106, _1125), _1125), fma(as_type(_1020.z), fma(_1158, spvFSub(_106, _1111), _1111), fma(as_type(_822.z), fma(_1079, spvFSub(_106, _997), _997), fma(as_type(_801.z), fma(_972, spvFSub(_106, _903), _903), fma(as_type(_780.z), fma(_947, spvFSub(_106, _889), _889), fma(as_type(_759.z), fma(_922, spvFSub(_106, _875), _875), _851))))))); out.frag_color0.w = _107; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8c13b984 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[7200]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_36 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img24 [[texture(1)]], texture2d fs_img4 [[texture(2)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp32 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint _82 = 68u + buf0_dword_off; uint _86 = 70u + buf0_dword_off; float4 _103 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _104 = _103.x; float _105 = _103.y; float _106 = _103.z; float _107 = _103.w; float _120 = 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).x); uint _126 = uint(int(spvFMul(255.0, fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).w))) * 18u; uint _141 = ((0u + (_126 * 16u)) + buf1_off) >> 2u; uint _147 = ((0u + ((_126 + 1u) * 16u)) + buf1_off) >> 2u; uint3 _157 = uint3(cbuf_36.data[_147 + 0u], cbuf_36.data[_147 + 1u], cbuf_36.data[_147 + 2u]); uint _164 = ((0u + ((_126 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _177 = uint4(cbuf_36.data[_164 + 0u], cbuf_36.data[_164 + 1u], cbuf_36.data[_164 + 2u], cbuf_36.data[_164 + 3u]); uint _181 = _177.w; uint _185 = ((0u + ((_126 + 3u) * 16u)) + buf1_off) >> 2u; uint4 _198 = uint4(cbuf_36.data[_185 + 0u], cbuf_36.data[_185 + 1u], cbuf_36.data[_185 + 2u], cbuf_36.data[_185 + 3u]); uint _202 = _198.w; uint _206 = ((0u + ((_126 + 4u) * 16u)) + buf1_off) >> 2u; uint4 _219 = uint4(cbuf_36.data[_206 + 0u], cbuf_36.data[_206 + 1u], cbuf_36.data[_206 + 2u], cbuf_36.data[_206 + 3u]); uint _223 = _219.w; uint _227 = ((0u + ((_126 + 5u) * 16u)) + buf1_off) >> 2u; uint4 _240 = uint4(cbuf_36.data[_227 + 0u], cbuf_36.data[_227 + 1u], cbuf_36.data[_227 + 2u], cbuf_36.data[_227 + 3u]); uint _244 = _240.w; uint _248 = ((0u + ((_126 + 6u) * 16u)) + buf1_off) >> 2u; uint4 _261 = uint4(cbuf_36.data[_248 + 0u], cbuf_36.data[_248 + 1u], cbuf_36.data[_248 + 2u], cbuf_36.data[_248 + 3u]); uint _265 = _261.w; float _268 = spvFMul(_107, spvFMul(1.0 / spvFMul(-as_type(cbuf_40.data[_86]), _120), as_type(cbuf_36.data[_141]))); float _269 = spvFMul(0.0, _268); float _271 = spvFMul(0.3333333432674407958984375, _268); float _274 = spvFMul(300.0, as_type(cbuf_36.data[_141])); float _277 = fma(as_type(_181), _269, in.fs_in_attr1.x); float _279 = fma(as_type(_181), _271, in.fs_in_attr1.y); float _281 = fma(as_type(_202), _269, in.fs_in_attr1.x); float _283 = fma(as_type(_202), _271, in.fs_in_attr1.y); float _285 = fma(as_type(_223), _269, in.fs_in_attr1.x); float _287 = fma(as_type(_223), _271, in.fs_in_attr1.y); float _289 = fma(as_type(_244), _269, in.fs_in_attr1.x); float _291 = fma(as_type(_244), _271, in.fs_in_attr1.y); float4 _296 = fs_img24.sample(fs_samp32, float2(_277, _279)); float _297 = _296.x; float _298 = _296.y; float _299 = _296.z; float4 _310 = fs_img24.sample(fs_samp32, float2(_281, _283)); float _311 = _310.x; float _312 = _310.y; float _313 = _310.z; float _326 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_277, _279)).x))))), 0.0, 1.0); float _349 = fma(as_type(_265), _269, in.fs_in_attr1.x); float _351 = fma(as_type(_265), _271, in.fs_in_attr1.y); float4 _364 = fs_img24.sample(fs_samp32, float2(_285, _287)); float _365 = _364.x; float _366 = _364.y; float _367 = _364.z; float4 _378 = fs_img24.sample(fs_samp32, float2(_289, _291)); float _379 = _378.x; float _380 = _378.y; float _381 = _378.z; float _400 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_281, _283)).x))))), 0.0, 1.0); float _422 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_285, _287)).x))))), 0.0, 1.0); float _447 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_289, _291)).x))))), 0.0, 1.0); float4 _469 = fs_img24.sample(fs_samp32, float2(_349, _351)); float _470 = _469.x; float _471 = _469.y; float _472 = _469.z; uint _482 = ((0u + ((_126 + 7u) * 16u)) + buf1_off) >> 2u; uint4 _495 = uint4(cbuf_36.data[_482 + 0u], cbuf_36.data[_482 + 1u], cbuf_36.data[_482 + 2u], cbuf_36.data[_482 + 3u]); uint _499 = _495.w; uint _503 = ((0u + ((_126 + 8u) * 16u)) + buf1_off) >> 2u; uint4 _516 = uint4(cbuf_36.data[_503 + 0u], cbuf_36.data[_503 + 1u], cbuf_36.data[_503 + 2u], cbuf_36.data[_503 + 3u]); uint _520 = _516.w; uint _524 = ((0u + ((_126 + 9u) * 16u)) + buf1_off) >> 2u; uint4 _537 = uint4(cbuf_36.data[_524 + 0u], cbuf_36.data[_524 + 1u], cbuf_36.data[_524 + 2u], cbuf_36.data[_524 + 3u]); uint _541 = _537.w; uint _545 = ((0u + ((_126 + 10u) * 16u)) + buf1_off) >> 2u; uint4 _558 = uint4(cbuf_36.data[_545 + 0u], cbuf_36.data[_545 + 1u], cbuf_36.data[_545 + 2u], cbuf_36.data[_545 + 3u]); uint _562 = _558.w; float _575 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_349, _351)).x))))), 0.0, 1.0); float _589 = fma(as_type(_499), _269, in.fs_in_attr1.x); float _591 = fma(as_type(_499), _271, in.fs_in_attr1.y); float _593 = fma(as_type(_520), _269, in.fs_in_attr1.x); float _595 = fma(as_type(_520), _271, in.fs_in_attr1.y); float _597 = fma(as_type(_541), _269, in.fs_in_attr1.x); float _599 = fma(as_type(_541), _271, in.fs_in_attr1.y); float _601 = fma(as_type(_562), _269, in.fs_in_attr1.x); float _603 = fma(as_type(_562), _271, in.fs_in_attr1.y); float4 _608 = fs_img24.sample(fs_samp32, float2(_589, _591)); float _609 = _608.x; float _610 = _608.y; float _611 = _608.z; float4 _622 = fs_img24.sample(fs_samp32, float2(_593, _595)); float _623 = _622.x; float _624 = _622.y; float _625 = _622.z; float4 _636 = fs_img24.sample(fs_samp32, float2(_597, _599)); float _637 = _636.x; float _638 = _636.y; float _639 = _636.z; float _658 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_589, _591)).x))))), 0.0, 1.0); float _683 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_593, _595)).x))))), 0.0, 1.0); float _708 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_597, _599)).x))))), 0.0, 1.0); float4 _733 = fs_img24.sample(fs_samp32, float2(_601, _603)); float _734 = _733.x; float _735 = _733.y; float _736 = _733.z; uint _746 = ((0u + ((_126 + 11u) * 16u)) + buf1_off) >> 2u; uint4 _759 = uint4(cbuf_36.data[_746 + 0u], cbuf_36.data[_746 + 1u], cbuf_36.data[_746 + 2u], cbuf_36.data[_746 + 3u]); uint _763 = _759.w; uint _767 = ((0u + ((_126 + 12u) * 16u)) + buf1_off) >> 2u; uint4 _780 = uint4(cbuf_36.data[_767 + 0u], cbuf_36.data[_767 + 1u], cbuf_36.data[_767 + 2u], cbuf_36.data[_767 + 3u]); uint _784 = _780.w; uint _788 = ((0u + ((_126 + 13u) * 16u)) + buf1_off) >> 2u; uint4 _801 = uint4(cbuf_36.data[_788 + 0u], cbuf_36.data[_788 + 1u], cbuf_36.data[_788 + 2u], cbuf_36.data[_788 + 3u]); uint _805 = _801.w; uint _809 = ((0u + ((_126 + 14u) * 16u)) + buf1_off) >> 2u; uint4 _822 = uint4(cbuf_36.data[_809 + 0u], cbuf_36.data[_809 + 1u], cbuf_36.data[_809 + 2u], cbuf_36.data[_809 + 3u]); uint _826 = _822.w; float _839 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_601, _603)).x))))), 0.0, 1.0); float _847 = fma(as_type(_558.x), fma(_839, spvFSub(_104, _734), _734), fma(as_type(_537.x), fma(_708, spvFSub(_104, _637), _637), fma(as_type(_516.x), fma(_683, spvFSub(_104, _623), _623), fma(as_type(_495.x), fma(_658, spvFSub(_104, _609), _609), fma(as_type(_261.x), fma(_575, spvFSub(_104, _470), _470), fma(as_type(_240.x), fma(_447, spvFSub(_104, _379), _379), fma(as_type(_219.x), fma(_422, spvFSub(_104, _365), _365), fma(as_type(_198.x), fma(_400, spvFSub(_104, _311), _311), fma(as_type(_157.x), _104, spvFMul(as_type(_177.x), fma(_326, spvFSub(_104, _297), _297))))))))))); float _849 = fma(as_type(_558.y), fma(_839, spvFSub(_105, _735), _735), fma(as_type(_537.y), fma(_708, spvFSub(_105, _638), _638), fma(as_type(_516.y), fma(_683, spvFSub(_105, _624), _624), fma(as_type(_495.y), fma(_658, spvFSub(_105, _610), _610), fma(as_type(_261.y), fma(_575, spvFSub(_105, _471), _471), fma(as_type(_240.y), fma(_447, spvFSub(_105, _380), _380), fma(as_type(_219.y), fma(_422, spvFSub(_105, _366), _366), fma(as_type(_198.y), fma(_400, spvFSub(_105, _312), _312), fma(as_type(_157.y), _105, spvFMul(as_type(_177.y), fma(_326, spvFSub(_105, _298), _298))))))))))); float _851 = fma(as_type(_558.z), fma(_839, spvFSub(_106, _736), _736), fma(as_type(_537.z), fma(_708, spvFSub(_106, _639), _639), fma(as_type(_516.z), fma(_683, spvFSub(_106, _625), _625), fma(as_type(_495.z), fma(_658, spvFSub(_106, _611), _611), fma(as_type(_261.z), fma(_575, spvFSub(_106, _472), _472), fma(as_type(_240.z), fma(_447, spvFSub(_106, _381), _381), fma(as_type(_219.z), fma(_422, spvFSub(_106, _367), _367), fma(as_type(_198.z), fma(_400, spvFSub(_106, _313), _313), fma(as_type(_157.z), _106, spvFMul(as_type(_177.z), fma(_326, spvFSub(_106, _299), _299))))))))))); float _853 = fma(as_type(_763), _269, in.fs_in_attr1.x); float _855 = fma(as_type(_763), _271, in.fs_in_attr1.y); float _857 = fma(as_type(_784), _269, in.fs_in_attr1.x); float _859 = fma(as_type(_784), _271, in.fs_in_attr1.y); float _861 = fma(as_type(_805), _269, in.fs_in_attr1.x); float _863 = fma(as_type(_805), _271, in.fs_in_attr1.y); float _865 = fma(as_type(_826), _269, in.fs_in_attr1.x); float _867 = fma(as_type(_826), _271, in.fs_in_attr1.y); float4 _872 = fs_img24.sample(fs_samp32, float2(_853, _855)); float _873 = _872.x; float _874 = _872.y; float _875 = _872.z; float4 _886 = fs_img24.sample(fs_samp32, float2(_857, _859)); float _887 = _886.x; float _888 = _886.y; float _889 = _886.z; float4 _900 = fs_img24.sample(fs_samp32, float2(_861, _863)); float _901 = _900.x; float _902 = _900.y; float _903 = _900.z; float _922 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_853, _855)).x))))), 0.0, 1.0); float _947 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_857, _859)).x))))), 0.0, 1.0); float _972 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_861, _863)).x))))), 0.0, 1.0); float4 _994 = fs_img24.sample(fs_samp32, float2(_865, _867)); float _995 = _994.x; float _996 = _994.y; float _997 = _994.z; uint _1007 = ((0u + ((_126 + 15u) * 16u)) + buf1_off) >> 2u; uint4 _1020 = uint4(cbuf_36.data[_1007 + 0u], cbuf_36.data[_1007 + 1u], cbuf_36.data[_1007 + 2u], cbuf_36.data[_1007 + 3u]); uint _1024 = _1020.w; uint _1028 = ((0u + ((_126 + 16u) * 16u)) + buf1_off) >> 2u; uint4 _1041 = uint4(cbuf_36.data[_1028 + 0u], cbuf_36.data[_1028 + 1u], cbuf_36.data[_1028 + 2u], cbuf_36.data[_1028 + 3u]); uint _1045 = _1041.w; uint _1049 = ((0u + ((_126 + 17u) * 16u)) + buf1_off) >> 2u; uint4 _1062 = uint4(cbuf_36.data[_1049 + 0u], cbuf_36.data[_1049 + 1u], cbuf_36.data[_1049 + 2u], cbuf_36.data[_1049 + 3u]); uint _1066 = _1062.w; float _1079 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_865, _867)).x))))), 0.0, 1.0); float _1093 = fma(as_type(_1024), _269, in.fs_in_attr1.x); float _1095 = fma(as_type(_1024), _271, in.fs_in_attr1.y); float _1097 = fma(as_type(_1045), _269, in.fs_in_attr1.x); float _1099 = fma(as_type(_1045), _271, in.fs_in_attr1.y); float _1101 = fma(as_type(_1066), _269, in.fs_in_attr1.x); float _1103 = fma(as_type(_1066), _271, in.fs_in_attr1.y); float4 _1108 = fs_img24.sample(fs_samp32, float2(_1093, _1095)); float _1109 = _1108.x; float _1110 = _1108.y; float _1111 = _1108.z; float4 _1122 = fs_img24.sample(fs_samp32, float2(_1097, _1099)); float _1123 = _1122.x; float _1124 = _1122.y; float _1125 = _1122.z; float4 _1136 = fs_img24.sample(fs_samp32, float2(_1101, _1103)); float _1137 = _1136.x; float _1138 = _1136.y; float _1139 = _1136.z; float _1158 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_1093, _1095)).x))))), 0.0, 1.0); float _1183 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_1097, _1099)).x))))), 0.0, 1.0); float _1208 = fast::clamp(spvFMul(_274, abs(fma(-as_type(cbuf_40.data[_86]), _120, -spvFMul(-as_type(cbuf_40.data[_86]), 1.0 / spvFSub(as_type(cbuf_40.data[_82]), fs_img4.sample(fs_samp12, float2(_1101, _1103)).x))))), 0.0, 1.0); out.frag_color0.x = fma(as_type(_1062.x), fma(_1208, spvFSub(_104, _1137), _1137), fma(as_type(_1041.x), fma(_1183, spvFSub(_104, _1123), _1123), fma(as_type(_1020.x), fma(_1158, spvFSub(_104, _1109), _1109), fma(as_type(_822.x), fma(_1079, spvFSub(_104, _995), _995), fma(as_type(_801.x), fma(_972, spvFSub(_104, _901), _901), fma(as_type(_780.x), fma(_947, spvFSub(_104, _887), _887), fma(as_type(_759.x), fma(_922, spvFSub(_104, _873), _873), _847))))))); out.frag_color0.y = fma(as_type(_1062.y), fma(_1208, spvFSub(_105, _1138), _1138), fma(as_type(_1041.y), fma(_1183, spvFSub(_105, _1124), _1124), fma(as_type(_1020.y), fma(_1158, spvFSub(_105, _1110), _1110), fma(as_type(_822.y), fma(_1079, spvFSub(_105, _996), _996), fma(as_type(_801.y), fma(_972, spvFSub(_105, _902), _902), fma(as_type(_780.y), fma(_947, spvFSub(_105, _888), _888), fma(as_type(_759.y), fma(_922, spvFSub(_105, _874), _874), _849))))))); out.frag_color0.z = fma(as_type(_1062.z), fma(_1208, spvFSub(_106, _1139), _1139), fma(as_type(_1041.z), fma(_1183, spvFSub(_106, _1125), _1125), fma(as_type(_1020.z), fma(_1158, spvFSub(_106, _1111), _1111), fma(as_type(_822.z), fma(_1079, spvFSub(_106, _997), _997), fma(as_type(_801.z), fma(_972, spvFSub(_106, _903), _903), fma(as_type(_780.z), fma(_947, spvFSub(_106, _889), _889), fma(as_type(_759.z), fma(_922, spvFSub(_106, _875), _875), _851))))))); out.frag_color0.w = _107; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x9eb30215 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x6a51f1d8 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[64]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[0u + (extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u)]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; fragment main0_out main0(constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.frag_color0.x = as_type(cbuf_4.data[0u + buf0_dword_off]); out.frag_color0.y = as_type(cbuf_4.data[1u + buf0_dword_off]); out.frag_color0.z = as_type(cbuf_4.data[2u + buf0_dword_off]); out.frag_color0.w = as_type(cbuf_4.data[3u + buf0_dword_off]); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x32e47788 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8747a367 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint _76 = 0u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[_76]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = as_type(cbuf_8.data[_76]); out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[5400]; }; struct fs_cbuf_block_f32_1 { uint data[52]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_60 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img24 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img16 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], texture2d fs_img48 [[texture(5)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _98 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _99 = _98.x; float4 _110 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); uint _118 = uint(int(spvFMul(255.0, fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).w))) * 6u; float4 _124 = fs_img40.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _132 = fs_img48.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); uint _143 = ((0u + ((_118 + 2u) * 16u)) + buf0_off) >> 2u; uint3 _153 = uint3(cbuf_60.data[_143 + 0u], cbuf_60.data[_143 + 1u], cbuf_60.data[_143 + 2u]); uint _154 = _153.x; uint _162 = ((0u + ((_118 + 3u) * 16u)) + buf0_off) >> 2u; uint4 _175 = uint4(cbuf_60.data[_162 + 0u], cbuf_60.data[_162 + 1u], cbuf_60.data[_162 + 2u], cbuf_60.data[_162 + 3u]); uint _183 = ((0u + ((_118 + 1u) * 16u)) + buf0_off) >> 2u; uint4 _196 = uint4(cbuf_60.data[_183 + 0u], cbuf_60.data[_183 + 1u], cbuf_60.data[_183 + 2u], cbuf_60.data[_183 + 3u]); uint _204 = ((0u + ((_118 + 4u) * 16u)) + buf0_off) >> 2u; uint4 _217 = uint4(cbuf_60.data[_204 + 0u], cbuf_60.data[_204 + 1u], cbuf_60.data[_204 + 2u], cbuf_60.data[_204 + 3u]); float _331 = 1.0 / fma(as_type(cbuf_56.data[12u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_56.data[13u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_56.data[14u + buf1_dword_off]), _99, as_type(cbuf_56.data[15u + buf1_dword_off])))); float _336 = spvFMul(fma(as_type(cbuf_56.data[8u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_56.data[9u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_56.data[10u + buf1_dword_off]), _99, as_type(cbuf_56.data[11u + buf1_dword_off])))), _331); float _339 = spvFMul(fma(as_type(cbuf_56.data[4u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_56.data[5u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_56.data[6u + buf1_dword_off]), _99, as_type(cbuf_56.data[7u + buf1_dword_off])))), _331); float _354 = spvFMul(fma(as_type(cbuf_56.data[0u + buf1_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_56.data[1u + buf1_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_56.data[2u + buf1_dword_off]), _99, as_type(cbuf_56.data[3u + buf1_dword_off])))), _331); float _362 = fma(as_type(cbuf_56.data[40u + buf1_dword_off]), _354, fma(as_type(cbuf_56.data[41u + buf1_dword_off]), _339, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _336))); float _364 = fma(as_type(cbuf_56.data[32u + buf1_dword_off]), _354, fma(as_type(cbuf_56.data[33u + buf1_dword_off]), _339, spvFMul(as_type(cbuf_56.data[34u + buf1_dword_off]), _336))); float _374 = spvFAdd(_132.y, spvFAdd(_110.y, _124.y)); float _377 = spvFAdd(_132.x, spvFAdd(_110.x, _124.x)); float _381 = spvFAdd(_132.z, spvFAdd(_110.z, _124.z)); float _393 = spvFAdd(-1.0, fma(_381, 0.11448000371456146240234375, fma(_377, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _374)))); float _400 = fma(as_type(_196.w), _393, 1.0); float _405 = fast::clamp(spvFAdd(as_type(_154), spvFMul(as_type(_154), -exp2(spvFMul(spvFSub(sqrt(fma(_364, _364, spvFMul(_362, _362))), as_type(_153.y)), -as_type(_153.z))))), 0.0, 1.0); float _419 = fma(as_type(_217.w), _393, 1.0); float _420 = fma(_405, fma(as_type(_196.x), _400, -_377), _377); float _421 = fma(_405, fma(as_type(_196.y), _400, -_374), _374); float _422 = fma(_405, fma(as_type(_196.z), _400, -_381), _381); float _425 = fast::clamp(spvFMul(as_type(_175.x), fast::clamp(spvFMul(as_type(_175.z), spvFSub(spvFAdd(fma(as_type(cbuf_56.data[36u + buf1_dword_off]), _354, fma(as_type(cbuf_56.data[37u + buf1_dword_off]), _339, spvFMul(as_type(cbuf_56.data[38u + buf1_dword_off]), _336))), as_type(_175.w)), as_type(_175.y))), 0.0, 1.0)), 0.0, 1.0); out.frag_color0.x = fma(_425, fma(as_type(_217.x), _419, -_420), _420); out.frag_color0.y = fma(_425, fma(as_type(_217.y), _419, -_421), _421); out.frag_color0.z = fma(_425, fma(as_type(_217.z), _419, -_422), _422); out.frag_color0.w = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)).w; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xe820ee9d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct main0_out { float gl_FragDepth [[depth(any)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _112 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[0u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[1u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _113 = _112.x; float4 _118 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[4u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[5u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _119 = _118.x; float4 _128 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[8u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[9u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _129 = _128.x; float4 _138 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[12u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[13u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _139 = _138.x; float _141 = (_113 > _119) ? _119 : _113; float _143 = (_141 > _129) ? _129 : _141; out.gl_FragDepth = (_143 > _139) ? _139 : _143; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xbaad65ce [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d cs_img4 [[texture(0)]], texture2d cs_img16 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _81 = (gl_WorkGroupID.x << 3u) + gl_LocalInvocationID.x; uint _82 = (gl_WorkGroupID.y << 3u) + gl_LocalInvocationID.y; bool _97 = (_82 >= cbuf_12.data[3u + buf0_dword_off]) || (cbuf_12.data[2u + buf0_dword_off] <= _81); uint _99; if (!_97) { _99 = _81; } else { _99 = gl_LocalInvocationID.z; } if (!_97) { uint4 _104 = as_type(cs_img4.read(uint2(uint2(_99, _82)), 0u)); cs_img16.write((float4(float4(as_type(_104.x), as_type(_104.y), as_type(_104.z), as_type(_104.w)))), uint2(uint2(cbuf_12.data[0u + buf0_dword_off] + _81, cbuf_12.data[1u + buf0_dword_off] + _82))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xbaad65ce (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d cs_img4 [[texture(0)]], texture2d cs_img16 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _81 = (gl_WorkGroupID.x << 3u) + gl_LocalInvocationID.x; uint _82 = (gl_WorkGroupID.y << 3u) + gl_LocalInvocationID.y; bool _97 = (_82 >= cbuf_12.data[3u + buf0_dword_off]) || (cbuf_12.data[2u + buf0_dword_off] <= _81); uint _99; if (!_97) { _99 = _81; } else { _99 = gl_LocalInvocationID.z; } if (!_97) { uint4 _104 = as_type(cs_img4.read(uint2(uint2(_99, _82)), 0u)); cs_img16.write((float4(0.0, 0.0, 0.0, float4(as_type(_104.x), as_type(_104.y), as_type(_104.z), as_type(_104.w)).x)), uint2(uint2(cbuf_12.data[0u + buf0_dword_off] + _81, cbuf_12.data[1u + buf0_dword_off] + _82))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x9a9cf8a9 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d cs_img4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; cs_img4.write((float4(float4(as_type(cbuf_12.data[0u + buf0_dword_off]), as_type(cbuf_12.data[1u + buf0_dword_off]), as_type(cbuf_12.data[2u + buf0_dword_off]), as_type(cbuf_12.data[3u + buf0_dword_off])))), uint2(uint2((gl_WorkGroupID.x << 3u) + gl_LocalInvocationID.x, (gl_WorkGroupID.y << 3u) + gl_LocalInvocationID.y))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x9a9cf8a9 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d cs_img4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; cs_img4.write((float4(float4(as_type(cbuf_12.data[0u + buf0_dword_off]), as_type(cbuf_12.data[1u + buf0_dword_off]), as_type(cbuf_12.data[2u + buf0_dword_off]), as_type(cbuf_12.data[3u + buf0_dword_off])).zyxw)), uint2(uint2((gl_WorkGroupID.x << 3u) + gl_LocalInvocationID.x, (gl_WorkGroupID.y << 3u) + gl_LocalInvocationID.y))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xde66fe8d [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x40aec653 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[4]; }; fragment void main0(constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; frag_color0.x = as_type(cbuf_4.data[0u + buf0_dword_off]); frag_color0.y = as_type(cbuf_4.data[1u + buf0_dword_off]); frag_color0.z = as_type(cbuf_4.data[2u + buf0_dword_off]); frag_color0.w = as_type(cbuf_4.data[3u + buf0_dword_off]); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x9a9cf8a9 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d cs_img4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; cs_img4.write((float4(float4(as_type(cbuf_12.data[0u + buf0_dword_off]), as_type(cbuf_12.data[1u + buf0_dword_off]), as_type(cbuf_12.data[2u + buf0_dword_off]), as_type(cbuf_12.data[3u + buf0_dword_off])).xyz, 1.0)), uint2(uint2((gl_WorkGroupID.x << 3u) + gl_LocalInvocationID.x, (gl_WorkGroupID.y << 3u) + gl_LocalInvocationID.y))); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x10bc83cb [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d cs_img4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; cs_img4.write((float4(float4(as_type(cbuf_12.data[0u + buf0_dword_off]), as_type(cbuf_12.data[1u + buf0_dword_off]), as_type(cbuf_12.data[2u + buf0_dword_off]), as_type(cbuf_12.data[3u + buf0_dword_off])))), uint2(uint(((gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x)), 0)); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xccbf44a6 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; float4 _73 = out.gl_Position; _73.z = (_73.z + _73.w) * 0.5; out.gl_Position = _73; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _64 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); out.frag_color0.x = fast::max(0.0, _64.x); out.frag_color0.y = fast::max(0.0, _64.y); out.frag_color0.z = fast::max(0.0, _64.z); out.frag_color0.w = fast::max(0.0, _64.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xfbe7c4b6 [Render.Vulkan] resource_tracking_pass.cpp:PatchImageInstruction:675: Shader compiled with unbound image! [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7d668276 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; constant uint _70 = {}; constant uint _71 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], sampler fs_samp32 [[sampler(0)]], sampler fs_samp12 [[sampler(1)]], sampler fs_samp36 [[sampler(2)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; bool _85 = as_type(cbuf_40.data[1024u + buf0_dword_off]) == 1.0; uint _120; uint _121; uint _122; if (_85) { float4 _95 = fs_img16.sample(fs_samp32, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); _120 = as_type(spvFMul(as_type(cbuf_40.data[618u + buf0_dword_off]), _95.z)); _121 = as_type(spvFMul(as_type(cbuf_40.data[617u + buf0_dword_off]), _95.y)); _122 = as_type(spvFMul(as_type(cbuf_40.data[616u + buf0_dword_off]), _95.x)); } else { _120 = _71; _121 = _70; _122 = 1065353216u; } uint _123; uint _124; uint _125; if (!_85) { _123 = 0u; _124 = 0u; _125 = 0u; } else { _123 = _120; _124 = _121; _125 = _122; } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_125); out.frag_color0.y = as_type(_124); out.frag_color0.z = as_type(_123); out.frag_color0.w = fma(as_type(cbuf_40.data[68u + buf0_dword_off]), fs_img24.sample(fs_samp36, float2(fma(as_type(cbuf_40.data[0u + buf0_dword_off]), fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)).x, as_type(cbuf_40.data[1u + buf0_dword_off])), as_type(cbuf_40.data[200u + buf0_dword_off])), level(0.0)).x, as_type(cbuf_40.data[69u + buf0_dword_off])); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x4b766f62 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4c37ae6d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _77 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); out.frag_color0.x = spvFMul(as_type(cbuf_16.data[616u + buf0_dword_off]), _77.x); out.frag_color0.y = spvFMul(as_type(cbuf_16.data[617u + buf0_dword_off]), _77.y); out.frag_color0.z = spvFMul(as_type(cbuf_16.data[618u + buf0_dword_off]), _77.z); out.frag_color0.w = spvFMul(as_type(cbuf_16.data[619u + buf0_dword_off]), _77.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x265a6d2d [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x1baf9590 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = spvFAdd(as_type(cbuf_8.data[140u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr1.y = spvFAdd(as_type(cbuf_8.data[141u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _82 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _91 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_16.data[616u + buf0_dword_off]), _91.x, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), _82.x)); out.frag_color0.y = fma(as_type(cbuf_16.data[617u + buf0_dword_off]), _91.y, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), _82.y)); out.frag_color0.z = fma(as_type(cbuf_16.data[618u + buf0_dword_off]), _91.z, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), _82.z)); out.frag_color0.w = fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _91.w, spvFMul(as_type(cbuf_16.data[623u + buf0_dword_off]), _82.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x483f5dc1 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x86c6a72 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = spvFAdd(as_type(cbuf_8.data[140u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr1.y = spvFAdd(as_type(cbuf_8.data[141u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFAdd(as_type(cbuf_8.data[144u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr2.y = spvFAdd(as_type(cbuf_8.data[145u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr3.x = spvFAdd(as_type(cbuf_8.data[148u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr3.y = spvFAdd(as_type(cbuf_8.data[149u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.out_attr4.x = spvFAdd(as_type(cbuf_8.data[152u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr4.y = spvFAdd(as_type(cbuf_8.data[153u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _85 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _98 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _111 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); float4 _124 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y), level(0.0)); float4 _133 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_16.data[632u + buf0_dword_off]), _133.x, fma(as_type(cbuf_16.data[628u + buf0_dword_off]), _124.x, fma(as_type(cbuf_16.data[624u + buf0_dword_off]), _111.x, fma(as_type(cbuf_16.data[616u + buf0_dword_off]), _98.x, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), _85.x))))); out.frag_color0.y = fma(as_type(cbuf_16.data[633u + buf0_dword_off]), _133.y, fma(as_type(cbuf_16.data[629u + buf0_dword_off]), _124.y, fma(as_type(cbuf_16.data[625u + buf0_dword_off]), _111.y, fma(as_type(cbuf_16.data[617u + buf0_dword_off]), _98.y, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), _85.y))))); out.frag_color0.z = fma(as_type(cbuf_16.data[634u + buf0_dword_off]), _133.z, fma(as_type(cbuf_16.data[630u + buf0_dword_off]), _124.z, fma(as_type(cbuf_16.data[626u + buf0_dword_off]), _111.z, fma(as_type(cbuf_16.data[618u + buf0_dword_off]), _98.z, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), _85.z))))); out.frag_color0.w = fma(as_type(cbuf_16.data[635u + buf0_dword_off]), _133.w, fma(as_type(cbuf_16.data[631u + buf0_dword_off]), _124.w, fma(as_type(cbuf_16.data[627u + buf0_dword_off]), _111.w, fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _98.w, spvFMul(as_type(cbuf_16.data[623u + buf0_dword_off]), _85.w))))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xdfd55dbb [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4de27c6f [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 out_attr7 [[user(locn7)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = spvFAdd(as_type(cbuf_8.data[140u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr1.y = spvFAdd(as_type(cbuf_8.data[141u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFAdd(as_type(cbuf_8.data[144u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr2.y = spvFAdd(as_type(cbuf_8.data[145u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr3.x = spvFAdd(as_type(cbuf_8.data[148u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr3.y = spvFAdd(as_type(cbuf_8.data[149u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.out_attr4.x = spvFAdd(as_type(cbuf_8.data[152u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr4.y = spvFAdd(as_type(cbuf_8.data[153u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.out_attr5.x = spvFAdd(as_type(cbuf_8.data[156u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr5.y = spvFAdd(as_type(cbuf_8.data[157u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.out_attr6.x = spvFAdd(as_type(cbuf_8.data[160u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr6.y = spvFAdd(as_type(cbuf_8.data[161u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr6.z = 0.0; out.out_attr6.w = 1.0; out.out_attr7.x = spvFAdd(as_type(cbuf_8.data[164u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr7.y = spvFAdd(as_type(cbuf_8.data[165u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr7.z = 0.0; out.out_attr7.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; float4 fs_in_attr7 [[user(locn7)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _88 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _101 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _122 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); float4 _143 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y), level(0.0)); float4 _164 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y), level(0.0)); float4 _185 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr5.x, in.fs_in_attr5.y), level(0.0)); float4 _206 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr6.x, in.fs_in_attr6.y), level(0.0)); float4 _227 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr7.x, in.fs_in_attr7.y), level(0.0)); float4 _248 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[200u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[201u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _269 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[204u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[205u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _290 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[208u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[209u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _311 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[212u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[213u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _332 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[216u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[217u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _353 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[220u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[221u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _374 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[224u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[225u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _395 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[228u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[229u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _416 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[232u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[233u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _437 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[236u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[237u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _458 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[240u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[241u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _471 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[244u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[245u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _484 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[248u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[249u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _497 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[252u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[253u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _510 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[256u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[257u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _523 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[260u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[261u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _532 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[264u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[265u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _875 = fma(as_type(cbuf_16.data[656u + buf0_dword_off]), _290.x, fma(as_type(cbuf_16.data[652u + buf0_dword_off]), _269.x, fma(as_type(cbuf_16.data[648u + buf0_dword_off]), _248.x, fma(as_type(cbuf_16.data[644u + buf0_dword_off]), _227.x, fma(as_type(cbuf_16.data[640u + buf0_dword_off]), _206.x, fma(as_type(cbuf_16.data[636u + buf0_dword_off]), _185.x, fma(as_type(cbuf_16.data[632u + buf0_dword_off]), _164.x, fma(as_type(cbuf_16.data[628u + buf0_dword_off]), _143.x, fma(as_type(cbuf_16.data[624u + buf0_dword_off]), _122.x, fma(as_type(cbuf_16.data[616u + buf0_dword_off]), _101.x, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), _88.x))))))))))); float _877 = fma(as_type(cbuf_16.data[657u + buf0_dword_off]), _290.y, fma(as_type(cbuf_16.data[653u + buf0_dword_off]), _269.y, fma(as_type(cbuf_16.data[649u + buf0_dword_off]), _248.y, fma(as_type(cbuf_16.data[645u + buf0_dword_off]), _227.y, fma(as_type(cbuf_16.data[641u + buf0_dword_off]), _206.y, fma(as_type(cbuf_16.data[637u + buf0_dword_off]), _185.y, fma(as_type(cbuf_16.data[633u + buf0_dword_off]), _164.y, fma(as_type(cbuf_16.data[629u + buf0_dword_off]), _143.y, fma(as_type(cbuf_16.data[625u + buf0_dword_off]), _122.y, fma(as_type(cbuf_16.data[617u + buf0_dword_off]), _101.y, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), _88.y))))))))))); float _879 = fma(as_type(cbuf_16.data[658u + buf0_dword_off]), _290.z, fma(as_type(cbuf_16.data[654u + buf0_dword_off]), _269.z, fma(as_type(cbuf_16.data[650u + buf0_dword_off]), _248.z, fma(as_type(cbuf_16.data[646u + buf0_dword_off]), _227.z, fma(as_type(cbuf_16.data[642u + buf0_dword_off]), _206.z, fma(as_type(cbuf_16.data[638u + buf0_dword_off]), _185.z, fma(as_type(cbuf_16.data[634u + buf0_dword_off]), _164.z, fma(as_type(cbuf_16.data[630u + buf0_dword_off]), _143.z, fma(as_type(cbuf_16.data[626u + buf0_dword_off]), _122.z, fma(as_type(cbuf_16.data[618u + buf0_dword_off]), _101.z, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), _88.z))))))))))); float _881 = fma(as_type(cbuf_16.data[659u + buf0_dword_off]), _290.w, fma(as_type(cbuf_16.data[655u + buf0_dword_off]), _269.w, fma(as_type(cbuf_16.data[651u + buf0_dword_off]), _248.w, fma(as_type(cbuf_16.data[647u + buf0_dword_off]), _227.w, fma(as_type(cbuf_16.data[643u + buf0_dword_off]), _206.w, fma(as_type(cbuf_16.data[639u + buf0_dword_off]), _185.w, fma(as_type(cbuf_16.data[635u + buf0_dword_off]), _164.w, fma(as_type(cbuf_16.data[631u + buf0_dword_off]), _143.w, fma(as_type(cbuf_16.data[627u + buf0_dword_off]), _122.w, fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _101.w, spvFMul(as_type(cbuf_16.data[623u + buf0_dword_off]), _88.w))))))))))); float _1099 = fma(as_type(cbuf_16.data[696u + buf0_dword_off]), _484.x, fma(as_type(cbuf_16.data[692u + buf0_dword_off]), _471.x, fma(as_type(cbuf_16.data[688u + buf0_dword_off]), _458.x, fma(as_type(cbuf_16.data[684u + buf0_dword_off]), _437.x, fma(as_type(cbuf_16.data[680u + buf0_dword_off]), _416.x, fma(as_type(cbuf_16.data[676u + buf0_dword_off]), _395.x, fma(as_type(cbuf_16.data[672u + buf0_dword_off]), _374.x, fma(as_type(cbuf_16.data[668u + buf0_dword_off]), _353.x, fma(as_type(cbuf_16.data[664u + buf0_dword_off]), _332.x, fma(as_type(cbuf_16.data[660u + buf0_dword_off]), _311.x, _875)))))))))); float _1101 = fma(as_type(cbuf_16.data[697u + buf0_dword_off]), _484.y, fma(as_type(cbuf_16.data[693u + buf0_dword_off]), _471.y, fma(as_type(cbuf_16.data[689u + buf0_dword_off]), _458.y, fma(as_type(cbuf_16.data[685u + buf0_dword_off]), _437.y, fma(as_type(cbuf_16.data[681u + buf0_dword_off]), _416.y, fma(as_type(cbuf_16.data[677u + buf0_dword_off]), _395.y, fma(as_type(cbuf_16.data[673u + buf0_dword_off]), _374.y, fma(as_type(cbuf_16.data[669u + buf0_dword_off]), _353.y, fma(as_type(cbuf_16.data[665u + buf0_dword_off]), _332.y, fma(as_type(cbuf_16.data[661u + buf0_dword_off]), _311.y, _877)))))))))); float _1103 = fma(as_type(cbuf_16.data[698u + buf0_dword_off]), _484.z, fma(as_type(cbuf_16.data[694u + buf0_dword_off]), _471.z, fma(as_type(cbuf_16.data[690u + buf0_dword_off]), _458.z, fma(as_type(cbuf_16.data[686u + buf0_dword_off]), _437.z, fma(as_type(cbuf_16.data[682u + buf0_dword_off]), _416.z, fma(as_type(cbuf_16.data[678u + buf0_dword_off]), _395.z, fma(as_type(cbuf_16.data[674u + buf0_dword_off]), _374.z, fma(as_type(cbuf_16.data[670u + buf0_dword_off]), _353.z, fma(as_type(cbuf_16.data[666u + buf0_dword_off]), _332.z, fma(as_type(cbuf_16.data[662u + buf0_dword_off]), _311.z, _879)))))))))); float _1105 = fma(as_type(cbuf_16.data[699u + buf0_dword_off]), _484.w, fma(as_type(cbuf_16.data[695u + buf0_dword_off]), _471.w, fma(as_type(cbuf_16.data[691u + buf0_dword_off]), _458.w, fma(as_type(cbuf_16.data[687u + buf0_dword_off]), _437.w, fma(as_type(cbuf_16.data[683u + buf0_dword_off]), _416.w, fma(as_type(cbuf_16.data[679u + buf0_dword_off]), _395.w, fma(as_type(cbuf_16.data[675u + buf0_dword_off]), _374.w, fma(as_type(cbuf_16.data[671u + buf0_dword_off]), _353.w, fma(as_type(cbuf_16.data[667u + buf0_dword_off]), _332.w, fma(as_type(cbuf_16.data[663u + buf0_dword_off]), _311.w, _881)))))))))); out.frag_color0.x = fma(as_type(cbuf_16.data[712u + buf0_dword_off]), _532.x, fma(as_type(cbuf_16.data[708u + buf0_dword_off]), _523.x, fma(as_type(cbuf_16.data[704u + buf0_dword_off]), _510.x, fma(as_type(cbuf_16.data[700u + buf0_dword_off]), _497.x, _1099)))); out.frag_color0.y = fma(as_type(cbuf_16.data[713u + buf0_dword_off]), _532.y, fma(as_type(cbuf_16.data[709u + buf0_dword_off]), _523.y, fma(as_type(cbuf_16.data[705u + buf0_dword_off]), _510.y, fma(as_type(cbuf_16.data[701u + buf0_dword_off]), _497.y, _1101)))); out.frag_color0.z = fma(as_type(cbuf_16.data[714u + buf0_dword_off]), _532.z, fma(as_type(cbuf_16.data[710u + buf0_dword_off]), _523.z, fma(as_type(cbuf_16.data[706u + buf0_dword_off]), _510.z, fma(as_type(cbuf_16.data[702u + buf0_dword_off]), _497.z, _1103)))); out.frag_color0.w = fma(as_type(cbuf_16.data[715u + buf0_dword_off]), _532.w, fma(as_type(cbuf_16.data[711u + buf0_dword_off]), _523.w, fma(as_type(cbuf_16.data[707u + buf0_dword_off]), _510.w, fma(as_type(cbuf_16.data[703u + buf0_dword_off]), _497.w, _1105)))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xc3eff688 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xd3ca03f3 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp40 [[sampler(1)]], sampler fs_samp44 [[sampler(2)]], sampler fs_samp48 [[sampler(3)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _88 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _89 = _88.x; float _90 = _88.y; float _91 = _88.z; float _92 = _88.w; float4 _97 = fs_img16.sample(fs_samp40, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _105 = fs_img24.sample(fs_samp44, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _113 = fs_img32.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float _147 = fast::clamp(fma(abs(_92), as_type(cbuf_52.data[76u + buf0_dword_off]), as_type(cbuf_52.data[77u + buf0_dword_off])), 0.0, 1.0); float _151 = fma(_147, spvFSub(_97.x, _89), _89); float _152 = fma(_147, spvFSub(_97.y, _90), _90); float _153 = fma(_147, spvFSub(_97.z, _91), _91); float _158 = fast::clamp(fma(abs(_92), as_type(cbuf_52.data[80u + buf0_dword_off]), as_type(cbuf_52.data[81u + buf0_dword_off])), 0.0, 1.0); float _162 = fma(_158, spvFSub(_105.x, _151), _151); float _163 = fma(_158, spvFSub(_105.y, _152), _152); float _164 = fma(_158, spvFSub(_105.z, _153), _153); float _169 = fast::clamp(fma(abs(_92), as_type(cbuf_52.data[84u + buf0_dword_off]), as_type(cbuf_52.data[85u + buf0_dword_off])), 0.0, 1.0); out.frag_color0.x = fma(_169, spvFSub(_113.x, _162), _162); out.frag_color0.y = fma(_169, spvFSub(_113.y, _163), _163); out.frag_color0.z = fma(_169, spvFSub(_113.z, _164), _164); out.frag_color0.w = _92; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xbf368417 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4c37ae6d (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float _102 = fma(as_type(cbuf_28.data[616u + buf0_dword_off]), fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)).x, as_type(cbuf_28.data[744u + buf0_dword_off])); bool _105 = as_type(cbuf_28.data[1024u + buf0_dword_off]) == 1.0; uint _136; uint _137; uint _138; if (_105) { float4 _111 = fs_img16.sample(fs_samp24, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); _136 = as_type(spvFMul(as_type(cbuf_28.data[622u + buf0_dword_off]), _111.z)); _137 = as_type(spvFMul(as_type(cbuf_28.data[621u + buf0_dword_off]), _111.y)); _138 = as_type(spvFMul(as_type(cbuf_28.data[620u + buf0_dword_off]), _111.x)); } else { _136 = 1065353216u; _137 = as_type(in.fs_in_attr0.y); _138 = as_type(in.fs_in_attr0.x); } uint _142; uint _143; uint _144; if (!_105) { _142 = as_type(_102); _143 = as_type(_102); _144 = as_type(_102); } else { _142 = _136; _143 = _137; _144 = _138; } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_144); out.frag_color0.y = as_type(_143); out.frag_color0.z = as_type(_142); out.frag_color0.w = _102; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xd3c8bb21 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7ea47480 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _93 = fs_img16.sample(fs_samp24, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); float _96 = _93.w; float _195 = fast::clamp(fma(as_type(cbuf_28.data[620u + buf0_dword_off]), fma(as_type(cbuf_28.data[0u + buf0_dword_off]), fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)).x, as_type(cbuf_28.data[1u + buf0_dword_off])), as_type(cbuf_28.data[621u + buf0_dword_off])), 0.0, 1.0); float _203 = spvFMul(-as_type(cbuf_28.data[62u + buf0_dword_off]), 1.0 / fma(_195, as_type(cbuf_28.data[63u + buf0_dword_off]), -as_type(cbuf_28.data[61u + buf0_dword_off]))); uint _213 = 626u + buf0_dword_off; uint _217 = 627u + buf0_dword_off; float _222 = spvFMul(_195, _203); float _227 = spvFMul(in.fs_in_attr1.y, _203); float _230 = spvFMul(in.fs_in_attr1.x, _203); uint _250 = 618u + buf0_dword_off; uint _254 = 619u + buf0_dword_off; float _267 = 1.0 / fast::max(0.0009765599970705807209014892578125, fma(as_type(cbuf_28.data[908u + buf0_dword_off]), _230, fma(as_type(cbuf_28.data[909u + buf0_dword_off]), _227, fma(as_type(cbuf_28.data[910u + buf0_dword_off]), _222, spvFMul(as_type(cbuf_28.data[911u + buf0_dword_off]), _203))))); float _271 = fma(fma(as_type(cbuf_28.data[896u + buf0_dword_off]), _230, fma(as_type(cbuf_28.data[897u + buf0_dword_off]), _227, fma(as_type(cbuf_28.data[898u + buf0_dword_off]), _222, spvFMul(as_type(cbuf_28.data[899u + buf0_dword_off]), _203)))), _267, -in.fs_in_attr1.x); float _276 = fma(fma(as_type(cbuf_28.data[900u + buf0_dword_off]), _230, fma(as_type(cbuf_28.data[901u + buf0_dword_off]), _227, fma(as_type(cbuf_28.data[902u + buf0_dword_off]), _222, spvFMul(as_type(cbuf_28.data[903u + buf0_dword_off]), _203)))), _267, -in.fs_in_attr1.y); float _281 = fast::clamp(fast::max(_96, _96), 0.0, 1.0); float _293 = spvFMul(as_type(cbuf_28.data[616u + buf0_dword_off]), fma(_281, fma(as_type(cbuf_28.data[624u + buf0_dword_off]), fma(_93.x, as_type(cbuf_28.data[_213]), as_type(cbuf_28.data[_217])), -_271), _271)); float _298 = spvFMul(as_type(cbuf_28.data[617u + buf0_dword_off]), fma(_281, fma(as_type(cbuf_28.data[625u + buf0_dword_off]), fma(as_type(cbuf_28.data[_213]), _93.y, as_type(cbuf_28.data[_217])), -_276), _276)); float _303 = fma(_298, _298, spvFMul(_293, _293)); uint _314; uint _315; if (1.0 < sqrt(_303)) { float _309 = rsqrt(_303); _314 = as_type(spvFMul(_298, _309)); _315 = as_type(spvFMul(_293, _309)); } else { _314 = as_type(_298); _315 = as_type(_293); } if (false) { discard_fragment(); } out.frag_color0.x = fma(as_type(_315), as_type(cbuf_28.data[_250]), as_type(cbuf_28.data[_254])); out.frag_color0.y = fma(as_type(cbuf_28.data[_250]), as_type(_314), as_type(cbuf_28.data[_254])); out.frag_color0.z = 0.0; out.frag_color0.w = spvFMul(fma(as_type(cbuf_28.data[904u + buf0_dword_off]), _230, fma(as_type(cbuf_28.data[905u + buf0_dword_off]), _227, fma(as_type(cbuf_28.data[906u + buf0_dword_off]), _222, spvFMul(as_type(cbuf_28.data[907u + buf0_dword_off]), _203)))), _267); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x29e06868 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7d668276 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; constant uint _104 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _113 = 744u + buf0_dword_off; uint _117 = 745u + buf0_dword_off; uint _121 = 746u + buf0_dword_off; uint _125 = 747u + buf0_dword_off; float4 _140 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _141 = _140.x; uint _142 = as_type(_141); float _143 = _140.y; uint _144 = as_type(_143); float _145 = _140.z; uint _146 = as_type(_145); float _147 = _140.w; uint _148 = as_type(_147); float4 _153 = fs_img16.sample(fs_samp24, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _154 = _153.x; float _155 = _153.y; float _160 = fma(as_type(cbuf_28.data[_113]), _154, as_type(cbuf_28.data[_121])); uint _161 = as_type(_160); float _164 = fma(as_type(cbuf_28.data[_117]), _155, as_type(cbuf_28.data[_125])); bool _169 = as_type(cbuf_28.data[754u + buf0_dword_off]) <= spvFAdd(abs(_160), abs(_164)); uint _568; uint _569; uint _570; uint _571; uint _572; uint _573; uint _574; if (_169) { uint _195 = 760u + buf0_dword_off; uint _199 = 761u + buf0_dword_off; uint _203 = 762u + buf0_dword_off; uint _207 = 763u + buf0_dword_off; float _212 = sqrt(fma(_164, _164, spvFMul(_160, _160))); float _215 = fma(as_type(cbuf_28.data[748u + buf0_dword_off]), _154, as_type(cbuf_28.data[750u + buf0_dword_off])); float _219 = fma(as_type(cbuf_28.data[749u + buf0_dword_off]), _155, as_type(cbuf_28.data[751u + buf0_dword_off])); float _222 = spvFAdd(as_type(cbuf_28.data[757u + buf0_dword_off]), _147); float _225 = spvFMul(_212, spvFMul(as_type(cbuf_28.data[756u + buf0_dword_off]), _212)); float _226 = spvFSub(in.fs_in_attr0.x, _215); float _227 = spvFSub(in.fs_in_attr0.y, _219); float _235 = fma(_215, -2.0, in.fs_in_attr0.x); float _236 = fma(_219, -2.0, in.fs_in_attr0.y); float _243 = spvFAdd(in.fs_in_attr0.x, _215); float _244 = spvFAdd(in.fs_in_attr0.y, _219); float _252 = fma(_215, 2.0, in.fs_in_attr0.x); float _254 = fma(_219, 2.0, in.fs_in_attr0.y); bool _268 = _169 && ((1.0 >= abs(fma(as_type(cbuf_28.data[_199]), _227, as_type(cbuf_28.data[_207])))) && (1.0 >= abs(fma(as_type(cbuf_28.data[_195]), _226, as_type(cbuf_28.data[_203]))))); uint _315; uint _316; uint _317; uint _318; uint _319; uint _320; if (_268) { float4 _273 = fs_img16.sample(fs_samp24, float2(_226, _227), level(0.0)); float4 _280 = fs_img4.sample(fs_samp12, float2(_226, _227), level(0.0)); float _284 = _280.w; float _290 = fma(as_type(cbuf_28.data[_117]), _273.y, as_type(cbuf_28.data[_125])); float _293 = fma(_290, _164, spvFMul(_160, fma(as_type(cbuf_28.data[_113]), _273.x, as_type(cbuf_28.data[_121])))); bool _298 = _268 && ((_284 >= _222) || (_293 > _225)); uint _299; if (_298) { _299 = 1073741824u; } else { _299 = as_type(_293); } uint _308; uint _309; uint _310; uint _311; if (_298) { _308 = as_type(spvFAdd(_147, _284)); _309 = as_type(spvFAdd(_145, _280.z)); _310 = as_type(spvFAdd(_143, _280.y)); _311 = as_type(spvFAdd(_141, _280.x)); } else { _308 = _148; _309 = _146; _310 = _144; _311 = _142; } uint _314; if (_268 && (!_298)) { _314 = 1065353216u; } else { _314 = _299; } _315 = _308; _316 = _309; _317 = _310; _318 = _311; _319 = _314; _320 = as_type(_290); } else { _315 = _148; _316 = _146; _317 = _144; _318 = _142; _319 = as_type(_219); _320 = as_type(_215); } uint _323; if (_169 && (!_268)) { _323 = 1065353216u; } else { _323 = _319; } bool _329 = _169 && ((1.0 >= abs(fma(as_type(cbuf_28.data[_199]), _236, as_type(cbuf_28.data[_207])))) && (1.0 >= abs(fma(as_type(cbuf_28.data[_195]), _235, as_type(cbuf_28.data[_203]))))); uint _331; if (_329) { _331 = as_type(_235); } else { _331 = _320; } uint _383; uint _384; uint _385; uint _386; uint _387; uint _388; if (_329) { float4 _337 = fs_img16.sample(fs_samp24, float2(as_type(_331), _236), level(0.0)); float4 _345 = fs_img4.sample(fs_samp12, float2(as_type(_331), _236), level(0.0)); float _349 = _345.w; float _357 = fma(fma(as_type(cbuf_28.data[_117]), _337.y, as_type(cbuf_28.data[_125])), _164, spvFMul(_160, fma(as_type(cbuf_28.data[_113]), _337.x, as_type(cbuf_28.data[_121])))); bool _362 = _329 && ((_349 >= _222) || (_357 > _225)); uint _366; if (_362) { _366 = as_type(spvFAdd(1.0, as_type(_323))); } else { _366 = _323; } uint _379; uint _380; uint _381; uint _382; if (_362) { _379 = as_type(spvFAdd(as_type(_315), _349)); _380 = as_type(spvFAdd(as_type(_316), _345.z)); _381 = as_type(spvFAdd(as_type(_317), _345.y)); _382 = as_type(spvFAdd(as_type(_318), _345.x)); } else { _379 = _315; _380 = _316; _381 = _317; _382 = _318; } _383 = as_type(_357); _384 = _379; _385 = _380; _386 = _381; _387 = _382; _388 = _366; } else { _383 = _331; _384 = _315; _385 = _316; _386 = _317; _387 = _318; _388 = _323; } bool _394 = _169 && ((1.0 >= abs(fma(as_type(cbuf_28.data[_199]), _244, as_type(cbuf_28.data[_207])))) && (1.0 >= abs(fma(as_type(cbuf_28.data[_195]), _243, as_type(cbuf_28.data[_203]))))); uint _444; uint _445; uint _446; uint _447; uint _448; uint _449; if (_394) { float4 _399 = fs_img16.sample(fs_samp24, float2(_243, _244), level(0.0)); float4 _406 = fs_img4.sample(fs_samp12, float2(_243, _244), level(0.0)); float _410 = _406.w; float _418 = fma(fma(as_type(cbuf_28.data[_117]), _399.y, as_type(cbuf_28.data[_125])), _164, spvFMul(_160, fma(as_type(cbuf_28.data[_113]), _399.x, as_type(cbuf_28.data[_121])))); bool _423 = _394 && ((_410 >= _222) || (_418 > _225)); uint _427; if (_423) { _427 = as_type(spvFAdd(1.0, as_type(_388))); } else { _427 = _388; } uint _440; uint _441; uint _442; uint _443; if (_423) { _440 = as_type(spvFAdd(as_type(_384), _410)); _441 = as_type(spvFAdd(as_type(_385), _406.z)); _442 = as_type(spvFAdd(as_type(_386), _406.y)); _443 = as_type(spvFAdd(as_type(_387), _406.x)); } else { _440 = _384; _441 = _385; _442 = _386; _443 = _387; } _444 = _440; _445 = _441; _446 = _442; _447 = _443; _448 = _427; _449 = as_type(_418); } else { _444 = _384; _445 = _385; _446 = _386; _447 = _387; _448 = _388; _449 = _383; } bool _455 = _169 && ((1.0 >= abs(fma(as_type(cbuf_28.data[_199]), _254, as_type(cbuf_28.data[_207])))) && (1.0 >= abs(fma(as_type(cbuf_28.data[_195]), _252, as_type(cbuf_28.data[_203]))))); uint _457; if (_455) { _457 = as_type(_252); } else { _457 = _449; } uint _516; uint _517; uint _518; uint _519; uint _520; if (_455) { float4 _463 = fs_img16.sample(fs_samp24, float2(as_type(_457), _254), level(0.0)); float4 _471 = fs_img4.sample(fs_samp12, float2(as_type(_457), _254), level(0.0)); float _475 = _471.w; float _481 = fma(as_type(cbuf_28.data[_117]), _463.y, as_type(cbuf_28.data[_125])); float _484 = fma(_481, _164, spvFMul(_160, fma(as_type(cbuf_28.data[_113]), _463.x, as_type(cbuf_28.data[_121])))); bool _489 = _455 && ((_475 >= _222) || (_484 > _225)); uint _493; if (_489) { _493 = as_type(spvFAdd(1.0, as_type(_448))); } else { _493 = as_type(_484); } uint _506; uint _507; uint _508; uint _509; if (_489) { _506 = as_type(spvFAdd(as_type(_444), _475)); _507 = as_type(spvFAdd(as_type(_446), _471.y)); _508 = as_type(spvFAdd(as_type(_447), _471.x)); _509 = as_type(spvFAdd(as_type(_445), _471.z)); } else { _506 = _444; _507 = as_type(_481); _508 = _161; _509 = _448; } uint _512; uint _513; uint _514; uint _515; if (_455 && (!_489)) { _512 = _446; _513 = _447; _514 = _509; _515 = _445; } else { _512 = _507; _513 = _508; _514 = _493; _515 = _509; } _516 = _506; _517 = _512; _518 = _513; _519 = _514; _520 = _515; } else { _516 = _444; _517 = as_type(_252); _518 = _161; _519 = as_type(_254); _520 = _448; } uint _523; uint _524; uint _525; uint _526; if (_169 && (!_455)) { _523 = _445; _524 = _446; _525 = _447; _526 = _520; } else { _523 = _520; _524 = _517; _525 = _518; _526 = _519; } float _544 = 1.0 / as_type(_526); float _546 = spvFMul(as_type(cbuf_28.data[636u + buf0_dword_off]), _544); float _549 = spvFMul(as_type(cbuf_28.data[637u + buf0_dword_off]), _544); float _552 = spvFMul(as_type(cbuf_28.data[638u + buf0_dword_off]), _544); _568 = as_type(spvFMul(as_type(_516), spvFMul(as_type(cbuf_28.data[639u + buf0_dword_off]), _544))); _569 = as_type(spvFMul(as_type(_525), _546)); _570 = as_type(spvFMul(as_type(_523), _552)); _571 = as_type(spvFMul(as_type(_524), _549)); _572 = as_type(_552); _573 = as_type(_549); _574 = as_type(_546); } else { _568 = _148; _569 = as_type(_155); _570 = _104; _571 = _161; _572 = _146; _573 = _144; _574 = _142; } uint _576; uint _577; uint _578; if (!_169) { _576 = _572; _577 = _573; _578 = _574; } else { _576 = _570; _577 = _571; _578 = _569; } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_578); out.frag_color0.y = as_type(_577); out.frag_color0.z = as_type(_576); out.frag_color0.w = as_type(_568); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x5e67d866 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x1ea5a07e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr3.x = in.vs_in_attr4.x; out.out_attr3.y = in.vs_in_attr4.y; out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.out_attr4.x = in.vs_in_attr5.x; out.out_attr4.y = in.vs_in_attr5.y; out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], texture2d fs_img24 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img16 [[texture(2)]], texture2d fs_img32 [[texture(3)]], sampler fs_samp44 [[sampler(0)]], sampler fs_samp12 [[sampler(1)]], sampler fs_samp40 [[sampler(2)]], sampler fs_samp48 [[sampler(3)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _86 = fs_img24.sample(fs_samp44, float2(in.fs_in_attr3.x, in.fs_in_attr3.y)); float _87 = _86.x; float _88 = _86.y; float _89 = _86.z; float4 _98 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _99 = _98.x; float _100 = _98.y; float _101 = _98.z; float4 _111 = fs_img16.sample(fs_samp40, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _123 = fs_img32.sample(fs_samp48, float2(in.fs_in_attr4.x, in.fs_in_attr4.y), level(0.0)); float _124 = _123.x; uint _126 = 752u + buf0_dword_off; uint _130 = 753u + buf0_dword_off; uint _134 = 754u + buf0_dword_off; uint _138 = 755u + buf0_dword_off; uint _142 = 756u + buf0_dword_off; float _148 = fma(_89, as_type(cbuf_52.data[_126]), as_type(cbuf_52.data[_130])); uint _150 = 616u + buf0_dword_off; uint _154 = 617u + buf0_dword_off; float _159 = fma(_88, as_type(cbuf_52.data[_126]), as_type(cbuf_52.data[_130])); uint _163 = 744u + buf0_dword_off; uint _167 = 745u + buf0_dword_off; uint _171 = 746u + buf0_dword_off; uint _175 = 747u + buf0_dword_off; float _180 = fma(as_type(cbuf_52.data[_126]), _87, as_type(cbuf_52.data[_130])); float _182 = fma(_180, 0.3333333432674407958984375, fma(_159, 0.3333333432674407958984375, spvFMul(0.3333333432674407958984375, _148))); uint _184 = 832u + buf0_dword_off; uint _188 = 833u + buf0_dword_off; float _202 = fma(fma(as_type(cbuf_52.data[_142]), spvFSub(_180, _182), _182), as_type(cbuf_52.data[_134]), as_type(cbuf_52.data[_138])); float _205 = fma(fma(as_type(cbuf_52.data[_142]), spvFSub(_159, _182), _182), as_type(cbuf_52.data[_134]), as_type(cbuf_52.data[_138])); float _208 = fma(as_type(cbuf_52.data[_134]), fma(as_type(cbuf_52.data[_142]), spvFSub(_148, _182), _182), as_type(cbuf_52.data[_138])); uint _219 = 748u + buf0_dword_off; float _224 = fma(_89, as_type(cbuf_52.data[_163]), as_type(cbuf_52.data[_167])); float _231 = fma(_88, as_type(cbuf_52.data[_163]), as_type(cbuf_52.data[_167])); float _244 = fma(as_type(cbuf_52.data[_163]), _87, as_type(cbuf_52.data[_167])); float _250 = fma(_244, 0.3333333432674407958984375, fma(_231, 0.3333333432674407958984375, spvFMul(0.3333333432674407958984375, _224))); float _258 = spvFSub(1.0, exp2(spvFMul(1.44269502162933349609375, spvFMul(-fast::max(6.103515625e-05, spvFMul(_202, spvFMul(as_type(cbuf_52.data[_150]), _99))), as_type(cbuf_52.data[_184]))))); float _259 = spvFSub(1.0, exp2(spvFMul(1.44269502162933349609375, spvFMul(-fast::max(6.103515625e-05, spvFMul(_205, spvFMul(as_type(cbuf_52.data[_150]), _100))), as_type(cbuf_52.data[_184]))))); float _260 = spvFSub(1.0, exp2(spvFMul(1.44269502162933349609375, spvFMul(-fast::max(6.103515625e-05, spvFMul(_208, spvFMul(as_type(cbuf_52.data[_150]), _101))), as_type(cbuf_52.data[_184]))))); float _284 = fma(as_type(cbuf_52.data[_188]), spvFAdd(-1.0, _258), 1.0); float _286 = fma(as_type(cbuf_52.data[_188]), spvFAdd(-1.0, _259), 1.0); float _288 = fma(as_type(cbuf_52.data[_188]), spvFAdd(-1.0, _260), 1.0); uint _312 = 808u + buf0_dword_off; uint _316 = 809u + buf0_dword_off; uint _320 = 810u + buf0_dword_off; float _325 = fast::clamp(spvFMul(as_type(cbuf_52.data[_154]), fma(_111.x, _202, fma(fast::clamp(fma(as_type(cbuf_52.data[_219]), spvFSub(_244, _250), _250), 0.0, 1.0), as_type(cbuf_52.data[_171]), as_type(cbuf_52.data[_175])))), 0.0, 1.0); float _328 = fast::clamp(spvFMul(as_type(cbuf_52.data[_154]), fma(_111.y, _205, fma(fast::clamp(fma(as_type(cbuf_52.data[_219]), spvFSub(_231, _250), _250), 0.0, 1.0), as_type(cbuf_52.data[_171]), as_type(cbuf_52.data[_175])))), 0.0, 1.0); float _331 = fast::clamp(spvFMul(as_type(cbuf_52.data[_154]), fma(_111.z, _208, fma(as_type(cbuf_52.data[_171]), fast::clamp(fma(as_type(cbuf_52.data[_219]), spvFSub(_224, _250), _250), 0.0, 1.0), as_type(cbuf_52.data[_175])))), 0.0, 1.0); float _333 = fast::clamp(spvFMul(_284, spvFMul(_258, _284)), 0.0, 1.0); float _335 = fast::clamp(spvFMul(_286, spvFMul(_259, _286)), 0.0, 1.0); float _337 = fast::clamp(spvFMul(_288, spvFMul(_260, _288)), 0.0, 1.0); out.frag_color0.x = spvFAdd(as_type(cbuf_52.data[_320]), fma(as_type(cbuf_52.data[_316]), _124, exp2(spvFMul(as_type(cbuf_52.data[_312]), log2(fast::clamp(spvFAdd(fma(-_333, _325, spvFAdd(_333, _325)), 2.384185791015625e-07), 0.0, 1.0)))))); out.frag_color0.y = spvFAdd(as_type(cbuf_52.data[_320]), fma(as_type(cbuf_52.data[_316]), _124, exp2(spvFMul(as_type(cbuf_52.data[_312]), log2(fast::clamp(spvFAdd(fma(-_335, _328, spvFAdd(_335, _328)), 2.384185791015625e-07), 0.0, 1.0)))))); out.frag_color0.z = spvFAdd(as_type(cbuf_52.data[_320]), fma(as_type(cbuf_52.data[_316]), _124, exp2(spvFMul(as_type(cbuf_52.data[_312]), log2(fast::clamp(spvFAdd(fma(-_337, _331, spvFAdd(_337, _331)), 2.384185791015625e-07), 0.0, 1.0)))))); out.frag_color0.w = fast::clamp(fma(_99, as_type(cbuf_52.data[620u + buf0_dword_off]), fma(as_type(cbuf_52.data[621u + buf0_dword_off]), _100, fma(as_type(cbuf_52.data[622u + buf0_dword_off]), _101, spvFMul(as_type(cbuf_52.data[623u + buf0_dword_off]), _98.w)))), 0.0, 1.0); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x1f2b3c9e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[2052]; }; struct cs_cbuf_block_f32_1 { uint data[16]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], constant cs_cbuf_block_f32_1& cbuf_16 [[buffer(10)]], texture2d cs_img4 [[texture(0)]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint _81 = 0u + buf0_dword_off; uint _84 = 2u + buf0_dword_off; uint _87 = cbuf_12.data[_84] + 1u; bool _91; uint _107; bool _88 = true; uint _89 = gl_LocalInvocationID.x; for (;;) { _91 = _88 && (int(cbuf_12.data[_81]) > int(_89)); if (!_91) { break; } else { uint _98 = 3u & uint(max(int(_89), int(0u - _89))); _107 = _89 + 128u; uint _111 = ((0u + ((uint(int(_89) >> int(2u)) + 1u) * 16u)) + buf0_off) >> 2u; uint4 _124 = uint4(cbuf_12.data[_111 + 0u], cbuf_12.data[_111 + 1u], cbuf_12.data[_111 + 2u], cbuf_12.data[_111 + 3u]); uint _132 = ((0u + (as_type((int(0u) > int(_89)) ? as_type(0u - _98) : as_type(_98)) * 16u)) + buf1_off) >> 2u; uint4 _145 = uint4(cbuf_16.data[_132 + 0u], cbuf_16.data[_132 + 1u], cbuf_16.data[_132 + 2u], cbuf_16.data[_132 + 3u]); cs_img4.write((float4(float4(fma(as_type(_124.x), as_type(_145.x), fma(as_type(_124.y), as_type(_145.y), fma(as_type(_124.z), as_type(_145.z), spvFMul(as_type(_124.w), as_type(_145.w))))), 0.0, 0.0, 0.0).x, 0.0, 0.0, 1.0)), uint2(uint2(_89, cbuf_12.data[_84]))); if (true) { _88 = _91; _89 = _107; continue; } else { break; } } } bool _172; uint _227; bool _169 = true; uint _170 = gl_LocalInvocationID.x; for (;;) { _172 = _169 && (int(cbuf_12.data[_81]) > int(_170)); if (!_172) { break; } else { uint _177 = 3u & uint(max(int(_170), int(0u - _170))); uint _188 = ((0u + (as_type((int(0u) > int(_170)) ? as_type(0u - _177) : as_type(_177)) * 16u)) + buf1_off) >> 2u; uint4 _201 = uint4(cbuf_16.data[_188 + 0u], cbuf_16.data[_188 + 1u], cbuf_16.data[_188 + 2u], cbuf_16.data[_188 + 3u]); uint _209 = ((0u + ((uint(int(_170) >> int(2u)) + 1u) * 16u)) + buf0_off) >> 2u; uint4 _222 = uint4(cbuf_12.data[_209 + 0u], cbuf_12.data[_209 + 1u], cbuf_12.data[_209 + 2u], cbuf_12.data[_209 + 3u]); _227 = _170 + 128u; cs_img4.write((float4(float4(fma(as_type(_222.x), as_type(_201.x), fma(as_type(_222.y), as_type(_201.y), fma(as_type(_222.z), as_type(_201.z), spvFMul(as_type(_222.w), as_type(_201.w))))), 0.0, 0.0, 0.0).x, 0.0, 0.0, 1.0)), uint2(uint2(_170, _87))); if (true) { _169 = _172; _170 = _227; continue; } else { break; } } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/script/aicommon.luabnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/script/aicommon.luabnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/script/aicommon.luabnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xabf92450 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _70 = 28u + buf0_dword_off; uint _74 = 29u + buf0_dword_off; uint _78 = 30u + buf0_dword_off; uint _82 = 31u + buf0_dword_off; float _91 = fma(as_type(cbuf_16.data[_78]), 0.0, in.fs_in_attr0.x); float4 _99 = fs_img4.sample(fs_samp12, float2(_91, fma(as_type(cbuf_16.data[_82]), 1.0, in.fs_in_attr0.y)), level(0.0)); float _102 = _99.z; float4 _108 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _111 = _108.z; float4 _123 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_78]), 0.7071068286895751953125, in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_82]), 0.707106769084930419921875, in.fs_in_attr0.y)), level(0.0)); float _126 = _123.z; float _131 = fma(as_type(cbuf_16.data[_82]), 0.0, in.fs_in_attr0.y); float4 _136 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_78]), 1.0, in.fs_in_attr0.x), _131), level(0.0)); float _139 = _136.z; float4 _150 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_78]), 0.707106769084930419921875, in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_82]), -0.7071068286895751953125, in.fs_in_attr0.y)), level(0.0)); float _153 = _150.z; float4 _162 = fs_img4.sample(fs_samp12, float2(_91, fma(as_type(cbuf_16.data[_82]), -1.0, in.fs_in_attr0.y)), level(0.0)); float _165 = _162.z; float4 _176 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_78]), -0.7071068286895751953125, in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_82]), -0.707106769084930419921875, in.fs_in_attr0.y)), level(0.0)); float _179 = _176.z; float4 _187 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_78]), -1.0, in.fs_in_attr0.x), _131), level(0.0)); float _190 = _187.z; float4 _200 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_78]), -0.707106769084930419921875, in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_82]), 0.7071068286895751953125, in.fs_in_attr0.y)), level(0.0)); float _203 = _200.z; float _207 = fma(_99.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _208 = fma(_99.y, 0.4000000059604644775390625, -0.19921569526195526123046875); float _217 = fma(_123.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _218 = fma(_123.y, 0.4000000059604644775390625, -0.19921569526195526123046875); bool _221 = (_111 > _102) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _208), 1.0, spvFMul(0.0, spvFMul(as_type(cbuf_16.data[_70]), _207))) > 0.0); float _225 = _221 ? _102 : _111; float _229 = fma(_136.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _230 = fma(_136.y, 0.4000000059604644775390625, -0.19921569526195526123046875); bool _231 = (_225 > _126) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _218), 0.707106769084930419921875, spvFMul(0.7071068286895751953125, spvFMul(as_type(cbuf_16.data[_70]), _217))) > 0.0); float _236 = _231 ? _126 : _225; float _240 = fma(_150.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _241 = fma(_150.y, 0.4000000059604644775390625, -0.19921569526195526123046875); bool _244 = (_236 > _139) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _230), 0.0, spvFMul(as_type(cbuf_16.data[_70]), _229)) > 0.0); float _248 = _244 ? _139 : _236; float _252 = fma(_162.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _253 = fma(_162.y, 0.4000000059604644775390625, -0.19921569526195526123046875); bool _256 = (_248 > _153) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _241), -0.7071068286895751953125, spvFMul(0.707106769084930419921875, spvFMul(as_type(cbuf_16.data[_70]), _240))) > 0.0); float _260 = _256 ? _153 : _248; float _264 = fma(_176.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _265 = fma(_176.y, 0.4000000059604644775390625, -0.19921569526195526123046875); bool _268 = (_260 > _165) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _253), -1.0, spvFMul(0.0, spvFMul(as_type(cbuf_16.data[_70]), _252))) > 0.0); float _272 = _268 ? _165 : _260; float _276 = fma(_187.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _277 = fma(_187.y, 0.4000000059604644775390625, -0.19921569526195526123046875); bool _280 = (_272 > _179) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _265), -0.707106769084930419921875, spvFMul(-0.7071068286895751953125, spvFMul(as_type(cbuf_16.data[_70]), _264))) > 0.0); float _284 = _280 ? _179 : _272; float _288 = fma(_200.x, 0.4000000059604644775390625, -0.19921569526195526123046875); float _291 = fma(0.4000000059604644775390625, _200.y, -0.19921569526195526123046875); bool _296 = (_284 > _190) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _277), 0.0, spvFMul(-1.0, spvFMul(as_type(cbuf_16.data[_70]), _276))) > 0.0); float _303 = _296 ? _190 : _284; bool _322 = (_303 > _203) && (fma(spvFMul(as_type(cbuf_16.data[_74]), _291), 0.7071068286895751953125, spvFMul(-0.707106769084930419921875, spvFMul(as_type(cbuf_16.data[_70]), _288))) > 0.0); out.frag_color0.x = fma(_322 ? _288 : (_296 ? _276 : (_280 ? _264 : (_268 ? _252 : (_256 ? _240 : (_244 ? _229 : (_231 ? _217 : (_221 ? _207 : fma(_108.x, 0.4000000059604644775390625, -0.19921569526195526123046875)))))))), 2.5, 0.5); out.frag_color0.y = fma(_322 ? _291 : (_296 ? _277 : (_280 ? _265 : (_268 ? _253 : (_256 ? _241 : (_244 ? _230 : (_231 ? _218 : (_221 ? _208 : fma(_108.y, 0.4000000059604644775390625, -0.19921569526195526123046875)))))))), 2.5, 0.5); out.frag_color0.z = _322 ? _203 : _303; out.frag_color0.w = _322 ? _200.w : (_296 ? _187.w : (_280 ? _176.w : (_268 ? _162.w : (_256 ? _150.w : (_244 ? _136.w : (_231 ? _123.w : (_221 ? _99.w : _108.w))))))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x88414cd6 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xe9986d45 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = spvFAdd(as_type(cbuf_8.data[140u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr1.y = spvFAdd(as_type(cbuf_8.data[141u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFAdd(as_type(cbuf_8.data[144u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr2.y = spvFAdd(as_type(cbuf_8.data[145u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr3.x = spvFAdd(as_type(cbuf_8.data[148u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr3.y = spvFAdd(as_type(cbuf_8.data[149u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.out_attr4.x = spvFAdd(as_type(cbuf_8.data[152u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr4.y = spvFAdd(as_type(cbuf_8.data[153u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.out_attr5.x = spvFAdd(as_type(cbuf_8.data[156u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr5.y = spvFAdd(as_type(cbuf_8.data[157u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _94 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _98 = _94.w; float4 _103 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float _107 = _103.w; float4 _116 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); float _120 = _116.w; float4 _129 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y), level(0.0)); float _133 = _129.w; float4 _142 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y), level(0.0)); float _146 = _142.w; float4 _151 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr5.x, in.fs_in_attr5.y), level(0.0)); float _155 = _151.w; uint _157 = 72u + buf0_dword_off; uint _161 = 73u + buf0_dword_off; uint _165 = 134u + buf0_dword_off; float _182 = float(fma(as_type(cbuf_16.data[_157]), _98, as_type(cbuf_16.data[_161])) > (-as_type(cbuf_16.data[_165]))); float _183 = float(fma(as_type(cbuf_16.data[_157]), _107, as_type(cbuf_16.data[_161])) > (-as_type(cbuf_16.data[_165]))); float _190 = float(fma(as_type(cbuf_16.data[_157]), _120, as_type(cbuf_16.data[_161])) > (-as_type(cbuf_16.data[_165]))); float _213 = float(fma(as_type(cbuf_16.data[_157]), _133, as_type(cbuf_16.data[_161])) > (-as_type(cbuf_16.data[_165]))); float _226 = float(fma(as_type(cbuf_16.data[_157]), _146, as_type(cbuf_16.data[_161])) > (-as_type(cbuf_16.data[_165]))); float _236 = float(fma(as_type(cbuf_16.data[_157]), _155, as_type(cbuf_16.data[_161])) > (-as_type(cbuf_16.data[_165]))); float _242 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(_182, _183), _190), _213), _226), _236); float _243 = fma(_151.x, _236, fma(_142.x, _226, fma(_129.x, _213, fma(_116.x, _190, fma(_94.x, _182, spvFMul(_103.x, _183)))))); float _245 = fma(_151.y, _236, fma(_142.y, _226, fma(_129.y, _213, fma(_116.y, _190, fma(_94.y, _182, spvFMul(_103.y, _183)))))); float _247 = fma(_151.z, _236, fma(_142.z, _226, fma(_129.z, _213, fma(_116.z, _190, fma(_94.z, _182, spvFMul(_103.z, _183)))))); bool _252 = 0.0 < _242; uint _260; uint _261; uint _262; if (_252) { float _253 = 1.0 / _242; _260 = as_type(spvFMul(_245, _253)); _261 = as_type(spvFMul(_243, _253)); _262 = as_type(spvFMul(_247, _253)); } else { _260 = as_type(_245); _261 = as_type(_243); _262 = as_type(_247); } uint _265; if (!_252) { _265 = as_type(fma(_155, _236, fma(_146, _226, fma(_133, _213, fma(_120, _190, fma(_98, _182, spvFMul(_107, _183))))))); } else { _265 = as_type(fast::min(fast::min(fast::min(fast::min(fast::min(fast::min(65504.0, _98), _107), _120), _133), _146), _155)); } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_261); out.frag_color0.y = as_type(_260); out.frag_color0.z = as_type(_262); out.frag_color0.w = as_type(_265); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x597cbbcc [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7d668276 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; constant uint _86 = {}; constant uint _87 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _103 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _110 = _103.w; bool _112 = _110 <= 0.0; uint _301; uint _302; uint _303; uint _304; uint _305; uint _306; if (_112) { float4 _141 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[204u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[205u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _145 = _141.w; float4 _150 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[208u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[209u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _152 = _150.y; float _155 = _150.w; bool _156 = _145 <= 0.0; float _157 = _156 ? 0.0 : _145; float _159 = _156 ? 0.0 : _141.z; float _160 = _156 ? 0.0 : _141.y; float _162 = _156 ? 0.0 : _141.x; bool _168 = _112 && (0.0 < _155); uint _171; if (_168) { _171 = as_type(spvFAdd(_162, _150.x)); } else { _171 = as_type(_162); } uint _181; uint _182; uint _183; uint _184; if (_168) { _181 = as_type(spvFAdd(_159, _150.z)); _182 = as_type(_156 ? 1.0 : 2.0); _183 = as_type(spvFAdd(_160, _152)); _184 = as_type(spvFAdd(_157, _155)); } else { _181 = as_type(_152); _182 = as_type(_156 ? 0.0 : 1.0); _183 = as_type(_160); _184 = as_type(_157); } uint _188; if (_112 && (!_168)) { _188 = as_type(_159); } else { _188 = _181; } float4 _205 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[212u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[213u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _209 = _205.w; bool _211 = _112 && (0.0 < _209); uint _215; if (_211) { _215 = as_type(spvFAdd(as_type(_171), _205.x)); } else { _215 = _171; } uint _228; uint _229; uint _230; uint _231; if (_211) { _228 = as_type(spvFAdd(as_type(_188), _205.z)); _229 = as_type(spvFAdd(1.0, as_type(_182))); _230 = as_type(spvFAdd(as_type(_183), _205.y)); _231 = as_type(spvFAdd(as_type(_184), _209)); } else { _228 = _188; _229 = _182; _230 = _183; _231 = _184; } float4 _248 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[216u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[217u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _249 = _248.x; float _251 = _248.y; float _254 = _248.w; bool _256 = _112 && (0.0 < _254); uint _260; if (_256) { _260 = as_type(spvFAdd(as_type(_215), _249)); } else { _260 = _215; } uint _273; uint _274; uint _275; uint _276; if (_256) { _273 = as_type(spvFAdd(as_type(_228), _248.z)); _274 = as_type(spvFAdd(as_type(_230), _251)); _275 = as_type(spvFAdd(as_type(_231), _254)); _276 = as_type(spvFAdd(1.0, as_type(_229))); } else { _273 = _228; _274 = as_type(_249); _275 = _231; _276 = _229; } uint _279; if (_112 && (!_256)) { _279 = _230; } else { _279 = _274; } float _284 = 1.0 / as_type(_276); uint _297; uint _298; uint _299; uint _300; if (_112 && (0.0 < as_type(_276))) { _297 = as_type(spvFMul(as_type(_273), _284)); _298 = as_type(spvFMul(as_type(_260), _284)); _299 = as_type(spvFMul(as_type(_275), _284)); _300 = as_type(spvFMul(as_type(_279), _284)); } else { _297 = _273; _298 = _260; _299 = _275; _300 = _279; } _301 = _297; _302 = _298; _303 = _299; _304 = as_type(_251); _305 = _300; _306 = _276; } else { _301 = _86; _302 = as_type(_103.x); _303 = _87; _304 = as_type(_110); _305 = as_type(_103.z); _306 = as_type(_103.y); } uint _308; uint _309; uint _310; if (!_112) { _308 = _305; _309 = _306; _310 = _304; } else { _308 = _301; _309 = _305; _310 = _303; } float _323 = fma(as_type(_310), as_type(cbuf_16.data[72u + buf0_dword_off]), as_type(cbuf_16.data[73u + buf0_dword_off])); uint _331; if (1.0 < _323) { _331 = as_type(fma(0.5, spvFAdd(-1.0, _323), 1.0)); } else { _331 = as_type(_323); } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_302); out.frag_color0.y = as_type(_309); out.frag_color0.z = as_type(_308); out.frag_color0.w = fast::clamp(spvFMul(as_type(_331), 0.5), 0.0, 1.0); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xe80526cc [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7e956bc3 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = spvFAdd(as_type(cbuf_8.data[140u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr1.y = spvFAdd(as_type(cbuf_8.data[141u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFAdd(as_type(cbuf_8.data[144u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr2.y = spvFAdd(as_type(cbuf_8.data[145u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr3.x = spvFAdd(as_type(cbuf_8.data[148u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr3.y = spvFAdd(as_type(cbuf_8.data[149u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.out_attr4.x = spvFAdd(as_type(cbuf_8.data[152u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr4.y = spvFAdd(as_type(cbuf_8.data[153u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.out_attr5.x = spvFAdd(as_type(cbuf_8.data[156u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr5.y = spvFAdd(as_type(cbuf_8.data[157u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.out_attr6.x = spvFAdd(as_type(cbuf_8.data[160u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr6.y = spvFAdd(as_type(cbuf_8.data[161u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr6.z = 0.0; out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _87 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _100 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _113 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); float4 _126 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y), level(0.0)); float4 _139 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y), level(0.0)); float4 _152 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr5.x, in.fs_in_attr5.y), level(0.0)); float4 _161 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr6.x, in.fs_in_attr6.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_16.data[640u + buf0_dword_off]), _161.x, fma(as_type(cbuf_16.data[636u + buf0_dword_off]), _152.x, fma(as_type(cbuf_16.data[632u + buf0_dword_off]), _139.x, fma(as_type(cbuf_16.data[628u + buf0_dword_off]), _126.x, fma(as_type(cbuf_16.data[624u + buf0_dword_off]), _113.x, fma(as_type(cbuf_16.data[616u + buf0_dword_off]), _100.x, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), _87.x))))))); out.frag_color0.y = fma(as_type(cbuf_16.data[641u + buf0_dword_off]), _161.y, fma(as_type(cbuf_16.data[637u + buf0_dword_off]), _152.y, fma(as_type(cbuf_16.data[633u + buf0_dword_off]), _139.y, fma(as_type(cbuf_16.data[629u + buf0_dword_off]), _126.y, fma(as_type(cbuf_16.data[625u + buf0_dword_off]), _113.y, fma(as_type(cbuf_16.data[617u + buf0_dword_off]), _100.y, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), _87.y))))))); out.frag_color0.z = fma(as_type(cbuf_16.data[642u + buf0_dword_off]), _161.z, fma(as_type(cbuf_16.data[638u + buf0_dword_off]), _152.z, fma(as_type(cbuf_16.data[634u + buf0_dword_off]), _139.z, fma(as_type(cbuf_16.data[630u + buf0_dword_off]), _126.z, fma(as_type(cbuf_16.data[626u + buf0_dword_off]), _113.z, fma(as_type(cbuf_16.data[618u + buf0_dword_off]), _100.z, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), _87.z))))))); out.frag_color0.w = fma(as_type(cbuf_16.data[643u + buf0_dword_off]), _161.w, fma(as_type(cbuf_16.data[639u + buf0_dword_off]), _152.w, fma(as_type(cbuf_16.data[635u + buf0_dword_off]), _139.w, fma(as_type(cbuf_16.data[631u + buf0_dword_off]), _126.w, fma(as_type(cbuf_16.data[627u + buf0_dword_off]), _113.w, fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _100.w, spvFMul(as_type(cbuf_16.data[623u + buf0_dword_off]), _87.w))))))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xff902740 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _77 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _94 = fast::max(0.0, fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _77.w, as_type(cbuf_16.data[623u + buf0_dword_off]))); out.frag_color0.x = _77.x; out.frag_color0.y = _77.y; out.frag_color0.z = _77.z; out.frag_color0.w = fast::clamp(spvFMul(spvFMul(_94, _94), 0.25), 0.0, 1.0); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x474f0123 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xd7407513 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = spvFAdd(as_type(cbuf_8.data[140u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr1.y = spvFAdd(as_type(cbuf_8.data[141u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFAdd(as_type(cbuf_8.data[144u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr2.y = spvFAdd(as_type(cbuf_8.data[145u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr3.x = spvFAdd(as_type(cbuf_8.data[148u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr3.y = spvFAdd(as_type(cbuf_8.data[149u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _84 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _97 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _110 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); float4 _119 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_16.data[628u + buf0_dword_off]), _119.x, fma(as_type(cbuf_16.data[624u + buf0_dword_off]), _110.x, fma(as_type(cbuf_16.data[616u + buf0_dword_off]), _97.x, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), _84.x)))); out.frag_color0.y = fma(as_type(cbuf_16.data[629u + buf0_dword_off]), _119.y, fma(as_type(cbuf_16.data[625u + buf0_dword_off]), _110.y, fma(as_type(cbuf_16.data[617u + buf0_dword_off]), _97.y, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), _84.y)))); out.frag_color0.z = fma(as_type(cbuf_16.data[630u + buf0_dword_off]), _119.z, fma(as_type(cbuf_16.data[626u + buf0_dword_off]), _110.z, fma(as_type(cbuf_16.data[618u + buf0_dword_off]), _97.z, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), _84.z)))); out.frag_color0.w = fma(as_type(cbuf_16.data[631u + buf0_dword_off]), _119.w, fma(as_type(cbuf_16.data[627u + buf0_dword_off]), _110.w, fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _97.w, spvFMul(as_type(cbuf_16.data[623u + buf0_dword_off]), _84.w)))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x2112931 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7d668276 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], sampler fs_samp40 [[sampler(0)]], sampler fs_samp12 [[sampler(1)]], sampler fs_samp44 [[sampler(2)]], sampler fs_samp48 [[sampler(3)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _83 = fs_img16.sample(fs_samp40, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _92 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _101 = fs_img24.sample(fs_samp44, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _110 = fs_img32.sample(fs_samp48, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_52.data[628u + buf0_dword_off]), _110.x, fma(as_type(cbuf_52.data[624u + buf0_dword_off]), _101.x, fma(as_type(cbuf_52.data[616u + buf0_dword_off]), _92.x, spvFMul(as_type(cbuf_52.data[620u + buf0_dword_off]), _83.x)))); out.frag_color0.y = fma(as_type(cbuf_52.data[629u + buf0_dword_off]), _110.y, fma(as_type(cbuf_52.data[625u + buf0_dword_off]), _101.y, fma(as_type(cbuf_52.data[617u + buf0_dword_off]), _92.y, spvFMul(as_type(cbuf_52.data[621u + buf0_dword_off]), _83.y)))); out.frag_color0.z = fma(as_type(cbuf_52.data[630u + buf0_dword_off]), _110.z, fma(as_type(cbuf_52.data[626u + buf0_dword_off]), _101.z, fma(as_type(cbuf_52.data[618u + buf0_dword_off]), _92.z, spvFMul(as_type(cbuf_52.data[622u + buf0_dword_off]), _83.z)))); out.frag_color0.w = fma(as_type(cbuf_52.data[631u + buf0_dword_off]), _110.w, fma(as_type(cbuf_52.data[627u + buf0_dword_off]), _101.w, fma(as_type(cbuf_52.data[619u + buf0_dword_off]), _92.w, spvFMul(as_type(cbuf_52.data[623u + buf0_dword_off]), _83.w)))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x6e2d87e3 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xd3ca03f3 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], texture2d fs_img32 [[texture(0)]], texture2d fs_img40 [[texture(1)]], texture2d fs_img48 [[texture(2)]], texture2d fs_img56 [[texture(3)]], texture2d fs_img64 [[texture(4)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp24 [[sampler(4)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _86 = fs_img32.sample(fs_samp4, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _90 = _86.w; float4 _99 = fs_img40.sample(fs_samp8, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float _100 = _99.x; float _101 = _99.y; float _102 = _99.z; float4 _107 = fs_img48.sample(fs_samp16, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _116 = fs_img56.sample(fs_samp20, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float _120 = _116.w; float4 _125 = fs_img64.sample(fs_samp24, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float _129 = _125.w; float _146 = fast::clamp(spvFAdd(-fma(as_type(cbuf_28.data[76u + buf0_dword_off]), _90, as_type(cbuf_28.data[77u + buf0_dword_off])), 2.0), 0.0, 1.0); float _150 = fma(_146, spvFSub(_86.x, _100), _100); float _151 = fma(_146, spvFSub(_86.y, _101), _101); float _152 = fma(_146, spvFSub(_86.z, _102), _102); float _156 = sqrt(fast::clamp(spvFAdd(_107.w, -_120), 0.0, 1.0)); float _160 = fma(_156, spvFSub(_107.x, _150), _150); float _161 = fma(_156, spvFSub(_107.y, _151), _151); float _162 = fma(_156, spvFSub(_107.z, _152), _152); float _166 = sqrt(fast::clamp(spvFAdd(_120, -_129), 0.0, 1.0)); float _170 = fma(_166, spvFSub(_116.x, _160), _160); float _171 = fma(_166, spvFSub(_116.y, _161), _161); float _172 = fma(_166, spvFSub(_116.z, _162), _162); float _175 = sqrt(fast::clamp(fast::max(_129, _129), 0.0, 1.0)); out.frag_color0.x = fma(_175, spvFSub(_125.x, _170), _170); out.frag_color0.y = fma(_175, spvFSub(_125.y, _171), _171); out.frag_color0.z = fma(_175, spvFSub(_125.z, _172), _172); out.frag_color0.w = _90; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/common.emedf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/common.emedf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/common.emeld.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/common.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/common.emevd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/common.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/common.emedf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/common.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/common.emevd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xa509af23 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wunused-variable" #include #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; struct cs_cbuf_block_f32_1 { uint data[188]; }; struct cs_cbuf_block_f32_2 { uint data[1]; }; struct cs_cbuf_block_f32_3 { uint data[276]; }; constant uint _224 = {}; constant uint _225 = {}; constant uint _226 = {}; constant uint _227 = {}; constant uint _228 = {}; constant uint _229 = {}; constant uint _230 = {}; constant uint _231 = {}; constant uint _232 = {}; constant uint _233 = {}; constant uint _234 = {}; constant uint _235 = {}; constant uint _236 = {}; constant uint _237 = {}; constant uint _238 = {}; constant uint _239 = {}; constant uint _240 = {}; constant uint _241 = {}; constant uint _242 = {}; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant cs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], device cs_cbuf_block_f32_2& ssbo_16 [[buffer(11)]], constant cs_cbuf_block_f32_3& cbuf_24 [[buffer(12)]], device cs_cbuf_block_f32_2& ssbo_0 [[buffer(13)]], device cs_cbuf_block_f32_2& ssbo_20 [[buffer(14)]], texture_buffer texbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint _287 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _304 = 0u + buf1_dword_off; uint _307 = 2u + buf1_dword_off; bool _317 = (cbuf_8.data[0u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u)] > (cbuf_28.data[_304] + as_type(float4(as_type(texbuf_4.read(uint(((0u << extract_bits(push_data.buf_offsets0[1u], 22u, 2u)) + extract_bits(push_data.buf_offsets0[1u], 16u, 6u))))).x, 0.0, 0.0, 0.0).x))) && (cbuf_28.data[_304] > _287); if (_317) { uint _319 = 63u & (gl_LocalInvocationID.x + ((gl_LocalInvocationID.z << 6u) + (gl_LocalInvocationID.y << 6u))); uint _320 = _319 << 4u; uint2 _321 = uint2(0u, _320); uint _329 = (((0u + (_321.x * 1024u)) + _321.y) + buf2_off) >> 2u; uint4 _342 = uint4(ssbo_16.data[_329 + 0u], ssbo_16.data[_329 + 1u], ssbo_16.data[_329 + 2u], ssbo_16.data[_329 + 3u]); uint _343 = _342.x; uint _344 = _342.y; uint _345 = _342.z; uint _346 = _342.w; uint _352 = 137u + buf1_dword_off; bool _355 = cbuf_28.data[_307] == 0u; uint _357; uint _358; uint _359; uint _360; uint _361; uint _362; uint _363; uint _364; uint _365; uint _366; uint _367; uint _368; uint _369; uint _370; uint _371; uint _372; uint _373; uint _374; if (_355) { _357 = 1065353216u; _358 = 0u; _359 = _344; _360 = _343; _361 = _346; _362 = _345; _363 = 0u; _364 = 0u; _365 = 0u; _366 = 1065353216u; _367 = 0u; _368 = 1065353216u; _369 = 0u; _370 = 1065353216u; _371 = 0u; _372 = 0u; _373 = 0u; _374 = 0u; } else { _357 = _224; _358 = _225; _359 = _226; _360 = _227; _361 = _228; _362 = _229; _363 = _230; _364 = _231; _365 = _232; _366 = _233; _367 = _319; _368 = _237; _369 = _238; _370 = _240; _371 = _241; _372 = _242; _373 = _346; _374 = _344; } uint _1861; uint _1862; uint _1863; uint _1864; uint _1865; uint _1866; uint _1867; uint _1868; uint _1869; uint _1870; uint _1871; uint _1872; uint _1873; uint _1874; uint _1875; uint _1876; uint _1877; if (!_355) { bool _375 = cbuf_28.data[_307] == 1u; uint _608; uint _609; uint _610; uint _611; uint _612; uint _613; uint _614; uint _615; uint _616; uint _617; uint _618; uint _619; uint _620; uint _621; uint _622; uint _623; uint _624; uint _625; uint _626; uint _627; if (_375) { uint _386 = _343 + ((_374 ^ ((_374 << 4u) + 2738958700u)) ^ ((_374 >> 5u) + 3355524772u)); uint _395 = _374 + ((_386 ^ ((_386 << 4u) + 2911926141u)) ^ ((_386 >> 5u) + 2123724318u)); uint _402 = _345 + ((_373 ^ ((_373 << 4u) + 2738958700u)) ^ ((_373 >> 5u) + 3355524772u)); uint _409 = _373 + ((_402 ^ ((_402 << 4u) + 2911926141u)) ^ ((_402 >> 5u) + 2123724318u)); uint _418 = _386 + ((((_395 << 4u) + 2738958700u) ^ (_395 + 2654435769u)) ^ ((_395 >> 5u) + 3355524772u)); uint _426 = _395 + ((((_418 << 4u) + 2911926141u) ^ (_418 + 2654435769u)) ^ ((_418 >> 5u) + 2123724318u)); uint _434 = _402 + ((((_409 << 4u) + 2738958700u) ^ (_409 + 2654435769u)) ^ ((_409 >> 5u) + 3355524772u)); uint _442 = _409 + ((((_434 << 4u) + 2911926141u) ^ (_434 + 2654435769u)) ^ ((_434 >> 5u) + 2123724318u)); uint _451 = _418 + ((((_426 << 4u) + 2738958700u) ^ (_426 + 1013904242u)) ^ ((_426 >> 5u) + 3355524772u)); uint _459 = _426 + ((((_451 << 4u) + 2911926141u) ^ (_451 + 1013904242u)) ^ ((_451 >> 5u) + 2123724318u)); uint _467 = _434 + ((((_442 << 4u) + 2738958700u) ^ (_442 + 1013904242u)) ^ ((_442 >> 5u) + 3355524772u)); uint _477 = _451 + (_287 + _459); uint _482 = ((spvMulExtended(_477, 2863311531u))._m1 >> 2u) * 6u; uint _483 = _477 - _482; uint _485 = min(5u, _483); bool _486 = 0u == _485; bool _487 = _317 && _486; uint _488; if (_487) { _488 = 0u; } else { _488 = _370; } uint _489; uint _490; uint _491; uint _492; uint _493; uint _494; uint _495; uint _496; if (_487) { _489 = 2147483648u; _490 = 0u; _491 = 3212836864u; _492 = 1065353216u; _493 = 0u; _494 = 1065353216u; _495 = 0u; _496 = 2147483648u; } else { _489 = _357; _490 = _358; _491 = _367; _492 = _482; _493 = _442; _494 = _371; _495 = _372; _496 = _483; } bool _498 = _317 && (!_487); bool _500; if (_498) { _500 = 1u == _485; } else { _500 = _486; } uint _598; uint _599; uint _600; uint _601; uint _602; uint _603; uint _604; uint _605; uint _606; uint _607; if (_498) { bool _501 = _498 && _500; uint _502; if (_501) { _502 = 0u; } else { _502 = _488; } uint _503; uint _504; uint _505; uint _506; uint _507; uint _508; uint _509; uint _510; if (_501) { _503 = 1065353216u; _504 = 2147483648u; _505 = 0u; _506 = 2147483648u; _507 = 3212836864u; _508 = 0u; _509 = 1065353216u; _510 = 0u; } else { _503 = _489; _504 = _490; _505 = _491; _506 = _492; _507 = _493; _508 = _494; _509 = _495; _510 = _496; } bool _512 = _498 && (!_501); bool _514; if (_512) { _514 = 2u == _485; } else { _514 = _500; } uint _588; uint _589; uint _590; uint _591; uint _592; uint _593; uint _594; uint _595; uint _596; uint _597; if (_512) { bool _515 = _512 && _514; uint _516; if (_515) { _516 = 1065353216u; } else { _516 = _502; } uint _517; uint _518; uint _519; uint _520; uint _521; uint _522; uint _523; if (_515) { _517 = 1065353216u; _518 = 0u; _519 = 1065353216u; _520 = 0u; _521 = 0u; _522 = 0u; _523 = 0u; } else { _517 = _503; _518 = _505; _519 = _506; _520 = _507; _521 = _508; _522 = _509; _523 = _510; } bool _525 = _512 && (!_515); bool _527; if (_525) { _527 = 3u == _485; } else { _527 = _514; } uint _579; uint _580; uint _581; uint _582; uint _583; uint _584; uint _585; uint _586; uint _587; if (_525) { bool _528 = _525 && _527; uint _529; if (_528) { _529 = 2147483648u; } else { _529 = _516; } uint _530; uint _531; uint _532; uint _533; uint _534; uint _535; uint _536; if (_528) { _530 = 0u; _531 = 1065353216u; _532 = 1065353216u; _533 = 0u; _534 = 3212836864u; _535 = 2147483648u; _536 = 0u; } else { _530 = _517; _531 = _518; _532 = _519; _533 = _520; _534 = _521; _535 = _522; _536 = _523; } bool _538 = _525 && (!_528); bool _540; if (_538) { _540 = 4u == _485; } else { _540 = _527; } uint _570; uint _571; uint _572; uint _573; uint _574; uint _575; uint _576; uint _577; uint _578; if (_538) { bool _541 = _538 && _540; uint _542; if (_541) { _542 = 2147483648u; } else { _542 = _529; } uint _543; uint _544; uint _545; uint _546; uint _547; uint _548; if (_541) { _543 = 1065353216u; _544 = 0u; _545 = 1065353216u; _546 = 2147483648u; _547 = 3212836864u; _548 = 0u; } else { _543 = _530; _544 = _532; _545 = _533; _546 = _534; _547 = _535; _548 = _536; } bool _550 = _538 && (!_541); uint _551; if (_550) { _551 = 0u; } else { _551 = _545; } uint _563; uint _564; uint _565; uint _566; uint _567; uint _568; uint _569; if (_550) { bool _552 = 5u == _485; float _554 = _552 ? (-0.0) : 0.0; float _558 = _552 ? (-1.0) : 1.0; _563 = as_type(_558); _564 = 2147483648u; _565 = 1065353216u; _566 = as_type(_558); _567 = as_type(_554); _568 = as_type(_554); _569 = as_type(_554); } else { _563 = _543; _564 = _236; _565 = _544; _566 = _542; _567 = _546; _568 = _547; _569 = _548; } _570 = _563; _571 = _569; _572 = _569; _573 = _564; _574 = _565; _575 = _551; _576 = _566; _577 = _567; _578 = _568; } else { _570 = _530; _571 = _536; _572 = _531; _573 = _236; _574 = _532; _575 = _533; _576 = _529; _577 = _534; _578 = _535; } _579 = _570; _580 = _571; _581 = _572; _582 = _573; _583 = _574; _584 = _575; _585 = _576; _586 = _577; _587 = _578; } else { _579 = _517; _580 = _523; _581 = _518; _582 = _236; _583 = _519; _584 = _520; _585 = _516; _586 = _521; _587 = _522; } _588 = _579; _589 = 0u; _590 = _580; _591 = _581; _592 = _582; _593 = _583; _594 = _584; _595 = _585; _596 = _586; _597 = _587; } else { _588 = _503; _589 = _504; _590 = _510; _591 = _505; _592 = _236; _593 = _506; _594 = _507; _595 = _502; _596 = _508; _597 = _509; } _598 = _588; _599 = _589; _600 = _590; _601 = _591; _602 = _592; _603 = _593; _604 = _594; _605 = _597; _606 = _596; _607 = _595; } else { _598 = _489; _599 = _490; _600 = _496; _601 = _491; _602 = _236; _603 = _492; _604 = _493; _605 = _495; _606 = _494; _607 = _488; } _608 = _598; _609 = _599; _610 = _607; _611 = _459; _612 = _451; _613 = _442 + ((((_467 << 4u) + 2911926141u) ^ (_467 + 1013904242u)) ^ ((_467 >> 5u) + 2123724318u)); _614 = _467; _615 = _605; _616 = _606; _617 = _605; _618 = _600; _619 = _607; _620 = _601; _621 = _602; _622 = _603; _623 = _606; _624 = _604; _625 = _434; _626 = _485; _627 = 2863311531u; } else { _608 = _357; _609 = _358; _610 = _370; _611 = _359; _612 = _360; _613 = _361; _614 = _362; _615 = _363; _616 = _364; _617 = _372; _618 = _365; _619 = _366; _620 = _367; _621 = _236; _622 = _368; _623 = _371; _624 = _373; _625 = _345; _626 = _374; _627 = cbuf_28.data[136u + buf1_dword_off]; } uint _1844; uint _1845; uint _1846; uint _1847; uint _1848; uint _1849; uint _1850; uint _1851; uint _1852; uint _1853; uint _1854; uint _1855; uint _1856; uint _1857; uint _1858; uint _1859; uint _1860; if (!_375) { bool _628 = cbuf_28.data[_307] == 2u; uint _1045; uint _1046; uint _1047; uint _1048; uint _1049; uint _1050; uint _1051; uint _1052; uint _1053; uint _1054; uint _1055; uint _1056; uint _1057; uint _1058; uint _1059; uint _1060; uint _1061; uint _1062; uint _1063; uint _1064; uint _1065; uint _1066; bool _1067; if (!_628) { bool _630 = cbuf_28.data[_307] == 3u; uint _1023; uint _1024; uint _1025; uint _1026; uint _1027; uint _1028; uint _1029; uint _1030; uint _1031; uint _1032; uint _1033; uint _1034; uint _1035; uint _1036; uint _1037; uint _1038; uint _1039; uint _1040; uint _1041; uint _1042; uint _1043; uint _1044; if (_630) { uint _638 = _343 + ((_626 ^ ((_626 << 4u) + 2738958700u)) ^ ((_626 >> 5u) + 3355524772u)); uint _645 = _626 + ((_638 ^ ((_638 << 4u) + 2911926141u)) ^ ((_638 >> 5u) + 2123724318u)); uint _652 = _625 + ((_624 ^ ((_624 << 4u) + 2738958700u)) ^ ((_624 >> 5u) + 3355524772u)); uint _659 = _624 + ((_652 ^ ((_652 << 4u) + 2911926141u)) ^ ((_652 >> 5u) + 2123724318u)); uint _667 = _638 + ((((_645 << 4u) + 2738958700u) ^ (_645 + 2654435769u)) ^ ((_645 >> 5u) + 3355524772u)); uint _675 = _645 + ((((_667 << 4u) + 2911926141u) ^ (_667 + 2654435769u)) ^ ((_667 >> 5u) + 2123724318u)); uint _683 = _652 + ((((_659 << 4u) + 2738958700u) ^ (_659 + 2654435769u)) ^ ((_659 >> 5u) + 3355524772u)); uint _691 = _659 + ((((_683 << 4u) + 2911926141u) ^ (_683 + 2654435769u)) ^ ((_683 >> 5u) + 2123724318u)); uint _699 = _667 + ((((_675 << 4u) + 2738958700u) ^ (_675 + 1013904242u)) ^ ((_675 >> 5u) + 3355524772u)); uint _707 = _675 + ((((_699 << 4u) + 2911926141u) ^ (_699 + 1013904242u)) ^ ((_699 >> 5u) + 2123724318u)); uint _715 = _683 + ((((_691 << 4u) + 2738958700u) ^ (_691 + 1013904242u)) ^ ((_691 >> 5u) + 3355524772u)); uint _723 = _691 + ((((_715 << 4u) + 2911926141u) ^ (_715 + 1013904242u)) ^ ((_715 >> 5u) + 2123724318u)); uint _732 = _699 + ((((_707 << 4u) + 2738958700u) ^ (_707 + 3668340011u)) ^ ((_707 >> 5u) + 3355524772u)); uint _740 = _707 + ((((_732 << 4u) + 2911926141u) ^ (_732 + 3668340011u)) ^ ((_732 >> 5u) + 2123724318u)); uint _748 = _715 + ((((_723 << 4u) + 2738958700u) ^ (_723 + 3668340011u)) ^ ((_723 >> 5u) + 3355524772u)); uint _756 = _723 + ((((_748 << 4u) + 2911926141u) ^ (_748 + 3668340011u)) ^ ((_748 >> 5u) + 2123724318u)); uint _765 = _732 + ((((_740 << 4u) + 2738958700u) ^ (_740 + 2027808484u)) ^ ((_740 >> 5u) + 3355524772u)); uint _773 = _740 + ((((_765 << 4u) + 2911926141u) ^ (_765 + 2027808484u)) ^ ((_765 >> 5u) + 2123724318u)); uint _781 = _748 + ((((_756 << 4u) + 2738958700u) ^ (_756 + 2027808484u)) ^ ((_756 >> 5u) + 3355524772u)); uint _789 = _756 + ((((_781 << 4u) + 2911926141u) ^ (_781 + 2027808484u)) ^ ((_781 >> 5u) + 2123724318u)); uint _798 = _765 + ((((_773 << 4u) + 2738958700u) ^ (_773 + 387276957u)) ^ ((_773 >> 5u) + 3355524772u)); uint _806 = _773 + ((((_798 << 4u) + 2911926141u) ^ (_798 + 387276957u)) ^ ((_798 >> 5u) + 2123724318u)); uint _814 = _781 + ((((_789 << 4u) + 2738958700u) ^ (_789 + 387276957u)) ^ ((_789 >> 5u) + 3355524772u)); uint _823 = _287 + _814; uint _831 = _287 + _806; float _849 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(fast::max(as_type(_627), as_type(_627)), 2.0), spvFMul(0.001000000047497451305389404296875, float(_823 - (((spvMulExtended(_823, 274877907u))._m1 >> 6u) * 1000u))), -as_type(_627))); float _860 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(0.001000000047497451305389404296875, float(_831 - (((spvMulExtended(_831, 274877907u))._m1 >> 6u) * 1000u))), spvFMul(fast::max(as_type(cbuf_28.data[_352]), as_type(cbuf_28.data[_352])), 2.0), -as_type(cbuf_28.data[_352]))); uint _869 = (2147483648u & as_type(_860)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _860)))); float _872 = sin(6.283185482025146484375 * as_type(_869)); uint _878 = (2147483648u & as_type(_849)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _849)))); float _882 = spvFMul(_872, cos(6.283185482025146484375 * as_type(_878))); float _886 = cos(6.283185482025146484375 * as_type(_869)); float _891 = spvFMul(_872, sin(6.283185482025146484375 * as_type(_878))); float _897 = sqrt(spvFAdd(1.0, fma(_891, _891, fma(_882, _882, spvFMul(_886, _886))))); bool _901 = _317 && (9.9999997473787516355514526367188e-05 >= _897); uint _902; uint _903; uint _904; if (_901) { _902 = 0u; _903 = 1065353216u; _904 = 0u; } else { _902 = _369; _903 = _623; _904 = _239; } bool _906 = _317 && (!_901); uint _909; if (_906) { _909 = as_type(fma(_891, _891, 1.0)); } else { _909 = as_type(_897); } uint _920; uint _921; uint _922; if (_906) { float _913 = rsqrt(fma(_882, _882, fma(_886, _886, as_type(_909)))); _920 = as_type(spvFMul(_886, _913)); _921 = as_type(spvFMul(_891, _913)); _922 = as_type(spvFMul(_882, _913)); } else { _920 = _904; _921 = _903; _922 = _902; } float _929 = fma(as_type(_920), 0.0, -spvFMul(1.0, as_type(_922))); float _934 = fma(as_type(_922), 0.0, -spvFMul(0.0, as_type(_921))); float _938 = fma(as_type(_921), 1.0, -spvFMul(0.0, as_type(_920))); float _941 = rsqrt(fma(_938, _938, fma(_934, _934, spvFMul(_929, _929)))); float _942 = spvFMul(_934, _941); float _943 = spvFMul(_929, _941); float _944 = spvFMul(_938, _941); bool _952 = ((9.9999997473787516355514526367188e-05 > abs(_943)) && (9.9999997473787516355514526367188e-05 > abs(_942))) && (9.9999997473787516355514526367188e-05 > abs(_944)); float _953 = _952 ? 0.0 : _944; float _955 = _952 ? 0.0500000007450580596923828125 : _943; float _957 = _952 ? 0.949999988079071044921875 : _942; float _964 = fma(as_type(_922), _957, -spvFMul(as_type(_920), _953)); float _969 = fma(as_type(_921), _953, -spvFMul(as_type(_922), _955)); float _973 = fma(as_type(_920), _955, -spvFMul(as_type(_921), _957)); float _976 = rsqrt(fma(_973, _973, fma(_969, _969, spvFMul(_964, _964)))); float _978 = spvFMul(_973, _976); float _980 = spvFMul(_969, _976); float _982 = spvFMul(_964, _976); float _987 = fma(_953, _980, -spvFMul(_957, _978)); float _990 = fma(_955, _978, -spvFMul(_953, _982)); float _993 = fma(_957, _982, -spvFMul(_955, _980)); float _996 = rsqrt(fma(_993, _993, fma(_990, _990, spvFMul(_987, _987)))); float _997 = spvFMul(_993, _996); float _999 = spvFMul(_990, _996); float _1001 = spvFMul(_987, _996); float _1006 = fma(_978, _999, -spvFMul(_980, _997)); float _1009 = fma(_982, _997, -spvFMul(_978, _1001)); float _1012 = fma(_980, _1001, -spvFMul(_982, _999)); float _1016 = rsqrt(fma(_1012, _1012, fma(_1009, _1009, spvFMul(_1006, _1006)))); _1023 = as_type(spvFMul(_1012, _1016)); _1024 = as_type(_978); _1025 = as_type(_891); _1026 = _806; _1027 = _798; _1028 = _789 + ((((_814 << 4u) + 2911926141u) ^ (_814 + 387276957u)) ^ ((_814 >> 5u) + 2123724318u)); _1029 = _814; _1030 = as_type(_999); _1031 = as_type(spvFMul(_1009, _1016)); _1032 = as_type(_1001); _1033 = as_type(spvFMul(_1006, _1016)); _1034 = as_type(_980); _1035 = as_type(_982); _1036 = as_type(_882); _1037 = as_type(_886); _1038 = as_type(_1012); _1039 = as_type(_997); _1040 = as_type(_976); _1041 = 953267991u; _1042 = _789; _1043 = _781; _1044 = _773; } else { _1023 = _608; _1024 = _609; _1025 = _610; _1026 = _611; _1027 = _612; _1028 = _613; _1029 = _614; _1030 = _617; _1031 = _618; _1032 = _619; _1033 = _620; _1034 = _234; _1035 = _235; _1036 = _621; _1037 = _622; _1038 = _369; _1039 = _623; _1040 = _239; _1041 = _627; _1042 = _624; _1043 = _625; _1044 = _626; } _1045 = _1023; _1046 = _1024; _1047 = _1025; _1048 = _1026; _1049 = _1027; _1050 = _1028; _1051 = _1029; _1052 = _1030; _1053 = _1031; _1054 = _1032; _1055 = _1033; _1056 = _1034; _1057 = _1035; _1058 = _1036; _1059 = _1037; _1060 = _1038; _1061 = _1039; _1062 = _1040; _1063 = _1041; _1064 = _1042; _1065 = _1043; _1066 = _1044; _1067 = !_630; } else { _1045 = _608; _1046 = _609; _1047 = _610; _1048 = _611; _1049 = _612; _1050 = _613; _1051 = _614; _1052 = _617; _1053 = _618; _1054 = _619; _1055 = _620; _1056 = _234; _1057 = _235; _1058 = _621; _1059 = _622; _1060 = _369; _1061 = _623; _1062 = _239; _1063 = _627; _1064 = _624; _1065 = _625; _1066 = _626; _1067 = false; } uint _1828; uint _1829; uint _1830; uint _1831; uint _1832; uint _1833; uint _1834; uint _1835; uint _1836; uint _1837; uint _1838; uint _1839; uint _1840; uint _1841; uint _1842; uint _1843; if (_628 || _1067) { uint _1321; uint _1322; uint _1323; uint _1324; uint _1325; uint _1326; uint _1327; uint _1328; uint _1329; uint _1330; uint _1331; uint _1332; uint _1333; uint _1334; uint _1335; uint _1336; uint _1337; uint _1338; uint _1339; uint _1340; uint _1341; bool _1342; if (!_628) { bool _1070 = cbuf_28.data[_307] == 4u; uint _1300; uint _1301; uint _1302; uint _1303; uint _1304; uint _1305; uint _1306; uint _1307; uint _1308; uint _1309; uint _1310; uint _1311; uint _1312; uint _1313; uint _1314; uint _1315; uint _1316; uint _1317; uint _1318; uint _1319; uint _1320; if (_1070) { uint _1078 = _343 + ((_1066 ^ ((_1066 << 4u) + 2738958700u)) ^ ((_1066 >> 5u) + 3355524772u)); uint _1085 = _1066 + ((_1078 ^ ((_1078 << 4u) + 2911926141u)) ^ ((_1078 >> 5u) + 2123724318u)); uint _1092 = _1065 + ((_1064 ^ ((_1064 << 4u) + 2738958700u)) ^ ((_1064 >> 5u) + 3355524772u)); uint _1099 = _1064 + ((_1092 ^ ((_1092 << 4u) + 2911926141u)) ^ ((_1092 >> 5u) + 2123724318u)); uint _1107 = _1078 + ((((_1085 << 4u) + 2738958700u) ^ (_1085 + 2654435769u)) ^ ((_1085 >> 5u) + 3355524772u)); uint _1115 = _1085 + ((((_1107 << 4u) + 2911926141u) ^ (_1107 + 2654435769u)) ^ ((_1107 >> 5u) + 2123724318u)); uint _1123 = _1092 + ((((_1099 << 4u) + 2738958700u) ^ (_1099 + 2654435769u)) ^ ((_1099 >> 5u) + 3355524772u)); uint _1131 = _1099 + ((((_1123 << 4u) + 2911926141u) ^ (_1123 + 2654435769u)) ^ ((_1123 >> 5u) + 2123724318u)); uint _1139 = _1107 + ((((_1115 << 4u) + 2738958700u) ^ (_1115 + 1013904242u)) ^ ((_1115 >> 5u) + 3355524772u)); uint _1147 = _1115 + ((((_1139 << 4u) + 2911926141u) ^ (_1139 + 1013904242u)) ^ ((_1139 >> 5u) + 2123724318u)); uint _1155 = _1123 + ((((_1131 << 4u) + 2738958700u) ^ (_1131 + 1013904242u)) ^ ((_1131 >> 5u) + 3355524772u)); uint _1163 = _1131 + ((((_1155 << 4u) + 2911926141u) ^ (_1155 + 1013904242u)) ^ ((_1155 >> 5u) + 2123724318u)); uint _1171 = _1139 + ((((_1147 << 4u) + 2738958700u) ^ (_1147 + 3668340011u)) ^ ((_1147 >> 5u) + 3355524772u)); uint _1179 = _1147 + ((((_1171 << 4u) + 2911926141u) ^ (_1171 + 3668340011u)) ^ ((_1171 >> 5u) + 2123724318u)); uint _1187 = _1155 + ((((_1163 << 4u) + 2738958700u) ^ (_1163 + 3668340011u)) ^ ((_1163 >> 5u) + 3355524772u)); uint _1195 = _1163 + ((((_1187 << 4u) + 2911926141u) ^ (_1187 + 3668340011u)) ^ ((_1187 >> 5u) + 2123724318u)); uint _1203 = _1171 + ((((_1179 << 4u) + 2738958700u) ^ (_1179 + 2027808484u)) ^ ((_1179 >> 5u) + 3355524772u)); uint _1211 = _1179 + ((((_1203 << 4u) + 2911926141u) ^ (_1203 + 2027808484u)) ^ ((_1203 >> 5u) + 2123724318u)); uint _1219 = _1187 + ((((_1195 << 4u) + 2738958700u) ^ (_1195 + 2027808484u)) ^ ((_1195 >> 5u) + 3355524772u)); uint _1227 = _1195 + ((((_1219 << 4u) + 2911926141u) ^ (_1219 + 2027808484u)) ^ ((_1219 >> 5u) + 2123724318u)); uint _1235 = _1203 + ((((_1211 << 4u) + 2738958700u) ^ (_1211 + 387276957u)) ^ ((_1211 >> 5u) + 3355524772u)); uint _1243 = _1211 + ((((_1235 << 4u) + 2911926141u) ^ (_1235 + 387276957u)) ^ ((_1235 >> 5u) + 2123724318u)); uint _1251 = _1219 + ((((_1227 << 4u) + 2738958700u) ^ (_1227 + 387276957u)) ^ ((_1227 >> 5u) + 3355524772u)); uint _1260 = _287 + _1243; float _1271 = spvFMul(fma(spvFMul(0.001000000047497451305389404296875, float(_1260 - (((spvMulExtended(_1260, 274877907u))._m1 >> 6u) * 1000u))), 6.283185482025146484375, -3.1415927410125732421875), 0.5); uint _1278 = (2147483648u & as_type(_1271)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1271)))); float _1284 = cos(6.283185482025146484375 * as_type(_1278)); float _1285 = spvFMul(1.0, sin(6.283185482025146484375 * as_type(_1278))); float _1288 = spvFMul(spvFMul(_1285, -_1284), 2.0); float _1290 = spvFMul(_1284, _1284); float _1292 = fma(-_1285, _1285, _1290); _1300 = as_type(_1292); _1301 = 0u; _1302 = as_type(_1292); _1303 = _1243; _1304 = _1235; _1305 = _1227 + ((((_1251 << 4u) + 2911926141u) ^ (_1251 + 387276957u)) ^ ((_1251 >> 5u) + 2123724318u)); _1306 = _1251; _1307 = 0u; _1308 = 0u; _1309 = as_type(_1292); _1310 = as_type(_1288); _1311 = as_type(fma(_1285, _1285, _1290)); _1312 = 0u; _1313 = as_type(_1288); _1314 = 0u; _1315 = as_type(_1288); _1316 = _1203; _1317 = _1227; _1318 = _1219; _1319 = _1211; _1320 = 1086918619u; } else { _1300 = _1045; _1301 = _1046; _1302 = _1047; _1303 = _1048; _1304 = _1049; _1305 = _1050; _1306 = _1051; _1307 = _1052; _1308 = _1053; _1309 = _1054; _1310 = _1055; _1311 = _1056; _1312 = _1057; _1313 = _1058; _1314 = _1059; _1315 = _1061; _1316 = _1062; _1317 = _1064; _1318 = _1065; _1319 = _1066; _1320 = _1063; } _1321 = _1300; _1322 = _1301; _1323 = _1302; _1324 = _1303; _1325 = _1304; _1326 = _1305; _1327 = _1306; _1328 = _1307; _1329 = _1308; _1330 = _1309; _1331 = _1310; _1332 = _1311; _1333 = _1312; _1334 = _1313; _1335 = _1314; _1336 = _1315; _1337 = _1316; _1338 = _1317; _1339 = _1318; _1340 = _1319; _1341 = _1320; _1342 = !_1070; } else { _1321 = _1045; _1322 = _1046; _1323 = _1047; _1324 = _1048; _1325 = _1049; _1326 = _1050; _1327 = _1051; _1328 = _1052; _1329 = _1053; _1330 = _1054; _1331 = _1055; _1332 = _1056; _1333 = _1057; _1334 = _1058; _1335 = _1059; _1336 = _1061; _1337 = _1062; _1338 = _1064; _1339 = _1065; _1340 = _1066; _1341 = _1063; _1342 = false; } uint _1812; uint _1813; uint _1814; uint _1815; uint _1816; uint _1817; uint _1818; uint _1819; uint _1820; uint _1821; uint _1822; uint _1823; uint _1824; uint _1825; uint _1826; uint _1827; if (_628 || _1342) { uint _1742; uint _1743; uint _1744; uint _1745; uint _1746; uint _1747; uint _1748; uint _1749; uint _1750; uint _1751; uint _1752; uint _1753; uint _1754; uint _1755; uint _1756; uint _1757; uint _1758; uint _1759; uint _1760; bool _1761; if (!_628) { bool _1345 = cbuf_28.data[_307] == 5u; uint _1723; uint _1724; uint _1725; uint _1726; uint _1727; uint _1728; uint _1729; uint _1730; uint _1731; uint _1732; uint _1733; uint _1734; uint _1735; uint _1736; uint _1737; uint _1738; uint _1739; uint _1740; uint _1741; if (_1345) { uint _1353 = _343 + ((_1340 ^ ((_1340 << 4u) + 2738958700u)) ^ ((_1340 >> 5u) + 3355524772u)); uint _1360 = _1340 + ((_1353 ^ ((_1353 << 4u) + 2911926141u)) ^ ((_1353 >> 5u) + 2123724318u)); uint _1367 = _1339 + ((_1338 ^ ((_1338 << 4u) + 2738958700u)) ^ ((_1338 >> 5u) + 3355524772u)); uint _1374 = _1338 + ((_1367 ^ ((_1367 << 4u) + 2911926141u)) ^ ((_1367 >> 5u) + 2123724318u)); uint _1382 = _1353 + ((((_1360 << 4u) + 2738958700u) ^ (_1360 + 2654435769u)) ^ ((_1360 >> 5u) + 3355524772u)); uint _1390 = _1360 + ((((_1382 << 4u) + 2911926141u) ^ (_1382 + 2654435769u)) ^ ((_1382 >> 5u) + 2123724318u)); uint _1398 = _1367 + ((((_1374 << 4u) + 2738958700u) ^ (_1374 + 2654435769u)) ^ ((_1374 >> 5u) + 3355524772u)); uint _1406 = _1374 + ((((_1398 << 4u) + 2911926141u) ^ (_1398 + 2654435769u)) ^ ((_1398 >> 5u) + 2123724318u)); uint _1414 = _1382 + ((((_1390 << 4u) + 2738958700u) ^ (_1390 + 1013904242u)) ^ ((_1390 >> 5u) + 3355524772u)); uint _1422 = _1390 + ((((_1414 << 4u) + 2911926141u) ^ (_1414 + 1013904242u)) ^ ((_1414 >> 5u) + 2123724318u)); uint _1430 = _1398 + ((((_1406 << 4u) + 2738958700u) ^ (_1406 + 1013904242u)) ^ ((_1406 >> 5u) + 3355524772u)); uint _1438 = _1406 + ((((_1430 << 4u) + 2911926141u) ^ (_1430 + 1013904242u)) ^ ((_1430 >> 5u) + 2123724318u)); uint _1446 = _1414 + ((((_1422 << 4u) + 2738958700u) ^ (_1422 + 3668340011u)) ^ ((_1422 >> 5u) + 3355524772u)); uint _1454 = _1422 + ((((_1446 << 4u) + 2911926141u) ^ (_1446 + 3668340011u)) ^ ((_1446 >> 5u) + 2123724318u)); uint _1462 = _1430 + ((((_1438 << 4u) + 2738958700u) ^ (_1438 + 3668340011u)) ^ ((_1438 >> 5u) + 3355524772u)); uint _1470 = _1438 + ((((_1462 << 4u) + 2911926141u) ^ (_1462 + 3668340011u)) ^ ((_1462 >> 5u) + 2123724318u)); uint _1478 = _1446 + ((((_1454 << 4u) + 2738958700u) ^ (_1454 + 2027808484u)) ^ ((_1454 >> 5u) + 3355524772u)); uint _1486 = _1454 + ((((_1478 << 4u) + 2911926141u) ^ (_1478 + 2027808484u)) ^ ((_1478 >> 5u) + 2123724318u)); uint _1494 = _1462 + ((((_1470 << 4u) + 2738958700u) ^ (_1470 + 2027808484u)) ^ ((_1470 >> 5u) + 3355524772u)); uint _1502 = _1470 + ((((_1494 << 4u) + 2911926141u) ^ (_1494 + 2027808484u)) ^ ((_1494 >> 5u) + 2123724318u)); uint _1510 = _1478 + ((((_1486 << 4u) + 2738958700u) ^ (_1486 + 387276957u)) ^ ((_1486 >> 5u) + 3355524772u)); uint _1518 = _1486 + ((((_1510 << 4u) + 2911926141u) ^ (_1510 + 387276957u)) ^ ((_1510 >> 5u) + 2123724318u)); uint _1526 = _1494 + ((((_1502 << 4u) + 2738958700u) ^ (_1502 + 387276957u)) ^ ((_1502 >> 5u) + 3355524772u)); uint _1535 = _287 + _1526; uint _1541 = _287 + _1518; float _1556 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(fast::max(as_type(_1341), as_type(_1341)), 2.0), spvFMul(0.001000000047497451305389404296875, float(_1535 - (((spvMulExtended(_1535, 274877907u))._m1 >> 6u) * 1000u))), -as_type(_1341))); float _1567 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(fast::max(as_type(cbuf_28.data[_352]), as_type(cbuf_28.data[_352])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_1541 - (((spvMulExtended(_1541, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_28.data[_352]))); uint _1574 = (2147483648u & as_type(_1567)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1567)))); float _1577 = sin(6.283185482025146484375 * as_type(_1574)); uint _1583 = (2147483648u & as_type(_1556)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1556)))); float _1587 = spvFMul(_1577, cos(6.283185482025146484375 * as_type(_1583))); float _1591 = cos(6.283185482025146484375 * as_type(_1574)); float _1596 = spvFMul(_1577, sin(6.283185482025146484375 * as_type(_1583))); float _1602 = sqrt(spvFAdd(1.0, fma(_1596, _1596, fma(_1587, _1587, spvFMul(_1591, _1591))))); bool _1605 = _317 && (9.9999997473787516355514526367188e-05 >= _1602); uint _1606; uint _1607; uint _1608; if (_1605) { _1606 = 0u; _1607 = 1065353216u; _1608 = 0u; } else { _1606 = _1060; _1607 = _1336; _1608 = _1337; } bool _1610 = _317 && (!_1605); uint _1613; if (_1610) { _1613 = as_type(fma(_1596, _1596, 1.0)); } else { _1613 = as_type(_1602); } uint _1624; uint _1625; uint _1626; if (_1610) { float _1617 = rsqrt(fma(_1587, _1587, fma(_1591, _1591, as_type(_1613)))); _1624 = as_type(spvFMul(_1591, _1617)); _1625 = as_type(spvFMul(_1596, _1617)); _1626 = as_type(spvFMul(_1587, _1617)); } else { _1624 = _1608; _1625 = _1607; _1626 = _1606; } float _1633 = fma(as_type(_1624), 0.0, -spvFMul(1.0, as_type(_1626))); float _1638 = fma(as_type(_1626), 0.0, -spvFMul(0.0, as_type(_1625))); float _1642 = fma(as_type(_1625), 1.0, -spvFMul(0.0, as_type(_1624))); float _1645 = rsqrt(fma(_1642, _1642, fma(_1638, _1638, spvFMul(_1633, _1633)))); float _1646 = spvFMul(_1638, _1645); float _1647 = spvFMul(_1633, _1645); float _1648 = spvFMul(_1642, _1645); bool _1656 = ((9.9999997473787516355514526367188e-05 > abs(_1647)) && (9.9999997473787516355514526367188e-05 > abs(_1646))) && (9.9999997473787516355514526367188e-05 > abs(_1648)); float _1657 = _1656 ? 0.0 : _1648; float _1658 = _1656 ? 0.0500000007450580596923828125 : _1647; float _1659 = _1656 ? 0.949999988079071044921875 : _1646; float _1666 = fma(as_type(_1626), _1659, -spvFMul(as_type(_1624), _1657)); float _1671 = fma(as_type(_1625), _1657, -spvFMul(as_type(_1626), _1658)); float _1675 = fma(as_type(_1624), _1658, -spvFMul(as_type(_1625), _1659)); float _1678 = rsqrt(fma(_1675, _1675, fma(_1671, _1671, spvFMul(_1666, _1666)))); float _1679 = spvFMul(_1675, _1678); float _1681 = spvFMul(_1671, _1678); float _1683 = spvFMul(_1666, _1678); float _1688 = fma(_1657, _1681, -spvFMul(_1659, _1679)); float _1691 = fma(_1658, _1679, -spvFMul(_1657, _1683)); float _1694 = fma(_1659, _1683, -spvFMul(_1658, _1681)); float _1697 = rsqrt(fma(_1694, _1694, fma(_1691, _1691, spvFMul(_1688, _1688)))); float _1698 = spvFMul(_1694, _1697); float _1700 = spvFMul(_1691, _1697); float _1702 = spvFMul(_1688, _1697); float _1707 = fma(_1679, _1700, -spvFMul(_1681, _1698)); float _1710 = fma(_1683, _1698, -spvFMul(_1679, _1702)); float _1713 = fma(_1681, _1702, -spvFMul(_1683, _1700)); float _1716 = rsqrt(fma(_1713, _1713, fma(_1710, _1710, spvFMul(_1707, _1707)))); _1723 = as_type(spvFMul(_1713, _1716)); _1724 = as_type(_1679); _1725 = as_type(_1596); _1726 = _1518; _1727 = _1510; _1728 = _1502 + ((((_1526 << 4u) + 2911926141u) ^ (_1526 + 387276957u)) ^ ((_1526 >> 5u) + 2123724318u)); _1729 = _1526; _1730 = as_type(_1698); _1731 = as_type(_1700); _1732 = as_type(spvFMul(_1710, _1716)); _1733 = as_type(_1702); _1734 = as_type(spvFMul(_1707, _1716)); _1735 = as_type(_1681); _1736 = as_type(_1683); _1737 = as_type(_1587); _1738 = as_type(_1591); _1739 = _1502; _1740 = _1494; _1741 = _1486; } else { _1723 = _1321; _1724 = _1322; _1725 = _1323; _1726 = _1324; _1727 = _1325; _1728 = _1326; _1729 = _1327; _1730 = _1336; _1731 = _1328; _1732 = _1329; _1733 = _1330; _1734 = _1331; _1735 = _1332; _1736 = _1333; _1737 = _1334; _1738 = _1335; _1739 = _1338; _1740 = _1339; _1741 = _1340; } _1742 = _1723; _1743 = _1724; _1744 = _1725; _1745 = _1726; _1746 = _1727; _1747 = _1728; _1748 = _1729; _1749 = _1730; _1750 = _1731; _1751 = _1732; _1752 = _1733; _1753 = _1734; _1754 = _1735; _1755 = _1736; _1756 = _1737; _1757 = _1738; _1758 = _1739; _1759 = _1740; _1760 = _1741; _1761 = !_1345; } else { _1742 = _1321; _1743 = _1322; _1744 = _1323; _1745 = _1324; _1746 = _1325; _1747 = _1326; _1748 = _1327; _1749 = _1336; _1750 = _1328; _1751 = _1329; _1752 = _1330; _1753 = _1331; _1754 = _1332; _1755 = _1333; _1756 = _1334; _1757 = _1335; _1758 = _1338; _1759 = _1339; _1760 = _1340; _1761 = false; } uint _1796; uint _1797; uint _1798; uint _1799; uint _1800; uint _1801; uint _1802; uint _1803; uint _1804; uint _1805; uint _1806; uint _1807; uint _1808; uint _1809; uint _1810; uint _1811; if (_628 || _1761) { uint _1764; uint _1765; uint _1766; uint _1767; uint _1768; uint _1769; uint _1770; uint _1771; uint _1772; uint _1773; uint _1774; uint _1775; uint _1776; uint _1777; uint _1778; uint _1779; if (!_628) { _1764 = 1065353216u; _1765 = 0u; _1766 = 1065353216u; _1767 = _1760; _1768 = _343; _1769 = _1758; _1770 = _1759; _1771 = 0u; _1772 = 0u; _1773 = 0u; _1774 = 1065353216u; _1775 = 0u; _1776 = 1065353216u; _1777 = 0u; _1778 = 0u; _1779 = 0u; } else { _1764 = _1742; _1765 = _1743; _1766 = _1744; _1767 = _1745; _1768 = _1746; _1769 = _1747; _1770 = _1748; _1771 = _1749; _1772 = _1750; _1773 = _1751; _1774 = _1752; _1775 = _1753; _1776 = _1754; _1777 = _1755; _1778 = _1756; _1779 = _1757; } uint _1780; uint _1781; uint _1782; uint _1783; uint _1784; uint _1785; uint _1786; uint _1787; uint _1788; uint _1789; uint _1790; uint _1791; uint _1792; uint _1793; uint _1794; uint _1795; if (_628) { _1780 = 1065353216u; _1781 = 0u; _1782 = 1065353216u; _1783 = _1760; _1784 = _343; _1785 = _1758; _1786 = _1759; _1787 = 0u; _1788 = 0u; _1789 = 0u; _1790 = 1065353216u; _1791 = 0u; _1792 = 1065353216u; _1793 = 0u; _1794 = 0u; _1795 = 0u; } else { _1780 = _1764; _1781 = _1765; _1782 = _1766; _1783 = _1767; _1784 = _1768; _1785 = _1769; _1786 = _1770; _1787 = _1771; _1788 = _1772; _1789 = _1773; _1790 = _1774; _1791 = _1775; _1792 = _1776; _1793 = _1777; _1794 = _1778; _1795 = _1779; } _1796 = _1780; _1797 = _1781; _1798 = _1782; _1799 = _1783; _1800 = _1784; _1801 = _1785; _1802 = _1786; _1803 = _1787; _1804 = _1788; _1805 = _1789; _1806 = _1790; _1807 = _1791; _1808 = _1792; _1809 = _1793; _1810 = _1794; _1811 = _1795; } else { _1796 = _1742; _1797 = _1743; _1798 = _1744; _1799 = _1745; _1800 = _1746; _1801 = _1747; _1802 = _1748; _1803 = _1749; _1804 = _1750; _1805 = _1751; _1806 = _1752; _1807 = _1753; _1808 = _1754; _1809 = _1755; _1810 = _1756; _1811 = _1757; } _1812 = _1796; _1813 = _1797; _1814 = _1798; _1815 = _1799; _1816 = _1800; _1817 = _1801; _1818 = _1802; _1819 = _1803; _1820 = _1804; _1821 = _1805; _1822 = _1806; _1823 = _1807; _1824 = _1808; _1825 = _1809; _1826 = _1810; _1827 = _1811; } else { _1812 = _1321; _1813 = _1322; _1814 = _1323; _1815 = _1324; _1816 = _1325; _1817 = _1326; _1818 = _1327; _1819 = _1336; _1820 = _1328; _1821 = _1329; _1822 = _1330; _1823 = _1331; _1824 = _1332; _1825 = _1333; _1826 = _1334; _1827 = _1335; } _1828 = _1812; _1829 = _1813; _1830 = _1814; _1831 = _1815; _1832 = _1816; _1833 = _1817; _1834 = _1818; _1835 = _1819; _1836 = _1820; _1837 = _1821; _1838 = _1822; _1839 = _1823; _1840 = _1824; _1841 = _1827; _1842 = _1826; _1843 = _1825; } else { _1828 = _1045; _1829 = _1046; _1830 = _1047; _1831 = _1048; _1832 = _1049; _1833 = _1050; _1834 = _1051; _1835 = _1061; _1836 = _1052; _1837 = _1053; _1838 = _1054; _1839 = _1055; _1840 = _1056; _1841 = _1059; _1842 = _1058; _1843 = _1057; } _1844 = 0u; _1845 = _1828; _1846 = _1829; _1847 = _1830; _1848 = _1831; _1849 = _1832; _1850 = _1833; _1851 = _1834; _1852 = _1841; _1853 = _1842; _1854 = _1835; _1855 = _1836; _1856 = _1840; _1857 = _1837; _1858 = _1838; _1859 = _1843; _1860 = _1839; } else { _1844 = _626; _1845 = _608; _1846 = _609; _1847 = _610; _1848 = _611; _1849 = _612; _1850 = _613; _1851 = _614; _1852 = _615; _1853 = _616; _1854 = _623; _1855 = _617; _1856 = _622; _1857 = _618; _1858 = _619; _1859 = _624; _1860 = _620; } _1861 = _1844; _1862 = _1858; _1863 = _1859; _1864 = _1860; _1865 = _1853; _1866 = _1855; _1867 = _1856; _1868 = _1857; _1869 = _1852; _1870 = _1854; _1871 = _1846; _1872 = _1845; _1873 = _1847; _1874 = _1849; _1875 = _1848; _1876 = _1851; _1877 = _1850; } else { _1861 = _374; _1862 = _366; _1863 = _373; _1864 = _367; _1865 = _364; _1866 = _372; _1867 = _368; _1868 = _365; _1869 = _363; _1870 = _371; _1871 = _358; _1872 = _357; _1873 = _370; _1874 = _360; _1875 = _359; _1876 = _362; _1877 = _361; } uint _1884 = _1876 + ((_1877 ^ ((_1877 << 4u) + 2738958700u)) ^ ((_1877 >> 5u) + 3355524772u)); uint _1891 = _1877 + ((_1884 ^ ((_1884 << 4u) + 2911926141u)) ^ ((_1884 >> 5u) + 2123724318u)); uint _1899 = _1884 + ((((_1891 << 4u) + 2738958700u) ^ (_1891 + 2654435769u)) ^ ((_1891 >> 5u) + 3355524772u)); uint _1907 = _1891 + ((((_1899 << 4u) + 2911926141u) ^ (_1899 + 2654435769u)) ^ ((_1899 >> 5u) + 2123724318u)); uint _1914 = _1899 + ((_1907 ^ ((_1907 << 4u) + 2738958700u)) ^ ((_1907 >> 5u) + 3355524772u)); uint _1921 = _1907 + ((_1914 ^ ((_1914 << 4u) + 2911926141u)) ^ ((_1914 >> 5u) + 2123724318u)); uint _1935 = _1874 + ((_1875 ^ ((_1875 << 4u) + 2738958700u)) ^ ((_1875 >> 5u) + 3355524772u)); uint _1936 = _1914 + ((((_1921 << 4u) + 2738958700u) ^ (_1921 + 2654435769u)) ^ ((_1921 >> 5u) + 3355524772u)); uint _1950 = _1875 + ((_1935 ^ ((_1935 << 4u) + 2911926141u)) ^ ((_1935 >> 5u) + 2123724318u)); uint _1951 = _1921 + ((((_1936 << 4u) + 2911926141u) ^ (_1936 + 2654435769u)) ^ ((_1936 >> 5u) + 2123724318u)); uint _1965 = _1935 + ((((_1950 << 4u) + 2738958700u) ^ (_1950 + 2654435769u)) ^ ((_1950 >> 5u) + 3355524772u)); uint _1966 = _1936 + ((_1951 ^ ((_1951 << 4u) + 2738958700u)) ^ ((_1951 >> 5u) + 3355524772u)); uint _1980 = _1950 + ((((_1965 << 4u) + 2911926141u) ^ (_1965 + 2654435769u)) ^ ((_1965 >> 5u) + 2123724318u)); uint _1981 = _1951 + ((_1966 ^ ((_1966 << 4u) + 2911926141u)) ^ ((_1966 >> 5u) + 2123724318u)); uint _1990 = 164u + buf1_dword_off; uint _1994 = 165u + buf1_dword_off; uint _1998 = 166u + buf1_dword_off; uint _2006 = 168u + buf1_dword_off; uint _2010 = 169u + buf1_dword_off; uint _2014 = 170u + buf1_dword_off; uint _2022 = 172u + buf1_dword_off; uint _2026 = 173u + buf1_dword_off; uint _2030 = 174u + buf1_dword_off; uint _2042 = 148u + buf1_dword_off; uint _2046 = 149u + buf1_dword_off; uint _2050 = 150u + buf1_dword_off; uint _2054 = 151u + buf1_dword_off; uint _2058 = 152u + buf1_dword_off; uint _2062 = 153u + buf1_dword_off; uint _2066 = 154u + buf1_dword_off; uint _2070 = 155u + buf1_dword_off; uint _2075 = _1965 + ((_1980 ^ ((_1980 << 4u) + 2738958700u)) ^ ((_1980 >> 5u) + 3355524772u)); uint _2076 = _1966 + ((((_1981 << 4u) + 2738958700u) ^ (_1981 + 2654435769u)) ^ ((_1981 >> 5u) + 3355524772u)); uint _2078 = 156u + buf1_dword_off; uint _2082 = 157u + buf1_dword_off; uint _2086 = 158u + buf1_dword_off; uint _2090 = 159u + buf1_dword_off; uint _2169 = _1980 + ((_2075 ^ ((_2075 << 4u) + 2911926141u)) ^ ((_2075 >> 5u) + 2123724318u)); uint _2170 = _1981 + ((((_2076 << 4u) + 2911926141u) ^ (_2076 + 2654435769u)) ^ ((_2076 >> 5u) + 2123724318u)); float _2176 = fma(as_type(cbuf_28.data[_2078]), as_type(cbuf_28.data[_1998]), fma(as_type(cbuf_28.data[_2058]), as_type(cbuf_28.data[_1994]), spvFMul(as_type(cbuf_28.data[_2042]), as_type(cbuf_28.data[_1990])))); float _2180 = fma(as_type(cbuf_28.data[_2086]), as_type(cbuf_28.data[_1998]), fma(as_type(cbuf_28.data[_2066]), as_type(cbuf_28.data[_1994]), spvFMul(as_type(cbuf_28.data[_2050]), as_type(cbuf_28.data[_1990])))); uint _2181 = as_type(_2180); float _2190 = fma(as_type(cbuf_28.data[_2078]), as_type(cbuf_28.data[_2014]), fma(as_type(cbuf_28.data[_2058]), as_type(cbuf_28.data[_2010]), spvFMul(as_type(cbuf_28.data[_2042]), as_type(cbuf_28.data[_2006])))); float _2194 = fma(as_type(cbuf_28.data[_2086]), as_type(cbuf_28.data[_2014]), fma(as_type(cbuf_28.data[_2066]), as_type(cbuf_28.data[_2010]), spvFMul(as_type(cbuf_28.data[_2050]), as_type(cbuf_28.data[_2006])))); float _2203 = fma(as_type(cbuf_28.data[_2078]), as_type(cbuf_28.data[_2030]), fma(as_type(cbuf_28.data[_2058]), as_type(cbuf_28.data[_2026]), spvFMul(as_type(cbuf_28.data[_2042]), as_type(cbuf_28.data[_2022])))); float _2206 = fma(as_type(cbuf_28.data[_2086]), as_type(cbuf_28.data[_2030]), fma(as_type(cbuf_28.data[_2066]), as_type(cbuf_28.data[_2026]), spvFMul(as_type(cbuf_28.data[_2050]), as_type(cbuf_28.data[_2022])))); float _2226 = fma(as_type(cbuf_28.data[_2082]), as_type(cbuf_28.data[_1998]), fma(as_type(cbuf_28.data[_2062]), as_type(cbuf_28.data[_1994]), spvFMul(as_type(cbuf_28.data[_2046]), as_type(cbuf_28.data[_1990])))); float _2230 = fma(as_type(cbuf_28.data[_2082]), as_type(cbuf_28.data[_2014]), fma(as_type(cbuf_28.data[_2062]), as_type(cbuf_28.data[_2010]), spvFMul(as_type(cbuf_28.data[_2046]), as_type(cbuf_28.data[_2006])))); float _2234 = fma(as_type(cbuf_28.data[_2082]), as_type(cbuf_28.data[_2030]), fma(as_type(cbuf_28.data[_2062]), as_type(cbuf_28.data[_2026]), spvFMul(as_type(cbuf_28.data[_2046]), as_type(cbuf_28.data[_2022])))); uint _2259 = (_2169 << 4u) + 2738958700u; uint _2262 = (spvMulExtended(_2076, 274877907u))._m1 >> 6u; uint _2297 = _2259 ^ (_2169 + 2654435769u); uint _2298 = (_2169 >> 5u) + 3355524772u; uint _2302 = 179u + buf1_dword_off; float _2315 = fma(_2176, as_type(_1865), fma(_2226, as_type(_1869), fma(_2180, as_type(_1873), fma(as_type(cbuf_28.data[_2090]), as_type(cbuf_28.data[_1998]), fma(as_type(cbuf_28.data[_2070]), as_type(cbuf_28.data[_1994]), spvFMul(as_type(cbuf_28.data[_2054]), as_type(cbuf_28.data[_1990]))))))); float _2318 = fma(_2190, as_type(_1865), fma(_2230, as_type(_1869), fma(_2194, as_type(_1873), fma(as_type(cbuf_28.data[_2090]), as_type(cbuf_28.data[_2014]), fma(as_type(cbuf_28.data[_2070]), as_type(cbuf_28.data[_2010]), spvFMul(as_type(cbuf_28.data[_2054]), as_type(cbuf_28.data[_2006]))))))); float _2320 = fma(_2203, as_type(_1865), fma(_2234, as_type(_1869), fma(_2206, as_type(_1873), fma(as_type(cbuf_28.data[_2090]), as_type(cbuf_28.data[_2030]), fma(as_type(cbuf_28.data[_2070]), as_type(cbuf_28.data[_2026]), spvFMul(as_type(cbuf_28.data[_2054]), as_type(cbuf_28.data[_2022]))))))); float _2322 = fma(as_type(_1864), _2180, fma(as_type(_1868), _2226, spvFMul(as_type(_1872), _2176))); float _2325 = fma(as_type(_1863), _2180, fma(as_type(_1867), _2226, spvFMul(as_type(_1871), _2176))); float _2327 = fma(as_type(_1862), _2180, fma(as_type(_1866), _2226, spvFMul(as_type(_1870), _2176))); float _2329 = fma(as_type(_1864), _2194, fma(as_type(_1868), _2230, spvFMul(as_type(_1872), _2190))); float _2331 = fma(as_type(_1863), _2194, fma(as_type(_1867), _2230, spvFMul(as_type(_1871), _2190))); float _2333 = fma(as_type(_1862), _2194, fma(as_type(_1866), _2230, spvFMul(as_type(_1870), _2190))); float _2338 = fma(as_type(_1863), _2206, fma(as_type(_1867), _2234, spvFMul(as_type(_1871), _2203))); bool _2345 = cbuf_28.data[_307] == 2u; uint _2418; uint _2419; uint _2420; uint _2421; uint _2422; uint _2423; if (_2345) { uint _2347 = _287 + _1980; uint _2348 = 8u + buf1_dword_off; uint _2352 = 9u + buf1_dword_off; uint _2356 = 10u + buf1_dword_off; uint _2359 = _287 + _1965; uint _2365 = _287 + _1899; float _2390 = fma(spvFMul(fast::max(as_type(cbuf_28.data[_2352]), as_type(cbuf_28.data[_2352])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_2347 - (((spvMulExtended(_2347, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_28.data[_2352])); float _2394 = fma(spvFMul(fast::max(as_type(cbuf_28.data[_2348]), as_type(cbuf_28.data[_2348])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_2359 - (((spvMulExtended(_2359, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_28.data[_2348])); float _2401 = spvFMul(fast::max(as_type(cbuf_28.data[_2356]), as_type(cbuf_28.data[_2356])), 2.0); float _2406 = fma(_2401, spvFMul(0.001000000047497451305389404296875, float(_2365 - (((spvMulExtended(_2365, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_28.data[_2356])); float _2408 = fma(_2394, _2190, spvFMul(_2230, _2390)); float _2410 = fma(_2394, _2203, spvFMul(_2234, _2390)); _2418 = as_type(fma(_2406, _2320, _2410)); _2419 = as_type(fma(_2406, _2318, _2408)); _2420 = as_type(fma(_2406, _2315, fma(_2394, _2176, spvFMul(_2226, _2390)))); _2421 = as_type(_2401); _2422 = as_type(_2408); _2423 = as_type(_2410); } else { _2418 = _2298; _2419 = _2297; _2420 = as_type(_2226); _2421 = as_type(fma(as_type(_1862), _2206, fma(as_type(_1866), _2234, spvFMul(as_type(_1870), _2203)))); _2422 = as_type(fma(as_type(_1864), _2206, fma(as_type(_1868), _2234, spvFMul(as_type(_1872), _2203)))); _2423 = _1861; } uint _3028; uint _3029; uint _3030; uint _3031; uint _3032; if (!_2345) { bool _2424 = cbuf_28.data[_307] == 1u; uint _2985; uint _2986; uint _2987; uint _2988; uint _2989; if (_2424) { uint _2426 = 8u + buf1_dword_off; uint _2429 = 9u + buf1_dword_off; uint _2432 = 10u + buf1_dword_off; uint _2436 = 11u + buf1_dword_off; uint _2439 = _287 + _1907; uint _2442 = (spvMulExtended(_2439, 1561286381u))._m1; uint _2444 = (_2439 - _2442) >> 1u; float _2456 = fma(spvFMul(0.00133333331905305385589599609375, float(_2439 - (((_2444 + _2442) >> 9u) * 751u))), spvFSub(1.0, as_type(cbuf_28.data[_2436])), as_type(cbuf_28.data[_2436])); bool _2458 = 0u == _2423; bool _2459 = _317 && _2458; uint _2461; if (_2459) { _2461 = _287 + _1965; } else { _2461 = _2423; } uint _2520; uint _2521; uint _2522; uint _2523; uint _2524; uint _2525; uint _2526; uint _2527; uint _2528; uint _2529; bool _2530; uint _2531; if (_2459) { uint _2464 = (spvMulExtended(_2461, 98685563u))._m1; float _2478 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2432]), spvFMul(0.001000000047497451305389404296875, float(_2461 - (((((_2461 - _2464) >> 1u) + _2464) >> 9u) * 1001u)))), 2.0), as_type(cbuf_28.data[_2432])); uint _2487 = _287 + _1980; uint _2489 = (spvMulExtended(_2487, 98685563u))._m1; uint _2494 = ((((_2487 - _2489) >> 1u) + _2489) >> 9u) * 1001u; float _2503 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2429]), spvFMul(0.001000000047497451305389404296875, float(_2487 - _2494))), 2.0), as_type(cbuf_28.data[_2429])); float _2511 = spvFMul(as_type(cbuf_28.data[_2426]), _2456); _2520 = as_type(spvFMul(_2329, _2478)); _2521 = as_type(spvFMul(as_type(_2422), _2478)); _2522 = as_type(spvFMul(_2327, _2511)); _2523 = as_type(spvFMul(_2331, _2503)); _2524 = as_type(spvFMul(_2325, _2503)); _2525 = as_type(spvFMul(_2322, _2478)); _2526 = as_type(spvFMul(_2333, _2511)); _2527 = as_type(spvFMul(as_type(_2421), _2511)); _2528 = as_type(spvFMul(_2338, _2503)); _2529 = as_type(_2511); _2530 = _2494 > _2487; _2531 = as_type(_2478); } else { _2520 = _2262; _2521 = _2181; _2522 = as_type(_2230); _2523 = _2259; _2524 = as_type(_2176); _2525 = _2420; _2526 = _2444; _2527 = as_type(_2322); _2528 = _2422; _2529 = as_type(_2456); _2530 = _2458; _2531 = _2461; } bool _2533 = _317 && (!_2459); bool _2535; if (_2533) { _2535 = 1u == _2531; } else { _2535 = _2530; } uint _2958; uint _2959; uint _2960; uint _2961; uint _2962; uint _2963; uint _2964; uint _2965; uint _2966; if (_2533) { bool _2536 = _2533 && _2535; uint _2538; if (_2536) { _2538 = _287 + _1965; } else { _2538 = _2531; } uint _2597; uint _2598; uint _2599; uint _2600; uint _2601; uint _2602; uint _2603; uint _2604; uint _2605; uint _2606; bool _2607; uint _2608; if (_2536) { uint _2540 = (spvMulExtended(_2538, 98685563u))._m1; float _2553 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2426]), spvFMul(0.001000000047497451305389404296875, float(_2538 - (((((_2538 - _2540) >> 1u) + _2540) >> 9u) * 1001u)))), 2.0), as_type(cbuf_28.data[_2426])); uint _2563 = _287 + _1980; uint _2565 = (spvMulExtended(_2563, 98685563u))._m1; uint _2570 = ((((_2563 - _2565) >> 1u) + _2565) >> 9u) * 1001u; float _2579 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2432]), spvFMul(0.001000000047497451305389404296875, float(_2563 - _2570))), 2.0), as_type(cbuf_28.data[_2432])); float _2588 = spvFMul(as_type(cbuf_28.data[_2429]), as_type(_2529)); _2597 = as_type(spvFMul(_2331, _2579)); _2598 = as_type(spvFMul(_2338, _2579)); _2599 = as_type(spvFMul(as_type(_2527), _2553)); _2600 = as_type(spvFMul(_2333, _2588)); _2601 = as_type(spvFMul(_2327, _2588)); _2602 = as_type(spvFMul(_2325, _2579)); _2603 = as_type(spvFMul(_2329, _2553)); _2604 = as_type(spvFMul(as_type(_2528), _2553)); _2605 = as_type(spvFMul(as_type(_2421), _2588)); _2606 = as_type(_2588); _2607 = _2570 > _2563; _2608 = as_type(_2553); } else { _2597 = _2520; _2598 = _2521; _2599 = _2522; _2600 = _2523; _2601 = _2524; _2602 = _2525; _2603 = _2526; _2604 = _2527; _2605 = _2528; _2606 = _2529; _2607 = _2535; _2608 = _2538; } bool _2610 = _2533 && (!_2536); bool _2612; if (_2610) { _2612 = 2u == _2608; } else { _2612 = _2607; } uint _2949; uint _2950; uint _2951; uint _2952; uint _2953; uint _2954; uint _2955; uint _2956; uint _2957; if (_2610) { bool _2613 = _2610 && _2612; uint _2615; if (_2613) { _2615 = _287 + _1965; } else { _2615 = _2608; } uint _2674; uint _2675; uint _2676; uint _2677; uint _2678; uint _2679; uint _2680; uint _2681; uint _2682; uint _2683; bool _2684; uint _2685; if (_2613) { uint _2617 = (spvMulExtended(_2615, 98685563u))._m1; float _2630 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2426]), spvFMul(0.001000000047497451305389404296875, float(_2615 - (((((_2615 - _2617) >> 1u) + _2617) >> 9u) * 1001u)))), 2.0), as_type(cbuf_28.data[_2426])); uint _2640 = _287 + _1980; uint _2642 = (spvMulExtended(_2640, 98685563u))._m1; uint _2647 = ((((_2640 - _2642) >> 1u) + _2642) >> 9u) * 1001u; float _2656 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2429]), spvFMul(0.001000000047497451305389404296875, float(_2640 - _2647))), 2.0), as_type(cbuf_28.data[_2429])); float _2665 = spvFMul(as_type(cbuf_28.data[_2432]), as_type(_2606)); _2674 = as_type(spvFMul(_2333, _2665)); _2675 = as_type(spvFMul(as_type(_2421), _2665)); _2676 = as_type(spvFMul(as_type(_2604), _2630)); _2677 = as_type(spvFMul(_2331, _2656)); _2678 = as_type(spvFMul(_2325, _2656)); _2679 = as_type(spvFMul(_2327, _2665)); _2680 = as_type(spvFMul(_2329, _2630)); _2681 = as_type(spvFMul(as_type(_2605), _2630)); _2682 = as_type(spvFMul(_2338, _2656)); _2683 = as_type(_2665); _2684 = _2647 > _2640; _2685 = as_type(_2630); } else { _2674 = _2597; _2675 = _2598; _2676 = _2599; _2677 = _2600; _2678 = _2601; _2679 = _2602; _2680 = _2603; _2681 = _2604; _2682 = _2605; _2683 = _2606; _2684 = _2612; _2685 = _2615; } bool _2687 = _2610 && (!_2613); bool _2689; if (_2687) { _2689 = 3u == _2685; } else { _2689 = _2684; } uint _2940; uint _2941; uint _2942; uint _2943; uint _2944; uint _2945; uint _2946; uint _2947; uint _2948; if (_2687) { bool _2690 = _2687 && _2689; uint _2692; if (_2690) { _2692 = _287 + _1965; } else { _2692 = _2685; } uint _2751; uint _2752; uint _2753; uint _2754; uint _2755; uint _2756; uint _2757; uint _2758; uint _2759; uint _2760; bool _2761; uint _2762; if (_2690) { uint _2694 = (spvMulExtended(_2692, 98685563u))._m1; float _2707 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2432]), spvFMul(0.001000000047497451305389404296875, float(_2692 - (((((_2692 - _2694) >> 1u) + _2694) >> 9u) * 1001u)))), 2.0), as_type(cbuf_28.data[_2432])); uint _2717 = _287 + _1980; uint _2719 = (spvMulExtended(_2717, 98685563u))._m1; uint _2724 = ((((_2717 - _2719) >> 1u) + _2719) >> 9u) * 1001u; float _2733 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2429]), spvFMul(0.001000000047497451305389404296875, float(_2717 - _2724))), 2.0), as_type(cbuf_28.data[_2429])); float _2742 = spvFMul(as_type(cbuf_28.data[_2426]), as_type(_2683)); _2751 = as_type(spvFMul(_2329, _2707)); _2752 = as_type(spvFMul(as_type(_2682), _2707)); _2753 = as_type(spvFMul(_2327, _2742)); _2754 = as_type(spvFMul(_2331, _2733)); _2755 = as_type(spvFMul(_2325, _2733)); _2756 = as_type(spvFMul(as_type(_2681), _2707)); _2757 = as_type(spvFMul(_2333, _2742)); _2758 = as_type(spvFMul(as_type(_2421), _2742)); _2759 = as_type(spvFMul(_2338, _2733)); _2760 = as_type(_2742); _2761 = _2724 > _2717; _2762 = as_type(_2707); } else { _2751 = _2674; _2752 = _2675; _2753 = _2676; _2754 = _2677; _2755 = _2678; _2756 = _2679; _2757 = _2680; _2758 = _2681; _2759 = _2682; _2760 = _2683; _2761 = _2689; _2762 = _2692; } bool _2764 = _2687 && (!_2690); bool _2766; if (_2764) { _2766 = 4u == _2762; } else { _2766 = _2761; } uint _2931; uint _2932; uint _2933; uint _2934; uint _2935; uint _2936; uint _2937; uint _2938; uint _2939; if (_2764) { bool _2767 = _2764 && _2766; uint _2769; if (_2767) { _2769 = _287 + _1965; } else { _2769 = _2762; } uint _2828; uint _2829; uint _2830; uint _2831; uint _2832; uint _2833; uint _2834; uint _2835; uint _2836; uint _2837; bool _2838; uint _2839; if (_2767) { uint _2771 = (spvMulExtended(_2769, 98685563u))._m1; float _2784 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2426]), spvFMul(0.001000000047497451305389404296875, float(_2769 - (((((_2769 - _2771) >> 1u) + _2771) >> 9u) * 1001u)))), 2.0), as_type(cbuf_28.data[_2426])); uint _2794 = _287 + _1980; uint _2796 = (spvMulExtended(_2794, 98685563u))._m1; uint _2801 = ((((_2794 - _2796) >> 1u) + _2796) >> 9u) * 1001u; float _2810 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2432]), spvFMul(0.001000000047497451305389404296875, float(_2794 - _2801))), 2.0), as_type(cbuf_28.data[_2432])); float _2819 = spvFMul(as_type(cbuf_28.data[_2429]), as_type(_2760)); _2828 = as_type(spvFMul(_2331, _2810)); _2829 = as_type(spvFMul(_2338, _2810)); _2830 = as_type(spvFMul(as_type(_2758), _2784)); _2831 = as_type(spvFMul(_2333, _2819)); _2832 = as_type(spvFMul(_2327, _2819)); _2833 = as_type(spvFMul(_2325, _2810)); _2834 = as_type(spvFMul(_2329, _2784)); _2835 = as_type(spvFMul(as_type(_2759), _2784)); _2836 = as_type(spvFMul(as_type(_2421), _2819)); _2837 = as_type(_2819); _2838 = _2801 > _2794; _2839 = as_type(_2784); } else { _2828 = _2751; _2829 = _2752; _2830 = _2753; _2831 = _2754; _2832 = _2755; _2833 = _2756; _2834 = _2757; _2835 = _2758; _2836 = _2759; _2837 = _2760; _2838 = _2766; _2839 = _2769; } bool _2841 = _2764 && (!_2767); bool _2843; if (_2841) { _2843 = 5u == _2839; } else { _2843 = _2838; } uint _2922; uint _2923; uint _2924; uint _2925; uint _2926; uint _2927; uint _2928; uint _2929; uint _2930; if (_2841) { bool _2844 = _2841 && _2843; uint _2846; if (_2844) { _2846 = _287 + _1965; } else { _2846 = _2839; } uint _2902; uint _2903; uint _2904; uint _2905; uint _2906; uint _2907; uint _2908; uint _2909; uint _2910; if (_2844) { uint _2848 = (spvMulExtended(_2846, 98685563u))._m1; float _2861 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2426]), spvFMul(0.001000000047497451305389404296875, float(_2846 - (((((_2846 - _2848) >> 1u) + _2848) >> 9u) * 1001u)))), 2.0), as_type(cbuf_28.data[_2426])); uint _2870 = _287 + _1980; uint _2872 = (spvMulExtended(_2870, 98685563u))._m1; float _2885 = spvFSub(spvFMul(spvFMul(as_type(cbuf_28.data[_2429]), spvFMul(0.001000000047497451305389404296875, float(_2870 - (((((_2870 - _2872) >> 1u) + _2872) >> 9u) * 1001u)))), 2.0), as_type(cbuf_28.data[_2429])); float _2894 = spvFMul(as_type(cbuf_28.data[_2432]), as_type(_2837)); _2902 = as_type(spvFMul(_2333, _2894)); _2903 = as_type(spvFMul(as_type(_2421), _2894)); _2904 = as_type(spvFMul(as_type(_2835), _2861)); _2905 = as_type(spvFMul(_2331, _2885)); _2906 = as_type(spvFMul(_2325, _2885)); _2907 = as_type(spvFMul(_2327, _2894)); _2908 = as_type(spvFMul(as_type(_2836), _2861)); _2909 = as_type(spvFMul(_2338, _2885)); _2910 = as_type(spvFMul(_2329, _2861)); } else { _2902 = _2828; _2903 = _2829; _2904 = _2830; _2905 = _2831; _2906 = _2832; _2907 = _2833; _2908 = _2835; _2909 = _2836; _2910 = _2834; } bool _2912 = _2841 && (!_2844); uint _2913; if (_2912) { _2913 = 0u; } else { _2913 = _2908; } uint _2914; uint _2915; uint _2916; uint _2917; uint _2918; uint _2919; uint _2920; uint _2921; if (_2912) { _2914 = 0u; _2915 = 0u; _2916 = 0u; _2917 = 0u; _2918 = 0u; _2919 = 0u; _2920 = 0u; _2921 = 0u; } else { _2914 = _2902; _2915 = _2903; _2916 = _2904; _2917 = _2905; _2918 = _2906; _2919 = _2907; _2920 = _2909; _2921 = _2910; } _2922 = _2914; _2923 = _2915; _2924 = _2916; _2925 = _2917; _2926 = _2918; _2927 = _2919; _2928 = _2913; _2929 = _2920; _2930 = _2921; } else { _2922 = _2828; _2923 = _2829; _2924 = _2830; _2925 = _2831; _2926 = _2832; _2927 = _2833; _2928 = _2835; _2929 = _2836; _2930 = _2834; } _2931 = _2922; _2932 = _2923; _2933 = _2924; _2934 = _2925; _2935 = _2926; _2936 = _2927; _2937 = _2928; _2938 = _2929; _2939 = _2930; } else { _2931 = _2751; _2932 = _2752; _2933 = _2753; _2934 = _2754; _2935 = _2755; _2936 = _2756; _2937 = _2758; _2938 = _2759; _2939 = _2757; } _2940 = _2931; _2941 = _2932; _2942 = _2933; _2943 = _2934; _2944 = _2935; _2945 = _2936; _2946 = _2937; _2947 = _2938; _2948 = _2939; } else { _2940 = _2674; _2941 = _2675; _2942 = _2676; _2943 = _2677; _2944 = _2678; _2945 = _2679; _2946 = _2681; _2947 = _2682; _2948 = _2680; } _2949 = _2940; _2950 = _2941; _2951 = _2942; _2952 = _2943; _2953 = _2944; _2954 = _2945; _2955 = _2946; _2956 = _2947; _2957 = _2948; } else { _2949 = _2597; _2950 = _2598; _2951 = _2599; _2952 = _2600; _2953 = _2601; _2954 = _2602; _2955 = _2604; _2956 = _2605; _2957 = _2603; } _2958 = _2955; _2959 = _2957; _2960 = _2951; _2961 = _2956; _2962 = _2950; _2963 = _2952; _2964 = _2949; _2965 = _2953; _2966 = _2954; } else { _2958 = _2527; _2959 = _2526; _2960 = _2522; _2961 = _2528; _2962 = _2521; _2963 = _2523; _2964 = _2520; _2965 = _2524; _2966 = _2525; } _2985 = _2964; _2986 = _2962; _2987 = as_type(spvFAdd(as_type(_2960), spvFAdd(as_type(_2966), as_type(_2965)))); _2988 = as_type(spvFAdd(as_type(_2958), spvFAdd(as_type(_2962), as_type(_2961)))); _2989 = as_type(spvFAdd(as_type(_2959), spvFAdd(as_type(_2964), as_type(_2963)))); } else { _2985 = _2262; _2986 = _2181; _2987 = _2420; _2988 = _2418; _2989 = _2419; } uint _3025; uint _3026; uint _3027; if (!_2424) { uint _2996 = 10u + buf1_dword_off; bool _2999 = cbuf_28.data[_307] == 4u; uint _3010; uint _3011; uint _3012; if (_2999) { _3010 = as_type(spvFMul(as_type(cbuf_28.data[_2996]), _2315)); _3011 = as_type(spvFMul(as_type(cbuf_28.data[_2996]), _2320)); _3012 = as_type(spvFMul(as_type(cbuf_28.data[_2996]), _2318)); } else { _3010 = _2987; _3011 = _2988; _3012 = _2989; } uint _3022; uint _3023; uint _3024; if (!_2999) { _3022 = as_type(spvFMul(as_type(cbuf_28.data[8u + buf1_dword_off]), fma(as_type(cbuf_28.data[_1990]), as_type(_1865), fma(as_type(cbuf_28.data[_1994]), as_type(_1869), spvFMul(as_type(cbuf_28.data[_1998]), as_type(_1873)))))); _3023 = as_type(spvFMul(as_type(cbuf_28.data[_2996]), fma(as_type(cbuf_28.data[_2022]), as_type(_1865), fma(as_type(cbuf_28.data[_2026]), as_type(_1869), spvFMul(as_type(cbuf_28.data[_2030]), as_type(_1873)))))); _3024 = as_type(spvFMul(as_type(cbuf_28.data[9u + buf1_dword_off]), fma(as_type(cbuf_28.data[_2006]), as_type(_1865), fma(as_type(cbuf_28.data[_2010]), as_type(_1869), spvFMul(as_type(cbuf_28.data[_2014]), as_type(_1873)))))); } else { _3022 = _3010; _3023 = _3011; _3024 = _3012; } _3025 = _3022; _3026 = _3023; _3027 = _3024; } else { _3025 = _2987; _3026 = _2988; _3027 = _2989; } _3028 = _2985; _3029 = _2986; _3030 = _3025; _3031 = _3026; _3032 = _3027; } else { _3028 = _2262; _3029 = _2181; _3030 = _2420; _3031 = _2418; _3032 = _2419; } uint _3033 = _287 + _1907; uint _3035 = (spvMulExtended(_3033, 1561286381u))._m1; uint _3062; uint _3063; uint _3064; if (!(cbuf_28.data[_307] == 1u)) { uint _3046 = 11u + buf1_dword_off; float _3052 = fma(spvFMul(0.00133333331905305385589599609375, float(_3033 - (((((_3033 - _3035) >> 1u) + _3035) >> 9u) * 751u))), spvFSub(1.0, as_type(cbuf_28.data[_3046])), as_type(cbuf_28.data[_3046])); _3062 = as_type(spvFMul(as_type(_3030), _3052)); _3063 = as_type(spvFMul(as_type(_3031), _3052)); _3064 = as_type(spvFMul(as_type(_3032), _3052)); } else { _3062 = _3030; _3063 = _3031; _3064 = _3032; } uint _3093; uint _3094; uint _3095; if (cbuf_28.data[_307] == 4u) { uint _3066 = _287 + _1965; uint _3067 = 9u + buf1_dword_off; float _3083 = fma(spvFMul(fast::max(as_type(cbuf_28.data[_3067]), as_type(cbuf_28.data[_3067])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_3066 - (((spvMulExtended(_3066, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_28.data[_3067])); _3093 = as_type(fma(_2325, _3083, as_type(_3062))); _3094 = as_type(fma(_2338, _3083, as_type(_3063))); _3095 = as_type(fma(_2331, _3083, as_type(_3064))); } else { _3093 = _3062; _3094 = _3063; _3095 = _3064; } uint _3096 = _2075 + (_2297 ^ _2298); uint _3104 = _2169 + ((((_3096 << 4u) + 2911926141u) ^ (_3096 + 2654435769u)) ^ ((_3096 >> 5u) + 2123724318u)); uint _3111 = 16u + buf1_dword_off; uint _3115 = 17u + buf1_dword_off; uint _3119 = 18u + buf1_dword_off; uint _3122 = _3096 + ((_3104 ^ ((_3104 << 4u) + 2738958700u)) ^ ((_3104 >> 5u) + 3355524772u)); uint _3146 = _287 + _1980; uint _3147 = _287 + _1965; uint _3150 = 28u + buf1_dword_off; uint _3154 = 29u + buf1_dword_off; uint _3158 = 30u + buf1_dword_off; uint _3179 = _287 + _3096; uint _3180 = _287 + _3104; uint _3181 = _287 + _1936; uint _3219 = _3104 + ((_3122 ^ ((_3122 << 4u) + 2911926141u)) ^ ((_3122 >> 5u) + 2123724318u)); float _3267 = spvFSub(as_type(cbuf_28.data[32u + buf1_dword_off]), as_type(cbuf_28.data[_3150])); float _3268 = spvFMul(0.001000000047497451305389404296875, float(_3179 - (((spvMulExtended(_3179, 274877907u))._m1 >> 6u) * 1000u))); float _3274 = spvFSub(as_type(cbuf_28.data[33u + buf1_dword_off]), as_type(cbuf_28.data[_3154])); float _3275 = spvFMul(0.001000000047497451305389404296875, float(_3180 - (((spvMulExtended(_3180, 274877907u))._m1 >> 6u) * 1000u))); float _3281 = spvFSub(as_type(cbuf_28.data[34u + buf1_dword_off]), as_type(cbuf_28.data[_3158])); float _3282 = spvFMul(0.001000000047497451305389404296875, float(_3181 - (((spvMulExtended(_3181, 274877907u))._m1 >> 6u) * 1000u))); uint _3287 = 140u + buf1_dword_off; uint _3292 = as_type(spvFAdd(as_type(cbuf_28.data[167u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_28.data[20u + buf1_dword_off]), as_type(cbuf_28.data[_3111])), spvFMul(0.001000000047497451305389404296875, float(_3146 - (((spvMulExtended(_3146, 274877907u))._m1 >> 6u) * 1000u))), spvFAdd(as_type(_3093), spvFAdd(as_type(cbuf_28.data[12u + buf1_dword_off]), as_type(cbuf_28.data[_3111])))))); uint _3295 = as_type(spvFAdd(as_type(cbuf_28.data[171u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_28.data[21u + buf1_dword_off]), as_type(cbuf_28.data[_3115])), spvFMul(0.001000000047497451305389404296875, float(_3033 - (((spvMulExtended(_3033, 274877907u))._m1 >> 6u) * 1000u))), spvFAdd(as_type(cbuf_28.data[_3115]), spvFAdd(as_type(cbuf_28.data[13u + buf1_dword_off]), as_type(_3095)))))); uint _3298 = as_type(spvFAdd(as_type(cbuf_28.data[175u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_28.data[22u + buf1_dword_off]), as_type(cbuf_28.data[_3119])), spvFMul(0.001000000047497451305389404296875, float(_3147 - (((spvMulExtended(_3147, 274877907u))._m1 >> 6u) * 1000u))), spvFAdd(as_type(cbuf_28.data[_3119]), spvFAdd(as_type(cbuf_28.data[14u + buf1_dword_off]), as_type(_3094)))))); float _3300 = fma(_3267, _3268, spvFAdd(as_type(cbuf_28.data[24u + buf1_dword_off]), as_type(cbuf_28.data[_3150]))); float _3302 = fma(_3274, _3275, spvFAdd(as_type(cbuf_28.data[25u + buf1_dword_off]), as_type(cbuf_28.data[_3154]))); float _3304 = fma(_3281, _3282, spvFAdd(as_type(cbuf_28.data[26u + buf1_dword_off]), as_type(cbuf_28.data[_3158]))); uint _3317; uint _3318; uint _3319; if (cbuf_28.data[3u + buf1_dword_off] == 1u) { float _3310 = sqrt(fma(_3304, _3304, fma(_3300, _3300, spvFMul(_3302, _3302)))); _3317 = as_type(spvFMul(_2315, _3310)); _3318 = as_type(spvFMul(_2318, _3310)); _3319 = as_type(spvFMul(_2320, _3310)); } else { _3317 = as_type(_3300); _3318 = as_type(_3302); _3319 = as_type(_3304); } float _3332 = rsqrt(fma(as_type(_3317), as_type(_3317), fma(as_type(_3318), as_type(_3318), fma(as_type(_3319), as_type(_3319), spvFMul(as_type(cbuf_28.data[_3287]), as_type(cbuf_28.data[_3287])))))); float _3343 = fma(_3267, _3268, as_type(cbuf_28.data[_3150])); float _3345 = fma(_3274, _3275, as_type(cbuf_28.data[_3154])); float _3347 = fma(_3281, _3282, as_type(cbuf_28.data[_3158])); bool _3365 = cbuf_24.data[271u + (extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u)] == 0u; uint _3376; uint _3377; uint _3378; uint _3379; if (_3365) { _3376 = cbuf_28.data[_3287]; _3377 = as_type(spvFAdd(as_type(_3319), _3347)); _3378 = as_type(spvFAdd(as_type(_3318), _3345)); _3379 = as_type(spvFAdd(as_type(_3317), _3343)); } else { _3376 = as_type(_2190); _3377 = _3028; _3378 = as_type(_2315); _3379 = _3029; } uint _3380; uint _3381; uint _3382; uint _3383; if (!_3365) { _3380 = 0u; _3381 = 0u; _3382 = 0u; _3383 = 0u; } else { _3380 = _3376; _3381 = _3377; _3382 = _3378; _3383 = _3379; } uint _3389 = 129u + buf1_dword_off; uint _3401 = 112u + buf1_dword_off; uint _3405 = 113u + buf1_dword_off; uint _3409 = 114u + buf1_dword_off; uint _3413 = 115u + buf1_dword_off; uint _3433 = 180u + buf1_dword_off; uint _3441 = 182u + buf1_dword_off; uint _3448 = _3122 + ((((_3219 << 4u) + 2738958700u) ^ (_3219 + 2654435769u)) ^ ((_3219 >> 5u) + 3355524772u)); uint _3456 = _3219 + ((((_3448 << 4u) + 2911926141u) ^ (_3448 + 2654435769u)) ^ ((_3448 >> 5u) + 2123724318u)); float _3471 = spvFMul(0.001000000047497451305389404296875, float(_3448 - (((spvMulExtended(_3448, 274877907u))._m1 >> 6u) * 1000u))); float _3478 = spvFMul(as_type(cbuf_28.data[131u + buf1_dword_off]), fast::max(0.0, fma(spvFSub(as_type(cbuf_28.data[130u + buf1_dword_off]), as_type(cbuf_28.data[_3389])), _3471, spvFAdd(as_type(cbuf_28.data[128u + buf1_dword_off]), as_type(cbuf_28.data[_3389]))))); uint2 _3531 = uint2(0u, _320); uint _3540 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_3531.x * 1024u)) + _3531.y) + buf2_off) >> 2u], _3448 - _343, memory_order_relaxed); uint _3545 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[9u], 1, memory_order_relaxed); uint2 _3546 = uint2(0u, _320); uint2 _3557 = uint2(0u, _320 + 4u); uint _3566 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_3557.x * 1024u)) + _3557.y) + buf2_off) >> 2u], _3456 - ssbo_16.data[(((4u + (_3546.x * 1024u)) + _3546.y) + buf2_off) >> 2u], memory_order_relaxed); uint2 _3567 = uint2(0u, _320); uint2 _3578 = uint2(0u, _320 + 8u); uint _3587 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_3578.x * 1024u)) + _3578.y) + buf2_off) >> 2u], _2076 - ssbo_16.data[(((8u + (_3567.x * 1024u)) + _3567.y) + buf2_off) >> 2u], memory_order_relaxed); uint2 _3588 = uint2(0u, _320); uint2 _3599 = uint2(0u, _320 + 12u); uint _3608 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_3599.x * 1024u)) + _3599.y) + buf2_off) >> 2u], _2170 - ssbo_16.data[(((12u + (_3588.x * 1024u)) + _3588.y) + buf2_off) >> 2u], memory_order_relaxed); uint4 _3609 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3614 = ((0u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3614 + 0u] = _3609.x; ssbo_20.data[_3614 + 1u] = _3609.y; ssbo_20.data[_3614 + 2u] = _3609.z; ssbo_20.data[_3614 + 3u] = _3609.w; uint4 _3627 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3631 = ((16u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3631 + 0u] = _3627.x; ssbo_20.data[_3631 + 1u] = _3627.y; ssbo_20.data[_3631 + 2u] = _3627.z; ssbo_20.data[_3631 + 3u] = _3627.w; uint4 _3644 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3648 = ((32u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3648 + 0u] = _3644.x; ssbo_20.data[_3648 + 1u] = _3644.y; ssbo_20.data[_3648 + 2u] = _3644.z; ssbo_20.data[_3648 + 3u] = _3644.w; uint4 _3661 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3666 = ((48u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3666 + 0u] = _3661.x; ssbo_20.data[_3666 + 1u] = _3661.y; ssbo_20.data[_3666 + 2u] = _3661.z; ssbo_20.data[_3666 + 3u] = _3661.w; uint4 _3679 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3684 = ((64u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3684 + 0u] = _3679.x; ssbo_20.data[_3684 + 1u] = _3679.y; ssbo_20.data[_3684 + 2u] = _3679.z; ssbo_20.data[_3684 + 3u] = _3679.w; uint4 _3697 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3702 = ((80u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3702 + 0u] = _3697.x; ssbo_20.data[_3702 + 1u] = _3697.y; ssbo_20.data[_3702 + 2u] = _3697.z; ssbo_20.data[_3702 + 3u] = _3697.w; uint4 _3715 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3720 = ((96u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3720 + 0u] = _3715.x; ssbo_20.data[_3720 + 1u] = _3715.y; ssbo_20.data[_3720 + 2u] = _3715.z; ssbo_20.data[_3720 + 3u] = _3715.w; uint4 _3733 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3737 = ((112u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3737 + 0u] = _3733.x; ssbo_20.data[_3737 + 1u] = _3733.y; ssbo_20.data[_3737 + 2u] = _3733.z; ssbo_20.data[_3737 + 3u] = _3733.w; uint4 _3750 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3754 = ((128u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3754 + 0u] = _3750.x; ssbo_20.data[_3754 + 1u] = _3750.y; ssbo_20.data[_3754 + 2u] = _3750.z; ssbo_20.data[_3754 + 3u] = _3750.w; uint4 _3767 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3772 = ((144u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3772 + 0u] = _3767.x; ssbo_20.data[_3772 + 1u] = _3767.y; ssbo_20.data[_3772 + 2u] = _3767.z; ssbo_20.data[_3772 + 3u] = _3767.w; uint4 _3785 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3790 = ((160u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3790 + 0u] = _3785.x; ssbo_20.data[_3790 + 1u] = _3785.y; ssbo_20.data[_3790 + 2u] = _3785.z; ssbo_20.data[_3790 + 3u] = _3785.w; uint4 _3803 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3808 = ((176u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3808 + 0u] = _3803.x; ssbo_20.data[_3808 + 1u] = _3803.y; ssbo_20.data[_3808 + 2u] = _3803.z; ssbo_20.data[_3808 + 3u] = _3803.w; uint4 _3821 = uint4(_3292, _3295, _3298, cbuf_28.data[_2302]); uint _3826 = ((192u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3826 + 0u] = _3821.x; ssbo_20.data[_3826 + 1u] = _3821.y; ssbo_20.data[_3826 + 2u] = _3821.z; ssbo_20.data[_3826 + 3u] = _3821.w; uint4 _3839 = uint4(_3383, _3382, _3381, _3380); uint _3844 = ((208u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3844 + 0u] = _3839.x; ssbo_20.data[_3844 + 1u] = _3839.y; ssbo_20.data[_3844 + 2u] = _3839.z; ssbo_20.data[_3844 + 3u] = _3839.w; uint4 _3858 = uint4(as_type(spvFMul(as_type(_3317), _3332)), as_type(spvFMul(as_type(_3318), _3332)), as_type(spvFMul(as_type(_3319), _3332)), 1065353216u); uint _3863 = ((224u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3863 + 0u] = _3858.x; ssbo_20.data[_3863 + 1u] = _3858.y; ssbo_20.data[_3863 + 2u] = _3858.z; ssbo_20.data[_3863 + 3u] = _3858.w; uint4 _3877 = uint4(as_type(_3478), as_type(_3478), 0u, 0u); uint _3882 = ((240u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3882 + 0u] = _3877.x; ssbo_20.data[_3882 + 1u] = _3877.y; ssbo_20.data[_3882 + 2u] = _3877.z; ssbo_20.data[_3882 + 3u] = _3877.w; uint4 _3896 = uint4(1006648320u, 1006648320u, as_type(half2(float2(_3343, 0.0))) | (as_type(half2(float2(_3345, 0.0))) << 16u), as_type(half2(float2(_3347, 0.0))) | (as_type(half2(float2(as_type(cbuf_28.data[_3287]), 0.0))) << 16u)); uint _3901 = ((256u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3901 + 0u] = _3896.x; ssbo_20.data[_3901 + 1u] = _3896.y; ssbo_20.data[_3901 + 2u] = _3896.z; ssbo_20.data[_3901 + 3u] = _3896.w; uint4 _3914 = uint4(as_type(half2(float2(fma(_3471, spvFSub(as_type(cbuf_28.data[116u + buf1_dword_off]), as_type(cbuf_28.data[_3401])), as_type(cbuf_28.data[_3401])), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_28.data[117u + buf1_dword_off]), as_type(cbuf_28.data[_3405])), spvFMul(0.001000000047497451305389404296875, float(_3456 - (((spvMulExtended(_3456, 274877907u))._m1 >> 6u) * 1000u))), as_type(cbuf_28.data[_3405])), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_28.data[118u + buf1_dword_off]), as_type(cbuf_28.data[_3409])), spvFMul(0.001000000047497451305389404296875, float(_2076 - (_2262 * 1000u))), as_type(cbuf_28.data[_3409])), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_28.data[119u + buf1_dword_off]), as_type(cbuf_28.data[_3413])), spvFMul(0.001000000047497451305389404296875, float(_2170 - (((spvMulExtended(_2170, 274877907u))._m1 >> 6u) * 1000u))), as_type(cbuf_28.data[_3413])), 0.0))) << 16u), 0u, 0u); uint _3919 = ((272u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3919 + 0u] = _3914.x; ssbo_20.data[_3919 + 1u] = _3914.y; ssbo_20.data[_3919 + 2u] = _3914.z; ssbo_20.data[_3919 + 3u] = _3914.w; uint4 _3932 = uint4(as_type(fma(_3471, spvFSub(as_type(cbuf_28.data[181u + buf1_dword_off]), as_type(cbuf_28.data[_3433])), as_type(cbuf_28.data[_3433]))), as_type(fma(spvFSub(as_type(cbuf_28.data[183u + buf1_dword_off]), as_type(cbuf_28.data[_3441])), _3471, as_type(cbuf_28.data[_3441]))), 0u, 0u); uint _3937 = ((288u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3937 + 0u] = _3932.x; ssbo_20.data[_3937 + 1u] = _3932.y; ssbo_20.data[_3937 + 2u] = _3932.z; ssbo_20.data[_3937 + 3u] = _3932.w; uint4 _3950 = uint4(0u); uint _3955 = ((304u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3955 + 0u] = _3950.x; ssbo_20.data[_3955 + 1u] = _3950.y; ssbo_20.data[_3955 + 2u] = _3950.z; ssbo_20.data[_3955 + 3u] = _3950.w; uint4 _3968 = uint4(0u); uint _3973 = ((320u + (_3545 * 336u)) + buf5_off) >> 2u; ssbo_20.data[_3973 + 0u] = _3968.x; ssbo_20.data[_3973 + 1u] = _3968.y; ssbo_20.data[_3973 + 2u] = _3968.z; ssbo_20.data[_3973 + 3u] = _3968.w; } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x42f2a521 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wunused-variable" #include #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[1]; }; struct cs_cbuf_block_f32_1 { uint data[10752]; }; struct cs_cbuf_block_f32_2 { uint data[276]; }; struct cs_cbuf_block_f32_3 { uint data[872]; }; constant uint _1241 = {}; constant uint _1242 = {}; constant uint _1243 = {}; constant uint _1244 = {}; constant uint _1245 = {}; constant uint _1246 = {}; constant uint _1247 = {}; constant uint _1248 = {}; constant uint _1249 = {}; constant uint _1250 = {}; constant uint _1251 = {}; constant uint _1252 = {}; constant uint _1253 = {}; constant uint _1254 = {}; constant uint _1255 = {}; constant uint _1256 = {}; constant uint _1257 = {}; constant uint _1258 = {}; constant uint _1259 = {}; constant uint _1260 = {}; constant uint _1261 = {}; constant uint _1262 = {}; constant uint _1263 = {}; constant uint _1264 = {}; constant uint _1265 = {}; constant uint _1266 = {}; constant uint _1267 = {}; constant uint _1268 = {}; kernel void main0(constant AuxData& push_data [[buffer(8)]], device cs_cbuf_block_f32& ssbo_0 [[buffer(9)]], constant cs_cbuf_block_f32_1& cbuf_44 [[buffer(10)]], constant cs_cbuf_block_f32_2& cbuf_52 [[buffer(11)]], constant cs_cbuf_block_f32_3& cbuf_56 [[buffer(12)]], device cs_cbuf_block_f32& ssbo_48 [[buffer(13)]], texture_buffer texbuf_32 [[texture(0)]], texture2d cs_img4 [[texture(1)]], texture2d cs_img36 [[texture(2)]], texture2d cs_img16 [[texture(3)]], texture2d cs_img24 [[texture(4)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf3_dword_off = buf3_off >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint _1306 = (gl_WorkGroupID.x << 4u) + gl_LocalInvocationID.x; bool _1316 = _1306 < as_type(float4(as_type(texbuf_32.read(uint(((0u << extract_bits(push_data.buf_offsets0[1u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[1u], 8u, 6u))))).x, 0.0, 0.0, 0.0).x); if (!_1316) { } if (_1316) { if (!_1316) { } uint _1320 = atomic_fetch_sub_explicit((device atomic_uint*)&ssbo_0.data[8u], 1, memory_order_relaxed); uint _1322 = (_1320 - 0u) - 1u; uint _1327 = ((0u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1341 = uint4(cbuf_44.data[_1327 + 0u], cbuf_44.data[_1327 + 1u], cbuf_44.data[_1327 + 2u], cbuf_44.data[_1327 + 3u]); uint _1342 = _1341.x; uint _1343 = _1341.y; uint _1344 = _1341.z; uint _1345 = _1341.w; uint _1349 = ((16u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1362 = uint4(cbuf_44.data[_1349 + 0u], cbuf_44.data[_1349 + 1u], cbuf_44.data[_1349 + 2u], cbuf_44.data[_1349 + 3u]); uint _1363 = _1362.x; uint _1364 = _1362.y; uint _1365 = _1362.z; uint _1370 = ((32u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1383 = uint4(cbuf_44.data[_1370 + 0u], cbuf_44.data[_1370 + 1u], cbuf_44.data[_1370 + 2u], cbuf_44.data[_1370 + 3u]); uint _1384 = _1383.x; uint _1385 = _1383.y; uint _1386 = _1383.z; uint _1391 = ((48u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1404 = uint4(cbuf_44.data[_1391 + 0u], cbuf_44.data[_1391 + 1u], cbuf_44.data[_1391 + 2u], cbuf_44.data[_1391 + 3u]); uint _1405 = _1404.x; uint _1406 = _1404.y; uint _1407 = _1404.z; uint _1408 = _1404.w; uint _1413 = ((64u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1426 = uint4(cbuf_44.data[_1413 + 0u], cbuf_44.data[_1413 + 1u], cbuf_44.data[_1413 + 2u], cbuf_44.data[_1413 + 3u]); uint _1427 = _1426.x; uint _1428 = _1426.y; uint _1429 = _1426.z; uint _1434 = ((80u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1447 = uint4(cbuf_44.data[_1434 + 0u], cbuf_44.data[_1434 + 1u], cbuf_44.data[_1434 + 2u], cbuf_44.data[_1434 + 3u]); uint _1448 = _1447.x; uint _1449 = _1447.y; uint _1450 = _1447.z; uint _1455 = ((96u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1468 = uint4(cbuf_44.data[_1455 + 0u], cbuf_44.data[_1455 + 1u], cbuf_44.data[_1455 + 2u], cbuf_44.data[_1455 + 3u]); uint _1469 = _1468.x; uint _1470 = _1468.y; uint _1471 = _1468.z; uint _1472 = _1468.w; uint _1477 = ((112u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1490 = uint4(cbuf_44.data[_1477 + 0u], cbuf_44.data[_1477 + 1u], cbuf_44.data[_1477 + 2u], cbuf_44.data[_1477 + 3u]); uint _1491 = _1490.x; uint _1492 = _1490.y; uint _1493 = _1490.z; uint _1498 = ((128u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1511 = uint4(cbuf_44.data[_1498 + 0u], cbuf_44.data[_1498 + 1u], cbuf_44.data[_1498 + 2u], cbuf_44.data[_1498 + 3u]); uint _1512 = _1511.x; uint _1513 = _1511.y; uint _1514 = _1511.z; uint _1519 = ((144u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1532 = uint4(cbuf_44.data[_1519 + 0u], cbuf_44.data[_1519 + 1u], cbuf_44.data[_1519 + 2u], cbuf_44.data[_1519 + 3u]); uint _1533 = _1532.x; uint _1534 = _1532.y; uint _1535 = _1532.z; uint _1536 = _1532.w; uint _1541 = ((160u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1554 = uint4(cbuf_44.data[_1541 + 0u], cbuf_44.data[_1541 + 1u], cbuf_44.data[_1541 + 2u], cbuf_44.data[_1541 + 3u]); uint _1555 = _1554.x; uint _1556 = _1554.y; uint _1557 = _1554.z; uint _1562 = ((176u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1575 = uint4(cbuf_44.data[_1562 + 0u], cbuf_44.data[_1562 + 1u], cbuf_44.data[_1562 + 2u], cbuf_44.data[_1562 + 3u]); uint _1576 = _1575.x; uint _1577 = _1575.y; uint _1578 = _1575.z; uint _1583 = ((208u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1596 = uint4(cbuf_44.data[_1583 + 0u], cbuf_44.data[_1583 + 1u], cbuf_44.data[_1583 + 2u], cbuf_44.data[_1583 + 3u]); uint _1605 = ((224u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1618 = uint4(cbuf_44.data[_1605 + 0u], cbuf_44.data[_1605 + 1u], cbuf_44.data[_1605 + 2u], cbuf_44.data[_1605 + 3u]); uint _1619 = _1618.x; uint _1620 = _1618.y; uint _1621 = _1618.z; uint _1622 = _1618.w; uint _1627 = ((240u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1640 = uint4(cbuf_44.data[_1627 + 0u], cbuf_44.data[_1627 + 1u], cbuf_44.data[_1627 + 2u], cbuf_44.data[_1627 + 3u]); uint _1642 = _1640.y; uint _1649 = ((264u + (_1322 * 336u)) + buf1_off) >> 2u; uint2 _1656 = uint2(cbuf_44.data[_1649 + 0u], cbuf_44.data[_1649 + 1u]); uint _1657 = _1656.x; uint _1658 = _1656.y; uint _1663 = ((272u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1676 = uint4(cbuf_44.data[_1663 + 0u], cbuf_44.data[_1663 + 1u], cbuf_44.data[_1663 + 2u], cbuf_44.data[_1663 + 3u]); uint _1677 = _1676.x; uint _1678 = _1676.y; uint _1679 = _1676.z; uint _1680 = _1676.w; uint _1685 = ((288u + (_1322 * 336u)) + buf1_off) >> 2u; uint2 _1692 = uint2(cbuf_44.data[_1685 + 0u], cbuf_44.data[_1685 + 1u]); uint _1693 = _1692.x; uint _1699 = ((308u + (_1322 * 336u)) + buf1_off) >> 2u; uint _1717 = ((320u + (_1322 * 336u)) + buf1_off) >> 2u; uint4 _1730 = uint4(cbuf_44.data[_1717 + 0u], cbuf_44.data[_1717 + 1u], cbuf_44.data[_1717 + 2u], cbuf_44.data[_1717 + 3u]); uint _1731 = _1730.x; uint _1732 = _1730.y; uint _1733 = _1730.z; float _1737 = float(as_type(ushort(_1679))); uint _1738 = as_type(_1737); float _1748 = float(as_type(ushort(_1657))); float _1753 = float(as_type(ushort(_1657 >> 16u))); float _1757 = float(as_type(ushort(_1658))); float _1761 = float(as_type(ushort(_1658 >> 16u))); uint _1762 = 0u + buf2_dword_off; uint _1765 = 1u + buf2_dword_off; float _1770 = spvFAdd(as_type(cbuf_52.data[_1762]), as_type(_1640.z)); float _1776 = fast::clamp(spvFMul(_1770, 1.0 / as_type(_1642)), 0.0, 1.0); float _1793 = spvFSub(1.0, _1776); bool _1795 = cbuf_52.data[196u + buf2_dword_off] == 0u; uint _1885; uint _1886; uint _1887; uint _1888; uint _1889; uint _1890; uint _1891; uint _1892; uint _1893; uint _1894; uint _1895; uint _1896; uint _1897; if (_1795) { uint _1803 = uint(int(spvFMul(_1776, float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint4 _1821 = as_type(cs_img4.read(uint2(uint2(1u, _1803)), 0u)); uint4 _1829 = as_type(cs_img4.read(uint2(uint2(2u, _1803)), 0u)); uint4 _1837 = as_type(cs_img4.read(uint2(uint2(3u, _1803)), 0u)); float _1878 = spvFMul(1.44269502162933349609375, spvFMul(as_type(cbuf_52.data[_1762]), -as_type(as_type(cs_img4.read(uint2(uint2(5u, _1803)), 0u)).x))); _1885 = as_type(fast::max(0.0, fma(_1793, float(as_type(ushort(_1678 >> 16u))), as_type(_1829.w)))); _1886 = as_type(fast::max(0.0, fma(_1793, float(as_type(ushort(_1678))), as_type(_1829.z)))); _1887 = as_type(fast::max(0.0, fma(_1793, float(as_type(ushort(_1677 >> 16u))), as_type(_1829.y)))); _1888 = as_type(fma(_1757, _1793, as_type(_1821.z))); _1889 = as_type(fma(_1753, _1793, as_type(_1821.y))); _1890 = as_type(fma(_1748, _1793, as_type(_1821.x))); _1891 = _1821.w; _1892 = _1837.y; _1893 = _1837.x; _1894 = as_type(fast::max(0.0, fma(_1793, float(as_type(ushort(_1677))), as_type(_1829.x)))); _1895 = as_type(_1878); _1896 = as_type(cs_img4.read(uint2(uint2(4u, _1803)), 0u)).x; _1897 = as_type(exp2(_1878)); } else { _1885 = _1254; _1886 = _1255; _1887 = _1256; _1888 = _1257; _1889 = _1258; _1890 = _1259; _1891 = _1260; _1892 = _1265; _1893 = _1266; _1894 = as_type(_1793); _1895 = as_type(_1776); _1896 = as_type(_1753); _1897 = as_type(_1748); } uint _2091; uint _2092; uint _2093; uint _2094; uint _2095; uint _2096; uint _2097; uint _2098; uint _2099; uint _2100; uint _2101; uint _2102; if (!_1795) { uint _1904 = uint(int(spvFMul(as_type(_1895), float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint _1908 = uint(int(spvFMul(as_type(_1895), float(int(cbuf_52.data[197u + buf2_dword_off]))))); uint4 _1912 = as_type(cs_img36.read(uint2(uint2(6u, _1908)), 0u)); uint _1913 = _1912.x; uint4 _1917 = as_type(cs_img4.read(uint2(uint2(1u, _1904)), 0u)); uint _1918 = _1917.x; uint _1919 = _1917.y; uint _1920 = _1917.z; uint _1921 = _1917.w; uint4 _1925 = as_type(cs_img36.read(uint2(uint2(1u, _1908)), 0u)); uint4 _1965 = as_type(cs_img4.read(uint2(uint2(2u, _1904)), 0u)); uint _1966 = _1965.x; uint _1967 = _1965.y; uint _1968 = _1965.z; uint _1969 = _1965.w; uint4 _1973 = as_type(cs_img36.read(uint2(uint2(2u, _1908)), 0u)); uint4 _2032 = as_type(cs_img4.read(uint2(uint2(3u, _1904)), 0u)); uint _2033 = _2032.x; uint _2034 = _2032.y; uint4 _2038 = as_type(cs_img36.read(uint2(uint2(3u, _1908)), 0u)); uint4 _2058 = as_type(cs_img4.read(uint2(uint2(4u, _1904)), 0u)); uint _2059 = _2058.x; _2091 = as_type(fast::max(0.0, fma(as_type(_1894), float(as_type(ushort(_1678 >> 16u))), fma(as_type(_1913), spvFSub(as_type(_1973.w), as_type(_1969)), as_type(_1969))))); _2092 = as_type(fast::max(0.0, fma(as_type(_1894), float(as_type(ushort(_1678))), fma(as_type(_1913), spvFSub(as_type(_1973.z), as_type(_1968)), as_type(_1968))))); _2093 = as_type(fast::max(0.0, fma(as_type(_1894), float(as_type(ushort(_1677 >> 16u))), fma(as_type(_1913), spvFSub(as_type(_1973.y), as_type(_1967)), as_type(_1967))))); _2094 = as_type(fast::max(0.0, fma(as_type(_1894), float(as_type(ushort(_1677))), fma(as_type(_1913), spvFSub(as_type(_1973.x), as_type(_1966)), as_type(_1966))))); _2095 = as_type(fma(_1757, as_type(_1894), fma(as_type(_1913), spvFSub(as_type(_1925.z), as_type(_1920)), as_type(_1920)))); _2096 = as_type(fma(as_type(_1896), as_type(_1894), fma(as_type(_1913), spvFSub(as_type(_1925.y), as_type(_1919)), as_type(_1919)))); _2097 = as_type(fma(as_type(_1897), as_type(_1894), fma(as_type(_1913), spvFSub(as_type(_1925.x), as_type(_1918)), as_type(_1918)))); _2098 = as_type(fma(as_type(_1913), spvFSub(as_type(_1925.w), as_type(_1921)), as_type(_1921))); _2099 = as_type(exp2(spvFMul(1.44269502162933349609375, spvFMul(as_type(cbuf_52.data[_1762]), -as_type(as_type(cs_img4.read(uint2(uint2(5u, _1904)), 0u)).x))))); _2100 = as_type(fma(as_type(_1913), spvFSub(as_type(as_type(cs_img36.read(uint2(uint2(4u, _1908)), 0u)).x), as_type(_2059)), as_type(_2059))); _2101 = as_type(fma(as_type(_1913), spvFSub(as_type(_2038.y), as_type(_2034)), as_type(_2034))); _2102 = as_type(fma(as_type(_1913), spvFSub(as_type(_2038.x), as_type(_2033)), as_type(_2033))); } else { _2091 = _1885; _2092 = _1886; _2093 = _1887; _2094 = _1894; _2095 = _1888; _2096 = _1889; _2097 = _1890; _2098 = _1891; _2099 = _1897; _2100 = _1896; _2101 = _1892; _2102 = _1893; } uint _2103 = uint(spvFMul(10.0, as_type(_1342))); uint _2104 = uint(spvFMul(10.0, as_type(_1343))); uint _2105 = uint(spvFMul(10.0, as_type(_1344))); uint _2133 = 264u + buf2_dword_off; uint _2140 = uint(fma(as_type(cbuf_52.data[_1765]), 10.0, float(_2103))); uint _2141 = uint(fma(as_type(cbuf_52.data[_1765]), 10.0, float((_1306 + _2103) + 7001u))); uint _2142 = uint(fma(as_type(cbuf_52.data[_1765]), 10.0, float(_2104))); uint _2143 = uint(fma(as_type(cbuf_52.data[_1765]), 10.0, float((_1306 + _2104) + 8001u))); uint _2144 = uint(fma(as_type(cbuf_52.data[_1765]), 10.0, float(_2105))); uint _2145 = uint(fma(as_type(cbuf_52.data[_1765]), 10.0, float((_1306 + _2105) + 7777u))); uint _2171 = ((spvMulExtended(_2145, 274877907u))._m1 >> 6u) * 1000u; float _2200 = spvFAdd(as_type(cbuf_52.data[265u + buf2_dword_off]), as_type(cbuf_52.data[_2133])); uint _2206 = 0u + buf3_dword_off; float _2211 = spvFMul(as_type(_1693), as_type(_2102)); float _2215 = float(_1306 + 1547u); float _2216 = sqrt(fma(as_type(_1342), as_type(_1342), spvFMul(as_type(_1344), as_type(_1344)))); float _2217 = float(_1306 + 1107u); float _2218 = float(_1306 + 253u); float _2221 = fma(spvFMul(0.001000000047497451305389404296875, float(_2140 - (((spvMulExtended(_2140, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, 0.0500000007450580596923828125); float _2224 = fma(_2200, spvFMul(0.001000000047497451305389404296875, float(_2141 - (((spvMulExtended(_2141, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_52.data[_2133])); float _2225 = fma(spvFMul(0.001000000047497451305389404296875, float(_2142 - (((spvMulExtended(_2142, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, 0.0500000007450580596923828125); float _2228 = fma(_2200, spvFMul(0.001000000047497451305389404296875, float(_2143 - (((spvMulExtended(_2143, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_52.data[_2133])); float _2229 = fma(-0.039999999105930328369140625, spvFMul(0.001000000047497451305389404296875, float(_2144 - (((spvMulExtended(_2144, 274877907u))._m1 >> 6u) * 1000u))), 0.0500000007450580596923828125); uint _2230 = as_type(_2229); float _2233 = fma(_2200, spvFMul(0.001000000047497451305389404296875, float(_2145 - _2171)), -as_type(cbuf_52.data[_2133])); uint _2234 = as_type(float(as_type(ushort(_1679 >> 16u)))); uint _2235 = as_type(float(as_type(ushort(_1680)))); uint _2236 = as_type(_1737); uint _6506; bool _2290; uint _2663; uint _2664; uint _2665; uint _2666; uint _2667; uint _2668; uint _2669; uint _2670; uint _2671; uint _2672; uint _2673; uint _2674; uint _2675; uint _6472; uint _6473; uint _6474; uint _6475; uint _6476; uint _6477; uint _6478; uint _6479; uint _6480; uint _6481; uint _6482; uint _6483; uint _6484; uint _6485; uint _6486; uint _6487; uint _6488; uint _6489; uint _6490; uint _6491; uint _6492; uint _6493; uint _6494; uint _6495; uint _6496; uint _6497; uint _6498; uint _6499; uint _6500; uint _6501; uint _6502; uint _6503; uint _6504; uint _6505; uint _6507; uint _6508; uint _6509; uint _6510; uint _6511; uint _6512; uint _6513; uint _6514; uint _6515; uint _6516; uint _6517; uint _6518; uint _6519; uint _6520; uint _6521; uint _6522; uint _6523; uint _6524; uint _6525; uint _6526; uint _6527; uint _6528; uint _6529; uint _6530; uint _6531; uint _2237; uint _2238; uint _2239; uint _2240; uint _2241; uint _2242; uint _2243; uint _2244; uint _2245; uint _2246; uint _2247; uint _2248; uint _2249; uint _2250 = 0u; uint _2251 = 0u; uint _2252 = 0u; uint _2253 = 0u; uint _2254 = 0u; uint _2255 = 0u; uint _2256 = _2235; uint _2257 = _2234; uint _2258 = _2236; uint _2259; uint _2260; uint _2261 = _2171; uint _2262; uint _2263; uint _2264; uint _2265 = _2171; uint _2266; uint _2267; uint _2268 = _2171; uint _2269; uint _2270; uint _2271 = _2171; uint _2272 = _2171; uint _2273 = _2171; uint _2274 = _2171; uint _2275; uint _2276; uint _2277 = _2171; uint _2278; uint _2279; uint _2280 = 1065353216u; uint _2281 = 0u; uint _2282 = _1738; uint _2283; bool _2284 = _1316; uint _2285 = 0u; for (;;) { if (int(cbuf_56.data[_2206]) <= int(_2285)) { bool _2288 = _2284 && (!_1316); if (!_2288) { _6507 = _2237; _6508 = _2238; _6509 = _2262; _6510 = _2239; _6511 = _2240; _6512 = _2241; _6513 = _2242; _6514 = _2243; _6515 = _2244; _6516 = _2245; _6517 = _2246; _6518 = _2247; _6519 = _2248; _6520 = _2249; _6521 = _2256; _6522 = _2257; _6523 = _2258; _6524 = _2250; _6525 = _2253; _6526 = _2251; _6527 = _2254; _6528 = _2252; _6529 = _2255; _6530 = _2280; _6531 = _2281; break; } else { _2290 = _2288; } } else { _2290 = _2284; } uint _2296 = ((0u + ((_2285 + 65u) * 16u)) + buf3_off) >> 2u; uint3 _2306 = uint3(cbuf_56.data[_2296 + 0u], cbuf_56.data[_2296 + 1u], cbuf_56.data[_2296 + 2u]); uint _2307 = _2306.x; uint _2308 = _2306.y; uint _2309 = _2306.z; uint _2315 = ((0u + ((_2285 + 57u) * 16u)) + buf3_off) >> 2u; bool _2318 = 0u == cbuf_56.data[_2315]; bool _2319 = _1316 && _2318; uint _2320; if (_2319) { _2320 = 1u; } else { _2320 = _2282; } uint _2321; uint _2322; uint _2323; if (_2319) { _2321 = 0u; _2322 = 0u; _2323 = 0u; } else { _2321 = _2278; _2322 = _2279; _2323 = _2283; } bool _2325 = _1316 && (!_2319); bool _2327; if (_2325) { _2327 = 1u == cbuf_56.data[_2315]; } else { _2327 = _2318; } uint _2676; uint _2677; uint _2678; if (_2325) { bool _2328 = _2325 && _2327; uint _2333; if (_2328) { _2333 = as_type(spvFSub(as_type(_2307), as_type(_1342))); } else { _2333 = _2323; } uint _2359; uint _2360; uint _2361; uint _2362; bool _2363; if (_2328) { float _2336 = spvFSub(as_type(_2308), as_type(_1343)); float _2339 = spvFSub(as_type(_2309), as_type(_1344)); bool _2355 = as_type(cbuf_56.data[((0u + ((_2285 + 73u) * 16u)) + buf3_off) >> 2u]) > sqrt(fma(as_type(_2333), as_type(_2333), fma(_2336, _2336, spvFMul(_2339, _2339)))); _2359 = _2309; _2360 = _2308; _2361 = _2307; _2362 = as_type(_2355 ? 1.4012984643248170709237295832899e-45 : 0.0); _2363 = _2355; } else { _2359 = _2321; _2360 = _2322; _2361 = _2333; _2362 = _2320; _2363 = _2327; } bool _2365 = _2325 && (!_2328); bool _2367; if (_2365) { _2367 = 2u == cbuf_56.data[_2315]; } else { _2367 = _2363; } uint _2647; uint _2648; uint _2649; uint _2650; uint _2651; uint _2652; uint _2653; uint _2654; uint _2655; uint _2656; uint _2657; uint _2658; uint _2659; uint _2660; uint _2661; uint _2662; if (_2365) { bool _2368 = _2365 && _2367; uint _2536; uint _2537; uint _2538; uint _2539; uint _2540; uint _2541; uint _2542; uint _2543; uint _2544; uint _2545; uint _2546; uint _2547; uint _2548; uint _2549; uint _2550; uint _2551; bool _2552; if (_2368) { uint _2369 = _2285 << 2u; uint _2375 = ((0u + ((_2369 + 105u) * 16u)) + buf3_off) >> 2u; uint3 _2385 = uint3(cbuf_56.data[_2375 + 0u], cbuf_56.data[_2375 + 1u], cbuf_56.data[_2375 + 2u]); uint _2386 = _2385.x; uint _2387 = _2385.y; uint _2388 = _2385.z; uint _2394 = ((0u + ((_2369 + 106u) * 16u)) + buf3_off) >> 2u; uint3 _2404 = uint3(cbuf_56.data[_2394 + 0u], cbuf_56.data[_2394 + 1u], cbuf_56.data[_2394 + 2u]); uint _2405 = _2404.x; uint _2406 = _2404.y; uint _2407 = _2404.z; uint _2413 = ((0u + ((_2369 + 107u) * 16u)) + buf3_off) >> 2u; uint3 _2423 = uint3(cbuf_56.data[_2413 + 0u], cbuf_56.data[_2413 + 1u], cbuf_56.data[_2413 + 2u]); uint _2424 = _2423.x; uint _2425 = _2423.y; uint _2426 = _2423.z; uint _2432 = ((0u + ((_2285 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _2442 = uint3(cbuf_56.data[_2432 + 0u], cbuf_56.data[_2432 + 1u], cbuf_56.data[_2432 + 2u]); uint _2443 = _2442.x; uint _2444 = _2442.y; uint _2445 = _2442.z; float _2450 = spvFMul(spvFAdd(as_type(_2307), as_type(_2443)), 0.5); float _2454 = spvFMul(spvFAdd(as_type(_2308), as_type(_2444)), 0.5); float _2458 = spvFMul(spvFAdd(as_type(_2309), as_type(_2445)), 0.5); float _2460 = spvFSub(as_type(_2443), _2450); float _2466 = spvFSub(as_type(_2444), _2454); float _2471 = spvFSub(as_type(_2445), _2458); float _2476 = spvFSub(as_type(_1342), _2450); float _2478 = spvFSub(as_type(_1343), _2454); float _2480 = spvFSub(as_type(_1344), _2458); bool _2489 = abs(fma(_2476, as_type(_2386), fma(_2478, as_type(_2387), spvFMul(as_type(_2388), _2480)))) > abs(_2460); bool _2490 = _2368 && _2489; uint _2491; if (_2490) { _2491 = 4294967295u; } else { _2491 = _2362; } bool _2493 = _2368 && (!_2490); uint _2497; if (_2493) { _2497 = as_type(spvFMul(as_type(_2407), _2480)); } else { _2497 = as_type(_2460); } uint _2528; bool _2529; if (_2493) { float _2502 = fma(_2476, as_type(_2405), fma(_2478, as_type(_2406), as_type(_2497))); bool _2506 = abs(_2502) > abs(_2466); bool _2507 = _2493 && _2506; uint _2508; if (_2507) { _2508 = 4294967295u; } else { _2508 = _2491; } bool _2510 = _2493 && (!_2507); uint _2514; if (_2510) { _2514 = as_type(spvFMul(as_type(_2426), _2480)); } else { _2514 = as_type(_2502); } uint _2526; bool _2527; if (_2510) { bool _2522 = abs(fma(_2476, as_type(_2424), fma(_2478, as_type(_2425), as_type(_2514)))) > abs(_2471); _2526 = as_type(_2522 ? as_type(0xffffffffu /* nan */) : 1.4012984643248170709237295832899e-45); _2527 = _2522; } else { _2526 = _2508; _2527 = _2506; } _2528 = _2526; _2529 = _2527; } else { _2528 = _2491; _2529 = _2489; } _2536 = _2388; _2537 = _2387; _2538 = _2386; _2539 = _2407; _2540 = _2406; _2541 = _2405; _2542 = _2426; _2543 = _2425; _2544 = _2424; _2545 = as_type(fast::max(abs(_2460), abs(_2460))); _2546 = as_type(fast::max(abs(_2466), abs(_2466))); _2547 = as_type(fast::max(abs(_2471), abs(_2471))); _2548 = as_type(_2458); _2549 = as_type(_2454); _2550 = as_type(_2450); _2551 = _2528; _2552 = _2529; } else { _2536 = _2263; _2537 = _2264; _2538 = _2265; _2539 = _2266; _2540 = _2267; _2541 = _2268; _2542 = _2269; _2543 = _2270; _2544 = _2271; _2545 = _2272; _2546 = _2273; _2547 = _2274; _2548 = _2359; _2549 = _2360; _2550 = _2361; _2551 = _2362; _2552 = _2367; } bool _2554 = _2365 && (!_2368); bool _2556; if (_2554) { _2556 = 3u == cbuf_56.data[_2315]; } else { _2556 = _2552; } uint _2643; uint _2644; uint _2645; uint _2646; if (_2554) { bool _2557 = _2554 && _2556; uint _2633; uint _2634; uint _2635; uint _2636; if (_2557) { uint _2562 = ((0u + ((_2285 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _2572 = uint3(cbuf_56.data[_2562 + 0u], cbuf_56.data[_2562 + 1u], cbuf_56.data[_2562 + 2u]); float _2578 = spvFSub(as_type(_2572.x), as_type(_2307)); float _2581 = spvFSub(as_type(_2572.y), as_type(_2308)); float _2584 = spvFSub(as_type(_2572.z), as_type(_2309)); float _2602 = fast::clamp(spvFMul(fma(spvFSub(as_type(_1342), as_type(_2307)), _2578, fma(spvFSub(as_type(_1343), as_type(_2308)), _2581, spvFMul(_2584, spvFSub(as_type(_1344), as_type(_2309))))), 1.0 / fma(_2578, _2578, fma(_2581, _2581, spvFMul(_2584, _2584)))), 0.0, 1.0); float _2604 = fma(_2578, _2602, as_type(_2307)); float _2607 = fma(_2581, _2602, as_type(_2308)); float _2610 = fma(_2584, _2602, as_type(_2309)); float _2613 = spvFSub(as_type(_1342), _2604); float _2615 = spvFSub(as_type(_1343), _2607); float _2617 = spvFSub(as_type(_1344), _2610); _2633 = as_type(_2610); _2634 = as_type(_2607); _2635 = as_type(_2604); _2636 = as_type((as_type(cbuf_56.data[((0u + ((_2285 + 73u) * 16u)) + buf3_off) >> 2u]) >= sqrt(fma(_2613, _2613, fma(_2615, _2615, spvFMul(_2617, _2617))))) ? 1.4012984643248170709237295832899e-45 : 0.0); } else { _2633 = _2548; _2634 = _2549; _2635 = _2550; _2636 = _2551; } uint _2639; uint _2640; uint _2641; uint _2642; if (_2554 && (!_2557)) { _2639 = _2309; _2640 = _2308; _2641 = _2307; _2642 = 0u; } else { _2639 = _2633; _2640 = _2634; _2641 = _2635; _2642 = _2636; } _2643 = _2639; _2644 = _2640; _2645 = _2641; _2646 = _2642; } else { _2643 = _2548; _2644 = _2549; _2645 = _2550; _2646 = _2551; } _2647 = _2536; _2648 = _2537; _2649 = _2538; _2650 = _2539; _2651 = _2540; _2652 = _2541; _2653 = _2542; _2654 = _2543; _2655 = _2544; _2656 = _2545; _2657 = _2546; _2658 = _2547; _2659 = _2643; _2660 = _2644; _2661 = _2645; _2662 = _2646; } else { _2647 = _2263; _2648 = _2264; _2649 = _2265; _2650 = _2266; _2651 = _2267; _2652 = _2268; _2653 = _2269; _2654 = _2270; _2655 = _2271; _2656 = _2272; _2657 = _2273; _2658 = _2274; _2659 = _2359; _2660 = _2360; _2661 = _2361; _2662 = _2362; } _2663 = _2647; _2664 = _2648; _2665 = _2649; _2666 = _2650; _2667 = _2651; _2668 = _2652; _2669 = _2653; _2670 = _2654; _2671 = _2655; _2672 = _2656; _2673 = _2657; _2674 = _2658; _2675 = _2659; _2676 = _2660; _2677 = _2661; _2678 = _2662; } else { _2663 = _2263; _2664 = _2264; _2665 = _2265; _2666 = _2266; _2667 = _2267; _2668 = _2268; _2669 = _2269; _2670 = _2270; _2671 = _2271; _2672 = _2272; _2673 = _2273; _2674 = _2274; _2675 = _2321; _2676 = _2322; _2677 = _2323; _2678 = _2320; } bool _2680 = _1316 && (int(0u) < int(_2678)); if (_2680) { uint _2686 = ((0u + ((_2285 + 137u) * 16u)) + buf3_off) >> 2u; uint4 _2699 = uint4(cbuf_56.data[_2686 + 0u], cbuf_56.data[_2686 + 1u], cbuf_56.data[_2686 + 2u], cbuf_56.data[_2686 + 3u]); uint _2700 = _2699.x; uint _2710 = ((0u + ((_2285 + 25u) * 16u)) + buf3_off) >> 2u; uint4 _2723 = uint4(cbuf_56.data[_2710 + 0u], cbuf_56.data[_2710 + 1u], cbuf_56.data[_2710 + 2u], cbuf_56.data[_2710 + 3u]); uint _2724 = _2723.x; uint _2725 = _2723.y; uint _2726 = _2723.z; uint _2727 = _2723.w; uint _2731 = ((0u + ((_2285 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _2744 = uint4(cbuf_56.data[_2731 + 0u], cbuf_56.data[_2731 + 1u], cbuf_56.data[_2731 + 2u], cbuf_56.data[_2731 + 3u]); uint _2745 = _2744.x; uint _2746 = _2744.z; uint _2753 = ((0u + ((_2285 + 33u) * 16u)) + buf3_off) >> 2u; uint3 _2763 = uint3(cbuf_56.data[_2753 + 0u], cbuf_56.data[_2753 + 1u], cbuf_56.data[_2753 + 2u]); uint _2764 = _2763.x; uint _2765 = _2763.y; uint _2766 = _2763.z; float _2773 = spvFMul(0.0055555556900799274444580078125, fma(_2216, as_type(_2699.w), spvFMul(as_type(cbuf_52.data[_1765]), as_type(_2699.z)))); float _2781 = spvFMul(6.283052921295166015625, fract(abs(spvFMul(0.159158289432525634765625, _2773)))); uint _2783 = uint(spvFAdd(_2215, as_type(_2724))); float _2789 = spvFAdd(-3.1415264606475830078125, (0.0 > _2773) ? (-_2781) : _2781); bool _2802 = _2746 == 2u; bool _2805 = _2746 == 5u; float _2819 = fma(as_type(_2727), spvFMul(0.001000000047497451305389404296875, float(_2783 - (((spvMulExtended(_2783, 274877907u))._m1 >> 6u) * 1000u))), as_type(_2724)); float _2821 = fma(fast::clamp(fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_2789)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _2789)))))), 0.5, 0.5), 0.0, 1.0), spvFSub(as_type(_2699.y), as_type(_2700)), as_type(_2700)); float _2825 = spvFAdd(1.0, as_type(_2281)); bool _2839 = _2680 && ((((_2746 == 1u) || (_2746 == 4u)) || _2802) || _2805); uint _2844; if (_2839) { _2844 = as_type(spvFSub(as_type(_1342), as_type(_2677))); } else { _2844 = as_type(_2821); } uint _2942; uint _2943; uint _2944; uint _2945; if (_2839) { float _2847 = spvFSub(as_type(_1343), as_type(_2676)); float _2851 = spvFSub(as_type(_1344), as_type(_2675)); uint _2903; uint _2904; uint _2905; if (_2839 && (_2802 || _2805)) { uint _2860 = ((0u + ((_2285 + 97u) * 16u)) + buf3_off) >> 2u; uint2 _2867 = uint2(cbuf_56.data[_2860 + 0u], cbuf_56.data[_2860 + 1u]); float _2880 = rsqrt(fma(as_type(_2844), as_type(_2844), fma(_2847, _2847, spvFMul(_2851, _2851)))); float _2889 = fma(fast::clamp(spvFMul(fast::max(0.0, spvFSub(sqrt(fma(as_type(_2844), as_type(_2844), spvFMul(_2851, _2851))), as_type(_2867.x))), 1.0 / as_type(_2867.y)), 0.0, 1.0), -0.89999997615814208984375, 1.0); float _2890 = spvFMul(_2847, _2880); _2903 = as_type(spvFMul(_2889, spvFMul(as_type(_2844), _2880))); _2904 = as_type(spvFAdd(1.0, spvFSub(fma(-_2890, _2889, _2890), _2889))); _2905 = as_type(spvFMul(_2889, spvFMul(_2851, _2880))); } else { _2903 = _2844; _2904 = as_type(_2847); _2905 = as_type(_2851); } float _2915 = rsqrt(fma(as_type(_2903), as_type(_2903), fma(as_type(_2904), as_type(_2904), spvFMul(as_type(_2905), as_type(_2905))))); uint _2924 = uint(spvFAdd(_2217, as_type(_2724))); float _2934 = fma(as_type(_2727), spvFMul(0.001000000047497451305389404296875, float(_2924 - (((spvMulExtended(_2924, 274877907u))._m1 >> 6u) * 1000u))), as_type(_2724)); _2942 = as_type(spvFMul(spvFMul(as_type(_2905), _2915), _2934)); _2943 = as_type(spvFMul(spvFMul(as_type(_2903), _2915), _2934)); _2944 = as_type(_2934); _2945 = as_type(spvFMul(spvFMul(as_type(_2904), _2915), _2934)); } else { _2942 = as_type(spvFMul(as_type(_2766), _2819)); _2943 = _2844; _2944 = as_type(spvFMul(as_type(_2765), _2819)); _2945 = as_type(spvFMul(as_type(_2764), _2819)); } uint _2948; uint _2949; if (_2680 && (!_2839)) { _2948 = _2944; _2949 = _2945; } else { _2948 = _2945; _2949 = _2943; } bool _2951 = _2680 && (int(0u) < int(_2744.w)); uint _5981; uint _5982; uint _5983; uint _5984; uint _5985; uint _5986; uint _5987; uint _5988; uint _5989; uint _5990; uint _5991; uint _5992; uint _5993; uint _5994; uint _5995; uint _5996; uint _5997; uint _5998; uint _5999; uint _6000; uint _6001; if (_2951) { bool _2954 = (_2746 == 0u) || (3u == _2746); bool _2955 = _2951 && _2954; bool _2957; if (_2955) { _2957 = 1u == cbuf_56.data[_2315]; } else { _2957 = _2954; } uint _5933; uint _5934; uint _5935; uint _5936; uint _5937; uint _5938; uint _5939; uint _5940; uint _5941; uint _5942; uint _5943; uint _5944; uint _5945; uint _5946; uint _5947; uint _5948; uint _5949; uint _5950; uint _5951; uint _5952; uint _5953; uint _5954; if (_2955) { bool _2958 = _2955 && _2957; uint _3086; uint _3087; uint _3088; uint _3089; uint _3090; uint _3091; uint _3092; uint _3093; bool _3094; if (_2958) { uint _2963 = ((0u + ((_2285 + 73u) * 16u)) + buf3_off) >> 2u; float _2970 = spvFMul(fast::max(as_type(cbuf_56.data[_2963]), as_type(cbuf_56.data[_2963])), 4.0); float _2974 = fma(-as_type(_2764), _2970, as_type(_1342)); float _2978 = fma(-as_type(_2765), _2970, as_type(_1343)); float _2982 = fma(-as_type(_2766), _2970, as_type(_1344)); float _2984 = spvFMul(as_type(_2764), _2970); float _2987 = spvFMul(as_type(_2765), _2970); float _2990 = spvFMul(as_type(_2766), _2970); float _2992 = spvFSub(_2974, as_type(_2677)); float _2995 = spvFSub(_2978, as_type(_2676)); float _2997 = spvFSub(_2982, as_type(_2675)); float _3000 = fma(_2992, _2984, fma(_2995, _2987, spvFMul(_2990, _2997))); float _3007 = fma(-as_type(cbuf_56.data[_2963]), as_type(cbuf_56.data[_2963]), fma(_2992, _2992, fma(_2995, _2995, spvFMul(_2997, _2997)))); bool _3012 = _2958 && ((_3000 > 0.0) && (0.0 < _3007)); uint _3013; if (_3012) { _3013 = 0u; } else { _3013 = cbuf_56.data[_2963]; } bool _3015 = _2958 && (!_3012); uint _3019; if (_3015) { _3019 = as_type(fma(_3000, _3000, -_3007)); } else { _3019 = as_type(_3007); } uint _3043; uint _3044; uint _3045; uint _3046; if (_3015) { bool _3022 = _3015 && (0.0 > as_type(_3019)); uint _3023; if (_3022) { _3023 = 0u; } else { _3023 = _3013; } bool _3025 = _3015 && (!_3022); uint _3026; if (_3025) { _3026 = 1u; } else { _3026 = _3023; } uint _3040; uint _3041; uint _3042; if (_3025) { float _3031 = spvFAdd(-_3000, -sqrt(as_type(_3019))); float _3033 = (0.0 <= _3031) ? _3031 : 0.0; _3040 = as_type(fma(_3033, _2990, _2982)); _3041 = as_type(fma(_3033, _2987, _2978)); _3042 = as_type(fma(_3033, _2984, _2974)); } else { _3040 = _2275; _3041 = _2276; _3042 = _2277; } _3043 = _3040; _3044 = _3041; _3045 = _3042; _3046 = _3026; } else { _3043 = _2275; _3044 = _2276; _3045 = _2277; _3046 = _3013; } bool _3047 = 0u == _3046; bool _3050 = _2958 && (!(_2958 && _3047)); bool _3053; if (_3050) { _3053 = 0.0 >= as_type(_2725); } else { _3053 = _3047; } uint _3084; uint _3085; if (_3050) { bool _3054 = _3050 && _3053; uint _3055; if (_3054) { _3055 = 0u; } else { _3055 = 1065353216u; } bool _3057 = _3050 && (!_3054); uint _3062; if (_3057) { _3062 = as_type(spvFSub(as_type(_1342), as_type(_3045))); } else { _3062 = _3055; } uint _3082; uint _3083; if (_3057) { float _3065 = spvFSub(as_type(_1343), as_type(_3044)); float _3068 = spvFSub(as_type(_1344), as_type(_3043)); float _3076 = 1.0 / as_type(_2725); _3082 = as_type(_3076); _3083 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_3062), as_type(_3062), fma(_3065, _3065, spvFMul(_3068, _3068)))), _3076), 0.0, 1.0))); } else { _3082 = _2725; _3083 = _3062; } _3084 = _3082; _3085 = _3083; } else { _3084 = _2725; _3085 = 1065353216u; } _3086 = _3043; _3087 = _3044; _3088 = _3045; _3089 = _3084; _3090 = as_type(_2992); _3091 = as_type(_2987); _3092 = as_type(_2984); _3093 = _3085; _3094 = _3053; } else { _3086 = _2275; _3087 = _2276; _3088 = _2277; _3089 = _2725; _3090 = _2766; _3091 = _2765; _3092 = _2764; _3093 = _2944; _3094 = _2957; } bool _3096 = _2955 && (!_2958); bool _3098; if (_3096) { _3098 = 2u == cbuf_56.data[_2315]; } else { _3098 = _3094; } uint _5914; uint _5915; uint _5916; uint _5917; uint _5918; uint _5919; uint _5920; uint _5921; uint _5922; uint _5923; uint _5924; uint _5925; uint _5926; uint _5927; uint _5928; uint _5929; uint _5930; uint _5931; uint _5932; if (_3096) { bool _3099 = _3096 && _3098; uint _3104; if (_3099) { _3104 = as_type(fast::max(as_type(_2674), as_type(_2673))); } else { _3104 = _3093; } uint _5616; uint _5617; uint _5618; uint _5619; uint _5620; uint _5621; uint _5622; uint _5623; uint _5624; uint _5625; uint _5626; uint _5627; uint _5628; uint _5629; uint _5630; uint _5631; uint _5632; uint _5633; uint _5634; bool _5635; if (_3099) { float _3109 = spvFMul(3.0, fast::max(as_type(_2672), as_type(_3104))); float _3113 = fma(-as_type(_3092), _3109, as_type(_1342)); float _3117 = fma(-as_type(_3091), _3109, as_type(_1343)); float _3121 = fma(-as_type(_3090), _3109, as_type(_1344)); float _3127 = spvFMul(as_type(_2672), as_type(_2664)); float _3131 = spvFMul(as_type(_2672), as_type(_2663)); float _3135 = spvFMul(as_type(_2673), as_type(_2668)); float _3143 = fma(as_type(_2672), as_type(_2665), as_type(_2677)); float _3147 = fma(as_type(_2672), as_type(_2664), as_type(_2676)); float _3151 = fma(as_type(_2672), as_type(_2663), as_type(_2675)); float _3157 = fma(as_type(_2673), as_type(_2667), _3147); float _3160 = fma(as_type(_2673), as_type(_2666), _3151); float _3164 = fma(as_type(_2674), as_type(_2671), fma(as_type(_2673), as_type(_2668), _3143)); float _3167 = fma(as_type(_2674), as_type(_2670), _3157); float _3171 = fma(as_type(_2674), as_type(_2669), _3160); float _3176 = fma(-as_type(_2672), as_type(_2665), as_type(_2677)); float _3181 = fma(-as_type(_2672), as_type(_2664), as_type(_2676)); float _3186 = fma(-as_type(_2672), as_type(_2663), as_type(_2675)); float _3189 = fma(as_type(_2673), as_type(_2668), _3176); float _3193 = fma(as_type(_2673), as_type(_2667), _3181); float _3197 = fma(as_type(_2673), as_type(_2666), _3186); float _3201 = fma(as_type(_2674), as_type(_2671), _3189); float _3205 = fma(as_type(_2674), as_type(_2670), _3193); float _3209 = fma(as_type(_2674), as_type(_2669), _3197); float _3222 = fma(-as_type(_2673), as_type(_2668), fma(as_type(_2674), as_type(_2671), _3143)); float _3227 = fma(-as_type(_2673), as_type(_2667), fma(as_type(_2674), as_type(_2670), _3147)); float _3244 = fma(-as_type(_2673), as_type(_2668), fma(as_type(_2674), as_type(_2671), _3176)); float _3248 = fma(-as_type(_2673), as_type(_2667), fma(as_type(_2674), as_type(_2670), _3181)); float _3252 = fma(-as_type(_2673), as_type(_2666), fma(as_type(_2674), as_type(_2669), _3186)); float _3253 = spvFSub(_3222, _3164); uint _3254 = as_type(_3253); float _3255 = spvFSub(_3227, _3167); float _3256 = spvFSub(fma(-as_type(_2673), as_type(_2666), fma(as_type(_2674), as_type(_2669), _3151)), _3171); float _3258 = spvFSub(_3244, _3164); float _3260 = spvFSub(_3248, _3167); uint _3261 = as_type(_3260); float _3262 = spvFSub(_3252, _3171); uint _3263 = as_type(_3262); float _3265 = spvFSub(_3113, as_type(_1342)); float _3268 = spvFSub(_3117, as_type(_1343)); float _3270 = spvFSub(_3121, as_type(_1344)); float _3276 = fma(_3255, _3262, -spvFMul(_3256, _3260)); float _3279 = fma(_3256, _3258, -spvFMul(_3253, _3262)); float _3282 = fma(_3253, _3260, -spvFMul(_3255, _3258)); float _3285 = fma(_3265, _3276, fma(_3268, _3279, spvFMul(_3270, _3282))); bool _3288 = _3099 && (0.0 >= _3285); uint _3289; uint _3290; uint _3291; uint _3292; if (_3288) { _3289 = 0u; _3290 = 0u; _3291 = 0u; _3292 = 0u; } else { _3289 = as_type(_3256); _3290 = as_type(_3258); _3291 = as_type(_3279); _3292 = as_type(_3276); } bool _3294 = _3099 && (!_3288); uint _3297; if (_3294) { _3297 = as_type(spvFSub(_3113, _3164)); } else { _3297 = _2262; } uint _3421; uint _3422; uint _3423; uint _3424; uint _3425; uint _3426; uint _3427; uint _3428; if (_3294) { float _3298 = spvFSub(_3117, _3167); uint _3299 = as_type(_3298); float _3300 = spvFSub(_3121, _3171); float _3306 = fma(as_type(_3297), as_type(_3292), fma(_3298, as_type(_3291), spvFMul(_3282, _3300))); bool _3307 = 0.0 > _3306; bool _3308 = _3294 && _3307; uint _3309; uint _3310; uint _3311; uint _3312; if (_3308) { _3309 = 0u; _3310 = 0u; _3311 = 0u; _3312 = 0u; } else { _3309 = _3291; _3310 = _3289; _3311 = _3292; _3312 = _3290; } bool _3314 = _3294 && (!_3308); bool _3316; if (_3314) { _3316 = _3306 > _3285; } else { _3316 = _3307; } uint _3413; uint _3414; uint _3415; uint _3416; uint _3417; uint _3418; uint _3419; uint _3420; if (_3314) { bool _3317 = _3314 && _3316; uint _3318; uint _3319; uint _3320; uint _3321; if (_3317) { _3318 = 0u; _3319 = 0u; _3320 = 0u; _3321 = 0u; } else { _3318 = _3309; _3319 = _3310; _3320 = _3311; _3321 = _3312; } bool _3323 = _3314 && (!_3317); uint _3327; if (_3323) { _3327 = as_type(spvFMul(_3268, as_type(_3297))); } else { _3327 = _3320; } uint _3405; uint _3406; uint _3407; uint _3408; uint _3409; uint _3410; uint _3411; uint _3412; if (_3323) { float _3331 = fma(_3265, _3298, -as_type(_3327)); float _3336 = fma(_3270, as_type(_3297), -spvFMul(_3265, _3300)); float _3340 = fma(_3268, _3300, -spvFMul(_3270, _3298)); float _3344 = fma(as_type(_3321), _3340, fma(_3260, _3336, spvFMul(_3262, _3331))); bool _3349 = _3323 && ((_3344 > _3285) || (_3344 < 0.0)); uint _3350; uint _3351; uint _3352; uint _3353; if (_3349) { _3350 = 0u; _3351 = 0u; _3352 = 0u; _3353 = 0u; } else { _3350 = _3321; _3351 = as_type(_3336); _3352 = as_type(_3331); _3353 = _3319; } bool _3355 = _3323 && (!_3349); uint _3360; if (_3355) { _3360 = as_type(spvFMul(as_type(_3353), as_type(_3352))); } else { _3360 = _3353; } uint _3399; uint _3400; uint _3401; uint _3402; uint _3403; uint _3404; if (_3355) { float _3364 = fma(_3253, _3340, fma(_3255, as_type(_3351), as_type(_3360))); float _3366 = spvFSub(_3344, _3364); bool _3372 = _3355 && ((_3366 > _3285) || (0.0 > (-_3364))); uint _3373; uint _3374; uint _3375; uint _3376; if (_3372) { _3373 = 0u; _3374 = 0u; _3375 = 0u; _3376 = 0u; } else { _3373 = _3352; _3374 = _3350; _3375 = as_type(_3364); _3376 = _3351; } bool _3378 = _3355 && (!_3372); uint _3379; if (_3378) { _3379 = 1u; } else { _3379 = _3376; } uint _3395; uint _3396; uint _3397; uint _3398; if (_3378) { float _3381 = spvFMul(_3306, 1.0 / _3285); float _3387 = spvFSub(as_type(_1344), _3121); _3395 = as_type(_3387); _3396 = as_type(fma(_3381, spvFSub(as_type(_1342), _3113), _3113)); _3397 = as_type(fma(_3381, _3387, _3121)); _3398 = as_type(fma(_3381, spvFSub(as_type(_1343), _3117), _3117)); } else { _3395 = _3261; _3396 = _3373; _3397 = _3374; _3398 = _3375; } _3399 = _3395; _3400 = _3396; _3401 = _3397; _3402 = _3398; _3403 = as_type(_3366); _3404 = _3379; } else { _3399 = _3261; _3400 = _3352; _3401 = _3350; _3402 = _3360; _3403 = _3254; _3404 = _3351; } _3405 = as_type(_3340); _3406 = as_type(_3344); _3407 = _3399; _3408 = _3400; _3409 = _3401; _3410 = _3402; _3411 = _3403; _3412 = _3404; } else { _3405 = _3299; _3406 = _3263; _3407 = _3261; _3408 = _3327; _3409 = _3321; _3410 = _3319; _3411 = _3254; _3412 = _3318; } _3413 = _3405; _3414 = _3406; _3415 = _3407; _3416 = _3408; _3417 = _3409; _3418 = _3410; _3419 = _3411; _3420 = _3412; } else { _3413 = _3299; _3414 = _3263; _3415 = _3261; _3416 = _3311; _3417 = _3312; _3418 = _3310; _3419 = _3254; _3420 = _3309; } _3421 = _3413; _3422 = _3414; _3423 = _3415; _3424 = _3416; _3425 = _3417; _3426 = _3418; _3427 = _3419; _3428 = _3420; } else { _3421 = _2238; _3422 = _3263; _3423 = _3261; _3424 = _3292; _3425 = _3290; _3426 = _3289; _3427 = _3254; _3428 = _3291; } bool _3432 = _3099 && (!(_3099 && (int(0u) < int(_3428)))); uint _3435; if (_3432) { _3435 = as_type(spvFSub(_3201, _3244)); } else { _3435 = _3427; } uint _3596; uint _3597; uint _3598; uint _3599; uint _3600; uint _3601; uint _3602; uint _3603; uint _3604; if (_3432) { float _3436 = spvFSub(_3205, _3248); float _3437 = spvFSub(_3209, _3252); float _3439 = spvFSub(_3164, _3244); float _3441 = spvFSub(_3167, _3248); uint _3442 = as_type(_3441); float _3443 = spvFSub(_3171, _3252); float _3450 = fma(_3436, _3443, -spvFMul(_3437, _3441)); float _3453 = fma(_3437, _3439, -spvFMul(as_type(_3435), _3443)); float _3456 = fma(as_type(_3435), _3441, -spvFMul(_3436, _3439)); float _3459 = fma(_3265, _3450, fma(_3268, _3453, spvFMul(_3270, _3456))); bool _3462 = _3432 && (0.0 >= _3459); uint _3463; uint _3464; uint _3465; uint _3466; if (_3462) { _3463 = 0u; _3464 = 0u; _3465 = 0u; _3466 = 0u; } else { _3463 = as_type(_3437); _3464 = as_type(_3443); _3465 = as_type(_3439); _3466 = as_type(_3450); } bool _3468 = _3432 && (!_3462); uint _3471; if (_3468) { _3471 = as_type(spvFSub(_3113, _3244)); } else { _3471 = _3297; } uint _3589; uint _3590; uint _3591; uint _3592; uint _3593; uint _3594; if (_3468) { float _3472 = spvFSub(_3117, _3248); uint _3473 = as_type(_3472); float _3474 = spvFSub(_3121, _3252); float _3479 = fma(as_type(_3471), as_type(_3466), fma(_3472, _3453, spvFMul(_3456, _3474))); bool _3480 = 0.0 > _3479; bool _3481 = _3468 && _3480; uint _3482; uint _3483; uint _3484; uint _3485; if (_3481) { _3482 = 0u; _3483 = 0u; _3484 = 0u; _3485 = 0u; } else { _3482 = _3463; _3483 = _3466; _3484 = _3464; _3485 = _3465; } bool _3487 = _3468 && (!_3481); bool _3489; if (_3487) { _3489 = _3479 > _3459; } else { _3489 = _3480; } uint _3583; uint _3584; uint _3585; uint _3586; uint _3587; uint _3588; if (_3487) { bool _3490 = _3487 && _3489; uint _3491; uint _3492; uint _3493; uint _3494; if (_3490) { _3491 = 0u; _3492 = 0u; _3493 = 0u; _3494 = 0u; } else { _3491 = _3482; _3492 = _3483; _3493 = _3484; _3494 = _3485; } bool _3496 = _3487 && (!_3490); uint _3500; if (_3496) { _3500 = as_type(spvFMul(_3268, as_type(_3471))); } else { _3500 = _3492; } uint _3577; uint _3578; uint _3579; uint _3580; uint _3581; uint _3582; if (_3496) { float _3504 = fma(_3265, _3472, -as_type(_3500)); float _3509 = fma(_3270, as_type(_3471), -spvFMul(_3265, _3474)); float _3513 = fma(_3268, _3474, -spvFMul(_3270, _3472)); float _3517 = fma(as_type(_3494), _3513, fma(_3441, _3509, spvFMul(as_type(_3493), _3504))); bool _3522 = _3496 && ((_3517 > _3459) || (_3517 < 0.0)); uint _3523; uint _3524; uint _3525; uint _3526; if (_3522) { _3523 = 0u; _3524 = 0u; _3525 = 0u; _3526 = 0u; } else { _3523 = _3494; _3524 = as_type(_3517); _3525 = as_type(_3504); _3526 = _3491; } bool _3528 = _3496 && (!_3522); uint _3533; if (_3528) { _3533 = as_type(spvFMul(as_type(_3526), as_type(_3525))); } else { _3533 = _3526; } uint _3572; uint _3573; uint _3574; uint _3575; uint _3576; if (_3528) { float _3537 = fma(as_type(_3435), _3513, fma(_3436, _3509, as_type(_3533))); bool _3545 = _3528 && ((spvFSub(as_type(_3524), _3537) > _3459) || (0.0 > (-_3537))); uint _3546; uint _3547; uint _3548; uint _3549; if (_3545) { _3546 = 0u; _3547 = 0u; _3548 = 0u; _3549 = 0u; } else { _3546 = _3525; _3547 = _3523; _3548 = as_type(_3537); _3549 = _3524; } bool _3551 = _3528 && (!_3545); uint _3552; if (_3551) { _3552 = 1u; } else { _3552 = _3549; } uint _3568; uint _3569; uint _3570; uint _3571; if (_3551) { float _3554 = spvFMul(_3479, 1.0 / _3459); float _3560 = spvFSub(as_type(_1344), _3121); _3568 = as_type(_3560); _3569 = as_type(fma(_3554, spvFSub(as_type(_1342), _3113), _3113)); _3570 = as_type(fma(_3554, _3560, _3121)); _3571 = as_type(fma(_3554, spvFSub(as_type(_1343), _3117), _3117)); } else { _3568 = _3442; _3569 = _3546; _3570 = _3547; _3571 = _3548; } _3572 = _3568; _3573 = _3569; _3574 = _3570; _3575 = _3571; _3576 = _3552; } else { _3572 = _3442; _3573 = _3525; _3574 = _3523; _3575 = _3533; _3576 = _3524; } _3577 = as_type(_3513); _3578 = _3572; _3579 = _3573; _3580 = _3574; _3581 = _3575; _3582 = _3576; } else { _3577 = _3473; _3578 = _3442; _3579 = _3500; _3580 = _3494; _3581 = _3491; _3582 = _3493; } _3583 = _3577; _3584 = _3578; _3585 = _3579; _3586 = _3580; _3587 = _3581; _3588 = _3582; } else { _3583 = _3473; _3584 = _3442; _3585 = _3483; _3586 = _3485; _3587 = _3482; _3588 = _3484; } _3589 = _3583; _3590 = _3584; _3591 = _3585; _3592 = _3586; _3593 = _3587; _3594 = _3588; } else { _3589 = _3421; _3590 = _3442; _3591 = _3466; _3592 = _3465; _3593 = _3463; _3594 = _3464; } _3596 = _3589; _3597 = as_type(_3459); _3598 = _3594; _3599 = _3590; _3600 = _3471; _3601 = _3592; _3602 = _3593; _3603 = _3591; _3604 = uint(max(int(0u), int(_3594))); } else { _3596 = _3421; _3597 = as_type(_3285); _3598 = _3422; _3599 = _3423; _3600 = _3297; _3601 = _3425; _3602 = _3426; _3603 = _3424; _3604 = _3428; } float _3614 = fma(as_type(_2670), 0.00999999977648258209228515625, as_type(_3602)); float _3618 = fma(as_type(_2669), 0.00999999977648258209228515625, as_type(_3601)); bool _3621 = _3099 && (!(_3099 && (int(0u) < int(_3604)))); uint _3627; if (_3621) { _3627 = as_type(fma(-as_type(_2674), as_type(_2671), _3189)); } else { _3627 = as_type(_3189); } uint _5561; uint _5562; uint _5563; uint _5564; uint _5565; uint _5566; uint _5567; uint _5568; uint _5569; uint _5570; uint _5571; uint _5572; uint _5573; uint _5574; uint _5575; uint _5576; if (_3621) { float _3631 = fma(-as_type(_2674), as_type(_2670), _3193); float _3636 = fma(-as_type(_2674), as_type(_2669), _3197); float _3645 = fma(-as_type(_2674), as_type(_2670), _3157); float _3649 = fma(-as_type(_2674), as_type(_2669), _3160); uint _3650 = as_type(_3649); float _3675 = fma(-as_type(_2674), as_type(_2671), spvFAdd(as_type(_2677), fma(-as_type(_2673), as_type(_2668), -spvFMul(as_type(_2672), as_type(_2665))))); float _3680 = fma(-as_type(_2674), as_type(_2670), spvFAdd(as_type(_2676), fma(-as_type(_2673), as_type(_2667), -_3127))); uint _3681 = as_type(_3680); float _3685 = fma(-as_type(_2674), as_type(_2669), spvFAdd(as_type(_2675), fma(-as_type(_2673), as_type(_2666), -_3131))); uint _3686 = as_type(_3685); float _3708 = fma(-as_type(_2674), as_type(_2671), spvFAdd(as_type(_2677), fma(as_type(_2672), as_type(_2665), -_3135))); uint _3709 = as_type(_3708); float _3713 = fma(-as_type(_2674), as_type(_2670), spvFAdd(as_type(_2676), fma(as_type(_2672), as_type(_2664), -_3618))); float _3717 = fma(-as_type(_2674), as_type(_2669), spvFAdd(as_type(_2675), fma(as_type(_2672), as_type(_2663), -spvFMul(as_type(_2673), as_type(_2666))))); float _3719 = spvFSub(_3675, as_type(_3627)); uint _3720 = as_type(_3719); float _3721 = spvFSub(_3680, _3631); float _3722 = spvFSub(_3685, _3636); float _3725 = spvFSub(_3708, as_type(_3627)); float _3727 = spvFSub(_3713, _3631); uint _3728 = as_type(_3727); float _3729 = spvFSub(_3717, _3636); uint _3730 = as_type(_3729); float _3735 = fma(_3721, _3729, -spvFMul(_3722, _3727)); float _3738 = fma(_3722, _3725, -spvFMul(_3719, _3729)); float _3741 = fma(_3719, _3727, -spvFMul(_3721, _3725)); float _3744 = fma(_3265, _3735, fma(_3268, _3738, spvFMul(_3270, _3741))); bool _3747 = _3621 && (0.0 >= _3744); uint _3748; uint _3749; uint _3750; uint _3751; if (_3747) { _3748 = 0u; _3749 = 0u; _3750 = 0u; _3751 = 0u; } else { _3748 = as_type(_3722); _3749 = as_type(_3725); _3750 = as_type(_3738); _3751 = as_type(_3735); } bool _3753 = _3621 && (!_3747); uint _3757; if (_3753) { _3757 = as_type(spvFSub(_3113, as_type(_3627))); } else { _3757 = _3600; } uint _3881; uint _3882; uint _3883; uint _3884; uint _3885; uint _3886; uint _3887; uint _3888; if (_3753) { float _3758 = spvFSub(_3117, _3631); uint _3759 = as_type(_3758); float _3760 = spvFSub(_3121, _3636); float _3766 = fma(as_type(_3757), as_type(_3751), fma(_3758, as_type(_3750), spvFMul(_3741, _3760))); bool _3767 = 0.0 > _3766; bool _3768 = _3753 && _3767; uint _3769; uint _3770; uint _3771; uint _3772; if (_3768) { _3769 = 0u; _3770 = 0u; _3771 = 0u; _3772 = 0u; } else { _3769 = _3750; _3770 = _3748; _3771 = _3751; _3772 = _3749; } bool _3774 = _3753 && (!_3768); bool _3776; if (_3774) { _3776 = _3766 > _3744; } else { _3776 = _3767; } uint _3873; uint _3874; uint _3875; uint _3876; uint _3877; uint _3878; uint _3879; uint _3880; if (_3774) { bool _3777 = _3774 && _3776; uint _3778; uint _3779; uint _3780; uint _3781; if (_3777) { _3778 = 0u; _3779 = 0u; _3780 = 0u; _3781 = 0u; } else { _3778 = _3769; _3779 = _3770; _3780 = _3771; _3781 = _3772; } bool _3783 = _3774 && (!_3777); uint _3787; if (_3783) { _3787 = as_type(spvFMul(_3268, as_type(_3757))); } else { _3787 = _3780; } uint _3865; uint _3866; uint _3867; uint _3868; uint _3869; uint _3870; uint _3871; uint _3872; if (_3783) { float _3791 = fma(_3265, _3758, -as_type(_3787)); float _3796 = fma(_3270, as_type(_3757), -spvFMul(_3265, _3760)); float _3800 = fma(_3268, _3760, -spvFMul(_3270, _3758)); float _3804 = fma(as_type(_3781), _3800, fma(_3727, _3796, spvFMul(_3729, _3791))); bool _3809 = _3783 && ((_3804 > _3744) || (_3804 < 0.0)); uint _3810; uint _3811; uint _3812; uint _3813; if (_3809) { _3810 = 0u; _3811 = 0u; _3812 = 0u; _3813 = 0u; } else { _3810 = _3781; _3811 = as_type(_3796); _3812 = as_type(_3791); _3813 = _3779; } bool _3815 = _3783 && (!_3809); uint _3820; if (_3815) { _3820 = as_type(spvFMul(as_type(_3813), as_type(_3812))); } else { _3820 = _3813; } uint _3859; uint _3860; uint _3861; uint _3862; uint _3863; uint _3864; if (_3815) { float _3824 = fma(_3719, _3800, fma(_3721, as_type(_3811), as_type(_3820))); float _3826 = spvFSub(_3804, _3824); bool _3832 = _3815 && ((_3826 > _3744) || (0.0 > (-_3824))); uint _3833; uint _3834; uint _3835; uint _3836; if (_3832) { _3833 = 0u; _3834 = 0u; _3835 = 0u; _3836 = 0u; } else { _3833 = _3812; _3834 = _3810; _3835 = as_type(_3824); _3836 = _3811; } bool _3838 = _3815 && (!_3832); uint _3839; if (_3838) { _3839 = 1u; } else { _3839 = _3836; } uint _3855; uint _3856; uint _3857; uint _3858; if (_3838) { float _3841 = spvFMul(_3766, 1.0 / _3744); float _3847 = spvFSub(as_type(_1344), _3121); _3855 = as_type(_3847); _3856 = as_type(fma(_3841, spvFSub(as_type(_1342), _3113), _3113)); _3857 = as_type(fma(_3841, _3847, _3121)); _3858 = as_type(fma(_3841, spvFSub(as_type(_1343), _3117), _3117)); } else { _3855 = _3728; _3856 = _3833; _3857 = _3834; _3858 = _3835; } _3859 = _3855; _3860 = _3856; _3861 = _3857; _3862 = _3858; _3863 = as_type(_3826); _3864 = _3839; } else { _3859 = _3728; _3860 = _3812; _3861 = _3810; _3862 = _3820; _3863 = _3720; _3864 = _3811; } _3865 = as_type(_3800); _3866 = as_type(_3804); _3867 = _3859; _3868 = _3860; _3869 = _3861; _3870 = _3862; _3871 = _3863; _3872 = _3864; } else { _3865 = _3759; _3866 = _3730; _3867 = _3728; _3868 = _3787; _3869 = _3781; _3870 = _3779; _3871 = _3720; _3872 = _3778; } _3873 = _3865; _3874 = _3866; _3875 = _3867; _3876 = _3868; _3877 = _3869; _3878 = _3870; _3879 = _3871; _3880 = _3872; } else { _3873 = _3759; _3874 = _3730; _3875 = _3728; _3876 = _3771; _3877 = _3772; _3878 = _3770; _3879 = _3720; _3880 = _3769; } _3881 = _3873; _3882 = _3874; _3883 = _3875; _3884 = _3876; _3885 = _3877; _3886 = _3878; _3887 = _3879; _3888 = _3880; } else { _3881 = _3596; _3882 = _3730; _3883 = _3728; _3884 = _3751; _3885 = _3749; _3886 = _3748; _3887 = _3720; _3888 = _3750; } bool _3892 = _3621 && (!(_3621 && (int(0u) < int(_3888)))); uint _3895; if (_3892) { _3895 = as_type(spvFSub(fma(-as_type(_2674), as_type(_2671), _3614), _3708)); } else { _3895 = _3887; } uint _4062; uint _4063; uint _4064; uint _4065; uint _4066; uint _4067; uint _4068; uint _4069; uint _4070; uint _4071; if (_3892) { float _3896 = spvFSub(_3645, _3713); float _3897 = spvFSub(_3649, _3717); float _3900 = spvFSub(as_type(_3627), _3708); float _3902 = spvFSub(_3631, _3713); uint _3903 = as_type(_3902); float _3904 = spvFSub(_3636, _3717); float _3911 = fma(_3896, _3904, -spvFMul(_3897, _3902)); float _3914 = fma(_3897, _3900, -spvFMul(as_type(_3895), _3904)); float _3917 = fma(as_type(_3895), _3902, -spvFMul(_3896, _3900)); float _3920 = fma(_3265, _3911, fma(_3268, _3914, spvFMul(_3270, _3917))); bool _3923 = _3892 && (0.0 >= _3920); uint _3924; uint _3925; uint _3926; uint _3927; if (_3923) { _3924 = 0u; _3925 = 0u; _3926 = 0u; _3927 = 0u; } else { _3924 = as_type(_3897); _3925 = as_type(_3904); _3926 = as_type(_3900); _3927 = as_type(_3911); } bool _3929 = _3892 && (!_3923); uint _3932; if (_3929) { _3932 = as_type(spvFSub(_3113, _3708)); } else { _3932 = _3757; } uint _4054; uint _4055; uint _4056; uint _4057; uint _4058; uint _4059; uint _4060; if (_3929) { float _3933 = spvFSub(_3117, _3713); uint _3934 = as_type(_3933); float _3935 = spvFSub(_3121, _3717); float _3940 = fma(as_type(_3932), as_type(_3927), fma(_3933, _3914, spvFMul(_3917, _3935))); bool _3941 = 0.0 > _3940; bool _3942 = _3929 && _3941; uint _3943; uint _3944; uint _3945; uint _3946; if (_3942) { _3943 = 0u; _3944 = 0u; _3945 = 0u; _3946 = 0u; } else { _3943 = _3924; _3944 = _3927; _3945 = _3925; _3946 = _3926; } bool _3948 = _3929 && (!_3942); bool _3950; if (_3948) { _3950 = _3940 > _3920; } else { _3950 = _3941; } uint _4047; uint _4048; uint _4049; uint _4050; uint _4051; uint _4052; uint _4053; if (_3948) { bool _3951 = _3948 && _3950; uint _3952; uint _3953; uint _3954; uint _3955; if (_3951) { _3952 = 0u; _3953 = 0u; _3954 = 0u; _3955 = 0u; } else { _3952 = _3943; _3953 = _3944; _3954 = _3945; _3955 = _3946; } bool _3957 = _3948 && (!_3951); uint _3961; if (_3957) { _3961 = as_type(spvFMul(_3268, as_type(_3932))); } else { _3961 = _3953; } uint _4040; uint _4041; uint _4042; uint _4043; uint _4044; uint _4045; uint _4046; if (_3957) { float _3965 = fma(_3265, _3933, -as_type(_3961)); float _3970 = fma(_3270, as_type(_3932), -spvFMul(_3265, _3935)); float _3974 = fma(_3268, _3935, -spvFMul(_3270, _3933)); float _3978 = fma(as_type(_3955), _3974, fma(_3902, _3970, spvFMul(as_type(_3954), _3965))); bool _3983 = _3957 && ((_3978 > _3920) || (_3978 < 0.0)); uint _3984; uint _3985; uint _3986; uint _3987; if (_3983) { _3984 = 0u; _3985 = 0u; _3986 = 0u; _3987 = 0u; } else { _3984 = _3955; _3985 = as_type(_3978); _3986 = as_type(_3965); _3987 = _3952; } bool _3989 = _3957 && (!_3983); uint _3994; if (_3989) { _3994 = as_type(spvFMul(as_type(_3987), as_type(_3986))); } else { _3994 = _3987; } uint _4034; uint _4035; uint _4036; uint _4037; uint _4038; uint _4039; if (_3989) { float _3998 = fma(as_type(_3895), _3974, fma(_3896, _3970, as_type(_3994))); float _4001 = spvFSub(as_type(_3985), _3998); bool _4007 = _3989 && ((_4001 > _3920) || (0.0 > (-_3998))); uint _4008; uint _4009; uint _4010; uint _4011; if (_4007) { _4008 = 0u; _4009 = 0u; _4010 = 0u; _4011 = 0u; } else { _4008 = _3986; _4009 = _3984; _4010 = as_type(_3998); _4011 = _3985; } bool _4013 = _3989 && (!_4007); uint _4014; if (_4013) { _4014 = 1u; } else { _4014 = _4011; } uint _4030; uint _4031; uint _4032; uint _4033; if (_4013) { float _4016 = spvFMul(_3940, 1.0 / _3920); float _4022 = spvFSub(as_type(_1344), _3121); _4030 = as_type(_4022); _4031 = as_type(fma(_4016, spvFSub(as_type(_1342), _3113), _3113)); _4032 = as_type(fma(_4016, _4022, _3121)); _4033 = as_type(fma(_4016, spvFSub(as_type(_1343), _3117), _3117)); } else { _4030 = _3903; _4031 = _4008; _4032 = _4009; _4033 = _4010; } _4034 = _4030; _4035 = as_type(_4001); _4036 = _4031; _4037 = _4032; _4038 = _4033; _4039 = _4014; } else { _4034 = _3903; _4035 = _3895; _4036 = _3986; _4037 = _3984; _4038 = _3994; _4039 = _3985; } _4040 = as_type(_3974); _4041 = _4034; _4042 = _4035; _4043 = _4036; _4044 = _4037; _4045 = _4038; _4046 = _4039; } else { _4040 = _3934; _4041 = _3903; _4042 = _3895; _4043 = _3961; _4044 = _3955; _4045 = _3952; _4046 = _3954; } _4047 = _4040; _4048 = _4041; _4049 = _4042; _4050 = _4043; _4051 = _4044; _4052 = _4045; _4053 = _4046; } else { _4047 = _3934; _4048 = _3903; _4049 = _3895; _4050 = _3944; _4051 = _3946; _4052 = _3943; _4053 = _3945; } _4054 = _4047; _4055 = _4048; _4056 = _4049; _4057 = _4050; _4058 = _4051; _4059 = _4052; _4060 = _4053; } else { _4054 = _3881; _4055 = _3903; _4056 = _3895; _4057 = _3927; _4058 = _3926; _4059 = _3924; _4060 = _3925; } _4062 = _4054; _4063 = as_type(_3920); _4064 = _4060; _4065 = _4055; _4066 = _3932; _4067 = _4056; _4068 = _4058; _4069 = _4059; _4070 = _4057; _4071 = uint(max(int(0u), int(_4060))); } else { _4062 = _3881; _4063 = as_type(_3744); _4064 = _3882; _4065 = _3883; _4066 = _3757; _4067 = _3895; _4068 = _3885; _4069 = _3886; _4070 = _3884; _4071 = _3888; } float _4081 = fma(as_type(_2670), -0.00999999977648258209228515625, as_type(_4069)); bool _4088 = _3621 && (!(_3621 && (int(0u) < int(_4071)))); uint _4092; if (_4088) { _4092 = as_type(spvFSub(as_type(_3627), _3201)); } else { _4092 = _4067; } uint _5547; uint _5548; uint _5549; uint _5550; uint _5551; uint _5552; uint _5553; uint _5554; uint _5555; uint _5556; uint _5557; uint _5558; uint _5559; uint _5560; if (_4088) { float _4093 = spvFSub(_3631, _3205); float _4094 = spvFSub(_3636, _3209); float _4096 = spvFSub(_4081, _3201); float _4098 = spvFSub(_3645, _3205); uint _4099 = as_type(_4098); float _4100 = spvFSub(_3649, _3209); uint _4101 = as_type(_4100); float _4107 = fma(_4093, _4100, -spvFMul(_4094, _4098)); float _4110 = fma(_4094, _4096, -spvFMul(as_type(_4092), _4100)); float _4114 = fma(as_type(_4092), _4098, -spvFMul(_4093, _4096)); float _4117 = fma(_3265, _4107, fma(_3268, _4110, spvFMul(_3270, _4114))); bool _4120 = _4088 && (0.0 >= _4117); uint _4121; uint _4122; uint _4123; uint _4124; if (_4120) { _4121 = 0u; _4122 = 0u; _4123 = 0u; _4124 = 0u; } else { _4121 = as_type(_4094); _4122 = as_type(_4096); _4123 = as_type(_4110); _4124 = as_type(_4107); } bool _4126 = _4088 && (!_4120); uint _4129; if (_4126) { _4129 = as_type(spvFSub(_3113, _3201)); } else { _4129 = _4066; } uint _4254; uint _4255; uint _4256; uint _4257; uint _4258; uint _4259; uint _4260; uint _4261; if (_4126) { float _4130 = spvFSub(_3117, _3205); uint _4131 = as_type(_4130); float _4132 = spvFSub(_3121, _3209); float _4138 = fma(as_type(_4129), as_type(_4124), fma(_4130, as_type(_4123), spvFMul(_4114, _4132))); bool _4139 = 0.0 > _4138; bool _4140 = _4126 && _4139; uint _4141; uint _4142; uint _4143; uint _4144; if (_4140) { _4141 = 0u; _4142 = 0u; _4143 = 0u; _4144 = 0u; } else { _4141 = _4123; _4142 = _4121; _4143 = _4124; _4144 = _4122; } bool _4146 = _4126 && (!_4140); bool _4148; if (_4146) { _4148 = _4138 > _4117; } else { _4148 = _4139; } uint _4246; uint _4247; uint _4248; uint _4249; uint _4250; uint _4251; uint _4252; uint _4253; if (_4146) { bool _4149 = _4146 && _4148; uint _4150; uint _4151; uint _4152; uint _4153; if (_4149) { _4150 = 0u; _4151 = 0u; _4152 = 0u; _4153 = 0u; } else { _4150 = _4141; _4151 = _4142; _4152 = _4143; _4153 = _4144; } bool _4155 = _4146 && (!_4149); uint _4159; if (_4155) { _4159 = as_type(spvFMul(_3268, as_type(_4129))); } else { _4159 = _4152; } uint _4238; uint _4239; uint _4240; uint _4241; uint _4242; uint _4243; uint _4244; uint _4245; if (_4155) { float _4163 = fma(_3265, _4130, -as_type(_4159)); float _4168 = fma(_3270, as_type(_4129), -spvFMul(_3265, _4132)); float _4172 = fma(_3268, _4132, -spvFMul(_3270, _4130)); float _4176 = fma(as_type(_4153), _4172, fma(_4098, _4168, spvFMul(_4100, _4163))); bool _4181 = _4155 && ((_4176 > _4117) || (_4176 < 0.0)); uint _4182; uint _4183; uint _4184; uint _4185; if (_4181) { _4182 = 0u; _4183 = 0u; _4184 = 0u; _4185 = 0u; } else { _4182 = _4153; _4183 = as_type(_4168); _4184 = as_type(_4163); _4185 = _4151; } bool _4187 = _4155 && (!_4181); uint _4192; if (_4187) { _4192 = as_type(spvFMul(as_type(_4185), as_type(_4184))); } else { _4192 = _4185; } uint _4232; uint _4233; uint _4234; uint _4235; uint _4236; uint _4237; if (_4187) { float _4197 = fma(as_type(_4092), _4172, fma(_4093, as_type(_4183), as_type(_4192))); float _4199 = spvFSub(_4176, _4197); bool _4205 = _4187 && ((_4199 > _4117) || (0.0 > (-_4197))); uint _4206; uint _4207; uint _4208; uint _4209; if (_4205) { _4206 = 0u; _4207 = 0u; _4208 = 0u; _4209 = 0u; } else { _4206 = _4184; _4207 = _4182; _4208 = as_type(_4197); _4209 = _4183; } bool _4211 = _4187 && (!_4205); uint _4212; if (_4211) { _4212 = 1u; } else { _4212 = _4209; } uint _4228; uint _4229; uint _4230; uint _4231; if (_4211) { float _4214 = spvFMul(_4138, 1.0 / _4117); float _4220 = spvFSub(as_type(_1344), _3121); _4228 = as_type(_4220); _4229 = as_type(fma(_4214, spvFSub(as_type(_1342), _3113), _3113)); _4230 = as_type(fma(_4214, _4220, _3121)); _4231 = as_type(fma(_4214, spvFSub(as_type(_1343), _3117), _3117)); } else { _4228 = _4099; _4229 = _4206; _4230 = _4207; _4231 = _4208; } _4232 = _4228; _4233 = _4229; _4234 = _4230; _4235 = _4231; _4236 = as_type(_4199); _4237 = _4212; } else { _4232 = _4099; _4233 = _4184; _4234 = _4182; _4235 = _4192; _4236 = _4092; _4237 = _4183; } _4238 = as_type(_4172); _4239 = as_type(_4176); _4240 = _4232; _4241 = _4233; _4242 = _4234; _4243 = _4235; _4244 = _4236; _4245 = _4237; } else { _4238 = _4131; _4239 = _4101; _4240 = _4099; _4241 = _4159; _4242 = _4153; _4243 = _4151; _4244 = _4092; _4245 = _4150; } _4246 = _4238; _4247 = _4239; _4248 = _4240; _4249 = _4241; _4250 = _4242; _4251 = _4243; _4252 = _4244; _4253 = _4245; } else { _4246 = _4131; _4247 = _4101; _4248 = _4099; _4249 = _4143; _4250 = _4144; _4251 = _4142; _4252 = _4092; _4253 = _4141; } _4254 = _4246; _4255 = _4247; _4256 = _4248; _4257 = _4249; _4258 = _4250; _4259 = _4251; _4260 = _4252; _4261 = _4253; } else { _4254 = _4062; _4255 = _4101; _4256 = _4099; _4257 = _4124; _4258 = _4122; _4259 = _4121; _4260 = _4092; _4261 = _4123; } bool _4265 = _4088 && (!(_4088 && (int(0u) < int(_4261)))); uint _4268; if (_4265) { _4268 = as_type(spvFSub(_3164, _4081)); } else { _4268 = _4260; } uint _4434; uint _4435; uint _4436; uint _4437; uint _4438; uint _4439; uint _4440; uint _4441; uint _4442; uint _4443; if (_4265) { float _4269 = spvFSub(_3167, _3645); float _4270 = spvFSub(_3171, _3649); float _4272 = spvFSub(_3201, _4081); float _4274 = spvFSub(_3205, _3645); uint _4275 = as_type(_4274); float _4276 = spvFSub(_3209, _3649); float _4283 = fma(_4269, _4276, -spvFMul(_4270, _4274)); float _4286 = fma(_4270, _4272, -spvFMul(as_type(_4268), _4276)); float _4289 = fma(as_type(_4268), _4274, -spvFMul(_4269, _4272)); float _4292 = fma(_3265, _4283, fma(_3268, _4286, spvFMul(_3270, _4289))); bool _4295 = _4265 && (0.0 >= _4292); uint _4296; uint _4297; uint _4298; uint _4299; if (_4295) { _4296 = 0u; _4297 = 0u; _4298 = 0u; _4299 = 0u; } else { _4296 = as_type(_4270); _4297 = as_type(_4276); _4298 = as_type(_4272); _4299 = as_type(_4283); } bool _4301 = _4265 && (!_4295); uint _4304; if (_4301) { _4304 = as_type(spvFSub(_3113, _4081)); } else { _4304 = _4129; } uint _4426; uint _4427; uint _4428; uint _4429; uint _4430; uint _4431; uint _4432; if (_4301) { float _4305 = spvFSub(_3117, _3645); uint _4306 = as_type(_4305); float _4307 = spvFSub(_3121, _3649); float _4312 = fma(as_type(_4304), as_type(_4299), fma(_4305, _4286, spvFMul(_4289, _4307))); bool _4313 = 0.0 > _4312; bool _4314 = _4301 && _4313; uint _4315; uint _4316; uint _4317; uint _4318; if (_4314) { _4315 = 0u; _4316 = 0u; _4317 = 0u; _4318 = 0u; } else { _4315 = _4296; _4316 = _4299; _4317 = _4297; _4318 = _4298; } bool _4320 = _4301 && (!_4314); bool _4322; if (_4320) { _4322 = _4312 > _4292; } else { _4322 = _4313; } uint _4419; uint _4420; uint _4421; uint _4422; uint _4423; uint _4424; uint _4425; if (_4320) { bool _4323 = _4320 && _4322; uint _4324; uint _4325; uint _4326; uint _4327; if (_4323) { _4324 = 0u; _4325 = 0u; _4326 = 0u; _4327 = 0u; } else { _4324 = _4315; _4325 = _4316; _4326 = _4317; _4327 = _4318; } bool _4329 = _4320 && (!_4323); uint _4333; if (_4329) { _4333 = as_type(spvFMul(_3268, as_type(_4304))); } else { _4333 = _4325; } uint _4412; uint _4413; uint _4414; uint _4415; uint _4416; uint _4417; uint _4418; if (_4329) { float _4337 = fma(_3265, _4305, -as_type(_4333)); float _4342 = fma(_3270, as_type(_4304), -spvFMul(_3265, _4307)); float _4346 = fma(_3268, _4307, -spvFMul(_3270, _4305)); float _4350 = fma(as_type(_4327), _4346, fma(_4274, _4342, spvFMul(as_type(_4326), _4337))); bool _4355 = _4329 && ((_4350 > _4292) || (_4350 < 0.0)); uint _4356; uint _4357; uint _4358; uint _4359; if (_4355) { _4356 = 0u; _4357 = 0u; _4358 = 0u; _4359 = 0u; } else { _4356 = _4327; _4357 = as_type(_4350); _4358 = as_type(_4337); _4359 = _4324; } bool _4361 = _4329 && (!_4355); uint _4366; if (_4361) { _4366 = as_type(spvFMul(as_type(_4359), as_type(_4358))); } else { _4366 = _4359; } uint _4406; uint _4407; uint _4408; uint _4409; uint _4410; uint _4411; if (_4361) { float _4370 = fma(as_type(_4268), _4346, fma(_4269, _4342, as_type(_4366))); float _4373 = spvFSub(as_type(_4357), _4370); bool _4379 = _4361 && ((_4373 > _4292) || (0.0 > (-_4370))); uint _4380; uint _4381; uint _4382; uint _4383; if (_4379) { _4380 = 0u; _4381 = 0u; _4382 = 0u; _4383 = 0u; } else { _4380 = _4358; _4381 = _4356; _4382 = as_type(_4370); _4383 = _4357; } bool _4385 = _4361 && (!_4379); uint _4386; if (_4385) { _4386 = 1u; } else { _4386 = _4383; } uint _4402; uint _4403; uint _4404; uint _4405; if (_4385) { float _4388 = spvFMul(_4312, 1.0 / _4292); float _4394 = spvFSub(as_type(_1344), _3121); _4402 = as_type(_4394); _4403 = as_type(fma(_4388, spvFSub(as_type(_1342), _3113), _3113)); _4404 = as_type(fma(_4388, _4394, _3121)); _4405 = as_type(fma(_4388, spvFSub(as_type(_1343), _3117), _3117)); } else { _4402 = _4275; _4403 = _4380; _4404 = _4381; _4405 = _4382; } _4406 = _4402; _4407 = as_type(_4373); _4408 = _4403; _4409 = _4404; _4410 = _4405; _4411 = _4386; } else { _4406 = _4275; _4407 = _4268; _4408 = _4358; _4409 = _4356; _4410 = _4366; _4411 = _4357; } _4412 = as_type(_4346); _4413 = _4406; _4414 = _4407; _4415 = _4408; _4416 = _4409; _4417 = _4410; _4418 = _4411; } else { _4412 = _4306; _4413 = _4275; _4414 = _4268; _4415 = _4333; _4416 = _4327; _4417 = _4324; _4418 = _4326; } _4419 = _4412; _4420 = _4413; _4421 = _4414; _4422 = _4415; _4423 = _4416; _4424 = _4417; _4425 = _4418; } else { _4419 = _4306; _4420 = _4275; _4421 = _4268; _4422 = _4316; _4423 = _4318; _4424 = _4315; _4425 = _4317; } _4426 = _4419; _4427 = _4420; _4428 = _4421; _4429 = _4422; _4430 = _4423; _4431 = _4424; _4432 = _4425; } else { _4426 = _4254; _4427 = _4275; _4428 = _4268; _4429 = _4299; _4430 = _4298; _4431 = _4296; _4432 = _4297; } _4434 = _4426; _4435 = as_type(_4292); _4436 = _4432; _4437 = _4427; _4438 = _4304; _4439 = _4428; _4440 = _4430; _4441 = _4431; _4442 = _4429; _4443 = uint(max(int(0u), int(_4432))); } else { _4434 = _4254; _4435 = as_type(_4117); _4436 = _4255; _4437 = _4256; _4438 = _4129; _4439 = _4268; _4440 = _4258; _4441 = _4259; _4442 = _4257; _4443 = _4261; } float _4448 = fma(as_type(_2668), 0.00999999977648258209228515625, as_type(_4442)); float _4456 = fma(as_type(_2666), 0.00999999977648258209228515625, as_type(_4440)); bool _4459 = _4088 && (!(_4088 && (int(0u) < int(_4443)))); uint _4462; if (_4459) { _4462 = as_type(spvFSub(_3244, _3675)); } else { _4462 = _4439; } uint _5533; uint _5534; uint _5535; uint _5536; uint _5537; uint _5538; uint _5539; uint _5540; uint _5541; uint _5542; uint _5543; uint _5544; uint _5545; uint _5546; if (_4459) { float _4463 = spvFSub(_3248, _3680); float _4464 = spvFSub(_3252, _3685); float _4466 = spvFSub(_3222, _3675); float _4468 = spvFSub(_3227, _3680); uint _4469 = as_type(_4468); float _4470 = spvFSub(_4448, _3685); uint _4471 = as_type(_4470); float _4477 = fma(_4463, _4470, -spvFMul(_4464, _4468)); float _4480 = fma(_4464, _4466, -spvFMul(as_type(_4462), _4470)); float _4484 = fma(as_type(_4462), _4468, -spvFMul(_4463, _4466)); float _4487 = fma(_3265, _4477, fma(_3268, _4480, spvFMul(_3270, _4484))); bool _4490 = _4459 && (0.0 >= _4487); uint _4491; uint _4492; uint _4493; uint _4494; if (_4490) { _4491 = 0u; _4492 = 0u; _4493 = 0u; _4494 = 0u; } else { _4491 = as_type(_4464); _4492 = as_type(_4466); _4493 = as_type(_4480); _4494 = as_type(_4477); } bool _4496 = _4459 && (!_4490); uint _4499; if (_4496) { _4499 = as_type(spvFSub(_3113, _3675)); } else { _4499 = _4438; } uint _4624; uint _4625; uint _4626; uint _4627; uint _4628; uint _4629; uint _4630; uint _4631; if (_4496) { float _4500 = spvFSub(_3117, _3680); uint _4501 = as_type(_4500); float _4502 = spvFSub(_3121, _3685); float _4508 = fma(as_type(_4499), as_type(_4494), fma(_4500, as_type(_4493), spvFMul(_4484, _4502))); bool _4509 = 0.0 > _4508; bool _4510 = _4496 && _4509; uint _4511; uint _4512; uint _4513; uint _4514; if (_4510) { _4511 = 0u; _4512 = 0u; _4513 = 0u; _4514 = 0u; } else { _4511 = _4493; _4512 = _4491; _4513 = _4494; _4514 = _4492; } bool _4516 = _4496 && (!_4510); bool _4518; if (_4516) { _4518 = _4508 > _4487; } else { _4518 = _4509; } uint _4616; uint _4617; uint _4618; uint _4619; uint _4620; uint _4621; uint _4622; uint _4623; if (_4516) { bool _4519 = _4516 && _4518; uint _4520; uint _4521; uint _4522; uint _4523; if (_4519) { _4520 = 0u; _4521 = 0u; _4522 = 0u; _4523 = 0u; } else { _4520 = _4511; _4521 = _4512; _4522 = _4513; _4523 = _4514; } bool _4525 = _4516 && (!_4519); uint _4529; if (_4525) { _4529 = as_type(spvFMul(_3268, as_type(_4499))); } else { _4529 = _4522; } uint _4608; uint _4609; uint _4610; uint _4611; uint _4612; uint _4613; uint _4614; uint _4615; if (_4525) { float _4533 = fma(_3265, _4500, -as_type(_4529)); float _4538 = fma(_3270, as_type(_4499), -spvFMul(_3265, _4502)); float _4542 = fma(_3268, _4502, -spvFMul(_3270, _4500)); float _4546 = fma(as_type(_4523), _4542, fma(_4468, _4538, spvFMul(_4470, _4533))); bool _4551 = _4525 && ((_4546 > _4487) || (_4546 < 0.0)); uint _4552; uint _4553; uint _4554; uint _4555; if (_4551) { _4552 = 0u; _4553 = 0u; _4554 = 0u; _4555 = 0u; } else { _4552 = _4523; _4553 = as_type(_4538); _4554 = as_type(_4533); _4555 = _4521; } bool _4557 = _4525 && (!_4551); uint _4562; if (_4557) { _4562 = as_type(spvFMul(as_type(_4555), as_type(_4554))); } else { _4562 = _4555; } uint _4602; uint _4603; uint _4604; uint _4605; uint _4606; uint _4607; if (_4557) { float _4567 = fma(as_type(_4462), _4542, fma(_4463, as_type(_4553), as_type(_4562))); float _4569 = spvFSub(_4546, _4567); bool _4575 = _4557 && ((_4569 > _4487) || (0.0 > (-_4567))); uint _4576; uint _4577; uint _4578; uint _4579; if (_4575) { _4576 = 0u; _4577 = 0u; _4578 = 0u; _4579 = 0u; } else { _4576 = _4554; _4577 = _4552; _4578 = as_type(_4567); _4579 = _4553; } bool _4581 = _4557 && (!_4575); uint _4582; if (_4581) { _4582 = 1u; } else { _4582 = _4579; } uint _4598; uint _4599; uint _4600; uint _4601; if (_4581) { float _4584 = spvFMul(_4508, 1.0 / _4487); float _4590 = spvFSub(as_type(_1344), _3121); _4598 = as_type(_4590); _4599 = as_type(fma(_4584, spvFSub(as_type(_1342), _3113), _3113)); _4600 = as_type(fma(_4584, _4590, _3121)); _4601 = as_type(fma(_4584, spvFSub(as_type(_1343), _3117), _3117)); } else { _4598 = _4469; _4599 = _4576; _4600 = _4577; _4601 = _4578; } _4602 = _4598; _4603 = _4599; _4604 = _4600; _4605 = _4601; _4606 = as_type(_4569); _4607 = _4582; } else { _4602 = _4469; _4603 = _4554; _4604 = _4552; _4605 = _4562; _4606 = _4462; _4607 = _4553; } _4608 = as_type(_4542); _4609 = as_type(_4546); _4610 = _4602; _4611 = _4603; _4612 = _4604; _4613 = _4605; _4614 = _4606; _4615 = _4607; } else { _4608 = _4501; _4609 = _4471; _4610 = _4469; _4611 = _4529; _4612 = _4523; _4613 = _4521; _4614 = _4462; _4615 = _4520; } _4616 = _4608; _4617 = _4609; _4618 = _4610; _4619 = _4611; _4620 = _4612; _4621 = _4613; _4622 = _4614; _4623 = _4615; } else { _4616 = _4501; _4617 = _4471; _4618 = _4469; _4619 = _4513; _4620 = _4514; _4621 = _4512; _4622 = _4462; _4623 = _4511; } _4624 = _4616; _4625 = _4617; _4626 = _4618; _4627 = _4619; _4628 = _4620; _4629 = _4621; _4630 = _4622; _4631 = _4623; } else { _4624 = _4434; _4625 = _4471; _4626 = _4469; _4627 = _4494; _4628 = _4492; _4629 = _4491; _4630 = _4462; _4631 = _4493; } bool _4635 = _4459 && (!(_4459 && (int(0u) < int(_4631)))); uint _4638; if (_4635) { _4638 = as_type(spvFSub(_3708, _3222)); } else { _4638 = _4630; } uint _4799; uint _4800; uint _4801; uint _4802; uint _4803; uint _4804; uint _4805; uint _4806; uint _4807; if (_4635) { float _4639 = spvFSub(_4456, _3227); float _4640 = spvFSub(_3717, _4448); float _4642 = spvFSub(_3675, _3222); float _4644 = spvFSub(_3680, _3227); uint _4645 = as_type(_4644); float _4646 = spvFSub(_3685, _4448); float _4653 = fma(_4639, _4646, -spvFMul(_4640, _4644)); float _4656 = fma(_4640, _4642, -spvFMul(as_type(_4638), _4646)); float _4659 = fma(as_type(_4638), _4644, -spvFMul(_4639, _4642)); float _4662 = fma(_3265, _4653, fma(_3268, _4656, spvFMul(_3270, _4659))); bool _4665 = _4635 && (0.0 >= _4662); uint _4666; uint _4667; uint _4668; uint _4669; if (_4665) { _4666 = 0u; _4667 = 0u; _4668 = 0u; _4669 = 0u; } else { _4666 = as_type(_4640); _4667 = as_type(_4646); _4668 = as_type(_4642); _4669 = as_type(_4653); } bool _4671 = _4635 && (!_4665); uint _4674; if (_4671) { _4674 = as_type(spvFSub(_3113, _3222)); } else { _4674 = _4499; } uint _4792; uint _4793; uint _4794; uint _4795; uint _4796; uint _4797; if (_4671) { float _4675 = spvFSub(_3117, _3227); uint _4676 = as_type(_4675); float _4677 = spvFSub(_3121, _4448); float _4682 = fma(as_type(_4674), as_type(_4669), fma(_4675, _4656, spvFMul(_4659, _4677))); bool _4683 = 0.0 > _4682; bool _4684 = _4671 && _4683; uint _4685; uint _4686; uint _4687; uint _4688; if (_4684) { _4685 = 0u; _4686 = 0u; _4687 = 0u; _4688 = 0u; } else { _4685 = _4666; _4686 = _4669; _4687 = _4667; _4688 = _4668; } bool _4690 = _4671 && (!_4684); bool _4692; if (_4690) { _4692 = _4682 > _4662; } else { _4692 = _4683; } uint _4786; uint _4787; uint _4788; uint _4789; uint _4790; uint _4791; if (_4690) { bool _4693 = _4690 && _4692; uint _4694; uint _4695; uint _4696; uint _4697; if (_4693) { _4694 = 0u; _4695 = 0u; _4696 = 0u; _4697 = 0u; } else { _4694 = _4685; _4695 = _4686; _4696 = _4687; _4697 = _4688; } bool _4699 = _4690 && (!_4693); uint _4703; if (_4699) { _4703 = as_type(spvFMul(_3268, as_type(_4674))); } else { _4703 = _4695; } uint _4780; uint _4781; uint _4782; uint _4783; uint _4784; uint _4785; if (_4699) { float _4707 = fma(_3265, _4675, -as_type(_4703)); float _4712 = fma(_3270, as_type(_4674), -spvFMul(_3265, _4677)); float _4716 = fma(_3268, _4677, -spvFMul(_3270, _4675)); float _4720 = fma(as_type(_4697), _4716, fma(_4644, _4712, spvFMul(as_type(_4696), _4707))); bool _4725 = _4699 && ((_4720 > _4662) || (_4720 < 0.0)); uint _4726; uint _4727; uint _4728; uint _4729; if (_4725) { _4726 = 0u; _4727 = 0u; _4728 = 0u; _4729 = 0u; } else { _4726 = _4697; _4727 = as_type(_4720); _4728 = as_type(_4707); _4729 = _4694; } bool _4731 = _4699 && (!_4725); uint _4736; if (_4731) { _4736 = as_type(spvFMul(as_type(_4729), as_type(_4728))); } else { _4736 = _4729; } uint _4775; uint _4776; uint _4777; uint _4778; uint _4779; if (_4731) { float _4740 = fma(as_type(_4638), _4716, fma(_4639, _4712, as_type(_4736))); bool _4748 = _4731 && ((spvFSub(as_type(_4727), _4740) > _4662) || (0.0 > (-_4740))); uint _4749; uint _4750; uint _4751; uint _4752; if (_4748) { _4749 = 0u; _4750 = 0u; _4751 = 0u; _4752 = 0u; } else { _4749 = _4728; _4750 = _4726; _4751 = as_type(_4740); _4752 = _4727; } bool _4754 = _4731 && (!_4748); uint _4755; if (_4754) { _4755 = 1u; } else { _4755 = _4752; } uint _4771; uint _4772; uint _4773; uint _4774; if (_4754) { float _4757 = spvFMul(_4682, 1.0 / _4662); float _4763 = spvFSub(as_type(_1344), _3121); _4771 = as_type(_4763); _4772 = as_type(fma(_4757, spvFSub(as_type(_1342), _3113), _3113)); _4773 = as_type(fma(_4757, _4763, _3121)); _4774 = as_type(fma(_4757, spvFSub(as_type(_1343), _3117), _3117)); } else { _4771 = _4645; _4772 = _4749; _4773 = _4750; _4774 = _4751; } _4775 = _4771; _4776 = _4772; _4777 = _4773; _4778 = _4774; _4779 = _4755; } else { _4775 = _4645; _4776 = _4728; _4777 = _4726; _4778 = _4736; _4779 = _4727; } _4780 = as_type(_4716); _4781 = _4775; _4782 = _4776; _4783 = _4777; _4784 = _4778; _4785 = _4779; } else { _4780 = _4676; _4781 = _4645; _4782 = _4703; _4783 = _4697; _4784 = _4694; _4785 = _4696; } _4786 = _4780; _4787 = _4781; _4788 = _4782; _4789 = _4783; _4790 = _4784; _4791 = _4785; } else { _4786 = _4676; _4787 = _4645; _4788 = _4686; _4789 = _4688; _4790 = _4685; _4791 = _4687; } _4792 = _4786; _4793 = _4787; _4794 = _4788; _4795 = _4789; _4796 = _4790; _4797 = _4791; } else { _4792 = _4624; _4793 = _4645; _4794 = _4669; _4795 = _4668; _4796 = _4666; _4797 = _4667; } _4799 = _4792; _4800 = as_type(_4662); _4801 = _4797; _4802 = _4793; _4803 = _4674; _4804 = _4795; _4805 = _4796; _4806 = _4794; _4807 = uint(max(int(0u), int(_4797))); } else { _4799 = _4624; _4800 = as_type(_4487); _4801 = _4625; _4802 = _4626; _4803 = _4499; _4804 = _4628; _4805 = _4629; _4806 = _4627; _4807 = _4631; } float _4812 = fma(as_type(_2668), -0.00999999977648258209228515625, as_type(_4806)); uint _4813 = as_type(_4812); float _4816 = fma(as_type(_2667), -0.00999999977648258209228515625, as_type(_4805)); float _4820 = fma(as_type(_2666), -0.00999999977648258209228515625, as_type(_4804)); bool _4823 = _4459 && (!(_4459 && (int(0u) < int(_4807)))); uint _4826; if (_4823) { _4826 = as_type(spvFSub(_3708, _4816)); } else { _4826 = _3709; } uint _5520; uint _5521; uint _5522; uint _5523; uint _5524; uint _5525; uint _5526; uint _5527; uint _5528; uint _5529; uint _5530; uint _5531; uint _5532; if (_4823) { float _4827 = spvFSub(_4820, _3645); float _4828 = spvFSub(_3717, _3649); float _4830 = spvFSub(_3222, _4816); float _4831 = spvFSub(_3227, _3645); float _4832 = spvFSub(_4812, _3649); float _4838 = fma(_4827, _4832, -spvFMul(_4828, _4831)); float _4841 = fma(_4828, _4830, -spvFMul(as_type(_4826), _4832)); uint _4842 = as_type(_4841); float _4845 = fma(as_type(_4826), _4831, -spvFMul(_4827, _4830)); float _4849 = fma(_3265, _4838, fma(_3268, _4841, spvFMul(_3270, _4845))); bool _4852 = _4823 && (0.0 >= _4849); uint _4853; uint _4854; uint _4855; uint _4856; if (_4852) { _4853 = 0u; _4854 = 0u; _4855 = 0u; _4856 = 0u; } else { _4853 = _4826; _4854 = as_type(_4828); _4855 = _4807; _4856 = as_type(_4838); } bool _4858 = _4823 && (!_4852); uint _4861; if (_4858) { _4861 = as_type(spvFSub(_3113, _4816)); } else { _4861 = _4855; } uint _4975; uint _4976; uint _4977; uint _4978; uint _4979; uint _4980; uint _4981; uint _4982; if (_4858) { float _4862 = spvFSub(_3117, _3645); float _4863 = spvFSub(_3121, _3649); float _4869 = fma(as_type(_4861), as_type(_4856), fma(_4862, _4841, spvFMul(_4863, _4845))); bool _4871 = 0.0 > _4869; bool _4872 = _4858 && _4871; uint _4873; uint _4874; uint _4875; uint _4876; if (_4872) { _4873 = 0u; _4874 = 0u; _4875 = 0u; _4876 = 0u; } else { _4873 = _4853; _4874 = _4854; _4875 = _4861; _4876 = _4856; } bool _4878 = _4858 && (!_4872); bool _4880; if (_4878) { _4880 = _4869 > _4849; } else { _4880 = _4871; } uint _4969; uint _4970; uint _4971; uint _4972; uint _4973; uint _4974; if (_4878) { bool _4881 = _4878 && _4880; uint _4882; uint _4883; uint _4884; uint _4885; if (_4881) { _4882 = 0u; _4883 = 0u; _4884 = 0u; _4885 = 0u; } else { _4882 = _4873; _4883 = _4874; _4884 = _4875; _4885 = _4876; } bool _4887 = _4878 && (!_4881); uint _4890; if (_4887) { _4890 = as_type(spvFMul(_3270, _4862)); } else { _4890 = _4885; } uint _4963; uint _4964; uint _4965; uint _4966; uint _4967; uint _4968; if (_4887) { float _4896 = fma(_3268, _4863, -as_type(_4890)); float _4900 = fma(_3270, as_type(_4884), -spvFMul(_3265, _4863)); float _4903 = fma(_3265, _4862, -spvFMul(_3268, as_type(_4884))); float _4907 = fma(_4830, _4896, fma(_4831, _4900, spvFMul(_4903, _4832))); bool _4911 = _4887 && ((_4907 > _4849) || (_4907 < 0.0)); uint _4912; uint _4913; uint _4914; uint _4915; if (_4911) { _4912 = 0u; _4913 = 0u; _4914 = 0u; _4915 = 0u; } else { _4912 = _4884; _4913 = as_type(_4896); _4914 = _4882; _4915 = _4883; } bool _4917 = _4887 && (!_4911); uint _4921; if (_4917) { _4921 = as_type(spvFMul(_4903, as_type(_4915))); } else { _4921 = _4915; } uint _4959; uint _4960; uint _4961; uint _4962; if (_4917) { float _4926 = fma(as_type(_4914), as_type(_4913), fma(_4827, _4900, as_type(_4921))); float _4928 = spvFSub(_4907, _4926); bool _4934 = _4917 && ((_4928 > _4849) || (0.0 > (-_4926))); uint _4935; uint _4936; uint _4937; uint _4938; if (_4934) { _4935 = 0u; _4936 = 0u; _4937 = 0u; _4938 = 0u; } else { _4935 = _4913; _4936 = as_type(_4926); _4937 = as_type(_4928); _4938 = _4912; } bool _4940 = _4917 && (!_4934); uint _4941; if (_4940) { _4941 = 1u; } else { _4941 = _4938; } uint _4956; uint _4957; uint _4958; if (_4940) { float _4943 = spvFMul(_4869, 1.0 / _4849); _4956 = as_type(fma(_4943, spvFSub(as_type(_1342), _3113), _3113)); _4957 = as_type(fma(_4943, spvFSub(as_type(_1343), _3117), _3117)); _4958 = as_type(fma(_4943, spvFSub(as_type(_1344), _3121), _3121)); } else { _4956 = _4935; _4957 = _4936; _4958 = _4937; } _4959 = _4956; _4960 = _4957; _4961 = _4958; _4962 = _4941; } else { _4959 = _4913; _4960 = _4921; _4961 = _4914; _4962 = _4912; } _4963 = as_type(_4900); _4964 = as_type(_4903); _4965 = _4959; _4966 = _4960; _4967 = _4961; _4968 = _4962; } else { _4963 = _4842; _4964 = _4803; _4965 = _4890; _4966 = _4883; _4967 = _4882; _4968 = _4884; } _4969 = _4963; _4970 = _4964; _4971 = _4965; _4972 = _4966; _4973 = _4967; _4974 = _4968; } else { _4969 = _4842; _4970 = _4803; _4971 = _4876; _4972 = _4874; _4973 = _4873; _4974 = _4875; } _4975 = as_type(_4863); _4976 = as_type(_4869); _4977 = _4969; _4978 = _4970; _4979 = _4971; _4980 = _4972; _4981 = _4973; _4982 = _4974; } else { _4975 = _4800; _4976 = as_type(_4845); _4977 = _4842; _4978 = _4803; _4979 = _4856; _4980 = _4854; _4981 = _4853; _4982 = _4861; } bool _4986 = _4823 && (!(_4823 && (int(0u) < int(_4982)))); uint _4989; if (_4986) { _4989 = as_type(spvFSub(_3164, _3222)); } else { _4989 = _4981; } uint _5139; uint _5140; uint _5141; uint _5142; uint _5143; uint _5144; if (_4986) { float _4990 = spvFSub(_3167, _3227); float _4991 = spvFSub(_3171, _4812); float _4993 = spvFSub(_4816, _3222); float _4994 = spvFSub(_3645, _3227); float _4995 = spvFSub(_3649, _4812); float _5002 = fma(_4990, _4995, -spvFMul(_4991, _4994)); float _5005 = fma(_4991, _4993, -spvFMul(as_type(_4989), _4995)); uint _5006 = as_type(_5005); float _5009 = fma(as_type(_4989), _4994, -spvFMul(_4990, _4993)); float _5012 = fma(_3265, _5002, fma(_3268, _5005, spvFMul(_3270, _5009))); bool _5014 = _4986 && (0.0 >= _5012); uint _5015; uint _5016; uint _5017; uint _5018; if (_5014) { _5015 = 0u; _5016 = 0u; _5017 = 0u; _5018 = 0u; } else { _5015 = _4979; _5016 = _4989; _5017 = as_type(_4991); _5018 = _4813; } bool _5020 = _4986 && (!_5014); uint _5023; if (_5020) { _5023 = as_type(spvFSub(_3113, _3222)); } else { _5023 = as_type(_3222); } uint _5133; uint _5134; uint _5135; uint _5136; uint _5137; if (_5020) { float _5024 = spvFSub(_3117, _3227); float _5026 = spvFSub(_3121, as_type(_5018)); float _5031 = fma(as_type(_5023), _5002, fma(_5024, _5005, spvFMul(_5026, _5009))); bool _5032 = 0.0 > _5031; bool _5033 = _5020 && _5032; uint _5034; uint _5035; uint _5036; uint _5037; if (_5033) { _5034 = 0u; _5035 = 0u; _5036 = 0u; _5037 = 0u; } else { _5034 = _5015; _5035 = _5016; _5036 = _5017; _5037 = as_type(_5026); } bool _5039 = _5020 && (!_5033); bool _5041; if (_5039) { _5041 = _5031 > _5012; } else { _5041 = _5032; } uint _5128; uint _5129; uint _5130; uint _5131; uint _5132; if (_5039) { bool _5042 = _5039 && _5041; uint _5043; uint _5044; uint _5045; uint _5046; if (_5042) { _5043 = 0u; _5044 = 0u; _5045 = 0u; _5046 = 0u; } else { _5043 = _5034; _5044 = _5035; _5045 = _5036; _5046 = _5037; } bool _5048 = _5039 && (!_5042); uint _5051; if (_5048) { _5051 = as_type(spvFMul(_3270, _5024)); } else { _5051 = as_type(_5002); } uint _5123; uint _5124; uint _5125; uint _5126; uint _5127; if (_5048) { float _5059 = fma(_3268, as_type(_5046), -as_type(_5051)); float _5062 = fma(_3270, as_type(_5023), -spvFMul(_3265, as_type(_5046))); float _5065 = fma(_3265, _5024, -spvFMul(_3268, as_type(_5023))); float _5068 = fma(_4993, _5059, fma(_4994, _5062, spvFMul(_5065, _4995))); bool _5072 = _5048 && ((_5068 > _5012) || (_5068 < 0.0)); uint _5073; uint _5074; uint _5075; uint _5076; if (_5072) { _5073 = 0u; _5074 = 0u; _5075 = 0u; _5076 = 0u; } else { _5073 = _5043; _5074 = _5046; _5075 = _5044; _5076 = _5045; } bool _5078 = _5048 && (!_5072); uint _5082; if (_5078) { _5082 = as_type(spvFMul(_5065, as_type(_5076))); } else { _5082 = _5076; } uint _5119; uint _5120; uint _5121; uint _5122; if (_5078) { float _5086 = fma(as_type(_5075), _5059, fma(_4990, _5062, as_type(_5082))); float _5088 = spvFSub(_5068, _5086); bool _5094 = _5078 && ((_5088 > _5012) || (0.0 > (-_5086))); uint _5095; uint _5096; uint _5097; uint _5098; if (_5094) { _5095 = 0u; _5096 = 0u; _5097 = 0u; _5098 = 0u; } else { _5095 = _5073; _5096 = as_type(_5086); _5097 = as_type(_5088); _5098 = _5074; } bool _5100 = _5078 && (!_5094); uint _5101; if (_5100) { _5101 = 1u; } else { _5101 = _5098; } uint _5116; uint _5117; uint _5118; if (_5100) { float _5103 = spvFMul(_5031, 1.0 / _5012); _5116 = as_type(fma(_5103, spvFSub(as_type(_1342), _3113), _3113)); _5117 = as_type(fma(_5103, spvFSub(as_type(_1343), _3117), _3117)); _5118 = as_type(fma(_5103, spvFSub(as_type(_1344), _3121), _3121)); } else { _5116 = _5095; _5117 = _5096; _5118 = _5097; } _5119 = _5116; _5120 = _5117; _5121 = _5118; _5122 = _5101; } else { _5119 = _5073; _5120 = _5082; _5121 = _5075; _5122 = _5074; } _5123 = as_type(_5062); _5124 = _5119; _5125 = _5120; _5126 = _5121; _5127 = _5122; } else { _5123 = _5006; _5124 = _5043; _5125 = _5045; _5126 = _5044; _5127 = _5046; } _5128 = _5123; _5129 = _5124; _5130 = _5125; _5131 = _5126; _5132 = _5127; } else { _5128 = _5006; _5129 = _5034; _5130 = _5036; _5131 = _5035; _5132 = _5037; } _5133 = _5128; _5134 = _5129; _5135 = _5130; _5136 = _5131; _5137 = _5132; } else { _5133 = _5006; _5134 = _5015; _5135 = _5017; _5136 = _5016; _5137 = _5018; } _5139 = as_type(_4995); _5140 = _5133; _5141 = _5136; _5142 = _5135; _5143 = _5134; _5144 = uint(max(int(0u), int(_5137))); } else { _5139 = _3650; _5140 = as_type(_3167); _5141 = _4989; _5142 = _4980; _5143 = _4979; _5144 = _4982; } bool _5160 = _4823 && (!(_4823 && (int(0u) < int(_5144)))); uint _5163; if (_5160) { _5163 = as_type(spvFSub(_3244, _3201)); } else { _5163 = _5141; } uint _5512; uint _5513; uint _5514; uint _5515; uint _5516; uint _5517; uint _5518; uint _5519; if (_5160) { float _5164 = spvFSub(_3248, _3205); float _5166 = spvFSub(_3252, _3209); float _5168 = spvFSub(_3675, _3201); float _5169 = spvFSub(_3680, _3205); float _5170 = spvFSub(_3685, _3209); float _5177 = fma(_5164, _5170, -spvFMul(_5166, _5169)); float _5180 = fma(_5166, _5168, -spvFMul(as_type(_5163), _5170)); float _5183 = fma(as_type(_5163), _5169, -spvFMul(_5164, _5168)); float _5187 = fma(_3265, _5177, fma(_3268, _5180, spvFMul(_3270, _5183))); bool _5189 = _5160 && (0.0 >= _5187); uint _5190; uint _5191; uint _5192; uint _5193; if (_5189) { _5190 = 0u; _5191 = 0u; _5192 = 0u; _5193 = 0u; } else { _5190 = _5144; _5191 = as_type(_5164); _5192 = as_type(_5170); _5193 = as_type(_5177); } bool _5195 = _5160 && (!_5189); uint _5198; if (_5195) { _5198 = as_type(spvFSub(_3113, _3201)); } else { _5198 = _5140; } uint _5310; uint _5311; uint _5312; uint _5313; uint _5314; uint _5315; if (_5195) { float _5199 = spvFSub(_3117, _3205); float _5200 = spvFSub(_3121, _3209); float _5205 = fma(as_type(_5198), as_type(_5193), fma(_5199, _5180, spvFMul(_5200, _5183))); bool _5207 = 0.0 > _5205; bool _5208 = _5195 && _5207; uint _5209; uint _5210; uint _5211; uint _5212; if (_5208) { _5209 = 0u; _5210 = 0u; _5211 = 0u; _5212 = 0u; } else { _5209 = _5190; _5210 = _5191; _5211 = _5193; _5212 = _5192; } bool _5214 = _5195 && (!_5208); bool _5216; if (_5214) { _5216 = _5205 > _5187; } else { _5216 = _5207; } uint _5305; uint _5306; uint _5307; uint _5308; uint _5309; if (_5214) { bool _5217 = _5214 && _5216; uint _5218; uint _5219; uint _5220; uint _5221; if (_5217) { _5218 = 0u; _5219 = 0u; _5220 = 0u; _5221 = 0u; } else { _5218 = _5209; _5219 = _5210; _5220 = _5211; _5221 = _5212; } bool _5223 = _5214 && (!_5217); uint _5226; if (_5223) { _5226 = as_type(spvFMul(_3270, _5199)); } else { _5226 = _5220; } uint _5300; uint _5301; uint _5302; uint _5303; uint _5304; if (_5223) { float _5232 = fma(_3268, _5200, -as_type(_5226)); float _5236 = fma(_3270, as_type(_5198), -spvFMul(_3265, _5200)); float _5238 = fma(_3265, _5199, -spvFMul(_3268, as_type(_5198))); float _5242 = fma(_5168, _5232, fma(_5169, _5236, spvFMul(_5238, as_type(_5221)))); bool _5247 = _5223 && ((_5242 > _5187) || (_5242 < 0.0)); uint _5248; uint _5249; uint _5250; uint _5251; if (_5247) { _5248 = 0u; _5249 = 0u; _5250 = 0u; _5251 = 0u; } else { _5248 = _5218; _5249 = as_type(_5232); _5250 = as_type(_5242); _5251 = _5219; } bool _5253 = _5223 && (!_5247); uint _5256; if (_5253) { _5256 = as_type(spvFMul(_5238, _5166)); } else { _5256 = as_type(_5166); } uint _5295; uint _5296; uint _5297; uint _5298; uint _5299; if (_5253) { float _5262 = fma(as_type(_5163), as_type(_5249), fma(as_type(_5251), _5236, as_type(_5256))); float _5264 = spvFSub(as_type(_5250), _5262); bool _5270 = _5253 && ((_5264 > _5187) || (0.0 > (-_5262))); uint _5271; uint _5272; uint _5273; uint _5274; if (_5270) { _5271 = 0u; _5272 = 0u; _5273 = 0u; _5274 = 0u; } else { _5271 = _5249; _5272 = _5250; _5273 = _5251; _5274 = _5248; } bool _5276 = _5253 && (!_5270); uint _5277; if (_5276) { _5277 = 1u; } else { _5277 = _5274; } uint _5292; uint _5293; uint _5294; if (_5276) { float _5279 = spvFMul(_5205, 1.0 / _5187); _5292 = as_type(fma(_5279, spvFSub(as_type(_1343), _3117), _3117)); _5293 = as_type(fma(_5279, spvFSub(as_type(_1342), _3113), _3113)); _5294 = as_type(fma(_5279, spvFSub(as_type(_1344), _3121), _3121)); } else { _5292 = _5271; _5293 = _5272; _5294 = _5273; } _5295 = _5292; _5296 = _5293; _5297 = _5294; _5298 = as_type(_5264); _5299 = _5277; } else { _5295 = _5249; _5296 = _5250; _5297 = _5251; _5298 = _5163; _5299 = _5248; } _5300 = _5295; _5301 = _5296; _5302 = _5297; _5303 = _5298; _5304 = _5299; } else { _5300 = _5226; _5301 = _5221; _5302 = _5219; _5303 = _5163; _5304 = _5218; } _5305 = _5300; _5306 = _5301; _5307 = _5302; _5308 = _5303; _5309 = _5304; } else { _5305 = _5211; _5306 = _5212; _5307 = _5210; _5308 = _5163; _5309 = _5209; } _5310 = as_type(_5205); _5311 = _5305; _5312 = _5306; _5313 = _5307; _5314 = _5308; _5315 = _5309; } else { _5310 = as_type(_5183); _5311 = _5193; _5312 = _5192; _5313 = _5191; _5314 = _5163; _5315 = _5190; } bool _5319 = _5160 && (!(_5160 && (int(0u) < int(_5315)))); uint _5323; if (_5319) { _5323 = as_type(spvFSub(as_type(_3627), _3675)); } else { _5323 = _5314; } uint _5492; uint _5493; uint _5494; uint _5495; uint _5496; uint _5497; uint _5498; uint _5499; if (_5319) { float _5324 = spvFSub(_3631, _3680); float _5326 = spvFSub(_3636, _3685); float _5328 = spvFSub(_3201, _3675); float _5329 = spvFSub(_3205, _3680); float _5330 = spvFSub(_3209, _3685); float _5337 = fma(_5324, _5330, -spvFMul(_5326, _5329)); float _5340 = fma(_5326, _5328, -spvFMul(as_type(_5323), _5330)); float _5343 = fma(as_type(_5323), _5329, -spvFMul(_5324, _5328)); float _5347 = fma(_3265, _5337, fma(_3268, _5340, spvFMul(_3270, _5343))); bool _5349 = _5319 && (0.0 >= _5347); uint _5350; uint _5351; uint _5352; uint _5353; if (_5349) { _5350 = 0u; _5351 = 0u; _5352 = 0u; _5353 = 0u; } else { _5350 = as_type(_5324); _5351 = as_type(_5326); _5352 = as_type(_5330); _5353 = as_type(_5337); } bool _5355 = _5319 && (!_5349); uint _5358; if (_5355) { _5358 = as_type(spvFSub(_3113, _3675)); } else { _5358 = as_type(_3675); } uint _5483; uint _5484; uint _5485; uint _5486; uint _5487; uint _5488; uint _5489; uint _5490; if (_5355) { float _5359 = spvFSub(_3117, _3680); uint _5360 = as_type(_5359); float _5361 = spvFSub(_3121, _3685); uint _5362 = as_type(_5361); float _5367 = fma(as_type(_5358), as_type(_5353), fma(_5359, _5340, spvFMul(_5361, _5343))); bool _5369 = 0.0 > _5367; bool _5370 = _5355 && _5369; uint _5371; uint _5372; uint _5373; uint _5374; if (_5370) { _5371 = 0u; _5372 = 0u; _5373 = 0u; _5374 = 0u; } else { _5371 = _5350; _5372 = _5351; _5373 = _5353; _5374 = _5352; } bool _5376 = _5355 && (!_5370); bool _5378; if (_5376) { _5378 = _5367 > _5347; } else { _5378 = _5369; } uint _5476; uint _5477; uint _5478; uint _5479; uint _5480; uint _5481; uint _5482; if (_5376) { bool _5379 = _5376 && _5378; uint _5380; uint _5381; uint _5382; uint _5383; if (_5379) { _5380 = 0u; _5381 = 0u; _5382 = 0u; _5383 = 0u; } else { _5380 = _5371; _5381 = _5372; _5382 = _5373; _5383 = _5374; } bool _5385 = _5376 && (!_5379); uint _5388; if (_5385) { _5388 = as_type(spvFMul(_3270, _5359)); } else { _5388 = _5382; } uint _5469; uint _5470; uint _5471; uint _5472; uint _5473; uint _5474; uint _5475; if (_5385) { float _5394 = fma(_3268, _5361, -as_type(_5388)); float _5398 = fma(_3270, as_type(_5358), -spvFMul(_3265, _5361)); float _5400 = fma(_3265, _5359, -spvFMul(_3268, as_type(_5358))); float _5404 = fma(_5328, _5394, fma(_5329, _5398, spvFMul(_5400, as_type(_5383)))); bool _5408 = _5385 && ((_5404 > _5347) || (_5404 < 0.0)); uint _5409; uint _5410; uint _5411; uint _5412; if (_5408) { _5409 = 0u; _5410 = 0u; _5411 = 0u; _5412 = 0u; } else { _5409 = _5383; _5410 = as_type(_5394); _5411 = _5380; _5412 = _5381; } bool _5414 = _5385 && (!_5408); uint _5418; if (_5414) { _5418 = as_type(spvFMul(_5400, as_type(_5412))); } else { _5418 = _5360; } uint _5462; uint _5463; uint _5464; uint _5465; uint _5466; uint _5467; uint _5468; if (_5414) { float _5424 = fma(as_type(_5323), as_type(_5410), fma(as_type(_5411), _5398, as_type(_5418))); bool _5431 = _5414 && ((spvFSub(_5404, _5424) > _5347) || (0.0 > (-_5424))); uint _5432; uint _5433; uint _5434; uint _5435; if (_5431) { _5432 = 0u; _5433 = 0u; _5434 = 0u; _5435 = 0u; } else { _5432 = _5410; _5433 = _5409; _5434 = _5411; _5435 = _5412; } bool _5437 = _5414 && (!_5431); uint _5438; if (_5437) { _5438 = 1u; } else { _5438 = _5435; } uint _5456; uint _5457; uint _5458; uint _5459; uint _5460; uint _5461; if (_5437) { float _5440 = spvFMul(_5367, 1.0 / _5347); float _5443 = spvFSub(as_type(_1342), _3113); float _5446 = spvFSub(as_type(_1343), _3117); _5456 = as_type(_5446); _5457 = as_type(_5443); _5458 = as_type(_5440); _5459 = as_type(fma(_5440, _5446, _3117)); _5460 = as_type(fma(_5440, _5443, _3113)); _5461 = as_type(fma(_5440, spvFSub(as_type(_1344), _3121), _3121)); } else { _5456 = _5323; _5457 = _5362; _5458 = as_type(_5424); _5459 = _5432; _5460 = _5433; _5461 = _5434; } _5462 = _5456; _5463 = _5457; _5464 = _5458; _5465 = _5459; _5466 = _5460; _5467 = _5461; _5468 = _5438; } else { _5462 = _5323; _5463 = _5362; _5464 = _5418; _5465 = _5410; _5466 = _5409; _5467 = _5411; _5468 = _5412; } _5469 = _5462; _5470 = _5463; _5471 = _5464; _5472 = _5465; _5473 = _5466; _5474 = _5467; _5475 = _5468; } else { _5469 = _5323; _5470 = _5362; _5471 = _5360; _5472 = _5388; _5473 = _5383; _5474 = _5380; _5475 = _5381; } _5476 = _5469; _5477 = _5470; _5478 = _5471; _5479 = _5472; _5480 = _5473; _5481 = _5474; _5482 = _5475; } else { _5476 = _5323; _5477 = _5362; _5478 = _5360; _5479 = _5373; _5480 = _5374; _5481 = _5371; _5482 = _5372; } _5483 = as_type(_5367); _5484 = _5476; _5485 = _5477; _5486 = _5478; _5487 = _5479; _5488 = _5480; _5489 = _5481; _5490 = _5482; } else { _5483 = as_type(_5343); _5484 = _5323; _5485 = _3686; _5486 = _3681; _5487 = _5353; _5488 = _5352; _5489 = _5350; _5490 = _5351; } _5492 = _5483; _5493 = _5484; _5494 = _5485; _5495 = _5486; _5496 = _5489; _5497 = _5487; _5498 = _5488; _5499 = uint(max(int(0u), int(_5490))); } else { _5492 = _5310; _5493 = _5323; _5494 = _3686; _5495 = _3681; _5496 = _5313; _5497 = _5311; _5498 = _5312; _5499 = _5315; } _5512 = _5492; _5513 = _5493; _5514 = _5494; _5515 = _5495; _5516 = as_type(fma(as_type(_2664), -0.00999999977648258209228515625, as_type(_5497))); _5517 = as_type(fma(as_type(_2663), -0.00999999977648258209228515625, as_type(_5496))); _5518 = as_type(fma(as_type(_2665), -0.00999999977648258209228515625, as_type(_5498))); _5519 = _5499; } else { _5512 = _5139; _5513 = _5163; _5514 = _3686; _5515 = _3681; _5516 = as_type(fma(as_type(_2664), 0.00999999977648258209228515625, as_type(_5142))); _5517 = as_type(fma(as_type(_2663), 0.00999999977648258209228515625, as_type(_5141))); _5518 = as_type(fma(as_type(_2665), 0.00999999977648258209228515625, as_type(_5143))); _5519 = _5144; } _5520 = _4975; _5521 = as_type(_4849); _5522 = _4976; _5523 = _4977; _5524 = _5512; _5525 = _4978; _5526 = _5513; _5527 = _5514; _5528 = _5515; _5529 = _5516; _5530 = _5517; _5531 = _5518; _5532 = _5519; } else { _5520 = _4800; _5521 = _4806; _5522 = _4801; _5523 = _4802; _5524 = _3650; _5525 = _4803; _5526 = _4826; _5527 = _3686; _5528 = _3681; _5529 = as_type(_4816); _5530 = as_type(_4820); _5531 = _4813; _5532 = _4807; } _5533 = _4799; _5534 = _5520; _5535 = _5521; _5536 = _5522; _5537 = _5523; _5538 = _5524; _5539 = _5525; _5540 = _5526; _5541 = _5527; _5542 = _5528; _5543 = _5529; _5544 = _5530; _5545 = _5531; _5546 = _5532; } else { _5533 = _4434; _5534 = _4435; _5535 = _4442; _5536 = _4436; _5537 = _4437; _5538 = _3650; _5539 = _4438; _5540 = _3709; _5541 = _3686; _5542 = _3681; _5543 = as_type(fma(as_type(_2667), 0.00999999977648258209228515625, as_type(_4441))); _5544 = as_type(_4456); _5545 = as_type(_4448); _5546 = _4443; } _5547 = _5533; _5548 = _5534; _5549 = _5535; _5550 = _5536; _5551 = _5537; _5552 = _5538; _5553 = _5539; _5554 = _5540; _5555 = _5541; _5556 = _5542; _5557 = _5543; _5558 = _5544; _5559 = _5545; _5560 = _5546; } else { _5547 = _4062; _5548 = _4063; _5549 = _4070; _5550 = _4064; _5551 = _4065; _5552 = _3650; _5553 = _4066; _5554 = _3709; _5555 = _3686; _5556 = _3681; _5557 = as_type(_4081); _5558 = as_type(fma(as_type(_2669), -0.00999999977648258209228515625, as_type(_4068))); _5559 = as_type(fma(as_type(_2671), -0.00999999977648258209228515625, as_type(_4070))); _5560 = _4071; } _5561 = _5547; _5562 = _5548; _5563 = _5549; _5564 = _5550; _5565 = _5551; _5566 = _5552; _5567 = as_type(_3636); _5568 = as_type(_3631); _5569 = _5553; _5570 = _5554; _5571 = _5555; _5572 = _5556; _5573 = _5557; _5574 = _5558; _5575 = _5559; _5576 = _5560; } else { _5561 = _3596; _5562 = _3597; _5563 = _3603; _5564 = _3598; _5565 = _3599; _5566 = as_type(_3160); _5567 = as_type(_3197); _5568 = as_type(_3193); _5569 = _3600; _5570 = as_type(_3135); _5571 = as_type(_3131); _5572 = as_type(_3127); _5573 = as_type(_3614); _5574 = as_type(_3618); _5575 = as_type(fma(as_type(_2671), 0.00999999977648258209228515625, as_type(_3603))); _5576 = _3604; } bool _5577 = 0u == _5576; bool _5580 = _3099 && (!(_3099 && _5577)); bool _5583; if (_5580) { _5583 = 0.0 >= as_type(_3089); } else { _5583 = _5577; } uint _5614; uint _5615; if (_5580) { bool _5584 = _5580 && _5583; uint _5585; if (_5584) { _5585 = 0u; } else { _5585 = 1065353216u; } bool _5587 = _5580 && (!_5584); uint _5592; if (_5587) { _5592 = as_type(spvFSub(as_type(_1342), as_type(_5575))); } else { _5592 = _5585; } uint _5612; uint _5613; if (_5587) { float _5595 = spvFSub(as_type(_1343), as_type(_5573)); float _5598 = spvFSub(as_type(_1344), as_type(_5574)); float _5606 = 1.0 / as_type(_3089); _5612 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_5592), as_type(_5592), fma(_5595, _5595, spvFMul(_5598, _5598)))), _5606), 0.0, 1.0))); _5613 = as_type(_5606); } else { _5612 = _5592; _5613 = _3089; } _5614 = _5612; _5615 = _5613; } else { _5614 = 1065353216u; _5615 = _3089; } _5616 = as_type(_3205); _5617 = _5561; _5618 = _5562; _5619 = _5576; _5620 = _5563; _5621 = as_type(_3270); _5622 = as_type(_3265); _5623 = _5564; _5624 = _5565; _5625 = _5566; _5626 = as_type(_3201); _5627 = _5567; _5628 = _5568; _5629 = _5569; _5630 = _5614; _5631 = _5570; _5632 = _5571; _5633 = _5572; _5634 = _5615; _5635 = _5583; } else { _5616 = _2237; _5617 = _2238; _5618 = _2239; _5619 = _2240; _5620 = _2241; _5621 = _2242; _5622 = _2243; _5623 = _2244; _5624 = _2245; _5625 = _2246; _5626 = _2247; _5627 = _2248; _5628 = _2249; _5629 = _2262; _5630 = _3104; _5631 = _3090; _5632 = _3091; _5633 = _3092; _5634 = _3089; _5635 = _3098; } bool _5637 = _3096 && (!_3099); bool _5639; if (_5637) { _5639 = 3u == cbuf_56.data[_2315]; } else { _5639 = _5635; } uint _5908; uint _5909; uint _5910; uint _5911; uint _5912; uint _5913; if (_5637) { bool _5640 = _5637 && _5639; bool _5643; if (_5640) { _5643 = 0.0 >= as_type(_5634); } else { _5643 = _5639; } uint _5903; uint _5904; uint _5905; uint _5906; uint _5907; if (_5640) { bool _5644 = _5640 && _5643; if (_5644) { } bool _5646 = _5640 && (!_5644); uint _5898; uint _5899; uint _5900; uint _5901; uint _5902; if (_5646) { uint _5651 = ((0u + ((_2285 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _5661 = uint3(cbuf_56.data[_5651 + 0u], cbuf_56.data[_5651 + 1u], cbuf_56.data[_5651 + 2u]); uint _5662 = _5661.x; uint _5663 = _5661.y; uint _5664 = _5661.z; uint _5669 = ((0u + ((_2285 + 73u) * 16u)) + buf3_off) >> 2u; float _5674 = spvFSub(as_type(_2309), as_type(_5664)); float _5677 = spvFSub(as_type(_2308), as_type(_5663)); float _5681 = spvFSub(as_type(_2307), as_type(_5662)); float _5689 = fast::max(sqrt(fma(_5681, _5681, fma(_5677, _5677, spvFMul(_5674, _5674)))), spvFMul(fast::max(as_type(cbuf_56.data[_5669]), as_type(cbuf_56.data[_5669])), 4.0)); float _5694 = fma(-as_type(_5631), _5689, as_type(_1344)); float _5698 = fma(-as_type(_5632), _5689, as_type(_1343)); float _5700 = spvFSub(as_type(_1344), _5694); float _5704 = spvFSub(as_type(_5664), as_type(_2309)); float _5709 = fma(-as_type(_5633), _5689, as_type(_1342)); float _5711 = spvFSub(as_type(_1343), _5698); float _5714 = spvFSub(as_type(_5663), as_type(_2308)); float _5719 = spvFSub(as_type(_1342), _5709); float _5722 = spvFSub(as_type(_5662), as_type(_2307)); float _5726 = fma(_5719, _5719, fma(_5711, _5711, spvFMul(_5700, _5700))); float _5727 = fma(_5722, _5722, fma(_5714, _5714, spvFMul(_5704, _5704))); bool _5732 = _5726 <= 9.9999997473787516355514526367188e-06; float _5742 = spvFMul(as_type(_5633), _5689); float _5744 = spvFMul(as_type(_5632), _5689); float _5746 = spvFMul(as_type(_5631), _5689); float _5747 = fma(_5722, spvFSub(_5709, as_type(_2307)), fma(_5714, spvFSub(_5698, as_type(_2308)), spvFMul(_5704, spvFSub(_5694, as_type(_2309))))); bool _5749 = _5646 && ((9.9999999747524270787835121154785e-07 >= _5727) && _5732); uint _5750; uint _5751; uint _5752; if (_5749) { _5750 = _2308; _5751 = _2307; _5752 = _2309; } else { _5750 = as_type(_5714); _5751 = as_type(_5722); _5752 = as_type(_5704); } bool _5754 = _5646 && (!_5749); uint _5832; uint _5833; uint _5834; if (_5754) { bool _5755 = _5754 && _5732; uint _5760; if (_5755) { _5760 = as_type(fast::clamp(spvFMul(_5747, 1.0 / _5727), 0.0, 1.0)); } else { _5760 = as_type(_5689); } bool _5762 = _5754 && (!_5755); uint _5766; if (_5762) { _5766 = as_type(spvFMul(_5700, as_type(_5752))); } else { _5766 = _5760; } uint _5816; if (_5762) { bool _5774 = _5762 && (9.9999997473787516355514526367188e-06 >= _5727); uint _5775; if (_5774) { _5775 = 0u; } else { _5775 = as_type(fma(_5719, as_type(_5751), fma(_5711, as_type(_5750), as_type(_5766)))); } bool _5777 = _5762 && (!_5774); uint _5782; if (_5777) { _5782 = as_type(spvFMul(as_type(_5775), as_type(_5775))); } else { _5782 = as_type(_5700); } uint _5815; if (_5777) { float _5785 = fma(_5726, _5727, -as_type(_5782)); bool _5788 = _5777 && (0.0 != _5785); uint _5798; if (_5788) { _5798 = as_type(fast::clamp(spvFMul(fma(_5747, as_type(_5775), -spvFMul(_5727, as_type(_5775))), 1.0 / _5785), 0.0, 1.0)); } else { _5798 = as_type(_5785); } uint _5801; if (_5777 && (!_5788)) { _5801 = 0u; } else { _5801 = _5798; } uint _5814; if (_5777 && (!(_5777 && (0.0 > spvFMul(fma(as_type(_5775), as_type(_5801), _5747), 1.0 / _5727))))) { _5814 = as_type((1.0 >= 0.0) ? 0.0 : 1.0); } else { _5814 = 0u; } _5815 = _5814; } else { _5815 = _5775; } _5816 = _5815; } else { _5816 = _5766; } _5832 = as_type(fma(as_type(_5752), as_type(_5816), as_type(_2309))); _5833 = as_type(fma(as_type(_5750), as_type(_5816), as_type(_2308))); _5834 = as_type(fma(as_type(_5751), as_type(_5816), as_type(_2307))); } else { _5832 = _5752; _5833 = _5750; _5834 = _5751; } float _5836 = spvFSub(_5709, as_type(_5834)); float _5838 = spvFSub(_5698, as_type(_5833)); float _5840 = spvFSub(_5694, as_type(_5832)); float _5843 = fma(_5836, _5742, fma(_5838, _5744, spvFMul(_5746, _5840))); float _5850 = fma(-as_type(cbuf_56.data[_5669]), as_type(cbuf_56.data[_5669]), fma(_5836, _5836, fma(_5838, _5838, spvFMul(_5840, _5840)))); bool _5855 = _5646 && ((_5843 > 0.0) && (0.0 < _5850)); uint _5856; if (_5855) { _5856 = 0u; } else { _5856 = cbuf_56.data[_5669]; } bool _5858 = _5646 && (!_5855); uint _5862; if (_5858) { _5862 = as_type(fma(_5843, _5843, -_5850)); } else { _5862 = as_type(_5850); } uint _5886; uint _5887; uint _5888; uint _5889; if (_5858) { bool _5865 = _5858 && (0.0 > as_type(_5862)); uint _5866; if (_5865) { _5866 = 0u; } else { _5866 = _5856; } bool _5868 = _5858 && (!_5865); uint _5869; if (_5868) { _5869 = 1u; } else { _5869 = _5866; } uint _5883; uint _5884; uint _5885; if (_5868) { float _5874 = spvFAdd(-_5843, -sqrt(as_type(_5862))); float _5876 = (0.0 <= _5874) ? _5874 : 0.0; _5883 = as_type(fma(_5746, _5876, _5694)); _5884 = as_type(fma(_5744, _5876, _5698)); _5885 = as_type(fma(_5742, _5876, _5709)); } else { _5883 = _2259; _5884 = _2260; _5885 = _2261; } _5886 = _5883; _5887 = _5884; _5888 = _5885; _5889 = _5869; } else { _5886 = _2259; _5887 = _2260; _5888 = _2261; _5889 = _5856; } bool _5893 = _5646 && (!(_5646 && (0u == _5889))); if (_5893) { } uint _5897; if (_5893) { _5897 = as_type(1.0 / as_type(_5634)); } else { _5897 = _5634; } _5898 = as_type(_5727); _5899 = _5886; _5900 = _5887; _5901 = _5888; _5902 = _5897; } else { _5898 = _5625; _5899 = _2259; _5900 = _2260; _5901 = _2261; _5902 = _5634; } _5903 = _5898; _5904 = _5899; _5905 = _5900; _5906 = _5901; _5907 = _5902; } else { _5903 = _5625; _5904 = _2259; _5905 = _2260; _5906 = _2261; _5907 = _5634; } _5908 = _5903; _5909 = _5904; _5910 = _5905; _5911 = _5906; _5912 = _5907; _5913 = 1065353216u; } else { _5908 = _5625; _5909 = _2259; _5910 = _2260; _5911 = _2261; _5912 = _5634; _5913 = _5630; } _5914 = _5616; _5915 = _5617; _5916 = _5618; _5917 = _5619; _5918 = _5620; _5919 = _5621; _5920 = _5622; _5921 = _5623; _5922 = _5624; _5923 = _5908; _5924 = _5626; _5925 = _5627; _5926 = _5628; _5927 = _5629; _5928 = _5909; _5929 = _5910; _5930 = _5911; _5931 = _5912; _5932 = _5913; } else { _5914 = _2237; _5915 = _2238; _5916 = _2239; _5917 = _2240; _5918 = _2241; _5919 = _2242; _5920 = _2243; _5921 = _2244; _5922 = _2245; _5923 = _2246; _5924 = _2247; _5925 = _2248; _5926 = _2249; _5927 = _2262; _5928 = _2259; _5929 = _2260; _5930 = _2261; _5931 = _3089; _5932 = _3093; } _5933 = _5914; _5934 = _5915; _5935 = _5916; _5936 = _5917; _5937 = _5918; _5938 = _5919; _5939 = _5920; _5940 = _5921; _5941 = _5922; _5942 = _5923; _5943 = _5924; _5944 = _5925; _5945 = _5926; _5946 = _5927; _5947 = _3086; _5948 = _3087; _5949 = _3088; _5950 = _5928; _5951 = _5929; _5952 = _5930; _5953 = _5931; _5954 = _5932; } else { _5933 = _2237; _5934 = _2238; _5935 = _2239; _5936 = _2240; _5937 = _2241; _5938 = _2242; _5939 = _2243; _5940 = _2244; _5941 = _2245; _5942 = _2246; _5943 = _2247; _5944 = _2248; _5945 = _2249; _5946 = _2262; _5947 = _2275; _5948 = _2276; _5949 = _2277; _5950 = _2259; _5951 = _2260; _5952 = _2261; _5953 = _2725; _5954 = _2944; } bool _5956 = _2951 && (!_2955); uint _5961; if (_5956) { _5961 = as_type(spvFSub(as_type(_2677), as_type(_1342))); } else { _5961 = _5954; } uint _5980; if (_5956) { float _5964 = spvFSub(as_type(_2676), as_type(_1343)); float _5967 = spvFSub(as_type(_2675), as_type(_1344)); _5980 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_5961), as_type(_5961), fma(_5964, _5964, spvFMul(_5967, _5967)))), 1.0 / as_type(_5953)), 0.0, 1.0))); } else { _5980 = _5961; } _5981 = _5933; _5982 = _5934; _5983 = _5935; _5984 = _5936; _5985 = _5937; _5986 = _5938; _5987 = _5939; _5988 = _5940; _5989 = _5941; _5990 = _5942; _5991 = _5943; _5992 = _5944; _5993 = _5945; _5994 = _5946; _5995 = _5947; _5996 = _5948; _5997 = _5949; _5998 = _5950; _5999 = _5951; _6000 = _5952; _6001 = _5980; } else { _5981 = _2237; _5982 = _2238; _5983 = _2239; _5984 = _2240; _5985 = _2241; _5986 = _2242; _5987 = _2243; _5988 = _2244; _5989 = _2245; _5990 = _2246; _5991 = _2247; _5992 = _2248; _5993 = _2249; _5994 = _2262; _5995 = _2275; _5996 = _2276; _5997 = _2277; _5998 = _2259; _5999 = _2260; _6000 = _2261; _6001 = _2944; } uint _6004; if (_2680 && (!_2951)) { _6004 = 1065353216u; } else { _6004 = _6001; } bool _6007 = _2680 && (0.0 < as_type(_2726)); bool _6008 = 1u == cbuf_56.data[_2315]; uint _6315; if (_6007) { bool _6009 = _6007 && _6008; uint _6056; uint _6057; uint _6058; uint _6059; bool _6060; uint _6061; if (_6009) { float _6019 = spvFSub(as_type(_1342), as_type(_2677)); float _6022 = spvFSub(as_type(_1343), as_type(_2676)); float _6026 = spvFSub(as_type(_1344), as_type(_2675)); float _6029 = fma(_6019, _6019, fma(_6022, _6022, spvFMul(_6026, _6026))); float _6034 = fast::max(0.0, spvFSub(sqrt(_6029), as_type(_2726))); float _6038 = spvFSub(as_type(cbuf_56.data[((0u + ((_2285 + 73u) * 16u)) + buf3_off) >> 2u]), as_type(_2726)); bool _6040 = 0.0 > _6038; bool _6041 = _6009 && _6040; uint _6042; if (_6041) { _6042 = 1065353216u; } else { _6042 = as_type(_6038); } uint _6051; if (_6009 && (!_6041)) { _6051 = as_type(spvFSub(1.0, fast::clamp(spvFMul(_6034, 1.0 / as_type(_6042)), 0.0, 1.0))); } else { _6051 = _6042; } _6056 = as_type(_6022); _6057 = as_type(_6034); _6058 = as_type(spvFMul(as_type(_6004), as_type(_6051))); _6059 = _6051; _6060 = _6040; _6061 = as_type(_6029); } else { _6056 = _2309; _6057 = _2308; _6058 = _6004; _6059 = _2307; _6060 = _6008; _6061 = cbuf_56.data[_2315]; } bool _6063 = _6007 && (!_6009); bool _6065; if (_6063) { _6065 = 2u == _6061; } else { _6065 = _6060; } uint _6314; if (_6063) { bool _6066 = _6063 && _6065; uint _6071; if (_6066) { _6071 = as_type(spvFSub(as_type(_1342), as_type(_2677))); } else { _6071 = _6059; } uint _6173; uint _6174; uint _6175; uint _6176; bool _6177; uint _6178; if (_6066) { float _6074 = spvFSub(as_type(_1343), as_type(_2676)); float _6077 = spvFSub(as_type(_1344), as_type(_2675)); float _6084 = fma(as_type(_6071), as_type(_2665), fma(_6074, as_type(_2664), spvFMul(as_type(_2663), _6077))); float _6088 = (_6084 > as_type(_2672)) ? as_type(_2672) : _6084; float _6094 = ((-as_type(_2672)) > _6088) ? (-as_type(_2672)) : _6088; float _6110 = fma(as_type(_6071), as_type(_2668), fma(_6074, as_type(_2667), spvFMul(as_type(_2666), _6077))); float _6114 = (_6110 > as_type(_2673)) ? as_type(_2673) : _6110; float _6120 = ((-as_type(_2673)) > _6114) ? (-as_type(_2673)) : _6114; float _6133 = fma(as_type(_6071), as_type(_2671), fma(_6074, as_type(_2670), spvFMul(as_type(_2669), _6077))); float _6137 = (_6133 > as_type(_2674)) ? as_type(_2674) : _6133; bool _6140 = (-as_type(_2674)) > _6137; float _6143 = _6140 ? (-as_type(_2674)) : _6137; float _6149 = fma(_6143, as_type(_2669), fma(_6120, as_type(_2666), fma(_6094, as_type(_2663), as_type(_2675)))); float _6152 = spvFSub(as_type(_1342), fma(_6143, as_type(_2671), fma(_6120, as_type(_2668), fma(_6094, as_type(_2665), as_type(_2677))))); float _6154 = spvFSub(as_type(_1343), fma(_6143, as_type(_2670), fma(_6120, as_type(_2667), fma(_6094, as_type(_2664), as_type(_2676))))); float _6156 = spvFSub(as_type(_1344), _6149); float _6159 = fma(_6152, _6152, fma(_6154, _6154, spvFMul(_6156, _6156))); float _6165 = 1.0 / as_type(_2726); float _6168 = fast::clamp(spvFMul(fast::max(9.9999997473787516355514526367188e-05, sqrt(_6159)), _6165), 0.0, 1.0); _6173 = as_type(spvFMul(as_type(_6058), _6168)); _6174 = as_type(_6159); _6175 = as_type(_6165); _6176 = as_type(_6168); _6177 = _6140; _6178 = as_type(_6149); } else { _6173 = _6058; _6174 = _6056; _6175 = _6057; _6176 = _6071; _6177 = _6065; _6178 = _6061; } bool _6180 = _6063 && (!_6066); bool _6182; if (_6180) { _6182 = 3u == _6178; } else { _6182 = _6177; } uint _6313; if (_6180) { bool _6183 = _6180 && _6182; uint _6312; if (_6183) { uint _6188 = ((0u + ((_2285 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _6198 = uint3(cbuf_56.data[_6188 + 0u], cbuf_56.data[_6188 + 1u], cbuf_56.data[_6188 + 2u]); uint _6199 = _6198.x; uint _6200 = _6198.y; uint _6201 = _6198.z; float _6204 = spvFSub(as_type(_6199), as_type(_6176)); float _6207 = spvFSub(as_type(_6200), as_type(_6175)); float _6210 = spvFSub(as_type(_6201), as_type(_6174)); float _6214 = spvFSub(as_type(_1342), as_type(_6176)); float _6218 = spvFSub(as_type(_1343), as_type(_6175)); float _6221 = spvFSub(as_type(_1344), as_type(_6174)); float _6225 = spvFSub(as_type(_1342), as_type(_6199)); float _6228 = spvFSub(as_type(_1343), as_type(_6200)); float _6231 = spvFSub(as_type(_1344), as_type(_6201)); float _6234 = fma(_6214, _6204, fma(_6218, _6207, spvFMul(_6221, _6210))); bool _6236 = _6183 && (0.0 >= _6234); uint _6243; uint _6244; if (_6236) { float _6239 = fma(_6214, _6214, fma(_6218, _6218, spvFMul(_6221, _6221))); _6243 = as_type(sqrt(_6239)); _6244 = as_type(_6239); } else { _6243 = as_type(_6214); _6244 = as_type(_6221); } bool _6246 = _6183 && (!_6236); uint _6249; if (_6246) { _6249 = as_type(spvFMul(_6210, _6210)); } else { _6249 = as_type(_6210); } uint _6280; if (_6246) { float _6252 = fma(_6204, _6204, fma(_6207, _6207, as_type(_6249))); bool _6254 = _6246 && (_6234 >= _6252); uint _6260; if (_6254) { _6260 = as_type(sqrt(fma(_6225, _6225, fma(_6228, _6228, spvFMul(_6231, _6231))))); } else { _6260 = _6243; } bool _6262 = _6246 && (!_6254); uint _6267; if (_6262) { _6267 = as_type(spvFMul(as_type(_6244), as_type(_6244))); } else { _6267 = _6244; } uint _6279; if (_6262) { _6279 = as_type(sqrt(fma(-spvFMul(_6234, _6234), 1.0 / _6252, fma(as_type(_6260), as_type(_6260), fma(_6218, _6218, as_type(_6267)))))); } else { _6279 = _6260; } _6280 = _6279; } else { _6280 = _6243; } float _6295 = spvFSub(as_type(cbuf_56.data[((0u + ((_2285 + 73u) * 16u)) + buf3_off) >> 2u]), as_type(_2726)); bool _6297 = _6183 && (0.0 > _6295); uint _6298; if (_6297) { _6298 = 1065353216u; } else { _6298 = as_type(fast::max(0.0, spvFSub(as_type(_6280), as_type(_2726)))); } uint _6307; if (_6183 && (!_6297)) { _6307 = as_type(spvFSub(1.0, fast::clamp(spvFMul(as_type(_6298), 1.0 / _6295), 0.0, 1.0))); } else { _6307 = _6298; } _6312 = as_type(spvFMul(as_type(_6173), as_type(_6307))); } else { _6312 = _6173; } _6313 = _6312; } else { _6313 = _6173; } _6314 = _6313; } else { _6314 = _6058; } _6315 = _6314; } else { _6315 = _6004; } bool _6316 = 1u == _2745; bool _6317 = _2680 && _6316; float _6320 = spvFMul(as_type(_2100), as_type(_6315)); uint _6383; uint _6384; uint _6385; uint _6386; uint _6387; bool _6388; if (_6317) { float _6328 = spvFMul(as_type(cbuf_52.data[_1762]), spvFMul(as_type(_2949), _6320)); float _6330 = spvFMul(as_type(cbuf_52.data[_1762]), spvFMul(as_type(_2948), _6320)); float _6332 = spvFMul(as_type(cbuf_52.data[_1762]), spvFMul(as_type(_2942), _6320)); float _6336 = sqrt(fma(_6328, _6328, fma(_6330, _6330, spvFMul(_6332, _6332)))); float _6339 = spvFSub(as_type(_2677), as_type(_1342)); float _6342 = spvFSub(as_type(_2676), as_type(_1343)); float _6345 = spvFSub(as_type(_2675), as_type(_1344)); float _6349 = rsqrt(fma(_6339, _6339, fma(_6342, _6342, spvFMul(_6345, _6345)))); float _6350 = spvFMul(_6339, _6349); float _6351 = spvFMul(_6342, _6349); float _6352 = spvFMul(_6345, _6349); uint _6355 = uint(spvFAdd(_2218, as_type(_2724))); uint _6359 = ((spvMulExtended(_6355, 274877907u))._m1 >> 6u) * 1000u; float _6362 = spvFMul(0.001000000047497451305389404296875, float(_6355 - _6359)); bool _6367 = 0.0 > fma(as_type(_2727), _6362, as_type(_2724)); _6383 = _6359; _6384 = as_type(_6362); _6385 = as_type(fma(_6336, _6367 ? (-_6352) : _6352, as_type(_2256))); _6386 = as_type(fma(_6336, _6367 ? (-_6351) : _6351, as_type(_2257))); _6387 = as_type(fma(_6336, _6367 ? (-_6350) : _6350, as_type(_2258))); _6388 = _6367; } else { _6383 = _2676; _6384 = _2677; _6385 = _2256; _6386 = _2257; _6387 = _2258; _6388 = _6316; } bool _6390 = _2680 && (!_6317); bool _6392; if (_6390) { _6392 = 2u == _2745; } else { _6392 = _6388; } uint _6462; uint _6463; uint _6464; uint _6465; uint _6466; uint _6467; uint _6468; uint _6469; if (_6390) { uint _6454; uint _6455; uint _6456; uint _6457; uint _6458; uint _6459; uint _6460; uint _6461; if (_6390 && _6392) { uint _6399 = ((0u + ((_2285 + 89u) * 16u)) + buf3_off) >> 2u; uint3 _6409 = uint3(cbuf_56.data[_6399 + 0u], cbuf_56.data[_6399 + 1u], cbuf_56.data[_6399 + 2u]); float _6415 = spvFMul(as_type(_2100), as_type(_6315)); float _6417 = spvFMul(as_type(_2949), _6415); float _6420 = spvFMul(as_type(_2948), _6415); float _6431 = fma(as_type(cbuf_52.data[_1762]), _6417, fma(_2221, _2224, as_type(_6409.x))); float _6433 = fma(as_type(cbuf_52.data[_1762]), _6420, fma(_2225, _2228, as_type(_6409.y))); float _6435 = fma(as_type(cbuf_52.data[_1762]), spvFMul(as_type(_2942), _6415), fma(_2229, _2233, as_type(_6409.z))); _6454 = as_type(_6420); _6455 = as_type(_6417); _6456 = as_type(fast::max(as_type(_2250), _6435)); _6457 = as_type(fast::max(as_type(_2251), _6433)); _6458 = as_type(fast::max(as_type(_2252), _6431)); _6459 = as_type(fast::min(as_type(_2253), _6435)); _6460 = as_type(fast::min(as_type(_2254), _6433)); _6461 = as_type(fast::min(as_type(_2255), _6431)); } else { _6454 = _6383; _6455 = _6384; _6456 = _2250; _6457 = _2251; _6458 = _2252; _6459 = _2253; _6460 = _2254; _6461 = _2255; } _6462 = _6454; _6463 = _6455; _6464 = _6456; _6465 = _6457; _6466 = _6458; _6467 = _6459; _6468 = _6460; _6469 = _6461; } else { _6462 = _6383; _6463 = _6384; _6464 = _2250; _6465 = _2251; _6466 = _2252; _6467 = _2253; _6468 = _2254; _6469 = _2255; } _6472 = _5981; _6473 = _5982; _6474 = _5983; _6475 = _5984; _6476 = _5985; _6477 = _5986; _6478 = _5987; _6479 = _5988; _6480 = _5989; _6481 = _5990; _6482 = _5991; _6483 = _5992; _6484 = _5993; _6485 = _5994; _6486 = as_type(spvFAdd(as_type(_2280), _2821)); _6487 = as_type(_2825); _6488 = _6462; _6489 = _6463; _6490 = _5995; _6491 = _5996; _6492 = _5997; _6493 = _5998; _6494 = _5999; _6495 = _6000; _6496 = _6385; _6497 = _6386; _6498 = _6387; _6499 = _6464; _6500 = _6465; _6501 = _6466; _6502 = _6467; _6503 = _6468; _6504 = _6469; _6505 = as_type(_2825); } else { _6472 = _2237; _6473 = _2238; _6474 = _2239; _6475 = _2240; _6476 = _2241; _6477 = _2242; _6478 = _2243; _6479 = _2244; _6480 = _2245; _6481 = _2246; _6482 = _2247; _6483 = _2248; _6484 = _2249; _6485 = _2262; _6486 = _2280; _6487 = _2281; _6488 = _2676; _6489 = _2677; _6490 = _2275; _6491 = _2276; _6492 = _2277; _6493 = _2259; _6494 = _2260; _6495 = _2261; _6496 = _2256; _6497 = _2257; _6498 = _2258; _6499 = _2250; _6500 = _2251; _6501 = _2252; _6502 = _2253; _6503 = _2254; _6504 = _2255; _6505 = _2678; } _6506 = _2285 + 1u; if (true) { _2237 = _6472; _2238 = _6473; _2239 = _6474; _2240 = _6475; _2241 = _6476; _2242 = _6477; _2243 = _6478; _2244 = _6479; _2245 = _6480; _2246 = _6481; _2247 = _6482; _2248 = _6483; _2249 = _6484; _2250 = _6499; _2251 = _6500; _2252 = _6501; _2253 = _6502; _2254 = _6503; _2255 = _6504; _2256 = _6496; _2257 = _6497; _2258 = _6498; _2259 = _6493; _2260 = _6494; _2261 = _6495; _2262 = _6485; _2263 = _2663; _2264 = _2664; _2265 = _2665; _2266 = _2666; _2267 = _2667; _2268 = _2668; _2269 = _2669; _2270 = _2670; _2271 = _2671; _2272 = _2672; _2273 = _2673; _2274 = _2674; _2275 = _6490; _2276 = _6491; _2277 = _6492; _2278 = _2675; _2279 = _6488; _2280 = _6486; _2281 = _6487; _2282 = _6505; _2283 = _6489; _2284 = _2290; _2285 = _6506; continue; } else { _6507 = _6472; _6508 = _6473; _6509 = _6485; _6510 = _6474; _6511 = _6475; _6512 = _6476; _6513 = _6477; _6514 = _6478; _6515 = _6479; _6516 = _6480; _6517 = _6481; _6518 = _6482; _6519 = _6483; _6520 = _6484; _6521 = _6496; _6522 = _6497; _6523 = _6498; _6524 = _6499; _6525 = _6502; _6526 = _6500; _6527 = _6503; _6528 = _6501; _6529 = _6504; _6530 = _6486; _6531 = _6487; break; } } float _6539 = (1.0 < as_type(_6531)) ? spvFMul(as_type(_6530), 1.0 / as_type(_6531)) : as_type(_6530); float _6550 = spvFAdd(as_type(_6523), spvFAdd(as_type(_6529), as_type(_6528))); float _6552 = spvFAdd(as_type(_6522), spvFAdd(as_type(_6527), as_type(_6526))); float _6554 = spvFAdd(as_type(_6521), spvFAdd(as_type(_6525), as_type(_6524))); float _6556 = spvFMul(as_type(_2099), _6550); float _6558 = spvFMul(as_type(_2099), _6552); float _6560 = spvFMul(as_type(_2099), _6554); float _6564 = fma(as_type(cbuf_52.data[_1762]), as_type(_2098), as_type(_1596.w)); uint _6566 = 271u + buf2_dword_off; bool _6569 = int(cbuf_52.data[_6566]) > int(0u); uint _6602; uint _6603; uint _6604; uint _6605; uint _6606; uint _6607; uint _6608; if (_6569) { float _6580 = sqrt(fma(as_type(_2097), as_type(_2097), fma(as_type(_2096), as_type(_2096), spvFMul(as_type(_2095), as_type(_2095))))); float _6582 = spvFMul(as_type(_1619), _6580); float _6585 = spvFMul(as_type(_1620), _6580); float _6588 = spvFMul(as_type(_1621), _6580); _6602 = as_type(spvFMul(as_type(_1622), _6585)); _6603 = as_type(spvFMul(as_type(_1622), _6588)); _6604 = as_type(fma(as_type(_1622), _6585, _6564)); _6605 = as_type(spvFMul(as_type(_1622), _6582)); _6606 = as_type(_6585); _6607 = as_type(_6582); _6608 = as_type(_6588); } else { _6602 = _6507; _6603 = _6518; _6604 = _6519; _6605 = _6520; _6606 = _1596.z; _6607 = _1596.y; _6608 = _1596.x; } uint _6637; uint _6638; uint _6639; uint _6640; if (!_6569) { float _6629 = fma(as_type(_2098), as_type(cbuf_52.data[_1762]), fma(as_type(cbuf_52.data[_1762]), spvFMul(as_type(_1620), as_type(_2096)), as_type(_6607))); _6637 = as_type(_6629); _6638 = as_type(spvFMul(0.999499976634979248046875, fma(as_type(cbuf_52.data[_1762]), spvFMul(as_type(_1621), as_type(_2095)), as_type(_6606)))); _6639 = as_type(_6629); _6640 = as_type(spvFMul(0.999499976634979248046875, fma(as_type(cbuf_52.data[_1762]), spvFMul(as_type(_1619), as_type(_2097)), as_type(_6608)))); } else { _6637 = _6602; _6638 = _6603; _6639 = _6604; _6640 = _6605; } uint _6641 = 224u + buf2_dword_off; uint _6645 = 225u + buf2_dword_off; uint _6649 = 226u + buf2_dword_off; uint _6653 = 227u + buf2_dword_off; uint _6657 = 216u + buf2_dword_off; uint _6661 = 217u + buf2_dword_off; uint _6665 = 218u + buf2_dword_off; uint _6669 = 219u + buf2_dword_off; uint _6673 = 220u + buf2_dword_off; uint _6677 = 221u + buf2_dword_off; uint _6681 = 222u + buf2_dword_off; uint _6685 = 223u + buf2_dword_off; uint _6689 = 244u + buf2_dword_off; uint _6693 = 245u + buf2_dword_off; uint _6697 = 246u + buf2_dword_off; uint _6701 = 247u + buf2_dword_off; uint _6705 = 232u + buf2_dword_off; uint _6709 = 233u + buf2_dword_off; uint _6713 = 234u + buf2_dword_off; uint _6717 = 235u + buf2_dword_off; uint _6721 = 236u + buf2_dword_off; uint _6725 = 237u + buf2_dword_off; uint _6729 = 238u + buf2_dword_off; uint _6733 = 239u + buf2_dword_off; float _6771 = fma(as_type(cbuf_52.data[_6641]), as_type(_1342), fma(as_type(cbuf_52.data[_6645]), as_type(_1343), fma(as_type(cbuf_52.data[_6649]), as_type(_1344), as_type(cbuf_52.data[_6653])))); float _6777 = fma(as_type(cbuf_52.data[_6673]), as_type(_1342), fma(as_type(cbuf_52.data[_6677]), as_type(_1343), fma(as_type(cbuf_52.data[_6681]), as_type(_1344), as_type(cbuf_52.data[_6685])))); float _6783 = fma(as_type(cbuf_52.data[_6657]), as_type(_1342), fma(as_type(cbuf_52.data[_6661]), as_type(_1343), fma(as_type(cbuf_52.data[_6665]), as_type(_1344), as_type(cbuf_52.data[_6669])))); float _6802 = 1.0 / fma(as_type(cbuf_52.data[_6689]), _6783, fma(as_type(cbuf_52.data[_6693]), _6777, fma(as_type(cbuf_52.data[_6697]), _6771, as_type(cbuf_52.data[_6701])))); uint _6804 = cbuf_52.data[176u + buf2_dword_off] + 4294967295u; uint _6805 = cbuf_52.data[177u + buf2_dword_off] + 4294967295u; float _6808 = float(int(_6804)); float _6809 = float(int(_6805)); uint _6826 = 5u + buf2_dword_off; uint _6829 = 6u + buf2_dword_off; uint _6833 = 7u + buf2_dword_off; uint _6837 = 192u + buf2_dword_off; uint _6841 = 195u + buf2_dword_off; uint _6844 = 8u + buf2_dword_off; uint _6848 = 9u + buf2_dword_off; uint _6852 = 10u + buf2_dword_off; uint _6898 = as_type(fma(as_type(_1731), as_type(cbuf_52.data[_1762]), fma(as_type(cbuf_52.data[_1762]), fma(_6539, _6556, as_type(_6640)), fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_1342))))); uint _6902 = as_type(fma(as_type(_1732), as_type(cbuf_52.data[_1762]), fma(as_type(cbuf_52.data[_1762]), fma(_6539, _6558, as_type(_6639)), fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_1343))))); uint _6906 = as_type(fma(as_type(_1733), as_type(cbuf_52.data[_1762]), fma(as_type(cbuf_52.data[_1762]), fma(_6539, _6560, as_type(_6638)), fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_1344))))); float _6923 = 1.0 / fma(as_type(cbuf_52.data[_6829]), as_type(as_type(cs_img16.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_6804), int(uint(int(spvFMul(_6808, fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_6705]), _6783, fma(as_type(cbuf_52.data[_6709]), _6777, fma(as_type(cbuf_52.data[_6713]), _6771, as_type(cbuf_52.data[_6717])))), _6802), 0.5)))))))))), uint(max(int(0u), int(uint(min(int(_6805), int(uint(int(spvFMul(_6809, fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_6721]), _6783, fma(as_type(cbuf_52.data[_6725]), _6777, fma(as_type(cbuf_52.data[_6729]), _6771, as_type(cbuf_52.data[_6733])))), _6802), 0.5)))))))))))), 0u)).x), as_type(cbuf_52.data[_6826])); uint _6924 = cbuf_52.data[178u + buf2_dword_off] + 4294967295u; uint _6925 = cbuf_52.data[179u + buf2_dword_off] + 4294967295u; uint _6927 = 580u + buf3_dword_off; uint _6931 = 174u + buf2_dword_off; uint _6935 = 175u + buf2_dword_off; uint _6939 = 200u + buf2_dword_off; uint _6943 = 201u + buf2_dword_off; uint _6947 = 202u + buf2_dword_off; uint _6951 = 203u + buf2_dword_off; uint _6955 = 204u + buf2_dword_off; uint _6959 = 205u + buf2_dword_off; uint _6963 = 206u + buf2_dword_off; uint _6967 = 207u + buf2_dword_off; uint _6970 = 208u + buf2_dword_off; uint _6974 = 209u + buf2_dword_off; uint _6978 = 210u + buf2_dword_off; uint _6982 = 211u + buf2_dword_off; float _6998 = spvFMul(as_type(cbuf_52.data[_6833]), _6923); float _7001 = spvFMul(as_type(cbuf_52.data[_6826]), 0.800000011920928955078125); float _7002 = float(int(_6924)); float _7003 = float(int(_6925)); bool _7069; bool _7068; uint _10421; uint _10422; uint _10423; uint _10424; uint _10425; uint _10426; uint _10427; uint _10428; uint _10429; uint _10430; uint _10431; uint _10432; uint _10433; uint _10434; uint _10435; uint _10436; uint _10437; uint _10438; uint _10439; uint _10440; uint _10441; uint _10442; uint _10443; uint _10444; uint _10445; uint _10446; uint _10447; uint _10448; uint _10449; uint _10450; uint _10451; uint _10452; uint _10453; uint _10454; uint _10455; uint _10456; uint _10457; uint _10458; uint _10459; uint _10460; uint _10461; uint _10462; uint _10463; uint _10464; uint _10465; uint _10466; uint _10467; uint _10468; uint _10469; uint _10470; uint _10471; uint _10472; uint _10473; uint _10474; uint _10475; uint _10476; uint _10477; uint _10478; uint _10479; uint _10480; uint _10481; uint _10482; uint _10483; uint _10484; uint _10485; uint _10486; uint _10487; uint _10488; uint _10489; uint _10490; uint _10491; uint _10492; uint _10493; uint _10494; uint _10495; uint _10496; uint _10497; uint _10498; uint _10499; uint _10500; uint _10501; uint _10502; uint _10503; uint _10504; uint _10505; uint _10506; uint _10507; uint _10508; uint _10509; uint _10510; uint _10511; uint _10512; uint _10513; uint _10514; uint _7004 = _6637; uint _7005 = _6638; uint _7006 = _6640; uint _7007 = _1536; uint _7008 = _1472; uint _7009 = _1408; uint _7010 = _1345; uint _7011 = _1365; uint _7012 = _1364; uint _7013 = _1363; uint _7014 = _1386; uint _7015 = _1385; uint _7016 = _1384; uint _7017 = _1407; uint _7018 = _1406; uint _7019 = _1405; uint _7020 = _1429; uint _7021 = _1428; uint _7022 = _1427; uint _7023 = _1450; uint _7024 = _1449; uint _7025 = _1448; uint _7026 = _1471; uint _7027 = _1470; uint _7028 = _1469; uint _7029 = _1493; uint _7030 = _1492; uint _7031 = _1491; uint _7032 = _1514; uint _7033 = _1513; uint _7034 = _1512; uint _7035 = _1535; uint _7036 = _1534; uint _7037 = _1533; uint _7038 = _1557; uint _7039 = _1556; uint _7040 = _1578; uint _7041 = _1577; uint _7042 = _1576; uint _7043 = _1622; uint _7044 = _1731; uint _7045 = _6638; uint _7046 = _6639; uint _7047 = _6640; uint _7048 = _1555; uint _7049 = _1733; uint _7050 = _1732; uint _7051 = _2230; uint _7052 = _1365; uint _7053 = _1364; uint _7054 = _6517; uint _7055 = _1363; uint _7056 = _6906; uint _7057 = _6902; uint _7058 = _6898; bool _7059 = _1316; bool _7060 = _1316; uint _7061 = 0u; for (;;) { bool _7064 = _7060 && (!(int(cbuf_56.data[_6927]) > int(_7061))); if (_7064) { bool _7066 = _7059 && (!_7064); if (!_7066) { _10477 = _7044; _10478 = _7004; _10479 = _7005; _10480 = _7006; _10481 = _7043; _10482 = _7049; _10483 = _7050; _10484 = _7007; _10485 = _7008; _10486 = _7009; _10487 = _7010; _10488 = _7056; _10489 = _7057; _10490 = _7058; _10491 = _7040; _10492 = _7041; _10493 = _7042; _10494 = _7038; _10495 = _7039; _10496 = _7048; _10497 = _7032; _10498 = _7033; _10499 = _7034; _10500 = _7029; _10501 = _7030; _10502 = _7031; _10503 = _7023; _10504 = _7024; _10505 = _7025; _10506 = _7020; _10507 = _7021; _10508 = _7022; _10509 = _7014; _10510 = _7015; _10511 = _7016; _10512 = _7011; _10513 = _7012; _10514 = _7013; break; } else { _7068 = _7066; } } else { _7068 = _7059; } _7069 = _7060 && _7068; uint _7075 = ((0u + ((_7061 + 146u) * 16u)) + buf3_off) >> 2u; bool _7078 = 0u == cbuf_56.data[_7075]; bool _7079 = _7069 && _7078; uint _7081; if (_7079) { _7081 = _7061 + 1u; } else { _7081 = _7061; } bool _7083 = _7069 && (!_7079); bool _7085; if (_7083) { _7085 = 1u == cbuf_56.data[_7075]; } else { _7085 = _7078; } if (_7083) { bool _7086 = _7083 && _7085; uint _7089; if (_7086) { _7089 = _7081 + 154u; } else { _7089 = cbuf_56.data[_7075]; } uint _7170; uint _7171; uint _7172; uint _7173; uint _7174; uint _7175; uint _7176; uint _7177; bool _7178; uint _7179; if (_7086) { uint _7093 = ((0u + (_7089 * 16u)) + buf3_off) >> 2u; uint3 _7103 = uint3(cbuf_56.data[_7093 + 0u], cbuf_56.data[_7093 + 1u], cbuf_56.data[_7093 + 2u]); uint _7104 = _7103.x; uint _7105 = _7103.y; uint _7106 = _7103.z; uint _7112 = ((0u + ((_7081 + 162u) * 16u)) + buf3_off) >> 2u; float _7117 = spvFSub(as_type(_7106), as_type(_7056)); float _7120 = spvFSub(as_type(_7105), as_type(_7057)); float _7124 = spvFSub(as_type(_7104), as_type(_7058)); float _7128 = sqrt(fma(_7124, _7124, fma(_7120, _7120, spvFMul(_7117, _7117)))); bool _7130 = as_type(cbuf_56.data[_7112]) > _7128; bool _7131 = _7086 && _7130; uint _7136; if (_7131) { _7136 = as_type(spvFSub(as_type(_7058), as_type(_7104))); } else { _7136 = _7055; } uint _7163; uint _7164; uint _7165; uint _7166; uint _7167; uint _7168; uint _7169; if (_7131) { float _7143 = 1.0 / _7128; float _7145 = spvFMul(as_type(_7136), _7143); float _7147 = spvFMul(spvFSub(as_type(_7057), as_type(_7105)), _7143); float _7149 = spvFMul(spvFSub(as_type(_7056), as_type(_7106)), _7143); _7163 = _1345; _7164 = as_type(_7145); _7165 = as_type(_7147); _7166 = as_type(_7149); _7167 = as_type(fma(as_type(cbuf_56.data[_7112]), _7149, as_type(_7106))); _7168 = as_type(fma(as_type(cbuf_56.data[_7112]), _7147, as_type(_7105))); _7169 = as_type(fma(as_type(cbuf_56.data[_7112]), _7145, as_type(_7104))); } else { _7163 = _7010; _7164 = _7136; _7165 = _7052; _7166 = _7053; _7167 = _7056; _7168 = _7057; _7169 = _7058; } _7170 = _7163; _7171 = _7164; _7172 = as_type(_7124); _7173 = _7165; _7174 = _7166; _7175 = _7167; _7176 = _7168; _7177 = _7169; _7178 = _7130; _7179 = _7104; } else { _7170 = _7010; _7171 = _7055; _7172 = _7051; _7173 = _7052; _7174 = _7053; _7175 = _7056; _7176 = _7057; _7177 = _7058; _7178 = _7085; _7179 = _7089; } bool _7181 = _7083 && (!_7086); bool _7183; if (_7181) { _7183 = 3u == _7179; } else { _7183 = _7178; } uint _10365; uint _10366; uint _10367; uint _10368; uint _10369; uint _10370; uint _10371; uint _10372; uint _10373; uint _10374; uint _10375; uint _10376; uint _10377; uint _10378; uint _10379; uint _10380; uint _10381; uint _10382; uint _10383; uint _10384; uint _10385; uint _10386; uint _10387; uint _10388; uint _10389; uint _10390; uint _10391; uint _10392; uint _10393; uint _10394; uint _10395; uint _10396; uint _10397; uint _10398; uint _10399; uint _10400; uint _10401; uint _10402; uint _10403; uint _10404; uint _10405; uint _10406; uint _10407; uint _10408; uint _10409; uint _10410; uint _10411; uint _10412; uint _10413; uint _10414; uint _10415; uint _10416; uint _10417; uint _10418; uint _10419; if (_7181) { bool _7184 = _7181 && _7183; uint _7186; if (_7184) { _7186 = _7081 + 154u; } else { _7186 = _7179; } uint _9534; uint _9535; uint _9536; uint _9537; uint _9538; uint _9539; uint _9540; uint _9541; bool _9542; uint _9543; if (_7184) { uint _7189 = _7081 << 2u; uint _7199 = ((0u + (_7186 * 16u)) + buf3_off) >> 2u; uint3 _7209 = uint3(cbuf_56.data[_7199 + 0u], cbuf_56.data[_7199 + 1u], cbuf_56.data[_7199 + 2u]); uint _7210 = _7209.x; uint _7211 = _7209.y; uint _7212 = _7209.z; uint _7216 = ((0u + ((_7081 + 170u) * 16u)) + buf3_off) >> 2u; uint3 _7226 = uint3(cbuf_56.data[_7216 + 0u], cbuf_56.data[_7216 + 1u], cbuf_56.data[_7216 + 2u]); uint _7227 = _7226.x; uint _7228 = _7226.y; uint _7229 = _7226.z; uint _7233 = ((0u + ((_7189 + 186u) * 16u)) + buf3_off) >> 2u; uint3 _7243 = uint3(cbuf_56.data[_7233 + 0u], cbuf_56.data[_7233 + 1u], cbuf_56.data[_7233 + 2u]); uint _7244 = _7243.x; uint _7245 = _7243.y; uint _7246 = _7243.z; uint _7250 = ((0u + ((_7189 + 187u) * 16u)) + buf3_off) >> 2u; uint3 _7260 = uint3(cbuf_56.data[_7250 + 0u], cbuf_56.data[_7250 + 1u], cbuf_56.data[_7250 + 2u]); uint _7261 = _7260.x; uint _7262 = _7260.y; uint _7263 = _7260.z; uint _7267 = ((0u + ((_7189 + 188u) * 16u)) + buf3_off) >> 2u; uint3 _7277 = uint3(cbuf_56.data[_7267 + 0u], cbuf_56.data[_7267 + 1u], cbuf_56.data[_7267 + 2u]); uint _7278 = _7277.x; uint _7279 = _7277.y; uint _7280 = _7277.z; float _7283 = spvFSub(as_type(_7227), as_type(_7210)); float _7286 = spvFAdd(as_type(_7210), as_type(_7227)); float _7290 = spvFMul(fast::max(abs(_7283), abs(_7283)), 0.5); float _7293 = spvFAdd(as_type(_7211), as_type(_7228)); float _7296 = spvFAdd(as_type(_7212), as_type(_7229)); float _7301 = spvFSub(as_type(_7228), as_type(_7211)); float _7304 = spvFSub(as_type(_7229), as_type(_7212)); float _7306 = spvFMul(as_type(_7244), _7290); float _7308 = spvFMul(as_type(_7245), _7290); float _7316 = spvFMul(fast::max(abs(_7301), abs(_7301)), 0.5); float _7321 = spvFMul(fast::max(abs(_7304), abs(_7304)), 0.5); float _7323 = spvFMul(as_type(_7246), _7290); float _7324 = fma(_7286, 0.5, _7306); float _7325 = fma(_7293, 0.5, _7308); float _7328 = fma(-as_type(_7244), _7290, spvFMul(fast::max(_7286, _7286), 0.5)); float _7329 = fma(_7296, 0.5, _7323); float _7331 = fma(_7316, as_type(_7261), _7324); float _7333 = fma(_7316, as_type(_7262), _7325); float _7336 = fma(-as_type(_7245), _7290, spvFMul(fast::max(_7293, _7293), 0.5)); float _7339 = fma(-as_type(_7246), _7290, spvFMul(fast::max(_7296, _7296), 0.5)); float _7345 = fma(_7316, as_type(_7263), _7329); float _7347 = fma(_7321, as_type(_7278), _7331); float _7349 = fma(_7321, as_type(_7279), _7333); float _7354 = fma(-as_type(_7262), _7316, fma(_7321, as_type(_7279), _7325)); float _7361 = fma(-as_type(_7261), _7316, fma(_7321, as_type(_7278), _7328)); float _7363 = fma(_7321, as_type(_7280), _7345); float _7368 = fma(-as_type(_7261), _7316, fma(_7321, as_type(_7278), _7324)); float _7371 = fma(-as_type(_7262), _7316, fma(_7321, as_type(_7279), _7336)); float _7374 = fma(-as_type(_7263), _7316, fma(_7321, as_type(_7280), _7339)); float _7375 = spvFSub(_7354, _7349); uint _7376 = as_type(_7375); float _7377 = spvFSub(_7361, _7347); float _7381 = fma(-as_type(_7263), _7316, fma(_7321, as_type(_7280), _7329)); float _7382 = spvFSub(_7368, _7347); float _7384 = spvFSub(_7371, _7349); float _7386 = spvFSub(_7374, _7363); float _7388 = spvFSub(_7381, _7363); float _7391 = spvFSub(as_type(_7175), as_type(_1344)); float _7394 = fma(_7382, _7384, -spvFMul(_7375, _7377)); float _7397 = spvFSub(as_type(_7176), as_type(_1343)); float _7400 = fma(_7388, _7377, -spvFMul(_7382, _7386)); uint _7401 = as_type(_7400); float _7405 = spvFSub(as_type(_7177), as_type(_1342)); float _7407 = fma(_7375, _7386, -spvFMul(_7388, _7384)); float _7410 = fma(_7316, as_type(_7261), _7328); float _7413 = fma(_7316, as_type(_7262), _7336); float _7415 = fma(_7316, as_type(_7263), _7339); float _7416 = fma(_7405, _7407, fma(_7397, _7400, spvFMul(_7391, _7394))); float _7424 = fma(_7321, as_type(_7278), _7410); float _7426 = fma(_7321, as_type(_7279), _7413); float _7428 = fma(_7321, as_type(_7280), _7415); bool _7430 = _7184 && (0.0 >= _7416); uint _7431; uint _7432; uint _7433; uint _7434; if (_7430) { _7431 = 0u; _7432 = 0u; _7433 = 0u; _7434 = 0u; } else { _7431 = _7173; _7432 = _7174; _7433 = as_type(_7382); _7434 = as_type(_7384); } bool _7436 = _7184 && (!_7430); uint _7440; if (_7436) { _7440 = as_type(spvFSub(as_type(_7177), _7347)); } else { _7440 = _7054; } uint _7556; uint _7557; uint _7558; uint _7559; uint _7560; uint _7561; if (_7436) { float _7442 = spvFSub(as_type(_7176), _7349); float _7444 = spvFSub(as_type(_7175), _7363); float _7448 = fma(as_type(_7440), _7407, fma(_7442, _7400, spvFMul(_7394, _7444))); bool _7449 = 0.0 > _7448; bool _7450 = _7436 && _7449; uint _7451; uint _7452; uint _7453; uint _7454; if (_7450) { _7451 = 0u; _7452 = 0u; _7453 = 0u; _7454 = 0u; } else { _7451 = _7431; _7452 = _7432; _7453 = _7433; _7454 = _7434; } bool _7456 = _7436 && (!_7450); bool _7458; if (_7456) { _7458 = _7448 > _7416; } else { _7458 = _7449; } uint _7550; uint _7551; uint _7552; uint _7553; uint _7554; uint _7555; if (_7456) { bool _7459 = _7456 && _7458; uint _7460; uint _7461; uint _7462; uint _7463; if (_7459) { _7460 = 0u; _7461 = 0u; _7462 = 0u; _7463 = 0u; } else { _7460 = _7451; _7461 = _7452; _7462 = _7453; _7463 = _7454; } bool _7465 = _7456 && (!_7459); uint _7468; if (_7465) { _7468 = as_type(spvFMul(_7391, _7442)); } else { _7468 = _7401; } uint _7544; uint _7545; uint _7546; uint _7547; uint _7548; uint _7549; if (_7465) { float _7474 = fma(_7397, _7444, -as_type(_7468)); float _7478 = fma(_7391, as_type(_7440), -spvFMul(_7405, _7444)); float _7480 = fma(_7405, _7442, -spvFMul(_7397, as_type(_7440))); float _7484 = fma(_7377, _7474, fma(as_type(_7463), _7478, spvFMul(_7386, _7480))); bool _7488 = _7465 && ((_7484 > _7416) || (_7484 < 0.0)); uint _7489; uint _7490; uint _7491; uint _7492; if (_7488) { _7489 = 0u; _7490 = 0u; _7491 = 0u; _7492 = 0u; } else { _7489 = _7463; _7490 = _7460; _7491 = _7461; _7492 = _7462; } bool _7494 = _7465 && (!_7488); uint _7497; if (_7494) { _7497 = as_type(spvFMul(_7388, _7480)); } else { _7497 = as_type(_7377); } uint _7539; uint _7540; uint _7541; uint _7542; uint _7543; if (_7494) { float _7501 = fma(as_type(_7492), _7474, fma(_7375, _7478, as_type(_7497))); float _7502 = spvFSub(_7484, _7501); bool _7508 = _7494 && ((_7502 > _7416) || (0.0 > (-_7501))); uint _7509; uint _7510; uint _7511; uint _7512; if (_7508) { _7509 = 0u; _7510 = 0u; _7511 = 0u; _7512 = 0u; } else { _7509 = _7489; _7510 = _7492; _7511 = _7490; _7512 = _7491; } bool _7514 = _7494 && (!_7508); uint _7515; if (_7514) { _7515 = 1u; } else { _7515 = _7512; } uint _7536; uint _7537; uint _7538; if (_7514) { float _7517 = spvFMul(_7448, 1.0 / _7416); _7536 = as_type(fma(_7517, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _7537 = as_type(fma(_7517, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _7538 = as_type(fma(_7517, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _7536 = _7509; _7537 = _7510; _7538 = _7511; } _7539 = _7536; _7540 = _7537; _7541 = _7538; _7542 = as_type(_7502); _7543 = _7515; } else { _7539 = _7489; _7540 = _7492; _7541 = _7490; _7542 = _7376; _7543 = _7491; } _7544 = as_type(_7474); _7545 = _7539; _7546 = _7540; _7547 = _7541; _7548 = _7542; _7549 = _7543; } else { _7544 = _7468; _7545 = _7463; _7546 = _7462; _7547 = _7460; _7548 = _7376; _7549 = _7461; } _7550 = _7544; _7551 = _7545; _7552 = _7546; _7553 = _7547; _7554 = _7548; _7555 = _7549; } else { _7550 = _7401; _7551 = _7454; _7552 = _7453; _7553 = _7451; _7554 = _7376; _7555 = _7452; } _7556 = _7550; _7557 = _7551; _7558 = _7552; _7559 = _7553; _7560 = _7554; _7561 = _7555; } else { _7556 = _7401; _7557 = _7434; _7558 = _7433; _7559 = _7431; _7560 = _7376; _7561 = _7432; } bool _7565 = _7184 && (!(_7184 && (int(0u) < int(_7561)))); uint _7568; if (_7565) { _7568 = as_type(spvFSub(_7424, _7361)); } else { _7568 = _7560; } uint _7723; uint _7724; uint _7725; uint _7726; uint _7727; uint _7728; if (_7565) { float _7569 = spvFSub(_7426, _7371); float _7570 = spvFSub(_7428, _7374); float _7572 = spvFSub(_7347, _7361); float _7574 = spvFSub(_7349, _7371); float _7575 = spvFSub(_7363, _7374); float _7581 = fma(_7569, _7575, -spvFMul(_7570, _7574)); float _7584 = fma(_7570, _7572, -spvFMul(as_type(_7568), _7575)); uint _7585 = as_type(_7584); float _7588 = fma(as_type(_7568), _7574, -spvFMul(_7569, _7572)); float _7591 = fma(_7405, _7581, fma(_7397, _7584, spvFMul(_7391, _7588))); bool _7593 = _7565 && (0.0 >= _7591); uint _7594; uint _7595; uint _7596; uint _7597; if (_7593) { _7594 = 0u; _7595 = 0u; _7596 = 0u; _7597 = 0u; } else { _7594 = _7559; _7595 = _7561; _7596 = as_type(_7570); _7597 = as_type(_7572); } bool _7599 = _7565 && (!_7593); uint _7603; if (_7599) { _7603 = as_type(spvFSub(as_type(_7177), _7361)); } else { _7603 = _7440; } uint _7717; uint _7718; uint _7719; uint _7720; uint _7721; if (_7599) { float _7605 = spvFSub(as_type(_7176), _7371); float _7607 = spvFSub(as_type(_7175), _7374); float _7611 = fma(as_type(_7603), _7581, fma(_7605, _7584, spvFMul(_7588, _7607))); bool _7612 = 0.0 > _7611; bool _7613 = _7599 && _7612; uint _7614; uint _7615; uint _7616; uint _7617; if (_7613) { _7614 = 0u; _7615 = 0u; _7616 = 0u; _7617 = 0u; } else { _7614 = _7594; _7615 = _7595; _7616 = _7596; _7617 = _7597; } bool _7619 = _7599 && (!_7613); bool _7621; if (_7619) { _7621 = _7611 > _7591; } else { _7621 = _7612; } uint _7712; uint _7713; uint _7714; uint _7715; uint _7716; if (_7619) { bool _7622 = _7619 && _7621; uint _7623; uint _7624; uint _7625; uint _7626; if (_7622) { _7623 = 0u; _7624 = 0u; _7625 = 0u; _7626 = 0u; } else { _7623 = _7614; _7624 = _7615; _7625 = _7616; _7626 = _7617; } bool _7628 = _7619 && (!_7622); uint _7631; if (_7628) { _7631 = as_type(spvFMul(_7391, _7605)); } else { _7631 = as_type(_7581); } uint _7707; uint _7708; uint _7709; uint _7710; uint _7711; if (_7628) { float _7637 = fma(_7397, _7607, -as_type(_7631)); float _7640 = fma(_7391, as_type(_7603), -spvFMul(_7405, _7607)); float _7643 = fma(_7405, _7605, -spvFMul(_7397, as_type(_7603))); float _7647 = fma(as_type(_7626), _7637, fma(_7574, _7640, spvFMul(_7575, _7643))); bool _7651 = _7628 && ((_7647 > _7591) || (_7647 < 0.0)); uint _7652; uint _7653; uint _7654; uint _7655; if (_7651) { _7652 = 0u; _7653 = 0u; _7654 = 0u; _7655 = 0u; } else { _7652 = _7626; _7653 = _7623; _7654 = _7624; _7655 = _7625; } bool _7657 = _7628 && (!_7651); uint _7661; if (_7657) { _7661 = as_type(spvFMul(as_type(_7655), _7643)); } else { _7661 = _7655; } uint _7703; uint _7704; uint _7705; uint _7706; if (_7657) { float _7665 = fma(as_type(_7568), _7637, fma(_7569, _7640, as_type(_7661))); bool _7672 = _7657 && ((spvFSub(_7647, _7665) > _7591) || (0.0 > (-_7665))); uint _7673; uint _7674; uint _7675; uint _7676; if (_7672) { _7673 = 0u; _7674 = 0u; _7675 = 0u; _7676 = 0u; } else { _7673 = _7652; _7674 = as_type(_7665); _7675 = _7653; _7676 = _7654; } bool _7678 = _7657 && (!_7672); uint _7679; if (_7678) { _7679 = 1u; } else { _7679 = _7676; } uint _7700; uint _7701; uint _7702; if (_7678) { float _7681 = spvFMul(_7611, 1.0 / _7591); _7700 = as_type(fma(_7681, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _7701 = as_type(fma(_7681, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _7702 = as_type(fma(_7681, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _7700 = _7673; _7701 = _7674; _7702 = _7675; } _7703 = _7700; _7704 = _7701; _7705 = _7702; _7706 = _7679; } else { _7703 = _7652; _7704 = _7661; _7705 = _7653; _7706 = _7654; } _7707 = as_type(_7640); _7708 = _7703; _7709 = _7704; _7710 = _7705; _7711 = _7706; } else { _7707 = _7585; _7708 = _7626; _7709 = _7625; _7710 = _7623; _7711 = _7624; } _7712 = _7707; _7713 = _7708; _7714 = _7709; _7715 = _7710; _7716 = _7711; } else { _7712 = _7585; _7713 = _7617; _7714 = _7616; _7715 = _7614; _7716 = _7615; } _7717 = _7712; _7718 = _7713; _7719 = _7714; _7720 = _7715; _7721 = _7716; } else { _7717 = _7585; _7718 = _7597; _7719 = _7596; _7720 = _7594; _7721 = _7595; } _7723 = _7603; _7724 = _7717; _7725 = _7718; _7726 = _7719; _7727 = _7720; _7728 = uint(max(int(0u), int(_7721))); } else { _7723 = _7440; _7724 = _7556; _7725 = _7557; _7726 = _7558; _7727 = _7559; _7728 = _7561; } uint _7734 = as_type(fma(as_type(_7278), 0.00999999977648258209228515625, as_type(_7727))); float _7741 = fma(as_type(_7280), 0.00999999977648258209228515625, as_type(_7725)); bool _7744 = _7184 && (!(_7184 && (int(0u) < int(_7728)))); uint _7749; if (_7744) { _7749 = as_type(fma(-as_type(_7278), _7321, _7410)); } else { _7749 = as_type(_7410); } uint _9527; uint _9528; uint _9529; uint _9530; uint _9531; uint _9532; if (_7744) { float _7752 = fma(-as_type(_7279), _7321, _7413); float _7755 = fma(-as_type(_7280), _7321, _7415); float _7758 = fma(-as_type(_7278), _7321, _7331); float _7761 = fma(-as_type(_7279), _7321, _7333); float _7764 = fma(-as_type(_7280), _7321, _7345); float _7782 = fma(-as_type(_7278), _7321, fma(_7286, 0.5, fma(-as_type(_7261), _7316, -_7306))); uint _7783 = as_type(_7782); float _7786 = fma(-as_type(_7279), _7321, fma(_7293, 0.5, fma(-as_type(_7262), _7316, -_7308))); float _7789 = fma(-as_type(_7280), _7321, fma(_7296, 0.5, fma(-as_type(_7263), _7316, -_7323))); float _7804 = fma(-as_type(_7278), _7321, fma(_7286, 0.5, fma(as_type(_7244), _7741, -spvFMul(as_type(_7261), _7316)))); float _7807 = fma(-as_type(_7279), _7321, fma(_7293, 0.5, fma(as_type(_7245), _7741, -spvFMul(as_type(_7262), _7316)))); float _7810 = fma(-as_type(_7280), _7321, fma(_7296, 0.5, fma(as_type(_7246), _7741, -spvFMul(as_type(_7263), _7316)))); float _7812 = spvFSub(_7782, as_type(_7749)); uint _7813 = as_type(_7812); float _7814 = spvFSub(_7786, _7752); float _7815 = spvFSub(_7789, _7755); float _7818 = spvFSub(_7804, as_type(_7749)); float _7820 = spvFSub(_7807, _7752); float _7821 = spvFSub(_7810, _7755); float _7826 = fma(_7814, _7821, -spvFMul(_7815, _7820)); float _7829 = fma(_7815, _7818, -spvFMul(_7812, _7821)); uint _7830 = as_type(_7829); float _7832 = fma(_7812, _7820, -spvFMul(_7814, _7818)); float _7835 = fma(_7405, _7826, fma(_7397, _7829, spvFMul(_7391, _7832))); bool _7837 = _7744 && (0.0 >= _7835); uint _7838; uint _7839; uint _7840; uint _7841; if (_7837) { _7838 = 0u; _7839 = 0u; _7840 = 0u; _7841 = 0u; } else { _7838 = _7734; _7839 = _7728; _7840 = as_type(_7815); _7841 = as_type(_7818); } bool _7843 = _7744 && (!_7837); uint _7848; if (_7843) { _7848 = as_type(spvFSub(as_type(_7177), as_type(_7749))); } else { _7848 = _7724; } uint _7965; uint _7966; uint _7967; uint _7968; uint _7969; uint _7970; if (_7843) { float _7850 = spvFSub(as_type(_7176), _7752); float _7852 = spvFSub(as_type(_7175), _7755); float _7856 = fma(as_type(_7848), _7826, fma(_7850, _7829, spvFMul(_7832, _7852))); bool _7857 = 0.0 > _7856; bool _7858 = _7843 && _7857; uint _7859; uint _7860; uint _7861; uint _7862; if (_7858) { _7859 = 0u; _7860 = 0u; _7861 = 0u; _7862 = 0u; } else { _7859 = _7838; _7860 = _7839; _7861 = _7840; _7862 = _7841; } bool _7864 = _7843 && (!_7858); bool _7866; if (_7864) { _7866 = _7856 > _7835; } else { _7866 = _7857; } uint _7959; uint _7960; uint _7961; uint _7962; uint _7963; uint _7964; if (_7864) { bool _7867 = _7864 && _7866; uint _7868; uint _7869; uint _7870; uint _7871; if (_7867) { _7868 = 0u; _7869 = 0u; _7870 = 0u; _7871 = 0u; } else { _7868 = _7859; _7869 = _7860; _7870 = _7861; _7871 = _7862; } bool _7873 = _7864 && (!_7867); uint _7876; if (_7873) { _7876 = as_type(spvFMul(_7391, _7850)); } else { _7876 = as_type(_7826); } uint _7953; uint _7954; uint _7955; uint _7956; uint _7957; uint _7958; if (_7873) { float _7882 = fma(_7397, _7852, -as_type(_7876)); float _7885 = fma(_7391, as_type(_7848), -spvFMul(_7405, _7852)); float _7888 = fma(_7405, _7850, -spvFMul(_7397, as_type(_7848))); float _7892 = fma(as_type(_7871), _7882, fma(_7820, _7885, spvFMul(_7821, _7888))); bool _7896 = _7873 && ((_7892 > _7835) || (_7892 < 0.0)); uint _7897; uint _7898; uint _7899; uint _7900; if (_7896) { _7897 = 0u; _7898 = 0u; _7899 = 0u; _7900 = 0u; } else { _7897 = _7871; _7898 = _7868; _7899 = _7869; _7900 = _7870; } bool _7902 = _7873 && (!_7896); uint _7906; if (_7902) { _7906 = as_type(spvFMul(as_type(_7900), _7888)); } else { _7906 = _7900; } uint _7948; uint _7949; uint _7950; uint _7951; uint _7952; if (_7902) { float _7909 = fma(_7812, _7882, fma(_7814, _7885, as_type(_7906))); float _7911 = spvFSub(_7892, _7909); bool _7917 = _7902 && ((_7911 > _7835) || (0.0 > (-_7909))); uint _7918; uint _7919; uint _7920; uint _7921; if (_7917) { _7918 = 0u; _7919 = 0u; _7920 = 0u; _7921 = 0u; } else { _7918 = _7897; _7919 = as_type(_7909); _7920 = _7898; _7921 = _7899; } bool _7923 = _7902 && (!_7917); uint _7924; if (_7923) { _7924 = 1u; } else { _7924 = _7921; } uint _7945; uint _7946; uint _7947; if (_7923) { float _7926 = spvFMul(_7856, 1.0 / _7835); _7945 = as_type(fma(_7926, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _7946 = as_type(fma(_7926, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _7947 = as_type(fma(_7926, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _7945 = _7918; _7946 = _7919; _7947 = _7920; } _7948 = _7945; _7949 = _7946; _7950 = _7947; _7951 = as_type(_7911); _7952 = _7924; } else { _7948 = _7897; _7949 = _7906; _7950 = _7898; _7951 = _7813; _7952 = _7899; } _7953 = as_type(_7885); _7954 = _7948; _7955 = _7949; _7956 = _7950; _7957 = _7951; _7958 = _7952; } else { _7953 = _7830; _7954 = _7871; _7955 = _7870; _7956 = _7868; _7957 = _7813; _7958 = _7869; } _7959 = _7953; _7960 = _7954; _7961 = _7955; _7962 = _7956; _7963 = _7957; _7964 = _7958; } else { _7959 = _7830; _7960 = _7862; _7961 = _7861; _7962 = _7859; _7963 = _7813; _7964 = _7860; } _7965 = _7959; _7966 = _7960; _7967 = _7961; _7968 = _7962; _7969 = _7963; _7970 = _7964; } else { _7965 = _7830; _7966 = _7841; _7967 = _7840; _7968 = _7838; _7969 = _7813; _7970 = _7839; } bool _7974 = _7744 && (!(_7744 && (int(0u) < int(_7970)))); uint _7977; if (_7974) { _7977 = as_type(spvFSub(_7758, _7804)); } else { _7977 = _7969; } uint _8133; uint _8134; uint _8135; uint _8136; uint _8137; if (_7974) { float _7978 = spvFSub(_7761, _7807); float _7979 = spvFSub(_7764, _7810); float _7982 = spvFSub(as_type(_7749), _7804); float _7984 = spvFSub(_7752, _7807); float _7985 = spvFSub(_7755, _7810); float _7991 = fma(_7978, _7985, -spvFMul(_7979, _7984)); float _7994 = fma(_7979, _7982, -spvFMul(as_type(_7977), _7985)); uint _7995 = as_type(_7994); float _7998 = fma(as_type(_7977), _7984, -spvFMul(_7978, _7982)); float _8001 = fma(_7405, _7991, fma(_7397, _7994, spvFMul(_7391, _7998))); bool _8003 = _7974 && (0.0 >= _8001); uint _8004; uint _8005; uint _8006; uint _8007; if (_8003) { _8004 = 0u; _8005 = 0u; _8006 = 0u; _8007 = 0u; } else { _8004 = _7968; _8005 = _7970; _8006 = as_type(_7979); _8007 = as_type(_7982); } bool _8009 = _7974 && (!_8003); uint _8013; if (_8009) { _8013 = as_type(spvFSub(as_type(_7177), _7804)); } else { _8013 = _7848; } uint _8127; uint _8128; uint _8129; uint _8130; uint _8131; if (_8009) { float _8015 = spvFSub(as_type(_7176), _7807); float _8017 = spvFSub(as_type(_7175), _7810); float _8021 = fma(as_type(_8013), _7991, fma(_8015, _7994, spvFMul(_7998, _8017))); bool _8022 = 0.0 > _8021; bool _8023 = _8009 && _8022; uint _8024; uint _8025; uint _8026; uint _8027; if (_8023) { _8024 = 0u; _8025 = 0u; _8026 = 0u; _8027 = 0u; } else { _8024 = _8004; _8025 = _8005; _8026 = _8006; _8027 = _8007; } bool _8029 = _8009 && (!_8023); bool _8031; if (_8029) { _8031 = _8021 > _8001; } else { _8031 = _8022; } uint _8122; uint _8123; uint _8124; uint _8125; uint _8126; if (_8029) { bool _8032 = _8029 && _8031; uint _8033; uint _8034; uint _8035; uint _8036; if (_8032) { _8033 = 0u; _8034 = 0u; _8035 = 0u; _8036 = 0u; } else { _8033 = _8024; _8034 = _8025; _8035 = _8026; _8036 = _8027; } bool _8038 = _8029 && (!_8032); uint _8041; if (_8038) { _8041 = as_type(spvFMul(_7391, _8015)); } else { _8041 = as_type(_7991); } uint _8117; uint _8118; uint _8119; uint _8120; uint _8121; if (_8038) { float _8047 = fma(_7397, _8017, -as_type(_8041)); float _8050 = fma(_7391, as_type(_8013), -spvFMul(_7405, _8017)); float _8053 = fma(_7405, _8015, -spvFMul(_7397, as_type(_8013))); float _8057 = fma(as_type(_8036), _8047, fma(_7984, _8050, spvFMul(_7985, _8053))); bool _8061 = _8038 && ((_8057 > _8001) || (_8057 < 0.0)); uint _8062; uint _8063; uint _8064; uint _8065; if (_8061) { _8062 = 0u; _8063 = 0u; _8064 = 0u; _8065 = 0u; } else { _8062 = _8036; _8063 = _8033; _8064 = _8034; _8065 = _8035; } bool _8067 = _8038 && (!_8061); uint _8071; if (_8067) { _8071 = as_type(spvFMul(as_type(_8065), _8053)); } else { _8071 = _8065; } uint _8113; uint _8114; uint _8115; uint _8116; if (_8067) { float _8075 = fma(as_type(_7977), _8047, fma(_7978, _8050, as_type(_8071))); bool _8082 = _8067 && ((spvFSub(_8057, _8075) > _8001) || (0.0 > (-_8075))); uint _8083; uint _8084; uint _8085; uint _8086; if (_8082) { _8083 = 0u; _8084 = 0u; _8085 = 0u; _8086 = 0u; } else { _8083 = _8062; _8084 = as_type(_8075); _8085 = _8063; _8086 = _8064; } bool _8088 = _8067 && (!_8082); uint _8089; if (_8088) { _8089 = 1u; } else { _8089 = _8086; } uint _8110; uint _8111; uint _8112; if (_8088) { float _8091 = spvFMul(_8021, 1.0 / _8001); _8110 = as_type(fma(_8091, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _8111 = as_type(fma(_8091, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _8112 = as_type(fma(_8091, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _8110 = _8083; _8111 = _8084; _8112 = _8085; } _8113 = _8110; _8114 = _8111; _8115 = _8112; _8116 = _8089; } else { _8113 = _8062; _8114 = _8071; _8115 = _8063; _8116 = _8064; } _8117 = as_type(_8050); _8118 = _8113; _8119 = _8114; _8120 = _8115; _8121 = _8116; } else { _8117 = _7995; _8118 = _8036; _8119 = _8035; _8120 = _8033; _8121 = _8034; } _8122 = _8117; _8123 = _8118; _8124 = _8119; _8125 = _8120; _8126 = _8121; } else { _8122 = _7995; _8123 = _8027; _8124 = _8026; _8125 = _8024; _8126 = _8025; } _8127 = _8122; _8128 = _8123; _8129 = _8124; _8130 = _8125; _8131 = _8126; } else { _8127 = _7995; _8128 = _8007; _8129 = _8006; _8130 = _8004; _8131 = _8005; } _8133 = _8127; _8134 = _8128; _8135 = _8129; _8136 = _8130; _8137 = uint(max(int(0u), int(_8131))); } else { _8133 = _7965; _8134 = _7966; _8135 = _7967; _8136 = _7968; _8137 = _7970; } uint _8143 = as_type(fma(as_type(_7278), -0.00999999977648258209228515625, as_type(_8136))); bool _8153 = _7744 && (!(_7744 && (int(0u) < int(_8137)))); uint _8157; if (_8153) { _8157 = as_type(spvFSub(as_type(_7749), _7424)); } else { _8157 = _7278; } uint _9521; uint _9522; uint _9523; uint _9524; uint _9525; uint _9526; if (_8153) { float _8158 = spvFSub(_7752, _7426); float _8159 = spvFSub(_7755, _7428); float _8161 = spvFSub(_7758, _7424); float _8163 = spvFSub(_7761, _7426); float _8164 = spvFSub(_7764, _7428); float _8170 = fma(_8158, _8164, -spvFMul(_8159, _8163)); float _8173 = fma(_8159, _8161, -spvFMul(as_type(_8157), _8164)); float _8176 = fma(as_type(_8157), _8163, -spvFMul(_8158, _8161)); float _8179 = fma(_7405, _8170, fma(_7397, _8173, spvFMul(_7391, _8176))); bool _8181 = _8153 && (0.0 >= _8179); uint _8182; uint _8183; uint _8184; uint _8185; if (_8181) { _8182 = 0u; _8183 = 0u; _8184 = 0u; _8185 = 0u; } else { _8182 = _8143; _8183 = _8137; _8184 = as_type(_8159); _8185 = as_type(_8161); } bool _8187 = _8153 && (!_8181); uint _8191; if (_8187) { _8191 = as_type(spvFSub(as_type(_7177), _7424)); } else { _8191 = _8133; } uint _8306; uint _8307; uint _8308; uint _8309; uint _8310; if (_8187) { float _8193 = spvFSub(as_type(_7176), _7426); float _8195 = spvFSub(as_type(_7175), _7428); float _8199 = fma(as_type(_8191), _8170, fma(_8193, _8173, spvFMul(_8176, _8195))); bool _8200 = 0.0 > _8199; bool _8201 = _8187 && _8200; uint _8202; uint _8203; uint _8204; uint _8205; if (_8201) { _8202 = 0u; _8203 = 0u; _8204 = 0u; _8205 = 0u; } else { _8202 = _8182; _8203 = _8183; _8204 = _8184; _8205 = _8185; } bool _8207 = _8187 && (!_8201); bool _8209; if (_8207) { _8209 = _8199 > _8179; } else { _8209 = _8200; } uint _8301; uint _8302; uint _8303; uint _8304; uint _8305; if (_8207) { bool _8210 = _8207 && _8209; uint _8211; uint _8212; uint _8213; uint _8214; if (_8210) { _8211 = 0u; _8212 = 0u; _8213 = 0u; _8214 = 0u; } else { _8211 = _8202; _8212 = _8203; _8213 = _8204; _8214 = _8205; } bool _8216 = _8207 && (!_8210); uint _8219; if (_8216) { _8219 = as_type(spvFMul(_7391, _8193)); } else { _8219 = as_type(_8170); } uint _8296; uint _8297; uint _8298; uint _8299; uint _8300; if (_8216) { float _8225 = fma(_7397, _8195, -as_type(_8219)); float _8228 = fma(_7391, as_type(_8191), -spvFMul(_7405, _8195)); float _8230 = fma(_7405, _8193, -spvFMul(_7397, as_type(_8191))); float _8234 = fma(as_type(_8214), _8225, fma(_8163, _8228, spvFMul(_8164, _8230))); bool _8238 = _8216 && ((_8234 > _8179) || (_8234 < 0.0)); uint _8239; uint _8240; uint _8241; uint _8242; if (_8238) { _8239 = 0u; _8240 = 0u; _8241 = 0u; _8242 = 0u; } else { _8239 = _8214; _8240 = _8211; _8241 = _8212; _8242 = _8213; } bool _8244 = _8216 && (!_8238); uint _8248; if (_8244) { _8248 = as_type(spvFMul(as_type(_8242), _8230)); } else { _8248 = _8242; } uint _8291; uint _8292; uint _8293; uint _8294; uint _8295; if (_8244) { float _8252 = fma(as_type(_8157), _8225, fma(_8158, _8228, as_type(_8248))); float _8254 = spvFSub(_8234, _8252); bool _8260 = _8244 && ((_8254 > _8179) || (0.0 > (-_8252))); uint _8261; uint _8262; uint _8263; uint _8264; if (_8260) { _8261 = 0u; _8262 = 0u; _8263 = 0u; _8264 = 0u; } else { _8261 = _8239; _8262 = as_type(_8252); _8263 = _8240; _8264 = _8241; } bool _8266 = _8244 && (!_8260); uint _8267; if (_8266) { _8267 = 1u; } else { _8267 = _8264; } uint _8288; uint _8289; uint _8290; if (_8266) { float _8269 = spvFMul(_8199, 1.0 / _8179); _8288 = as_type(fma(_8269, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _8289 = as_type(fma(_8269, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _8290 = as_type(fma(_8269, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _8288 = _8261; _8289 = _8262; _8290 = _8263; } _8291 = _8288; _8292 = _8289; _8293 = _8290; _8294 = as_type(_8254); _8295 = _8267; } else { _8291 = _8239; _8292 = _8248; _8293 = _8240; _8294 = _8157; _8295 = _8241; } _8296 = _8291; _8297 = _8292; _8298 = _8293; _8299 = _8294; _8300 = _8295; } else { _8296 = _8214; _8297 = _8213; _8298 = _8211; _8299 = _8157; _8300 = _8212; } _8301 = _8296; _8302 = _8297; _8303 = _8298; _8304 = _8299; _8305 = _8300; } else { _8301 = _8205; _8302 = _8204; _8303 = _8202; _8304 = _8157; _8305 = _8203; } _8306 = _8301; _8307 = _8302; _8308 = _8303; _8309 = _8304; _8310 = _8305; } else { _8306 = _8185; _8307 = _8184; _8308 = _8182; _8309 = _8157; _8310 = _8183; } bool _8314 = _8153 && (!(_8153 && (int(0u) < int(_8310)))); uint _8317; if (_8314) { _8317 = as_type(spvFSub(_7347, _7758)); } else { _8317 = _8309; } uint _8472; uint _8473; uint _8474; uint _8475; uint _8476; uint _8477; if (_8314) { float _8318 = spvFSub(_7349, _7761); float _8319 = spvFSub(_7363, _7764); float _8321 = spvFSub(_7424, _7758); float _8323 = spvFSub(_7426, _7761); float _8324 = spvFSub(_7428, _7764); float _8330 = fma(_8318, _8324, -spvFMul(_8319, _8323)); float _8333 = fma(_8319, _8321, -spvFMul(as_type(_8317), _8324)); float _8336 = fma(as_type(_8317), _8323, -spvFMul(_8318, _8321)); float _8339 = fma(_7405, _8330, fma(_7397, _8333, spvFMul(_7391, _8336))); bool _8341 = _8314 && (0.0 >= _8339); uint _8342; uint _8343; uint _8344; uint _8345; if (_8341) { _8342 = 0u; _8343 = 0u; _8344 = 0u; _8345 = 0u; } else { _8342 = _8308; _8343 = _8310; _8344 = as_type(_8319); _8345 = as_type(_8321); } bool _8347 = _8314 && (!_8341); uint _8351; if (_8347) { _8351 = as_type(spvFSub(as_type(_7177), _7758)); } else { _8351 = _8191; } uint _8466; uint _8467; uint _8468; uint _8469; uint _8470; if (_8347) { float _8353 = spvFSub(as_type(_7176), _7761); float _8355 = spvFSub(as_type(_7175), _7764); float _8359 = fma(as_type(_8351), _8330, fma(_8353, _8333, spvFMul(_8336, _8355))); bool _8360 = 0.0 > _8359; bool _8361 = _8347 && _8360; uint _8362; uint _8363; uint _8364; uint _8365; if (_8361) { _8362 = 0u; _8363 = 0u; _8364 = 0u; _8365 = 0u; } else { _8362 = _8342; _8363 = _8343; _8364 = _8344; _8365 = _8345; } bool _8367 = _8347 && (!_8361); bool _8369; if (_8367) { _8369 = _8359 > _8339; } else { _8369 = _8360; } uint _8461; uint _8462; uint _8463; uint _8464; uint _8465; if (_8367) { bool _8370 = _8367 && _8369; uint _8371; uint _8372; uint _8373; uint _8374; if (_8370) { _8371 = 0u; _8372 = 0u; _8373 = 0u; _8374 = 0u; } else { _8371 = _8362; _8372 = _8363; _8373 = _8364; _8374 = _8365; } bool _8376 = _8367 && (!_8370); uint _8379; if (_8376) { _8379 = as_type(spvFMul(_7391, _8353)); } else { _8379 = as_type(_8330); } uint _8456; uint _8457; uint _8458; uint _8459; uint _8460; if (_8376) { float _8385 = fma(_7397, _8355, -as_type(_8379)); float _8388 = fma(_7391, as_type(_8351), -spvFMul(_7405, _8355)); float _8390 = fma(_7405, _8353, -spvFMul(_7397, as_type(_8351))); float _8394 = fma(as_type(_8374), _8385, fma(_8323, _8388, spvFMul(_8324, _8390))); bool _8398 = _8376 && ((_8394 > _8339) || (_8394 < 0.0)); uint _8399; uint _8400; uint _8401; uint _8402; if (_8398) { _8399 = 0u; _8400 = 0u; _8401 = 0u; _8402 = 0u; } else { _8399 = _8374; _8400 = _8371; _8401 = _8372; _8402 = _8373; } bool _8404 = _8376 && (!_8398); uint _8408; if (_8404) { _8408 = as_type(spvFMul(as_type(_8402), _8390)); } else { _8408 = _8402; } uint _8451; uint _8452; uint _8453; uint _8454; uint _8455; if (_8404) { float _8412 = fma(as_type(_8317), _8385, fma(_8318, _8388, as_type(_8408))); float _8414 = spvFSub(_8394, _8412); bool _8420 = _8404 && ((_8414 > _8339) || (0.0 > (-_8412))); uint _8421; uint _8422; uint _8423; uint _8424; if (_8420) { _8421 = 0u; _8422 = 0u; _8423 = 0u; _8424 = 0u; } else { _8421 = _8399; _8422 = as_type(_8412); _8423 = _8400; _8424 = _8401; } bool _8426 = _8404 && (!_8420); uint _8427; if (_8426) { _8427 = 1u; } else { _8427 = _8424; } uint _8448; uint _8449; uint _8450; if (_8426) { float _8429 = spvFMul(_8359, 1.0 / _8339); _8448 = as_type(fma(_8429, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _8449 = as_type(fma(_8429, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _8450 = as_type(fma(_8429, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _8448 = _8421; _8449 = _8422; _8450 = _8423; } _8451 = as_type(_8414); _8452 = _8448; _8453 = _8449; _8454 = _8450; _8455 = _8427; } else { _8451 = _8317; _8452 = _8399; _8453 = _8408; _8454 = _8400; _8455 = _8401; } _8456 = _8451; _8457 = _8452; _8458 = _8453; _8459 = _8454; _8460 = _8455; } else { _8456 = _8317; _8457 = _8374; _8458 = _8373; _8459 = _8371; _8460 = _8372; } _8461 = _8456; _8462 = _8457; _8463 = _8458; _8464 = _8459; _8465 = _8460; } else { _8461 = _8317; _8462 = _8365; _8463 = _8364; _8464 = _8362; _8465 = _8363; } _8466 = _8461; _8467 = _8462; _8468 = _8463; _8469 = _8464; _8470 = _8465; } else { _8466 = _8317; _8467 = _8345; _8468 = _8344; _8469 = _8342; _8470 = _8343; } _8472 = _8351; _8473 = _8466; _8474 = _8467; _8475 = _8468; _8476 = _8469; _8477 = uint(max(int(0u), int(_8470))); } else { _8472 = _8191; _8473 = _8317; _8474 = _8306; _8475 = _8307; _8476 = _8308; _8477 = _8310; } uint _8483 = as_type(fma(as_type(_7261), 0.00999999977648258209228515625, as_type(_8476))); float _8490 = fma(as_type(_7263), 0.00999999977648258209228515625, as_type(_8474)); bool _8493 = _8153 && (!(_8153 && (int(0u) < int(_8477)))); uint _8496; if (_8493) { _8496 = as_type(spvFSub(_7361, _7782)); } else { _8496 = _8473; } uint _9515; uint _9516; uint _9517; uint _9518; uint _9519; uint _9520; if (_8493) { float _8497 = spvFSub(_7371, _7786); float _8498 = spvFSub(_7374, _7789); float _8500 = spvFSub(_7368, _7782); float _8502 = spvFSub(_7354, _7786); float _8503 = spvFSub(_7381, _7789); float _8509 = fma(_8497, _8503, -spvFMul(_8498, _8502)); float _8512 = fma(_8498, _8500, -spvFMul(as_type(_8496), _8503)); float _8515 = fma(as_type(_8496), _8502, -spvFMul(_8497, _8500)); float _8518 = fma(_7405, _8509, fma(_7397, _8512, spvFMul(_7391, _8515))); bool _8520 = _8493 && (0.0 >= _8518); uint _8521; uint _8522; uint _8523; uint _8524; if (_8520) { _8521 = 0u; _8522 = 0u; _8523 = 0u; _8524 = 0u; } else { _8521 = _8483; _8522 = _8477; _8523 = as_type(_8498); _8524 = as_type(_8500); } bool _8526 = _8493 && (!_8520); uint _8530; if (_8526) { _8530 = as_type(spvFSub(as_type(_7177), _7782)); } else { _8530 = _8472; } uint _8645; uint _8646; uint _8647; uint _8648; uint _8649; if (_8526) { float _8532 = spvFSub(as_type(_7176), _7786); float _8534 = spvFSub(as_type(_7175), _7789); float _8538 = fma(as_type(_8530), _8509, fma(_8532, _8512, spvFMul(_8515, _8534))); bool _8539 = 0.0 > _8538; bool _8540 = _8526 && _8539; uint _8541; uint _8542; uint _8543; uint _8544; if (_8540) { _8541 = 0u; _8542 = 0u; _8543 = 0u; _8544 = 0u; } else { _8541 = _8521; _8542 = _8522; _8543 = _8523; _8544 = _8524; } bool _8546 = _8526 && (!_8540); bool _8548; if (_8546) { _8548 = _8538 > _8518; } else { _8548 = _8539; } uint _8640; uint _8641; uint _8642; uint _8643; uint _8644; if (_8546) { bool _8549 = _8546 && _8548; uint _8550; uint _8551; uint _8552; uint _8553; if (_8549) { _8550 = 0u; _8551 = 0u; _8552 = 0u; _8553 = 0u; } else { _8550 = _8541; _8551 = _8542; _8552 = _8543; _8553 = _8544; } bool _8555 = _8546 && (!_8549); uint _8558; if (_8555) { _8558 = as_type(spvFMul(_7391, _8532)); } else { _8558 = as_type(_8509); } uint _8635; uint _8636; uint _8637; uint _8638; uint _8639; if (_8555) { float _8564 = fma(_7397, _8534, -as_type(_8558)); float _8567 = fma(_7391, as_type(_8530), -spvFMul(_7405, _8534)); float _8569 = fma(_7405, _8532, -spvFMul(_7397, as_type(_8530))); float _8573 = fma(as_type(_8553), _8564, fma(_8502, _8567, spvFMul(_8503, _8569))); bool _8577 = _8555 && ((_8573 > _8518) || (_8573 < 0.0)); uint _8578; uint _8579; uint _8580; uint _8581; if (_8577) { _8578 = 0u; _8579 = 0u; _8580 = 0u; _8581 = 0u; } else { _8578 = _8553; _8579 = _8550; _8580 = _8551; _8581 = _8552; } bool _8583 = _8555 && (!_8577); uint _8587; if (_8583) { _8587 = as_type(spvFMul(as_type(_8581), _8569)); } else { _8587 = _8581; } uint _8630; uint _8631; uint _8632; uint _8633; uint _8634; if (_8583) { float _8591 = fma(as_type(_8496), _8564, fma(_8497, _8567, as_type(_8587))); float _8593 = spvFSub(_8573, _8591); bool _8599 = _8583 && ((_8593 > _8518) || (0.0 > (-_8591))); uint _8600; uint _8601; uint _8602; uint _8603; if (_8599) { _8600 = 0u; _8601 = 0u; _8602 = 0u; _8603 = 0u; } else { _8600 = _8578; _8601 = as_type(_8591); _8602 = _8579; _8603 = _8580; } bool _8605 = _8583 && (!_8599); uint _8606; if (_8605) { _8606 = 1u; } else { _8606 = _8603; } uint _8627; uint _8628; uint _8629; if (_8605) { float _8608 = spvFMul(_8538, 1.0 / _8518); _8627 = as_type(fma(_8608, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _8628 = as_type(fma(_8608, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _8629 = as_type(fma(_8608, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _8627 = _8600; _8628 = _8601; _8629 = _8602; } _8630 = _8627; _8631 = _8628; _8632 = _8629; _8633 = as_type(_8593); _8634 = _8606; } else { _8630 = _8578; _8631 = _8587; _8632 = _8579; _8633 = _8496; _8634 = _8580; } _8635 = _8630; _8636 = _8631; _8637 = _8632; _8638 = _8633; _8639 = _8634; } else { _8635 = _8553; _8636 = _8552; _8637 = _8550; _8638 = _8496; _8639 = _8551; } _8640 = _8635; _8641 = _8636; _8642 = _8637; _8643 = _8638; _8644 = _8639; } else { _8640 = _8544; _8641 = _8543; _8642 = _8541; _8643 = _8496; _8644 = _8542; } _8645 = _8640; _8646 = _8641; _8647 = _8642; _8648 = _8643; _8649 = _8644; } else { _8645 = _8524; _8646 = _8523; _8647 = _8521; _8648 = _8496; _8649 = _8522; } bool _8653 = _8493 && (!(_8493 && (int(0u) < int(_8649)))); uint _8656; if (_8653) { _8656 = as_type(spvFSub(_8490, _7368)); } else { _8656 = _8648; } uint _8811; uint _8812; uint _8813; uint _8814; uint _8815; if (_8653) { float _8657 = spvFSub(_7807, _7354); float _8658 = spvFSub(_7810, _7381); float _8660 = spvFSub(_7782, _7368); float _8662 = spvFSub(_7786, _7354); float _8663 = spvFSub(_7789, _7381); float _8669 = fma(_8657, _8663, -spvFMul(_8658, _8662)); float _8672 = fma(_8658, _8660, -spvFMul(as_type(_8656), _8663)); float _8675 = fma(as_type(_8656), _8662, -spvFMul(_8657, _8660)); float _8678 = fma(_7405, _8669, fma(_7397, _8672, spvFMul(_7391, _8675))); bool _8680 = _8653 && (0.0 >= _8678); uint _8681; uint _8682; uint _8683; uint _8684; if (_8680) { _8681 = 0u; _8682 = 0u; _8683 = 0u; _8684 = 0u; } else { _8681 = _8647; _8682 = _8649; _8683 = as_type(_8658); _8684 = as_type(_8660); } bool _8686 = _8653 && (!_8680); uint _8690; if (_8686) { _8690 = as_type(spvFSub(as_type(_7177), _7368)); } else { _8690 = _8530; } uint _8805; uint _8806; uint _8807; uint _8808; uint _8809; if (_8686) { float _8692 = spvFSub(as_type(_7176), _7354); float _8694 = spvFSub(as_type(_7175), _7381); float _8698 = fma(as_type(_8690), _8669, fma(_8692, _8672, spvFMul(_8675, _8694))); bool _8699 = 0.0 > _8698; bool _8700 = _8686 && _8699; uint _8701; uint _8702; uint _8703; uint _8704; if (_8700) { _8701 = 0u; _8702 = 0u; _8703 = 0u; _8704 = 0u; } else { _8701 = _8681; _8702 = _8682; _8703 = _8683; _8704 = _8684; } bool _8706 = _8686 && (!_8700); bool _8708; if (_8706) { _8708 = _8698 > _8678; } else { _8708 = _8699; } uint _8800; uint _8801; uint _8802; uint _8803; uint _8804; if (_8706) { bool _8709 = _8706 && _8708; uint _8710; uint _8711; uint _8712; uint _8713; if (_8709) { _8710 = 0u; _8711 = 0u; _8712 = 0u; _8713 = 0u; } else { _8710 = _8701; _8711 = _8702; _8712 = _8703; _8713 = _8704; } bool _8715 = _8706 && (!_8709); uint _8718; if (_8715) { _8718 = as_type(spvFMul(_7391, _8692)); } else { _8718 = as_type(_8669); } uint _8795; uint _8796; uint _8797; uint _8798; uint _8799; if (_8715) { float _8724 = fma(_7397, _8694, -as_type(_8718)); float _8727 = fma(_7391, as_type(_8690), -spvFMul(_7405, _8694)); float _8729 = fma(_7405, _8692, -spvFMul(_7397, as_type(_8690))); float _8733 = fma(as_type(_8713), _8724, fma(_8662, _8727, spvFMul(_8663, _8729))); bool _8737 = _8715 && ((_8733 > _8678) || (_8733 < 0.0)); uint _8738; uint _8739; uint _8740; uint _8741; if (_8737) { _8738 = 0u; _8739 = 0u; _8740 = 0u; _8741 = 0u; } else { _8738 = _8713; _8739 = _8710; _8740 = _8711; _8741 = _8712; } bool _8743 = _8715 && (!_8737); uint _8747; if (_8743) { _8747 = as_type(spvFMul(as_type(_8741), _8729)); } else { _8747 = _8741; } uint _8790; uint _8791; uint _8792; uint _8793; uint _8794; if (_8743) { float _8751 = fma(as_type(_8656), _8724, fma(_8657, _8727, as_type(_8747))); float _8753 = spvFSub(_8733, _8751); bool _8759 = _8743 && ((_8753 > _8678) || (0.0 > (-_8751))); uint _8760; uint _8761; uint _8762; uint _8763; if (_8759) { _8760 = 0u; _8761 = 0u; _8762 = 0u; _8763 = 0u; } else { _8760 = _8738; _8761 = as_type(_8751); _8762 = _8739; _8763 = _8740; } bool _8765 = _8743 && (!_8759); uint _8766; if (_8765) { _8766 = 1u; } else { _8766 = _8763; } uint _8787; uint _8788; uint _8789; if (_8765) { float _8768 = spvFMul(_8698, 1.0 / _8678); _8787 = as_type(fma(_8768, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _8788 = as_type(fma(_8768, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _8789 = as_type(fma(_8768, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _8787 = _8760; _8788 = _8761; _8789 = _8762; } _8790 = as_type(_8753); _8791 = _8787; _8792 = _8788; _8793 = _8789; _8794 = _8766; } else { _8790 = _8656; _8791 = _8738; _8792 = _8747; _8793 = _8739; _8794 = _8740; } _8795 = _8790; _8796 = _8791; _8797 = _8792; _8798 = _8793; _8799 = _8794; } else { _8795 = _8656; _8796 = _8713; _8797 = _8712; _8798 = _8710; _8799 = _8711; } _8800 = _8795; _8801 = _8796; _8802 = _8797; _8803 = _8798; _8804 = _8799; } else { _8800 = _8656; _8801 = _8704; _8802 = _8703; _8803 = _8701; _8804 = _8702; } _8805 = _8800; _8806 = _8801; _8807 = _8802; _8808 = _8803; _8809 = _8804; } else { _8805 = _8656; _8806 = _8684; _8807 = _8683; _8808 = _8681; _8809 = _8682; } _8811 = _8805; _8812 = _8806; _8813 = _8807; _8814 = _8808; _8815 = uint(max(int(0u), int(_8809))); } else { _8811 = _8656; _8812 = _8645; _8813 = _8646; _8814 = _8647; _8815 = _8649; } uint _8821 = as_type(fma(as_type(_7261), -0.00999999977648258209228515625, as_type(_8814))); float _8828 = fma(as_type(_7263), -0.00999999977648258209228515625, as_type(_8812)); bool _8831 = _8493 && (!(_8493 && (int(0u) < int(_8815)))); uint _8834; if (_8831) { _8834 = as_type(spvFSub(_8828, _7758)); } else { _8834 = _8811; } uint _9509; uint _9510; uint _9511; uint _9512; uint _9513; uint _9514; if (_8831) { float _8835 = spvFSub(_7807, _7761); float _8836 = spvFSub(_7810, _7764); float _8838 = spvFSub(_7368, _7758); float _8840 = spvFSub(_7354, _7761); float _8841 = spvFSub(_7381, _7764); float _8847 = fma(_8835, _8841, -spvFMul(_8836, _8840)); float _8850 = fma(_8836, _8838, -spvFMul(as_type(_8834), _8841)); float _8853 = fma(as_type(_8834), _8840, -spvFMul(_8835, _8838)); float _8856 = fma(_7405, _8847, fma(_7397, _8850, spvFMul(_7391, _8853))); bool _8858 = _8831 && (0.0 >= _8856); uint _8859; uint _8860; uint _8861; uint _8862; if (_8858) { _8859 = 0u; _8860 = 0u; _8861 = 0u; _8862 = 0u; } else { _8859 = _8821; _8860 = _8815; _8861 = as_type(_8836); _8862 = as_type(_8838); } bool _8864 = _8831 && (!_8858); uint _8868; if (_8864) { _8868 = as_type(spvFSub(as_type(_7177), _7758)); } else { _8868 = _7263; } uint _8983; uint _8984; uint _8985; uint _8986; uint _8987; if (_8864) { float _8870 = spvFSub(as_type(_7176), _7761); float _8872 = spvFSub(as_type(_7175), _7764); float _8876 = fma(as_type(_8868), _8847, fma(_8870, _8850, spvFMul(_8872, _8853))); bool _8877 = 0.0 > _8876; bool _8878 = _8864 && _8877; uint _8879; uint _8880; uint _8881; uint _8882; if (_8878) { _8879 = 0u; _8880 = 0u; _8881 = 0u; _8882 = 0u; } else { _8879 = _8859; _8880 = _8860; _8881 = _8861; _8882 = _8862; } bool _8884 = _8864 && (!_8878); bool _8886; if (_8884) { _8886 = _8876 > _8856; } else { _8886 = _8877; } uint _8978; uint _8979; uint _8980; uint _8981; uint _8982; if (_8884) { bool _8887 = _8884 && _8886; uint _8888; uint _8889; uint _8890; uint _8891; if (_8887) { _8888 = 0u; _8889 = 0u; _8890 = 0u; _8891 = 0u; } else { _8888 = _8879; _8889 = _8880; _8890 = _8881; _8891 = _8882; } bool _8893 = _8884 && (!_8887); uint _8896; if (_8893) { _8896 = as_type(spvFMul(_7391, _8870)); } else { _8896 = as_type(_8847); } uint _8973; uint _8974; uint _8975; uint _8976; uint _8977; if (_8893) { float _8902 = fma(_7397, _8872, -as_type(_8896)); float _8905 = fma(_7391, as_type(_8868), -spvFMul(_7405, _8872)); float _8907 = fma(_7405, _8870, -spvFMul(_7397, as_type(_8868))); float _8911 = fma(as_type(_8891), _8902, fma(_8840, _8905, spvFMul(_8907, _8841))); bool _8915 = _8893 && ((_8911 > _8856) || (_8911 < 0.0)); uint _8916; uint _8917; uint _8918; uint _8919; if (_8915) { _8916 = 0u; _8917 = 0u; _8918 = 0u; _8919 = 0u; } else { _8916 = _8891; _8917 = _8888; _8918 = _8889; _8919 = _8890; } bool _8921 = _8893 && (!_8915); uint _8925; if (_8921) { _8925 = as_type(spvFMul(_8907, as_type(_8919))); } else { _8925 = _8919; } uint _8968; uint _8969; uint _8970; uint _8971; uint _8972; if (_8921) { float _8929 = fma(as_type(_8834), _8902, fma(_8835, _8905, as_type(_8925))); float _8931 = spvFSub(_8911, _8929); bool _8937 = _8921 && ((_8931 > _8856) || (0.0 > (-_8929))); uint _8938; uint _8939; uint _8940; uint _8941; if (_8937) { _8938 = 0u; _8939 = 0u; _8940 = 0u; _8941 = 0u; } else { _8938 = _8916; _8939 = as_type(_8929); _8940 = _8917; _8941 = _8918; } bool _8943 = _8921 && (!_8937); uint _8944; if (_8943) { _8944 = 1u; } else { _8944 = _8941; } uint _8965; uint _8966; uint _8967; if (_8943) { float _8946 = spvFMul(_8876, 1.0 / _8856); _8965 = as_type(fma(_8946, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _8966 = as_type(fma(_8946, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _8967 = as_type(fma(_8946, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _8965 = _8938; _8966 = _8939; _8967 = _8940; } _8968 = _8965; _8969 = _8966; _8970 = _8967; _8971 = as_type(_8931); _8972 = _8944; } else { _8968 = _8916; _8969 = _8925; _8970 = _8917; _8971 = _8834; _8972 = _8918; } _8973 = _8968; _8974 = _8969; _8975 = _8970; _8976 = _8971; _8977 = _8972; } else { _8973 = _8891; _8974 = _8890; _8975 = _8888; _8976 = _8834; _8977 = _8889; } _8978 = _8973; _8979 = _8974; _8980 = _8975; _8981 = _8976; _8982 = _8977; } else { _8978 = _8882; _8979 = _8881; _8980 = _8879; _8981 = _8834; _8982 = _8880; } _8983 = _8978; _8984 = _8979; _8985 = _8980; _8986 = _8981; _8987 = _8982; } else { _8983 = _8862; _8984 = _8861; _8985 = _8859; _8986 = _8834; _8987 = _8860; } bool _8991 = _8831 && (!(_8831 && (int(0u) < int(_8987)))); uint _8994; if (_8991) { _8994 = as_type(spvFSub(_7347, _7368)); } else { _8994 = _8986; } uint _9149; uint _9150; uint _9151; uint _9152; uint _9153; uint _9154; if (_8991) { float _8995 = spvFSub(_7349, _7354); float _8996 = spvFSub(_7363, _7381); float _8998 = spvFSub(_7758, _7368); float _9000 = spvFSub(_7761, _7354); float _9001 = spvFSub(_7764, _7381); float _9007 = fma(_8995, _9001, -spvFMul(_8996, _9000)); float _9010 = fma(_8996, _8998, -spvFMul(as_type(_8994), _9001)); float _9013 = fma(as_type(_8994), _9000, -spvFMul(_8995, _8998)); float _9016 = fma(_7405, _9007, fma(_7397, _9010, spvFMul(_7391, _9013))); bool _9018 = _8991 && (0.0 >= _9016); uint _9019; uint _9020; uint _9021; uint _9022; if (_9018) { _9019 = 0u; _9020 = 0u; _9021 = 0u; _9022 = 0u; } else { _9019 = _8985; _9020 = _8987; _9021 = as_type(_8996); _9022 = as_type(_8998); } bool _9024 = _8991 && (!_9018); uint _9028; if (_9024) { _9028 = as_type(spvFSub(as_type(_7177), _7368)); } else { _9028 = _8868; } uint _9143; uint _9144; uint _9145; uint _9146; uint _9147; if (_9024) { float _9030 = spvFSub(as_type(_7176), _7354); float _9032 = spvFSub(as_type(_7175), _7381); float _9036 = fma(as_type(_9028), _9007, fma(_9030, _9010, spvFMul(_9032, _9013))); bool _9037 = 0.0 > _9036; bool _9038 = _9024 && _9037; uint _9039; uint _9040; uint _9041; uint _9042; if (_9038) { _9039 = 0u; _9040 = 0u; _9041 = 0u; _9042 = 0u; } else { _9039 = _9019; _9040 = _9020; _9041 = _9021; _9042 = _9022; } bool _9044 = _9024 && (!_9038); bool _9046; if (_9044) { _9046 = _9036 > _9016; } else { _9046 = _9037; } uint _9138; uint _9139; uint _9140; uint _9141; uint _9142; if (_9044) { bool _9047 = _9044 && _9046; uint _9048; uint _9049; uint _9050; uint _9051; if (_9047) { _9048 = 0u; _9049 = 0u; _9050 = 0u; _9051 = 0u; } else { _9048 = _9039; _9049 = _9040; _9050 = _9041; _9051 = _9042; } bool _9053 = _9044 && (!_9047); uint _9056; if (_9053) { _9056 = as_type(spvFMul(_7391, _9030)); } else { _9056 = as_type(_9007); } uint _9133; uint _9134; uint _9135; uint _9136; uint _9137; if (_9053) { float _9062 = fma(_7397, _9032, -as_type(_9056)); float _9065 = fma(_7391, as_type(_9028), -spvFMul(_7405, _9032)); float _9067 = fma(_7405, _9030, -spvFMul(_7397, as_type(_9028))); float _9071 = fma(as_type(_9051), _9062, fma(_9000, _9065, spvFMul(_9067, _9001))); bool _9075 = _9053 && ((_9071 > _9016) || (_9071 < 0.0)); uint _9076; uint _9077; uint _9078; uint _9079; if (_9075) { _9076 = 0u; _9077 = 0u; _9078 = 0u; _9079 = 0u; } else { _9076 = _9051; _9077 = _9048; _9078 = _9049; _9079 = _9050; } bool _9081 = _9053 && (!_9075); uint _9085; if (_9081) { _9085 = as_type(spvFMul(_9067, as_type(_9079))); } else { _9085 = _9079; } uint _9128; uint _9129; uint _9130; uint _9131; uint _9132; if (_9081) { float _9089 = fma(as_type(_8994), _9062, fma(_8995, _9065, as_type(_9085))); float _9091 = spvFSub(_9071, _9089); bool _9097 = _9081 && ((_9091 > _9016) || (0.0 > (-_9089))); uint _9098; uint _9099; uint _9100; uint _9101; if (_9097) { _9098 = 0u; _9099 = 0u; _9100 = 0u; _9101 = 0u; } else { _9098 = _9076; _9099 = as_type(_9089); _9100 = _9077; _9101 = _9078; } bool _9103 = _9081 && (!_9097); uint _9104; if (_9103) { _9104 = 1u; } else { _9104 = _9101; } uint _9125; uint _9126; uint _9127; if (_9103) { float _9106 = spvFMul(_9036, 1.0 / _9016); _9125 = as_type(fma(_9106, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _9126 = as_type(fma(_9106, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _9127 = as_type(fma(_9106, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _9125 = _9098; _9126 = _9099; _9127 = _9100; } _9128 = as_type(_9091); _9129 = _9125; _9130 = _9126; _9131 = _9127; _9132 = _9104; } else { _9128 = _8994; _9129 = _9076; _9130 = _9085; _9131 = _9077; _9132 = _9078; } _9133 = _9128; _9134 = _9129; _9135 = _9130; _9136 = _9131; _9137 = _9132; } else { _9133 = _8994; _9134 = _9051; _9135 = _9050; _9136 = _9048; _9137 = _9049; } _9138 = _9133; _9139 = _9134; _9140 = _9135; _9141 = _9136; _9142 = _9137; } else { _9138 = _8994; _9139 = _9042; _9140 = _9041; _9141 = _9039; _9142 = _9040; } _9143 = _9138; _9144 = _9139; _9145 = _9140; _9146 = _9141; _9147 = _9142; } else { _9143 = _8994; _9144 = _9022; _9145 = _9021; _9146 = _9019; _9147 = _9020; } _9149 = _9028; _9150 = _9143; _9151 = _9144; _9152 = _9145; _9153 = _9146; _9154 = uint(max(int(0u), int(_9147))); } else { _9149 = _8868; _9150 = _8994; _9151 = _8983; _9152 = _8984; _9153 = _8985; _9154 = _8987; } uint _9160 = as_type(fma(as_type(_7244), 0.00999999977648258209228515625, as_type(_9153))); uint _9164 = as_type(fma(as_type(_7245), 0.00999999977648258209228515625, as_type(_9152))); bool _9170 = _8831 && (!(_8831 && (int(0u) < int(_9154)))); uint _9173; if (_9170) { _9173 = as_type(spvFSub(_7361, _7424)); } else { _9173 = _9150; } uint _9503; uint _9504; uint _9505; uint _9506; uint _9507; uint _9508; if (_9170) { float _9174 = spvFSub(_7371, _7426); float _9175 = spvFSub(_7374, _7428); float _9177 = spvFSub(_7782, _7424); float _9179 = spvFSub(_7786, _7426); float _9180 = spvFSub(_7789, _7428); float _9186 = fma(_9174, _9180, -spvFMul(_9175, _9179)); float _9189 = fma(_9175, _9177, -spvFMul(as_type(_9173), _9180)); float _9192 = fma(as_type(_9173), _9179, -spvFMul(_9174, _9177)); float _9195 = fma(_7405, _9186, fma(_7397, _9189, spvFMul(_7391, _9192))); bool _9197 = _9170 && (0.0 >= _9195); uint _9198; uint _9199; uint _9200; uint _9201; if (_9197) { _9198 = 0u; _9199 = 0u; _9200 = 0u; _9201 = 0u; } else { _9198 = _9164; _9199 = _9160; _9200 = _9154; _9201 = as_type(_9177); } bool _9203 = _9170 && (!_9197); uint _9207; if (_9203) { _9207 = as_type(spvFSub(as_type(_7177), _7424)); } else { _9207 = _9149; } uint _9320; uint _9321; uint _9322; uint _9323; uint _9324; if (_9203) { float _9209 = spvFSub(as_type(_7176), _7426); float _9211 = spvFSub(as_type(_7175), _7428); float _9215 = fma(as_type(_9207), _9186, fma(_9209, _9189, spvFMul(_9211, _9192))); bool _9216 = 0.0 > _9215; bool _9217 = _9203 && _9216; uint _9218; uint _9219; uint _9220; uint _9221; if (_9217) { _9218 = 0u; _9219 = 0u; _9220 = 0u; _9221 = 0u; } else { _9218 = _9198; _9219 = _9199; _9220 = _9200; _9221 = _9201; } bool _9223 = _9203 && (!_9217); bool _9225; if (_9223) { _9225 = _9215 > _9195; } else { _9225 = _9216; } uint _9315; uint _9316; uint _9317; uint _9318; uint _9319; if (_9223) { bool _9226 = _9223 && _9225; uint _9227; uint _9228; uint _9229; uint _9230; if (_9226) { _9227 = 0u; _9228 = 0u; _9229 = 0u; _9230 = 0u; } else { _9227 = _9218; _9228 = _9219; _9229 = _9220; _9230 = _9221; } bool _9232 = _9223 && (!_9226); uint _9235; if (_9232) { _9235 = as_type(spvFMul(_7391, _9209)); } else { _9235 = as_type(_9186); } uint _9310; uint _9311; uint _9312; uint _9313; uint _9314; if (_9232) { float _9241 = fma(_7397, _9211, -as_type(_9235)); float _9244 = fma(_7391, as_type(_9207), -spvFMul(_7405, _9211)); float _9246 = fma(_7405, _9209, -spvFMul(_7397, as_type(_9207))); float _9250 = fma(as_type(_9230), _9241, fma(_9179, _9244, spvFMul(_9246, _9180))); bool _9254 = _9232 && ((_9250 > _9195) || (_9250 < 0.0)); uint _9255; uint _9256; uint _9257; uint _9258; if (_9254) { _9255 = 0u; _9256 = 0u; _9257 = 0u; _9258 = 0u; } else { _9255 = _9230; _9256 = _9227; _9257 = _9228; _9258 = _9229; } bool _9260 = _9232 && (!_9254); uint _9263; if (_9260) { _9263 = as_type(spvFMul(_9246, _9175)); } else { _9263 = as_type(_9175); } uint _9305; uint _9306; uint _9307; uint _9308; uint _9309; if (_9260) { float _9267 = fma(as_type(_9173), _9241, fma(_9174, _9244, as_type(_9263))); float _9268 = spvFSub(_9250, _9267); bool _9274 = _9260 && ((_9268 > _9195) || (0.0 > (-_9267))); uint _9275; uint _9276; uint _9277; uint _9278; if (_9274) { _9275 = 0u; _9276 = 0u; _9277 = 0u; _9278 = 0u; } else { _9275 = _9255; _9276 = _9256; _9277 = _9257; _9278 = _9258; } bool _9280 = _9260 && (!_9274); uint _9281; if (_9280) { _9281 = 1u; } else { _9281 = _9278; } uint _9302; uint _9303; uint _9304; if (_9280) { float _9283 = spvFMul(_9215, 1.0 / _9195); _9302 = as_type(fma(_9283, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _9303 = as_type(fma(_9283, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _9304 = as_type(fma(_9283, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _9302 = _9275; _9303 = _9276; _9304 = _9277; } _9305 = _9302; _9306 = _9303; _9307 = _9304; _9308 = as_type(_9268); _9309 = _9281; } else { _9305 = _9255; _9306 = _9256; _9307 = _9257; _9308 = _9173; _9309 = _9258; } _9310 = _9305; _9311 = _9306; _9312 = _9307; _9313 = _9308; _9314 = _9309; } else { _9310 = _9230; _9311 = _9227; _9312 = _9228; _9313 = _9173; _9314 = _9229; } _9315 = _9310; _9316 = _9311; _9317 = _9312; _9318 = _9313; _9319 = _9314; } else { _9315 = _9221; _9316 = _9218; _9317 = _9219; _9318 = _9173; _9319 = _9220; } _9320 = _9315; _9321 = _9316; _9322 = _9317; _9323 = _9318; _9324 = _9319; } else { _9320 = _9201; _9321 = _9198; _9322 = _9199; _9323 = _9173; _9324 = _9200; } bool _9328 = _9170 && (!(_9170 && (int(0u) < int(_9324)))); uint _9332; if (_9328) { _9332 = as_type(spvFSub(as_type(_7749), _7782)); } else { _9332 = _9323; } uint _9485; uint _9486; uint _9487; uint _9488; uint _9489; uint _9490; if (_9328) { float _9333 = spvFSub(_7752, _7786); float _9334 = spvFSub(_7755, _7789); float _9336 = spvFSub(_7424, _7782); float _9338 = spvFSub(_7426, _7786); float _9339 = spvFSub(_7428, _7789); float _9345 = fma(_9333, _9339, -spvFMul(_9334, _9338)); float _9348 = fma(_9334, _9336, -spvFMul(as_type(_9332), _9339)); float _9351 = fma(as_type(_9332), _9338, -spvFMul(_9333, _9336)); float _9354 = fma(_7405, _9345, fma(_7397, _9348, spvFMul(_7391, _9351))); bool _9356 = _9328 && (0.0 >= _9354); uint _9357; uint _9358; uint _9359; uint _9360; if (_9356) { _9357 = 0u; _9358 = 0u; _9359 = 0u; _9360 = 0u; } else { _9357 = _9321; _9358 = _9322; _9359 = _9324; _9360 = as_type(_9336); } bool _9362 = _9328 && (!_9356); uint _9366; if (_9362) { _9366 = as_type(spvFSub(as_type(_7177), _7782)); } else { _9366 = _7783; } uint _9479; uint _9480; uint _9481; uint _9482; uint _9483; if (_9362) { float _9368 = spvFSub(as_type(_7176), _7786); float _9370 = spvFSub(as_type(_7175), _7789); float _9374 = fma(as_type(_9366), _9345, fma(_9368, _9348, spvFMul(_9370, _9351))); bool _9375 = 0.0 > _9374; bool _9376 = _9362 && _9375; uint _9377; uint _9378; uint _9379; uint _9380; if (_9376) { _9377 = 0u; _9378 = 0u; _9379 = 0u; _9380 = 0u; } else { _9377 = _9357; _9378 = _9358; _9379 = _9359; _9380 = _9360; } bool _9382 = _9362 && (!_9376); bool _9384; if (_9382) { _9384 = _9374 > _9354; } else { _9384 = _9375; } uint _9474; uint _9475; uint _9476; uint _9477; uint _9478; if (_9382) { bool _9385 = _9382 && _9384; uint _9386; uint _9387; uint _9388; uint _9389; if (_9385) { _9386 = 0u; _9387 = 0u; _9388 = 0u; _9389 = 0u; } else { _9386 = _9377; _9387 = _9378; _9388 = _9379; _9389 = _9380; } bool _9391 = _9382 && (!_9385); uint _9394; if (_9391) { _9394 = as_type(spvFMul(_7391, _9368)); } else { _9394 = as_type(_9345); } uint _9469; uint _9470; uint _9471; uint _9472; uint _9473; if (_9391) { float _9400 = fma(_7397, _9370, -as_type(_9394)); float _9403 = fma(_7391, as_type(_9366), -spvFMul(_7405, _9370)); float _9405 = fma(_7405, _9368, -spvFMul(_7397, as_type(_9366))); float _9409 = fma(as_type(_9389), _9400, fma(_9338, _9403, spvFMul(_9405, _9339))); bool _9413 = _9391 && ((_9409 > _9354) || (_9409 < 0.0)); uint _9414; uint _9415; uint _9416; uint _9417; if (_9413) { _9414 = 0u; _9415 = 0u; _9416 = 0u; _9417 = 0u; } else { _9414 = _9389; _9415 = _9386; _9416 = _9387; _9417 = _9388; } bool _9419 = _9391 && (!_9413); uint _9422; if (_9419) { _9422 = as_type(spvFMul(_9405, _9334)); } else { _9422 = as_type(_9334); } uint _9464; uint _9465; uint _9466; uint _9467; uint _9468; if (_9419) { float _9426 = fma(as_type(_9332), _9400, fma(_9333, _9403, as_type(_9422))); float _9427 = spvFSub(_9409, _9426); bool _9433 = _9419 && ((_9427 > _9354) || (0.0 > (-_9426))); uint _9434; uint _9435; uint _9436; uint _9437; if (_9433) { _9434 = 0u; _9435 = 0u; _9436 = 0u; _9437 = 0u; } else { _9434 = _9414; _9435 = _9415; _9436 = _9416; _9437 = _9417; } bool _9439 = _9419 && (!_9433); uint _9440; if (_9439) { _9440 = 1u; } else { _9440 = _9437; } uint _9461; uint _9462; uint _9463; if (_9439) { float _9442 = spvFMul(_9374, 1.0 / _9354); _9461 = as_type(fma(_9442, spvFSub(as_type(_1344), as_type(_7175)), as_type(_7175))); _9462 = as_type(fma(_9442, spvFSub(as_type(_1343), as_type(_7176)), as_type(_7176))); _9463 = as_type(fma(_9442, spvFSub(as_type(_1342), as_type(_7177)), as_type(_7177))); } else { _9461 = _9434; _9462 = _9435; _9463 = _9436; } _9464 = as_type(_9427); _9465 = _9461; _9466 = _9462; _9467 = _9463; _9468 = _9440; } else { _9464 = _9332; _9465 = _9414; _9466 = _9415; _9467 = _9416; _9468 = _9417; } _9469 = _9464; _9470 = _9465; _9471 = _9466; _9472 = _9467; _9473 = _9468; } else { _9469 = _9332; _9470 = _9389; _9471 = _9386; _9472 = _9387; _9473 = _9388; } _9474 = _9469; _9475 = _9470; _9476 = _9471; _9477 = _9472; _9478 = _9473; } else { _9474 = _9332; _9475 = _9380; _9476 = _9377; _9477 = _9378; _9478 = _9379; } _9479 = _9474; _9480 = _9475; _9481 = _9476; _9482 = _9477; _9483 = _9478; } else { _9479 = _9332; _9480 = _9360; _9481 = _9357; _9482 = _9358; _9483 = _9359; } _9485 = _9366; _9486 = _9479; _9487 = _9480; _9488 = _9481; _9489 = _9482; _9490 = uint(max(int(0u), int(_9483))); } else { _9485 = _7783; _9486 = _9332; _9487 = _9320; _9488 = _9321; _9489 = _9322; _9490 = _9324; } _9503 = _9485; _9504 = _9486; _9505 = as_type(fma(as_type(_7246), -0.00999999977648258209228515625, as_type(_9487))); _9506 = as_type(fma(as_type(_7245), -0.00999999977648258209228515625, as_type(_9488))); _9507 = as_type(fma(as_type(_7244), -0.00999999977648258209228515625, as_type(_9489))); _9508 = _9490; } else { _9503 = _7783; _9504 = _9173; _9505 = as_type(fma(as_type(_7246), 0.00999999977648258209228515625, as_type(_9151))); _9506 = _9164; _9507 = _9160; _9508 = _9154; } _9509 = _9503; _9510 = _9504; _9511 = _9505; _9512 = _9506; _9513 = _9507; _9514 = _9508; } else { _9509 = _7783; _9510 = _8834; _9511 = as_type(_8828); _9512 = as_type(fma(as_type(_7262), -0.00999999977648258209228515625, as_type(_8813))); _9513 = _8821; _9514 = _8815; } _9515 = _9509; _9516 = _9510; _9517 = _9511; _9518 = _9512; _9519 = _9513; _9520 = _9514; } else { _9515 = _7783; _9516 = _8496; _9517 = as_type(_8490); _9518 = as_type(fma(as_type(_7262), 0.00999999977648258209228515625, as_type(_8475))); _9519 = _8483; _9520 = _8477; } _9521 = _9515; _9522 = _9516; _9523 = _9517; _9524 = _9518; _9525 = _9519; _9526 = _9520; } else { _9521 = _7783; _9522 = _8157; _9523 = as_type(fma(as_type(_7280), -0.00999999977648258209228515625, as_type(_8134))); _9524 = as_type(fma(as_type(_7279), -0.00999999977648258209228515625, as_type(_8135))); _9525 = _8143; _9526 = _8137; } _9527 = _9521; _9528 = _9522; _9529 = _9525; _9530 = _9524; _9531 = _9523; _9532 = _9526; } else { _9527 = as_type(_7316); _9528 = _7278; _9529 = _7734; _9530 = as_type(fma(as_type(_7279), 0.00999999977648258209228515625, as_type(_7726))); _9531 = as_type(_7741); _9532 = _7728; } _9534 = _1345; _9535 = _7723; _9536 = _9529; _9537 = _9532; _9538 = _9527; _9539 = _9531; _9540 = _9530; _9541 = _9529; _9542 = int(0u) < int(_9532); _9543 = _9528; } else { _9534 = _7170; _9535 = _7054; _9536 = _7173; _9537 = _7174; _9538 = _7172; _9539 = _7175; _9540 = _7176; _9541 = _7177; _9542 = _7183; _9543 = _7186; } bool _9545 = _7181 && (!_7184); bool _9547; if (_9545) { _9547 = 4u == _9543; } else { _9547 = _9542; } uint _10311; uint _10312; uint _10313; uint _10314; uint _10315; uint _10316; uint _10317; uint _10318; uint _10319; uint _10320; uint _10321; uint _10322; uint _10323; uint _10324; uint _10325; uint _10326; uint _10327; uint _10328; uint _10329; uint _10330; uint _10331; uint _10332; uint _10333; uint _10334; uint _10335; uint _10336; uint _10337; uint _10338; uint _10339; uint _10340; uint _10341; uint _10342; uint _10343; uint _10344; uint _10345; uint _10346; uint _10347; uint _10348; uint _10349; uint _10350; uint _10351; uint _10352; uint _10353; uint _10354; uint _10355; uint _10356; uint _10357; uint _10358; uint _10359; uint _10360; uint _10361; uint _10362; uint _10363; uint _10364; if (_9545) { bool _9548 = _9545 && _9547; uint _9550; if (_9548) { _9550 = _7081 + 154u; } else { _9550 = _9543; } uint _9836; uint _9837; uint _9838; uint _9839; uint _9840; uint _9841; uint _9842; uint _9843; bool _9844; uint _9845; if (_9548) { uint _9552 = _7081 << 2u; uint _9559 = ((0u + (_9550 * 16u)) + buf3_off) >> 2u; uint3 _9569 = uint3(cbuf_56.data[_9559 + 0u], cbuf_56.data[_9559 + 1u], cbuf_56.data[_9559 + 2u]); uint _9570 = _9569.x; uint _9571 = _9569.y; uint _9572 = _9569.z; uint _9576 = ((0u + ((_7081 + 170u) * 16u)) + buf3_off) >> 2u; uint3 _9586 = uint3(cbuf_56.data[_9576 + 0u], cbuf_56.data[_9576 + 1u], cbuf_56.data[_9576 + 2u]); uint _9587 = _9586.x; uint _9588 = _9586.y; uint _9589 = _9586.z; uint _9593 = ((0u + ((_9552 + 188u) * 16u)) + buf3_off) >> 2u; uint4 _9606 = uint4(cbuf_56.data[_9593 + 0u], cbuf_56.data[_9593 + 1u], cbuf_56.data[_9593 + 2u], cbuf_56.data[_9593 + 3u]); uint _9607 = _9606.x; uint _9608 = _9606.y; uint _9609 = _9606.z; uint _9610 = _9606.w; uint _9614 = ((0u + ((_9552 + 187u) * 16u)) + buf3_off) >> 2u; uint4 _9627 = uint4(cbuf_56.data[_9614 + 0u], cbuf_56.data[_9614 + 1u], cbuf_56.data[_9614 + 2u], cbuf_56.data[_9614 + 3u]); uint _9628 = _9627.x; uint _9629 = _9627.y; uint _9630 = _9627.z; uint _9631 = _9627.w; uint _9635 = ((0u + ((_9552 + 186u) * 16u)) + buf3_off) >> 2u; uint4 _9648 = uint4(cbuf_56.data[_9635 + 0u], cbuf_56.data[_9635 + 1u], cbuf_56.data[_9635 + 2u], cbuf_56.data[_9635 + 3u]); uint _9649 = _9648.x; uint _9650 = _9648.y; uint _9651 = _9648.z; uint _9652 = _9648.w; float _9656 = spvFMul(spvFAdd(as_type(_9572), as_type(_9589)), 0.5); float _9660 = spvFMul(spvFAdd(as_type(_9571), as_type(_9588)), 0.5); float _9662 = spvFSub(as_type(_9572), _9656); float _9664 = spvFSub(as_type(_9589), _9656); float _9668 = spvFMul(spvFAdd(as_type(_9570), as_type(_9587)), 0.5); float _9670 = spvFSub(as_type(_9571), _9660); float _9672 = spvFSub(as_type(_9588), _9660); float _9680 = spvFSub(as_type(_9570), _9668); float _9682 = spvFSub(as_type(_9587), _9668); float _9715 = spvFAdd(_9656, fma(as_type(_9607), _9680, fma(as_type(_9608), _9670, fma(as_type(_9609), _9662, as_type(_9610))))); float _9716 = spvFAdd(_9656, fma(as_type(_9607), _9682, fma(as_type(_9608), _9672, fma(as_type(_9609), _9664, as_type(_9610))))); float _9721 = spvFAdd(_9660, fma(as_type(_9628), _9680, fma(as_type(_9629), _9670, fma(as_type(_9630), _9662, as_type(_9631))))); float _9722 = spvFAdd(_9660, fma(as_type(_9628), _9682, fma(as_type(_9629), _9672, fma(as_type(_9630), _9664, as_type(_9631))))); float _9723 = spvFSub(_9716, _9715); float _9724 = spvFAdd(_9668, fma(as_type(_9649), _9680, fma(as_type(_9650), _9670, fma(as_type(_9651), _9662, as_type(_9652))))); float _9725 = spvFAdd(_9668, fma(as_type(_9649), _9682, fma(as_type(_9650), _9672, fma(as_type(_9651), _9664, as_type(_9652))))); float _9726 = spvFSub(_9722, _9721); float _9728 = spvFSub(as_type(_9539), _9715); float _9730 = spvFSub(_9725, _9724); float _9732 = spvFSub(as_type(_9540), _9721); float _9736 = spvFSub(as_type(_9541), _9724); float _9738 = fma(_9730, _9730, fma(_9726, _9726, spvFMul(_9723, _9723))); float _9739 = fma(_9736, _9730, fma(_9732, _9726, spvFMul(_9723, _9728))); float _9740 = 1.0 / _9738; float _9742 = fast::clamp(spvFMul(_9739, _9740), 0.0, 1.0); float _9743 = fma(_9742, _9723, _9715); float _9744 = fma(_9742, _9726, _9721); float _9747 = spvFSub(as_type(_9539), _9743); float _9748 = fma(_9742, _9730, _9724); float _9751 = spvFSub(as_type(_9540), _9744); float _9754 = spvFSub(as_type(_9541), _9748); float _9758 = spvFSub(as_type(_9541), _9725); float _9760 = spvFSub(as_type(_9540), _9722); bool _9764 = 0.0 >= _9739; bool _9765 = _9548 && _9764; uint _9771; if (_9765) { _9771 = as_type(sqrt(fma(_9736, _9736, fma(_9732, _9732, spvFMul(_9728, _9728))))); } else { _9771 = as_type(spvFSub(as_type(_9539), _9716)); } bool _9773 = _9548 && (!_9765); bool _9775; if (_9773) { _9775 = _9739 >= _9738; } else { _9775 = _9764; } uint _9799; if (_9773) { bool _9776 = _9773 && _9775; uint _9784; if (_9776) { _9784 = as_type(sqrt(fma(_9758, _9758, fma(_9760, _9760, spvFMul(as_type(_9771), as_type(_9771)))))); } else { _9784 = _9771; } bool _9786 = _9773 && (!_9776); uint _9789; if (_9786) { _9789 = as_type(spvFMul(_9728, _9728)); } else { _9789 = _9784; } uint _9798; if (_9786) { _9798 = as_type(sqrt(fma(-spvFMul(_9739, _9739), _9740, fma(_9736, _9736, fma(_9732, _9732, as_type(_9789)))))); } else { _9798 = _9789; } _9799 = _9798; } else { _9799 = _9771; } uint _9804 = ((0u + ((_7081 + 162u) * 16u)) + buf3_off) >> 2u; bool _9809 = as_type(cbuf_56.data[_9804]) > as_type(_9799); float _9811 = sqrt(fma(_9754, _9754, fma(_9751, _9751, spvFMul(_9747, _9747)))); uint _9829; uint _9830; uint _9831; uint _9832; uint _9833; uint _9834; uint _9835; if (_9548 && _9809) { float _9813 = 1.0 / _9811; float _9814 = spvFMul(_9754, _9813); float _9816 = spvFMul(_9751, _9813); float _9818 = spvFMul(_9747, _9813); _9829 = _1345; _9830 = as_type(_9816); _9831 = as_type(_9814); _9832 = as_type(_9818); _9833 = as_type(fma(_9818, as_type(cbuf_56.data[_9804]), _9743)); _9834 = as_type(fma(_9816, as_type(cbuf_56.data[_9804]), _9744)); _9835 = as_type(fma(_9814, as_type(cbuf_56.data[_9804]), _9748)); } else { _9829 = _9534; _9830 = _9536; _9831 = _9537; _9832 = as_type(_9811); _9833 = _9539; _9834 = _9540; _9835 = _9541; } _9836 = _9829; _9837 = _9830; _9838 = _9831; _9839 = _9832; _9840 = _9833; _9841 = _9834; _9842 = _9835; _9843 = as_type(_9748); _9844 = _9809; _9845 = as_type(_9744); } else { _9836 = _9534; _9837 = _9536; _9838 = _9537; _9839 = _7171; _9840 = _9539; _9841 = _9540; _9842 = _9541; _9843 = _9538; _9844 = _9547; _9845 = _9550; } bool _9847 = _9545 && (!_9548); bool _9849; if (_9847) { _9849 = 6u == _9845; } else { _9849 = _9844; } uint _10258; uint _10259; uint _10260; uint _10261; uint _10262; uint _10263; uint _10264; uint _10265; uint _10266; uint _10267; uint _10268; uint _10269; uint _10270; uint _10271; uint _10272; uint _10273; uint _10274; uint _10275; uint _10276; uint _10277; uint _10278; uint _10279; uint _10280; uint _10281; uint _10282; uint _10283; uint _10284; uint _10285; uint _10286; uint _10287; uint _10288; uint _10289; uint _10290; uint _10291; uint _10292; uint _10293; uint _10294; uint _10295; uint _10296; uint _10297; uint _10298; uint _10299; uint _10300; uint _10301; uint _10302; uint _10303; uint _10304; uint _10305; uint _10306; uint _10307; uint _10308; uint _10309; uint _10310; if (_9847) { bool _9850 = _9847 && _9849; uint _9851; if (_9850) { _9851 = cbuf_52.data[_6653]; } else { _9851 = _9845; } uint _10205; uint _10206; uint _10207; uint _10208; uint _10209; uint _10210; uint _10211; uint _10212; uint _10213; uint _10214; uint _10215; uint _10216; uint _10217; uint _10218; uint _10219; uint _10220; uint _10221; uint _10222; uint _10223; uint _10224; uint _10225; uint _10226; uint _10227; uint _10228; uint _10229; uint _10230; uint _10231; uint _10232; uint _10233; uint _10234; uint _10235; uint _10236; uint _10237; uint _10238; uint _10239; uint _10240; uint _10241; uint _10242; uint _10243; uint _10244; uint _10245; uint _10246; uint _10247; uint _10248; uint _10249; uint _10250; uint _10251; uint _10252; uint _10253; uint _10254; uint _10255; uint _10256; uint _10257; if (_9850) { float _9872 = fma(as_type(cbuf_52.data[_6641]), as_type(_9842), fma(as_type(cbuf_52.data[_6645]), as_type(_9841), fma(as_type(cbuf_52.data[_6649]), as_type(_9840), as_type(_9851)))); float _9878 = fma(as_type(cbuf_52.data[_6673]), as_type(_9842), fma(as_type(cbuf_52.data[_6677]), as_type(_9841), fma(as_type(cbuf_52.data[_6681]), as_type(_9840), as_type(cbuf_52.data[_6685])))); float _9884 = fma(as_type(cbuf_52.data[_6657]), as_type(_9842), fma(as_type(cbuf_52.data[_6661]), as_type(_9841), fma(as_type(cbuf_52.data[_6665]), as_type(_9840), as_type(cbuf_52.data[_6669])))); float _9903 = 1.0 / fma(as_type(cbuf_52.data[_6689]), _9884, fma(as_type(cbuf_52.data[_6693]), _9878, fma(as_type(cbuf_52.data[_6697]), _9872, as_type(cbuf_52.data[_6701])))); float _9906 = fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_6705]), _9884, fma(as_type(cbuf_52.data[_6709]), _9878, fma(as_type(cbuf_52.data[_6713]), _9872, as_type(cbuf_52.data[_6717])))), _9903), 0.5); float _9907 = fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_6721]), _9884, fma(as_type(cbuf_52.data[_6725]), _9878, fma(as_type(cbuf_52.data[_6729]), _9872, as_type(cbuf_52.data[_6733])))), _9903), 0.5); float _9931 = 1.0 / fma(as_type(cbuf_52.data[_6829]), as_type(as_type(cs_img16.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_6804), int(uint(int(spvFMul(_6808, _9906))))))))), uint(max(int(0u), int(uint(min(int(_6805), int(uint(int(spvFMul(_6809, _9907))))))))))), 0u)).x), as_type(cbuf_52.data[_6826])); float _9935 = spvFMul(as_type(cbuf_52.data[_6833]), _9931); bool _9949 = _9850 && ((((spvFMul(5.0, fast::max(abs(spvFSub(_6771, _9872)), 0.5)) >= abs(fma(as_type(cbuf_52.data[_6833]), _9931, -_9872))) && (_7001 > _9935)) && (_9872 >= _9935)) && (_6998 >= _6771)); uint _9953; if (_9949) { _9953 = as_type(spvFMul(as_type(cbuf_52.data[_6935]), _9935)); } else { _9953 = _9839; } uint _10152; uint _10153; uint _10154; uint _10155; uint _10156; uint _10157; uint _10158; uint _10159; uint _10160; uint _10161; uint _10162; uint _10163; uint _10164; uint _10165; uint _10166; uint _10167; uint _10168; uint _10169; uint _10170; uint _10171; uint _10172; uint _10173; uint _10174; uint _10175; uint _10176; uint _10177; uint _10178; uint _10179; uint _10180; uint _10181; uint _10182; uint _10183; uint _10184; uint _10185; uint _10186; uint _10187; uint _10188; uint _10189; uint _10190; uint _10191; uint _10192; uint _10193; uint _10194; uint _10195; uint _10196; uint _10197; uint _10198; uint _10199; uint _10200; uint _10201; uint _10202; uint _10203; uint _10204; if (_9949) { float _9957 = spvFMul(fma(-2.0, _9907, 1.0), as_type(_9953)); float _9961 = spvFMul(fma(2.0, _9906, -1.0), spvFMul(as_type(cbuf_52.data[_6931]), _9935)); float _9980 = 1.0 / fma(as_type(cbuf_52.data[_6689]), _9961, fma(as_type(cbuf_52.data[_6693]), _9957, fma(as_type(cbuf_52.data[_6697]), _9935, as_type(cbuf_52.data[_6701])))); uint4 _9996 = as_type(cs_img24.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_6924), int(uint(int(spvFMul(_7002, fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_6705]), _9961, fma(as_type(cbuf_52.data[_6709]), _9957, fma(as_type(cbuf_52.data[_6713]), _9935, as_type(cbuf_52.data[_6717])))), _9980), 0.5)))))))))), uint(max(int(0u), int(uint(min(int(_6925), int(uint(int(spvFMul(_7003, fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_6721]), _9961, fma(as_type(cbuf_52.data[_6725]), _9957, fma(as_type(cbuf_52.data[_6729]), _9935, as_type(cbuf_52.data[_6733])))), _9980), 0.5)))))))))))), 0u)); float _10004 = fma(as_type(_2099), _6554, spvFAdd(as_type(_7045), as_type(_7049))); float _10006 = fma(2.0, as_type(_9996.z), -1.0); float _10011 = fma(2.0, as_type(_9996.y), -1.0); float _10017 = fma(as_type(_2099), _6552, spvFAdd(as_type(_7046), as_type(_7050))); float _10020 = fma(2.0, as_type(_9996.x), -1.0); float _10023 = fma(as_type(_2099), _6550, spvFAdd(as_type(_7047), as_type(_7044))); float _10027 = rsqrt(fma(_10020, _10020, fma(_10011, _10011, spvFMul(_10006, _10006)))); float _10028 = rsqrt(fma(_10023, _10023, fma(_10017, _10017, spvFMul(_10004, _10004)))); float _10029 = spvFMul(_10006, _10027); float _10031 = spvFMul(_10011, _10027); float _10034 = spvFMul(_10020, _10027); float _10039 = spvFMul(2.7999999523162841796875, fma(spvFMul(_10023, _10028), _10034, fma(spvFMul(_10017, _10028), _10031, spvFMul(_10029, spvFMul(_10004, _10028))))); float _10043 = fma(_10004, _10028, -spvFMul(_10029, _10039)); float _10046 = fma(_10017, _10028, -spvFMul(_10031, _10039)); float _10050 = fma(_10023, _10028, -spvFMul(_10034, _10039)); float _10064 = rsqrt(fma(_10050, _10050, fma(_10046, _10046, spvFMul(_10043, _10043)))); float _10071 = sqrt(fma(_10023, _10023, fma(_10017, _10017, spvFMul(_10004, _10004)))); float _10081 = spvFMul(_10071, spvFMul(_10050, _10064)); float _10083 = spvFMul(_10071, spvFMul(_10046, _10064)); float _10085 = spvFMul(_10071, spvFMul(_10043, _10064)); float _10088 = fma(_10034, 0.0199999995529651641845703125, fma(as_type(cbuf_52.data[_6939]), _9961, fma(as_type(cbuf_52.data[_6943]), _9957, fma(as_type(cbuf_52.data[_6947]), _9935, as_type(cbuf_52.data[_6951]))))); float _10090 = fma(_10031, 0.0199999995529651641845703125, fma(as_type(cbuf_52.data[_6955]), _9961, fma(as_type(cbuf_52.data[_6959]), _9957, fma(as_type(cbuf_52.data[_6963]), _9935, as_type(cbuf_52.data[_6967]))))); float _10092 = fma(_10029, 0.0199999995529651641845703125, fma(as_type(cbuf_52.data[_6970]), _9961, fma(as_type(cbuf_52.data[_6974]), _9957, fma(as_type(cbuf_52.data[_6978]), _9935, as_type(cbuf_52.data[_6982]))))); float _10094 = spvFMul(_1761, _10081); float _10096 = spvFMul(_1761, _10083); float _10098 = spvFMul(_1761, _10085); bool _10100 = int(cbuf_52.data[_6566]) > int(0u); uint _10109; uint _10110; uint _10111; uint _10112; if (_10100) { _10109 = as_type(_10094); _10110 = as_type(spvFMul(0.980000019073486328125, as_type(_7043))); _10111 = as_type(_10098); _10112 = as_type(_10096); } else { _10109 = _7044; _10110 = _7043; _10111 = _7049; _10112 = _7050; } uint _10116; uint _10117; uint _10118; if (!_10100) { _10116 = as_type(_10096); _10117 = as_type(_10098); _10118 = as_type(_10094); } else { _10116 = _7004; _10117 = _7005; _10118 = _7006; } _10152 = _10116; _10153 = _10117; _10154 = _10118; _10155 = _1345; _10156 = _1345; _10157 = _1345; _10158 = _1345; _10159 = as_type(_10092); _10160 = as_type(_10090); _10161 = as_type(_10088); _10162 = as_type(_10092); _10163 = as_type(_10090); _10164 = as_type(_10088); _10165 = as_type(_10092); _10166 = as_type(_10090); _10167 = as_type(_10088); _10168 = as_type(_10092); _10169 = as_type(_10090); _10170 = as_type(_10088); _10171 = as_type(_10092); _10172 = as_type(_10090); _10173 = as_type(_10088); _10174 = as_type(_10092); _10175 = as_type(_10090); _10176 = as_type(_10088); _10177 = as_type(_10092); _10178 = as_type(_10090); _10179 = as_type(_10088); _10180 = as_type(_10092); _10181 = as_type(_10090); _10182 = as_type(_10088); _10183 = as_type(_10092); _10184 = as_type(_10090); _10185 = as_type(_10088); _10186 = as_type(_10092); _10187 = as_type(_10090); _10188 = as_type(_10092); _10189 = as_type(_10090); _10190 = as_type(_10088); _10191 = as_type(_10092); _10192 = as_type(_10090); _10193 = as_type(_10088); _10194 = _10109; _10195 = as_type(_10098); _10196 = as_type(_10096); _10197 = as_type(_10094); _10198 = as_type(_10088); _10199 = _10110; _10200 = _10111; _10201 = _10112; _10202 = as_type(_10083); _10203 = as_type(_10081); _10204 = as_type(_10085); } else { _10152 = _7004; _10153 = _7005; _10154 = _7006; _10155 = _7007; _10156 = _7008; _10157 = _7009; _10158 = _9836; _10159 = _7011; _10160 = _7012; _10161 = _7013; _10162 = _7014; _10163 = _7015; _10164 = _7016; _10165 = _7017; _10166 = _7018; _10167 = _7019; _10168 = _7020; _10169 = _7021; _10170 = _7022; _10171 = _7023; _10172 = _7024; _10173 = _7025; _10174 = _7026; _10175 = _7027; _10176 = _7028; _10177 = _7029; _10178 = _7030; _10179 = _7031; _10180 = _7032; _10181 = _7033; _10182 = _7034; _10183 = _7035; _10184 = _7036; _10185 = _7037; _10186 = _7038; _10187 = _7039; _10188 = _7040; _10189 = _7041; _10190 = _7042; _10191 = _9840; _10192 = _9841; _10193 = _9842; _10194 = _7044; _10195 = _7045; _10196 = _7046; _10197 = _7047; _10198 = _7048; _10199 = _7043; _10200 = _7049; _10201 = _7050; _10202 = _9837; _10203 = _9838; _10204 = _9953; } _10205 = _10152; _10206 = _10153; _10207 = _10154; _10208 = _10155; _10209 = _10156; _10210 = _10157; _10211 = _10158; _10212 = _10159; _10213 = _10160; _10214 = _10161; _10215 = _10162; _10216 = _10163; _10217 = _10164; _10218 = _10165; _10219 = _10166; _10220 = _10167; _10221 = _10168; _10222 = _10169; _10223 = _10170; _10224 = _10171; _10225 = _10172; _10226 = _10173; _10227 = _10174; _10228 = _10175; _10229 = _10176; _10230 = _10177; _10231 = _10178; _10232 = _10179; _10233 = _10180; _10234 = _10181; _10235 = _10182; _10236 = _10183; _10237 = _10184; _10238 = _10185; _10239 = _10186; _10240 = _10187; _10241 = _10188; _10242 = _10189; _10243 = _10190; _10244 = _10191; _10245 = _10192; _10246 = _10193; _10247 = _10194; _10248 = _10195; _10249 = _10196; _10250 = _10197; _10251 = _10198; _10252 = _10199; _10253 = _10200; _10254 = _10201; _10255 = _10202; _10256 = _10203; _10257 = _10204; } else { _10205 = _7004; _10206 = _7005; _10207 = _7006; _10208 = _7007; _10209 = _7008; _10210 = _7009; _10211 = _9836; _10212 = _7011; _10213 = _7012; _10214 = _7013; _10215 = _7014; _10216 = _7015; _10217 = _7016; _10218 = _7017; _10219 = _7018; _10220 = _7019; _10221 = _7020; _10222 = _7021; _10223 = _7022; _10224 = _7023; _10225 = _7024; _10226 = _7025; _10227 = _7026; _10228 = _7027; _10229 = _7028; _10230 = _7029; _10231 = _7030; _10232 = _7031; _10233 = _7032; _10234 = _7033; _10235 = _7034; _10236 = _7035; _10237 = _7036; _10238 = _7037; _10239 = _7038; _10240 = _7039; _10241 = _7040; _10242 = _7041; _10243 = _7042; _10244 = _9840; _10245 = _9841; _10246 = _9842; _10247 = _7044; _10248 = _7045; _10249 = _7046; _10250 = _7047; _10251 = _7048; _10252 = _7043; _10253 = _7049; _10254 = _7050; _10255 = _9837; _10256 = _9838; _10257 = _9839; } _10258 = _10205; _10259 = _10206; _10260 = _10207; _10261 = _10208; _10262 = _10209; _10263 = _10210; _10264 = _10211; _10265 = _10212; _10266 = _10213; _10267 = _10214; _10268 = _10215; _10269 = _10216; _10270 = _10217; _10271 = _10218; _10272 = _10219; _10273 = _10220; _10274 = _10221; _10275 = _10222; _10276 = _10223; _10277 = _10224; _10278 = _10225; _10279 = _10226; _10280 = _10227; _10281 = _10228; _10282 = _10229; _10283 = _10230; _10284 = _10231; _10285 = _10232; _10286 = _10233; _10287 = _10234; _10288 = _10235; _10289 = _10236; _10290 = _10237; _10291 = _10238; _10292 = _10239; _10293 = _10240; _10294 = _10241; _10295 = _10242; _10296 = _10243; _10297 = _10244; _10298 = _10245; _10299 = _10246; _10300 = _10247; _10301 = _10248; _10302 = _10249; _10303 = _10250; _10304 = _10251; _10305 = _10252; _10306 = _10253; _10307 = _10254; _10308 = _10255; _10309 = _10256; _10310 = _10257; } else { _10258 = _7004; _10259 = _7005; _10260 = _7006; _10261 = _7007; _10262 = _7008; _10263 = _7009; _10264 = _9836; _10265 = _7011; _10266 = _7012; _10267 = _7013; _10268 = _7014; _10269 = _7015; _10270 = _7016; _10271 = _7017; _10272 = _7018; _10273 = _7019; _10274 = _7020; _10275 = _7021; _10276 = _7022; _10277 = _7023; _10278 = _7024; _10279 = _7025; _10280 = _7026; _10281 = _7027; _10282 = _7028; _10283 = _7029; _10284 = _7030; _10285 = _7031; _10286 = _7032; _10287 = _7033; _10288 = _7034; _10289 = _7035; _10290 = _7036; _10291 = _7037; _10292 = _7038; _10293 = _7039; _10294 = _7040; _10295 = _7041; _10296 = _7042; _10297 = _9840; _10298 = _9841; _10299 = _9842; _10300 = _7044; _10301 = _7045; _10302 = _7046; _10303 = _7047; _10304 = _7048; _10305 = _7043; _10306 = _7049; _10307 = _7050; _10308 = _9837; _10309 = _9838; _10310 = _9839; } _10311 = _10258; _10312 = _10259; _10313 = _10260; _10314 = _10261; _10315 = _10262; _10316 = _10263; _10317 = _10264; _10318 = _10265; _10319 = _10266; _10320 = _10267; _10321 = _10268; _10322 = _10269; _10323 = _10270; _10324 = _10271; _10325 = _10272; _10326 = _10273; _10327 = _10274; _10328 = _10275; _10329 = _10276; _10330 = _10277; _10331 = _10278; _10332 = _10279; _10333 = _10280; _10334 = _10281; _10335 = _10282; _10336 = _10283; _10337 = _10284; _10338 = _10285; _10339 = _10286; _10340 = _10287; _10341 = _10288; _10342 = _10289; _10343 = _10290; _10344 = _10291; _10345 = _10292; _10346 = _10293; _10347 = _10294; _10348 = _10295; _10349 = _10296; _10350 = _10297; _10351 = _10298; _10352 = _10299; _10353 = _10300; _10354 = _10301; _10355 = _10302; _10356 = _10303; _10357 = _9843; _10358 = _10304; _10359 = _10305; _10360 = _10306; _10361 = _10307; _10362 = _10308; _10363 = _10309; _10364 = _10310; } else { _10311 = _7004; _10312 = _7005; _10313 = _7006; _10314 = _7007; _10315 = _7008; _10316 = _7009; _10317 = _9534; _10318 = _7011; _10319 = _7012; _10320 = _7013; _10321 = _7014; _10322 = _7015; _10323 = _7016; _10324 = _7017; _10325 = _7018; _10326 = _7019; _10327 = _7020; _10328 = _7021; _10329 = _7022; _10330 = _7023; _10331 = _7024; _10332 = _7025; _10333 = _7026; _10334 = _7027; _10335 = _7028; _10336 = _7029; _10337 = _7030; _10338 = _7031; _10339 = _7032; _10340 = _7033; _10341 = _7034; _10342 = _7035; _10343 = _7036; _10344 = _7037; _10345 = _7038; _10346 = _7039; _10347 = _7040; _10348 = _7041; _10349 = _7042; _10350 = _9539; _10351 = _9540; _10352 = _9541; _10353 = _7044; _10354 = _7045; _10355 = _7046; _10356 = _7047; _10357 = _9538; _10358 = _7048; _10359 = _7043; _10360 = _7049; _10361 = _7050; _10362 = _9536; _10363 = _9537; _10364 = _7171; } _10365 = _10311; _10366 = _10312; _10367 = _10313; _10368 = _10314; _10369 = _10315; _10370 = _10316; _10371 = _10317; _10372 = _10318; _10373 = _10319; _10374 = _10320; _10375 = _10321; _10376 = _10322; _10377 = _10323; _10378 = _10324; _10379 = _10325; _10380 = _10326; _10381 = _10327; _10382 = _10328; _10383 = _10329; _10384 = _10330; _10385 = _10331; _10386 = _10332; _10387 = _10333; _10388 = _10334; _10389 = _10335; _10390 = _10336; _10391 = _10337; _10392 = _10338; _10393 = _10339; _10394 = _10340; _10395 = _10341; _10396 = _10342; _10397 = _10343; _10398 = _10344; _10399 = _10345; _10400 = _10346; _10401 = _10347; _10402 = _10348; _10403 = _10349; _10404 = _10350; _10405 = _10351; _10406 = _10352; _10407 = _10353; _10408 = _10354; _10409 = _10355; _10410 = _10356; _10411 = _9535; _10412 = _10357; _10413 = _10358; _10414 = _10359; _10415 = _10360; _10416 = _10361; _10417 = _10362; _10418 = _10363; _10419 = _10364; } else { _10365 = _7004; _10366 = _7005; _10367 = _7006; _10368 = _7007; _10369 = _7008; _10370 = _7009; _10371 = _7170; _10372 = _7011; _10373 = _7012; _10374 = _7013; _10375 = _7014; _10376 = _7015; _10377 = _7016; _10378 = _7017; _10379 = _7018; _10380 = _7019; _10381 = _7020; _10382 = _7021; _10383 = _7022; _10384 = _7023; _10385 = _7024; _10386 = _7025; _10387 = _7026; _10388 = _7027; _10389 = _7028; _10390 = _7029; _10391 = _7030; _10392 = _7031; _10393 = _7032; _10394 = _7033; _10395 = _7034; _10396 = _7035; _10397 = _7036; _10398 = _7037; _10399 = _7038; _10400 = _7039; _10401 = _7040; _10402 = _7041; _10403 = _7042; _10404 = _7175; _10405 = _7176; _10406 = _7177; _10407 = _7044; _10408 = _7045; _10409 = _7046; _10410 = _7047; _10411 = _7054; _10412 = _7172; _10413 = _7048; _10414 = _7043; _10415 = _7049; _10416 = _7050; _10417 = _7173; _10418 = _7174; _10419 = _7171; } _10421 = _10365; _10422 = _10366; _10423 = _10367; _10424 = _10368; _10425 = _10369; _10426 = _10370; _10427 = _10371; _10428 = _10372; _10429 = _10373; _10430 = _10374; _10431 = _10375; _10432 = _10376; _10433 = _10377; _10434 = _10378; _10435 = _10379; _10436 = _10380; _10437 = _10381; _10438 = _10382; _10439 = _10383; _10440 = _10384; _10441 = _10385; _10442 = _10386; _10443 = _10387; _10444 = _10388; _10445 = _10389; _10446 = _10390; _10447 = _10391; _10448 = _10392; _10449 = _10393; _10450 = _10394; _10451 = _10395; _10452 = _10396; _10453 = _10397; _10454 = _10398; _10455 = _10399; _10456 = _10400; _10457 = _10401; _10458 = _10402; _10459 = _10403; _10460 = _10404; _10461 = _10405; _10462 = _10406; _10463 = _10407; _10464 = _10408; _10465 = _10409; _10466 = _10410; _10467 = _7081 + 1u; _10468 = _10411; _10469 = _10412; _10470 = _10413; _10471 = _10414; _10472 = _10415; _10473 = _10416; _10474 = _10417; _10475 = _10418; _10476 = _10419; } else { _10421 = _7004; _10422 = _7005; _10423 = _7006; _10424 = _7007; _10425 = _7008; _10426 = _7009; _10427 = _7010; _10428 = _7011; _10429 = _7012; _10430 = _7013; _10431 = _7014; _10432 = _7015; _10433 = _7016; _10434 = _7017; _10435 = _7018; _10436 = _7019; _10437 = _7020; _10438 = _7021; _10439 = _7022; _10440 = _7023; _10441 = _7024; _10442 = _7025; _10443 = _7026; _10444 = _7027; _10445 = _7028; _10446 = _7029; _10447 = _7030; _10448 = _7031; _10449 = _7032; _10450 = _7033; _10451 = _7034; _10452 = _7035; _10453 = _7036; _10454 = _7037; _10455 = _7038; _10456 = _7039; _10457 = _7040; _10458 = _7041; _10459 = _7042; _10460 = _7056; _10461 = _7057; _10462 = _7058; _10463 = _7044; _10464 = _7045; _10465 = _7046; _10466 = _7047; _10467 = _7081; _10468 = _7054; _10469 = _7051; _10470 = _7048; _10471 = _7043; _10472 = _7049; _10473 = _7050; _10474 = _7052; _10475 = _7053; _10476 = _7055; } if (true) { _7004 = _10421; _7005 = _10422; _7006 = _10423; _7007 = _10424; _7008 = _10425; _7009 = _10426; _7010 = _10427; _7011 = _10428; _7012 = _10429; _7013 = _10430; _7014 = _10431; _7015 = _10432; _7016 = _10433; _7017 = _10434; _7018 = _10435; _7019 = _10436; _7020 = _10437; _7021 = _10438; _7022 = _10439; _7023 = _10440; _7024 = _10441; _7025 = _10442; _7026 = _10443; _7027 = _10444; _7028 = _10445; _7029 = _10446; _7030 = _10447; _7031 = _10448; _7032 = _10449; _7033 = _10450; _7034 = _10451; _7035 = _10452; _7036 = _10453; _7037 = _10454; _7038 = _10455; _7039 = _10456; _7040 = _10457; _7041 = _10458; _7042 = _10459; _7043 = _10471; _7044 = _10463; _7045 = _10464; _7046 = _10465; _7047 = _10466; _7048 = _10470; _7049 = _10472; _7050 = _10473; _7051 = _10469; _7052 = _10474; _7053 = _10475; _7054 = _10468; _7055 = _10476; _7056 = _10460; _7057 = _10461; _7058 = _10462; _7059 = _7068; _7060 = _7069; _7061 = _10467; continue; } else { _10477 = _10463; _10478 = _10421; _10479 = _10422; _10480 = _10423; _10481 = _10471; _10482 = _10472; _10483 = _10473; _10484 = _10424; _10485 = _10425; _10486 = _10426; _10487 = _10427; _10488 = _10460; _10489 = _10461; _10490 = _10462; _10491 = _10457; _10492 = _10458; _10493 = _10459; _10494 = _10455; _10495 = _10456; _10496 = _10470; _10497 = _10449; _10498 = _10450; _10499 = _10451; _10500 = _10446; _10501 = _10447; _10502 = _10448; _10503 = _10440; _10504 = _10441; _10505 = _10442; _10506 = _10437; _10507 = _10438; _10508 = _10439; _10509 = _10431; _10510 = _10432; _10511 = _10433; _10512 = _10428; _10513 = _10429; _10514 = _10430; break; } } float _10541 = fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10514)); float _10545 = fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10513)); float _10549 = fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10512)); float _10553 = fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10511)); float _10557 = fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10510)); float _10561 = fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10509)); float _10565 = fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10508)); float _10569 = fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10507)); float _10573 = fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10506)); float _10577 = fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10505)); float _10581 = fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10504)); float _10585 = fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10503)); float _10589 = fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10502)); float _10593 = fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10501)); float _10597 = fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10500)); float _10601 = fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10499)); float _10605 = fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10498)); float _10609 = fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10497)); float _10634 = spvFSub(fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10493)), fma(as_type(cbuf_52.data[_6844]), as_type(cbuf_52.data[_6837]), as_type(_10496))); float _10635 = spvFSub(fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10492)), fma(as_type(cbuf_52.data[_6848]), as_type(cbuf_52.data[_6837]), as_type(_10495))); float _10636 = spvFSub(fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10491)), fma(as_type(cbuf_52.data[_6852]), as_type(cbuf_52.data[_6837]), as_type(_10494))); float _10642 = spvFSub(_10601, _10589); float _10643 = spvFSub(_10605, _10593); float _10644 = spvFSub(_10609, _10597); float _10648 = spvFSub(_10577, _10565); float _10649 = spvFSub(_10581, _10569); float _10650 = spvFSub(_10585, _10573); float _10654 = spvFSub(_10553, _10541); float _10655 = spvFSub(_10557, _10545); float _10656 = spvFSub(_10561, _10549); if (_1316 && (sqrt(fma(_10634, _10634, fma(_10635, _10635, spvFMul(_10636, _10636)))) > _2211)) { } float _10667 = spvFSub(_10553, _10541); float _10668 = spvFSub(_10557, _10545); float _10669 = spvFSub(_10561, _10549); float _10673 = sqrt(fma(_10667, _10667, fma(_10668, _10668, spvFMul(_10669, _10669)))); bool _10676 = _1316 && (_10673 > _2211); uint _10679; if (_10676) { _10679 = as_type(spvFMul(_10669, _10669)); } else { _10679 = as_type(_10673); } uint _10693; uint _10694; uint _10695; if (_10676) { float _10683 = rsqrt(fma(_10667, _10667, fma(_10668, _10668, as_type(_10679)))); _10693 = as_type(fma(_2211, spvFMul(_10669, _10683), _10549)); _10694 = as_type(fma(_2211, spvFMul(_10668, _10683), _10545)); _10695 = as_type(fma(_2211, spvFMul(_10667, _10683), _10541)); } else { _10693 = _6514; _10694 = _6515; _10695 = _6516; } uint _10701; uint _10702; uint _10703; if (_1316 && (!_10676)) { _10701 = as_type(_10561); _10702 = as_type(_10557); _10703 = as_type(_10553); } else { _10701 = _10693; _10702 = _10694; _10703 = _10695; } float _10704 = spvFSub(_10577, _10565); float _10705 = spvFSub(_10581, _10569); float _10706 = spvFSub(_10585, _10573); float _10710 = sqrt(fma(_10704, _10704, fma(_10705, _10705, spvFMul(_10706, _10706)))); bool _10713 = _1316 && (_10710 > _2211); uint _10716; if (_10713) { _10716 = as_type(spvFMul(_10706, _10706)); } else { _10716 = as_type(_10710); } uint _10730; uint _10731; uint _10732; if (_10713) { float _10720 = rsqrt(fma(_10704, _10704, fma(_10705, _10705, as_type(_10716)))); _10730 = as_type(fma(_2211, spvFMul(_10706, _10720), _10573)); _10731 = as_type(fma(_2211, spvFMul(_10705, _10720), _10569)); _10732 = as_type(fma(_2211, spvFMul(_10704, _10720), _10565)); } else { _10730 = _6511; _10731 = _6512; _10732 = _6513; } uint _10738; uint _10739; uint _10740; if (_1316 && (!_10713)) { _10738 = as_type(_10585); _10739 = as_type(_10581); _10740 = as_type(_10577); } else { _10738 = _10730; _10739 = _10731; _10740 = _10732; } float _10741 = spvFSub(_10601, _10589); float _10742 = spvFSub(_10605, _10593); float _10743 = spvFSub(_10609, _10597); float _10747 = sqrt(fma(_10741, _10741, fma(_10742, _10742, spvFMul(_10743, _10743)))); bool _10750 = _1316 && (_10747 > _2211); uint _10753; if (_10750) { _10753 = as_type(spvFMul(_10743, _10743)); } else { _10753 = as_type(_10747); } uint _10767; uint _10768; uint _10769; if (_10750) { float _10757 = rsqrt(fma(_10741, _10741, fma(_10742, _10742, as_type(_10753)))); _10767 = as_type(fma(_2211, spvFMul(_10743, _10757), _10597)); _10768 = as_type(fma(_2211, spvFMul(_10742, _10757), _10593)); _10769 = as_type(fma(_2211, spvFMul(_10741, _10757), _10589)); } else { _10767 = _6508; _10768 = _6509; _10769 = _6510; } uint _10775; uint _10776; uint _10777; if (_1316 && (!_10750)) { _10775 = as_type(_10609); _10776 = as_type(_10605); _10777 = as_type(_10601); } else { _10775 = _10767; _10776 = _10768; _10777 = _10769; } float _10780 = spvFMul(0.259259283542633056640625, as_type(_10703)); float _10790 = fma(as_type(_10490), 0.740740716457366943359375, _10780); float _10793 = fma(as_type(_10489), 0.740740716457366943359375, spvFMul(as_type(_10702), 0.259259283542633056640625)); float _10796 = fma(as_type(_10488), 0.740740716457366943359375, spvFMul(as_type(_10701), 0.259259283542633056640625)); float _10799 = fma(as_type(_10487), 0.740740716457366943359375, spvFMul(as_type(_10486), 0.259259283542633056640625)); float _10803 = spvFMul(0.74074077606201171875, as_type(_10703)); float _10813 = fma(as_type(_10490), 0.25925922393798828125, _10803); float _10816 = fma(as_type(_10489), 0.25925922393798828125, spvFMul(as_type(_10702), 0.74074077606201171875)); float _10819 = fma(as_type(_10488), 0.25925922393798828125, spvFMul(as_type(_10701), 0.74074077606201171875)); float _10825 = spvFMul(0.259259283542633056640625, as_type(_10740)); float _10834 = fma(as_type(_10703), 0.740740716457366943359375, _10825); float _10837 = fma(as_type(_10702), 0.740740716457366943359375, spvFMul(as_type(_10739), 0.259259283542633056640625)); float _10840 = fma(as_type(_10701), 0.740740716457366943359375, spvFMul(as_type(_10738), 0.259259283542633056640625)); float _10846 = spvFMul(0.74074077606201171875, as_type(_10740)); float _10855 = fma(as_type(_10703), 0.25925922393798828125, _10846); float _10858 = fma(as_type(_10702), 0.25925922393798828125, spvFMul(as_type(_10739), 0.74074077606201171875)); float _10861 = fma(as_type(_10701), 0.25925922393798828125, spvFMul(as_type(_10738), 0.74074077606201171875)); float _10867 = spvFMul(0.259259283542633056640625, as_type(_10777)); float _10876 = fma(as_type(_10740), 0.740740716457366943359375, _10867); float _10879 = fma(as_type(_10739), 0.740740716457366943359375, spvFMul(as_type(_10776), 0.259259283542633056640625)); float _10882 = fma(as_type(_10738), 0.740740716457366943359375, spvFMul(as_type(_10775), 0.259259283542633056640625)); float _10888 = spvFMul(0.74074077606201171875, as_type(_10777)); float _10897 = fma(as_type(_10740), 0.25925922393798828125, _10888); float _10900 = fma(as_type(_10739), 0.25925922393798828125, spvFMul(as_type(_10776), 0.74074077606201171875)); float _10903 = fma(as_type(_10738), 0.25925922393798828125, spvFMul(as_type(_10775), 0.74074077606201171875)); float _10925 = spvFSub(spvFMul(fast::max(as_type(_10777), as_type(_10777)), 2.0), as_type(_10740)); float _10927 = spvFSub(spvFMul(fast::max(as_type(_10776), as_type(_10776)), 2.0), as_type(_10739)); float _10929 = spvFSub(spvFMul(fast::max(as_type(_10775), as_type(_10775)), 2.0), as_type(_10738)); float _10931 = spvFSub(spvFMul(fast::max(as_type(_10484), as_type(_10484)), 2.0), as_type(_10485)); float _10932 = spvFMul(0.259259283542633056640625, _10925); float _10938 = fma(as_type(_10777), 0.740740716457366943359375, _10932); float _10941 = fma(as_type(_10776), 0.740740716457366943359375, spvFMul(_10927, 0.259259283542633056640625)); float _10944 = fma(as_type(_10775), 0.740740716457366943359375, spvFMul(_10929, 0.259259283542633056640625)); float _10949 = spvFMul(0.74074077606201171875, _10925); float _10955 = fma(as_type(_10777), 0.25925922393798828125, _10949); float _10958 = fma(as_type(_10776), 0.25925922393798828125, spvFMul(_10927, 0.74074077606201171875)); float _10961 = fma(as_type(_10775), 0.25925922393798828125, spvFMul(_10929, 0.74074077606201171875)); float _10967 = spvFSub(_10790, as_type(_10490)); float _10969 = spvFSub(_10793, as_type(_10489)); float _10971 = spvFSub(_10796, as_type(_10488)); bool _10977 = _1316 && (sqrt(fma(_10967, _10967, fma(_10969, _10969, spvFMul(_10971, _10971)))) > _2211); uint _10980; if (_10977) { _10980 = as_type(spvFMul(_10971, _10971)); } else { _10980 = as_type(_10780); } uint _10997; uint _10998; uint _10999; if (_10977) { float _10984 = rsqrt(fma(_10967, _10967, fma(_10969, _10969, as_type(_10980)))); _10997 = as_type(fma(_2211, spvFMul(_10971, _10984), as_type(_10488))); _10998 = as_type(fma(_2211, spvFMul(_10969, _10984), as_type(_10489))); _10999 = as_type(fma(_2211, spvFMul(_10967, _10984), as_type(_10490))); } else { _10997 = as_type(_10796); _10998 = as_type(_10793); _10999 = as_type(_10790); } float _11001 = spvFSub(_10813, as_type(_10999)); float _11003 = spvFSub(_10816, as_type(_10998)); float _11005 = spvFSub(_10819, as_type(_10997)); bool _11011 = _1316 && (sqrt(fma(_11001, _11001, fma(_11003, _11003, spvFMul(_11005, _11005)))) > _2211); uint _11014; if (_11011) { _11014 = as_type(spvFMul(_11005, _11005)); } else { _11014 = as_type(_10803); } uint _11031; uint _11032; uint _11033; if (_11011) { float _11018 = rsqrt(fma(_11001, _11001, fma(_11003, _11003, as_type(_11014)))); _11031 = as_type(fma(_2211, spvFMul(_11005, _11018), as_type(_10997))); _11032 = as_type(fma(_2211, spvFMul(_11003, _11018), as_type(_10998))); _11033 = as_type(fma(_2211, spvFMul(_11001, _11018), as_type(_10999))); } else { _11031 = as_type(_10819); _11032 = as_type(_10816); _11033 = as_type(_10813); } float _11036 = spvFSub(as_type(_10703), as_type(_11033)); float _11039 = spvFSub(as_type(_10702), as_type(_11032)); float _11042 = spvFSub(as_type(_10701), as_type(_11031)); bool _11048 = _1316 && (sqrt(fma(_11036, _11036, fma(_11039, _11039, spvFMul(_11042, _11042)))) > _2211); uint _11051; if (_11048) { _11051 = as_type(spvFMul(_11042, _11042)); } else { _11051 = as_type(sqrt(fma(_10654, _10654, fma(_10655, _10655, spvFMul(_10656, _10656))))); } uint _11068; uint _11069; uint _11070; if (_11048) { float _11055 = rsqrt(fma(_11036, _11036, fma(_11039, _11039, as_type(_11051)))); _11068 = as_type(fma(_2211, spvFMul(_11042, _11055), as_type(_11031))); _11069 = as_type(fma(_2211, spvFMul(_11039, _11055), as_type(_11032))); _11070 = as_type(fma(_2211, spvFMul(_11036, _11055), as_type(_11033))); } else { _11068 = _10701; _11069 = _10702; _11070 = _10703; } float _11072 = spvFSub(_10834, as_type(_11070)); float _11074 = spvFSub(_10837, as_type(_11069)); float _11076 = spvFSub(_10840, as_type(_11068)); bool _11082 = _1316 && (sqrt(fma(_11072, _11072, fma(_11074, _11074, spvFMul(_11076, _11076)))) > _2211); uint _11085; if (_11082) { _11085 = as_type(spvFMul(_11076, _11076)); } else { _11085 = as_type(_10825); } uint _11102; uint _11103; uint _11104; if (_11082) { float _11089 = rsqrt(fma(_11072, _11072, fma(_11074, _11074, as_type(_11085)))); _11102 = as_type(fma(_2211, spvFMul(_11076, _11089), as_type(_11068))); _11103 = as_type(fma(_2211, spvFMul(_11074, _11089), as_type(_11069))); _11104 = as_type(fma(_2211, spvFMul(_11072, _11089), as_type(_11070))); } else { _11102 = as_type(_10840); _11103 = as_type(_10837); _11104 = as_type(_10834); } float _11106 = spvFSub(_10855, as_type(_11104)); float _11108 = spvFSub(_10858, as_type(_11103)); float _11110 = spvFSub(_10861, as_type(_11102)); bool _11116 = _1316 && (sqrt(fma(_11106, _11106, fma(_11108, _11108, spvFMul(_11110, _11110)))) > _2211); uint _11119; if (_11116) { _11119 = as_type(spvFMul(_11110, _11110)); } else { _11119 = as_type(_10846); } uint _11136; uint _11137; uint _11138; if (_11116) { float _11123 = rsqrt(fma(_11106, _11106, fma(_11108, _11108, as_type(_11119)))); _11136 = as_type(fma(_2211, spvFMul(_11110, _11123), as_type(_11102))); _11137 = as_type(fma(_2211, spvFMul(_11108, _11123), as_type(_11103))); _11138 = as_type(fma(_2211, spvFMul(_11106, _11123), as_type(_11104))); } else { _11136 = as_type(_10861); _11137 = as_type(_10858); _11138 = as_type(_10855); } float _11141 = spvFSub(as_type(_10740), as_type(_11138)); float _11144 = spvFSub(as_type(_10739), as_type(_11137)); float _11147 = spvFSub(as_type(_10738), as_type(_11136)); bool _11153 = _1316 && (sqrt(fma(_11141, _11141, fma(_11144, _11144, spvFMul(_11147, _11147)))) > _2211); uint _11156; if (_11153) { _11156 = as_type(spvFMul(_11147, _11147)); } else { _11156 = as_type(sqrt(fma(_10648, _10648, fma(_10649, _10649, spvFMul(_10650, _10650))))); } uint _11173; uint _11174; uint _11175; if (_11153) { float _11160 = rsqrt(fma(_11141, _11141, fma(_11144, _11144, as_type(_11156)))); _11173 = as_type(fma(_2211, spvFMul(_11147, _11160), as_type(_11136))); _11174 = as_type(fma(_2211, spvFMul(_11144, _11160), as_type(_11137))); _11175 = as_type(fma(_2211, spvFMul(_11141, _11160), as_type(_11138))); } else { _11173 = _10738; _11174 = _10739; _11175 = _10740; } float _11177 = spvFSub(_10876, as_type(_11175)); float _11179 = spvFSub(_10879, as_type(_11174)); float _11181 = spvFSub(_10882, as_type(_11173)); bool _11187 = _1316 && (sqrt(fma(_11177, _11177, fma(_11179, _11179, spvFMul(_11181, _11181)))) > _2211); uint _11190; if (_11187) { _11190 = as_type(spvFMul(_11181, _11181)); } else { _11190 = as_type(_10867); } uint _11207; uint _11208; uint _11209; if (_11187) { float _11194 = rsqrt(fma(_11177, _11177, fma(_11179, _11179, as_type(_11190)))); _11207 = as_type(fma(_2211, spvFMul(_11181, _11194), as_type(_11173))); _11208 = as_type(fma(_2211, spvFMul(_11179, _11194), as_type(_11174))); _11209 = as_type(fma(_2211, spvFMul(_11177, _11194), as_type(_11175))); } else { _11207 = as_type(_10882); _11208 = as_type(_10879); _11209 = as_type(_10876); } float _11211 = spvFSub(_10897, as_type(_11209)); float _11213 = spvFSub(_10900, as_type(_11208)); float _11215 = spvFSub(_10903, as_type(_11207)); bool _11221 = _1316 && (sqrt(fma(_11211, _11211, fma(_11213, _11213, spvFMul(_11215, _11215)))) > _2211); uint _11224; if (_11221) { _11224 = as_type(spvFMul(_11215, _11215)); } else { _11224 = as_type(_10888); } uint _11241; uint _11242; uint _11243; if (_11221) { float _11228 = rsqrt(fma(_11211, _11211, fma(_11213, _11213, as_type(_11224)))); _11241 = as_type(fma(_2211, spvFMul(_11215, _11228), as_type(_11207))); _11242 = as_type(fma(_2211, spvFMul(_11213, _11228), as_type(_11208))); _11243 = as_type(fma(_2211, spvFMul(_11211, _11228), as_type(_11209))); } else { _11241 = as_type(_10903); _11242 = as_type(_10900); _11243 = as_type(_10897); } float _11246 = spvFSub(as_type(_10777), as_type(_11243)); float _11249 = spvFSub(as_type(_10776), as_type(_11242)); float _11252 = spvFSub(as_type(_10775), as_type(_11241)); bool _11258 = _1316 && (sqrt(fma(_11246, _11246, fma(_11249, _11249, spvFMul(_11252, _11252)))) > _2211); uint _11261; if (_11258) { _11261 = as_type(spvFMul(_11252, _11252)); } else { _11261 = as_type(sqrt(fma(_10642, _10642, fma(_10643, _10643, spvFMul(_10644, _10644))))); } uint _11278; uint _11279; uint _11280; if (_11258) { float _11265 = rsqrt(fma(_11246, _11246, fma(_11249, _11249, as_type(_11261)))); _11278 = as_type(fma(_2211, spvFMul(_11252, _11265), as_type(_11241))); _11279 = as_type(fma(_2211, spvFMul(_11249, _11265), as_type(_11242))); _11280 = as_type(fma(_2211, spvFMul(_11246, _11265), as_type(_11243))); } else { _11278 = _10775; _11279 = _10776; _11280 = _10777; } float _11282 = spvFSub(_10938, as_type(_11280)); float _11284 = spvFSub(_10941, as_type(_11279)); float _11286 = spvFSub(_10944, as_type(_11278)); bool _11292 = _1316 && (sqrt(fma(_11282, _11282, fma(_11284, _11284, spvFMul(_11286, _11286)))) > _2211); uint _11295; if (_11292) { _11295 = as_type(spvFMul(_11286, _11286)); } else { _11295 = as_type(_10932); } uint _11312; uint _11313; uint _11314; if (_11292) { float _11299 = rsqrt(fma(_11282, _11282, fma(_11284, _11284, as_type(_11295)))); _11312 = as_type(fma(_2211, spvFMul(_11286, _11299), as_type(_11278))); _11313 = as_type(fma(_2211, spvFMul(_11284, _11299), as_type(_11279))); _11314 = as_type(fma(_2211, spvFMul(_11282, _11299), as_type(_11280))); } else { _11312 = as_type(_10944); _11313 = as_type(_10941); _11314 = as_type(_10938); } float _11316 = spvFSub(_10955, as_type(_11314)); float _11318 = spvFSub(_10958, as_type(_11313)); float _11320 = spvFSub(_10961, as_type(_11312)); bool _11326 = _1316 && (sqrt(fma(_11316, _11316, fma(_11318, _11318, spvFMul(_11320, _11320)))) > _2211); uint _11329; if (_11326) { _11329 = as_type(spvFMul(_11320, _11320)); } else { _11329 = as_type(_10949); } uint _11346; uint _11347; uint _11348; if (_11326) { float _11333 = rsqrt(fma(_11316, _11316, fma(_11318, _11318, as_type(_11329)))); _11346 = as_type(fma(_2211, spvFMul(_11320, _11333), as_type(_11312))); _11347 = as_type(fma(_2211, spvFMul(_11318, _11333), as_type(_11313))); _11348 = as_type(fma(_2211, spvFMul(_11316, _11333), as_type(_11314))); } else { _11346 = as_type(_10961); _11347 = as_type(_10958); _11348 = as_type(_10955); } float _11375 = spvFSub(as_type(_10490), as_type(_10999)); float _11378 = spvFSub(as_type(_10489), as_type(_10998)); float _11381 = spvFSub(as_type(_10488), as_type(_10997)); float _11388 = spvFSub(as_type(_10999), as_type(_11033)); float _11391 = spvFSub(as_type(_10998), as_type(_11032)); float _11394 = spvFSub(as_type(_10997), as_type(_11031)); float _11402 = spvFSub(as_type(_11033), as_type(_11070)); float _11405 = spvFSub(as_type(_11032), as_type(_11069)); float _11408 = spvFSub(as_type(_11031), as_type(_11068)); float _11416 = spvFSub(as_type(_11070), as_type(_11104)); float _11419 = spvFSub(as_type(_11069), as_type(_11103)); float _11422 = spvFSub(as_type(_11068), as_type(_11102)); float _11430 = spvFSub(as_type(_11104), as_type(_11138)); float _11433 = spvFSub(as_type(_11103), as_type(_11137)); float _11436 = spvFSub(as_type(_11102), as_type(_11136)); float _11444 = spvFSub(as_type(_11138), as_type(_11175)); float _11447 = spvFSub(as_type(_11137), as_type(_11174)); float _11450 = spvFSub(as_type(_11136), as_type(_11173)); float _11458 = spvFSub(as_type(_11175), as_type(_11209)); float _11461 = spvFSub(as_type(_11174), as_type(_11208)); float _11464 = spvFSub(as_type(_11173), as_type(_11207)); float _11472 = spvFSub(as_type(_11209), as_type(_11243)); float _11475 = spvFSub(as_type(_11208), as_type(_11242)); float _11478 = spvFSub(as_type(_11207), as_type(_11241)); float _11486 = spvFSub(as_type(_11243), as_type(_11280)); float _11489 = spvFSub(as_type(_11242), as_type(_11279)); float _11492 = spvFSub(as_type(_11241), as_type(_11278)); float _11500 = spvFSub(as_type(_11280), as_type(_11314)); float _11503 = spvFSub(as_type(_11279), as_type(_11313)); float _11506 = spvFSub(as_type(_11278), as_type(_11312)); float _11511 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(sqrt(fma(_11375, _11375, fma(_11378, _11378, spvFMul(_11381, _11381)))), sqrt(fma(_11388, _11388, fma(_11391, _11391, spvFMul(_11394, _11394))))), sqrt(fma(_11402, _11402, fma(_11405, _11405, spvFMul(_11408, _11408))))), sqrt(fma(_11416, _11416, fma(_11419, _11419, spvFMul(_11422, _11422))))), sqrt(fma(_11430, _11430, fma(_11433, _11433, spvFMul(_11436, _11436))))), sqrt(fma(_11444, _11444, fma(_11447, _11447, spvFMul(_11450, _11450))))), sqrt(fma(_11458, _11458, fma(_11461, _11461, spvFMul(_11464, _11464))))), sqrt(fma(_11472, _11472, fma(_11475, _11475, spvFMul(_11478, _11478))))), sqrt(fma(_11486, _11486, fma(_11489, _11489, spvFMul(_11492, _11492))))), sqrt(fma(_11500, _11500, fma(_11503, _11503, spvFMul(_11506, _11506))))); float _11514 = spvFSub(as_type(_11314), as_type(_11348)); float _11517 = spvFSub(as_type(_11313), as_type(_11347)); float _11520 = spvFSub(as_type(_11312), as_type(_11346)); if (_1316 && (as_type(_1642) > _1770)) { uint _11530 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[9u], 1, memory_order_relaxed); uint4 _11531 = uint4(_10490, _10489, _10488, _10487); uint _11535 = ((0u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11535 + 0u] = _11531.x; ssbo_48.data[_11535 + 1u] = _11531.y; ssbo_48.data[_11535 + 2u] = _11531.z; ssbo_48.data[_11535 + 3u] = _11531.w; uint4 _11548 = uint4(_10999, _10998, _10997, as_type(_10799)); uint _11552 = ((16u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11552 + 0u] = _11548.x; ssbo_48.data[_11552 + 1u] = _11548.y; ssbo_48.data[_11552 + 2u] = _11548.z; ssbo_48.data[_11552 + 3u] = _11548.w; uint4 _11565 = uint4(_11033, _11032, _11031, as_type(fma(as_type(_10487), 0.25925922393798828125, spvFMul(as_type(_10486), 0.74074077606201171875)))); uint _11569 = ((32u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11569 + 0u] = _11565.x; ssbo_48.data[_11569 + 1u] = _11565.y; ssbo_48.data[_11569 + 2u] = _11565.z; ssbo_48.data[_11569 + 3u] = _11565.w; uint4 _11582 = uint4(_11070, _11069, _11068, _10486); uint _11586 = ((48u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11586 + 0u] = _11582.x; ssbo_48.data[_11586 + 1u] = _11582.y; ssbo_48.data[_11586 + 2u] = _11582.z; ssbo_48.data[_11586 + 3u] = _11582.w; uint4 _11599 = uint4(_11104, _11103, _11102, as_type(fma(as_type(_10486), 0.740740716457366943359375, spvFMul(as_type(_10485), 0.259259283542633056640625)))); uint _11603 = ((64u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11603 + 0u] = _11599.x; ssbo_48.data[_11603 + 1u] = _11599.y; ssbo_48.data[_11603 + 2u] = _11599.z; ssbo_48.data[_11603 + 3u] = _11599.w; uint4 _11616 = uint4(_11138, _11137, _11136, as_type(fma(as_type(_10486), 0.25925922393798828125, spvFMul(as_type(_10485), 0.74074077606201171875)))); uint _11620 = ((80u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11620 + 0u] = _11616.x; ssbo_48.data[_11620 + 1u] = _11616.y; ssbo_48.data[_11620 + 2u] = _11616.z; ssbo_48.data[_11620 + 3u] = _11616.w; uint4 _11633 = uint4(_11175, _11174, _11173, _10485); uint _11637 = ((96u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11637 + 0u] = _11633.x; ssbo_48.data[_11637 + 1u] = _11633.y; ssbo_48.data[_11637 + 2u] = _11633.z; ssbo_48.data[_11637 + 3u] = _11633.w; uint4 _11650 = uint4(_11209, _11208, _11207, as_type(fma(as_type(_10485), 0.740740716457366943359375, spvFMul(as_type(_10484), 0.259259283542633056640625)))); uint _11654 = ((112u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11654 + 0u] = _11650.x; ssbo_48.data[_11654 + 1u] = _11650.y; ssbo_48.data[_11654 + 2u] = _11650.z; ssbo_48.data[_11654 + 3u] = _11650.w; uint4 _11667 = uint4(_11243, _11242, _11241, as_type(fma(as_type(_10485), 0.25925922393798828125, spvFMul(as_type(_10484), 0.74074077606201171875)))); uint _11671 = ((128u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11671 + 0u] = _11667.x; ssbo_48.data[_11671 + 1u] = _11667.y; ssbo_48.data[_11671 + 2u] = _11667.z; ssbo_48.data[_11671 + 3u] = _11667.w; uint4 _11684 = uint4(_11280, _11279, _11278, _10484); uint _11688 = ((144u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11688 + 0u] = _11684.x; ssbo_48.data[_11688 + 1u] = _11684.y; ssbo_48.data[_11688 + 2u] = _11684.z; ssbo_48.data[_11688 + 3u] = _11684.w; uint4 _11701 = uint4(_11314, _11313, _11312, as_type(fma(as_type(_10484), 0.740740716457366943359375, spvFMul(_10931, 0.259259283542633056640625)))); uint _11705 = ((160u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11705 + 0u] = _11701.x; ssbo_48.data[_11705 + 1u] = _11701.y; ssbo_48.data[_11705 + 2u] = _11701.z; ssbo_48.data[_11705 + 3u] = _11701.w; uint4 _11718 = uint4(_11348, _11347, _11346, as_type(fma(as_type(_10484), 0.25925922393798828125, spvFMul(_10931, 0.74074077606201171875)))); uint _11722 = ((176u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11722 + 0u] = _11718.x; ssbo_48.data[_11722 + 1u] = _11718.y; ssbo_48.data[_11722 + 2u] = _11718.z; ssbo_48.data[_11722 + 3u] = _11718.w; uint4 _11735 = uint4(as_type(fma(spvFSub(as_type(_10999), as_type(_10490)), -0.001000000047497451305389404296875, as_type(_10490))), as_type(fma(spvFSub(as_type(_10998), as_type(_10489)), -0.001000000047497451305389404296875, as_type(_10489))), as_type(fma(spvFSub(as_type(_10997), as_type(_10488)), -0.001000000047497451305389404296875, as_type(_10488))), as_type(fma(spvFSub(_10799, as_type(_10487)), -0.001000000047497451305389404296875, as_type(_10487)))); uint _11739 = ((192u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11739 + 0u] = _11735.x; ssbo_48.data[_11739 + 1u] = _11735.y; ssbo_48.data[_11739 + 2u] = _11735.z; ssbo_48.data[_11739 + 3u] = _11735.w; uint4 _11753 = uint4(_10480, _10478, _10479, as_type(_6564)); uint _11757 = ((208u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11757 + 0u] = _11753.x; ssbo_48.data[_11757 + 1u] = _11753.y; ssbo_48.data[_11757 + 2u] = _11753.z; ssbo_48.data[_11757 + 3u] = _11753.w; uint4 _11770 = uint4(_1619, _1620, _1621, _10481); uint _11774 = ((224u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11774 + 0u] = _11770.x; ssbo_48.data[_11774 + 1u] = _11770.y; ssbo_48.data[_11774 + 2u] = _11770.z; ssbo_48.data[_11774 + 3u] = _11770.w; uint4 _11788 = uint4(_1640.x, _1642, as_type(_1770), _1640.w); uint _11792 = ((240u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11792 + 0u] = _11788.x; ssbo_48.data[_11792 + 1u] = _11788.y; ssbo_48.data[_11792 + 2u] = _11788.z; ssbo_48.data[_11792 + 3u] = _11788.w; uint4 _11805 = uint4(as_type(half2(float2(fma(as_type(cbuf_52.data[_6841]), spvFSub(as_type(cbuf_52.data[20u + buf2_dword_off]), as_type(_2094)), as_type(_2094)), 0.0))) | (as_type(half2(float2(fma(as_type(cbuf_52.data[_6841]), spvFSub(as_type(cbuf_52.data[21u + buf2_dword_off]), as_type(_2093)), as_type(_2093)), 0.0))) << 16u), as_type(half2(float2(fma(as_type(cbuf_52.data[_6841]), spvFSub(as_type(cbuf_52.data[22u + buf2_dword_off]), as_type(_2092)), as_type(_2092)), 0.0))) | (as_type(half2(float2(fma(as_type(cbuf_52.data[_6841]), spvFSub(as_type(cbuf_52.data[23u + buf2_dword_off]), as_type(_2091)), as_type(_2091)), 0.0))) << 16u), _1657, _1658); uint _11810 = ((256u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11810 + 0u] = _11805.x; ssbo_48.data[_11810 + 1u] = _11805.y; ssbo_48.data[_11810 + 2u] = _11805.z; ssbo_48.data[_11810 + 3u] = _11805.w; uint4 _11823 = uint4(_1677, _1678, as_type(half2(float2(_6556, 0.0))) | (as_type(half2(float2(_6558, 0.0))) << 16u), as_type(half2(float2(_6560, 0.0))) | (4294901760u & _1680)); uint _11827 = ((272u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11827 + 0u] = _11823.x; ssbo_48.data[_11827 + 1u] = _11823.y; ssbo_48.data[_11827 + 2u] = _11823.z; ssbo_48.data[_11827 + 3u] = _11823.w; uint4 _11842 = uint4(_1693, _1692.y, as_type(_2211), as_type(spvFMul(as_type(_1692.y), as_type(_2101)))); uint _11846 = ((288u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11846 + 0u] = _11842.x; ssbo_48.data[_11846 + 1u] = _11842.y; ssbo_48.data[_11846 + 2u] = _11842.z; ssbo_48.data[_11846 + 3u] = _11842.w; uint4 _11860 = uint4(as_type(spvFAdd(_11511, sqrt(fma(_11514, _11514, fma(_11517, _11517, spvFMul(_11520, _11520)))))), uint3(cbuf_44.data[_1699 + 0u], cbuf_44.data[_1699 + 1u], cbuf_44.data[_1699 + 2u])); uint _11865 = ((304u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11865 + 0u] = _11860.x; ssbo_48.data[_11865 + 1u] = _11860.y; ssbo_48.data[_11865 + 2u] = _11860.z; ssbo_48.data[_11865 + 3u] = _11860.w; uint4 _11878 = uint4(_10477, _10483, _10482, _1730.w); uint _11882 = ((320u + (_11530 * 336u)) + buf4_off) >> 2u; ssbo_48.data[_11882 + 0u] = _11878.x; ssbo_48.data[_11882 + 1u] = _11878.y; ssbo_48.data[_11882 + 2u] = _11878.z; ssbo_48.data[_11882 + 3u] = _11878.w; } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbhd.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbhd.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbdt.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbdt.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0000.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0001.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0001.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0001.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0001.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0002.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0002.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0002.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0002.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0003.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0003.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_0003.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_0003.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/gi_env_m21.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/gi_env_m21.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/gi_env_m21.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/gi_env_m21.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m21.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m21.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m21.emeld.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m21.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m21.emevd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m21.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_9999.tpf.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/m21/m21_9999.tpf.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_cgrading.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_cgrading.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21/m21_envmap.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21/m21_envmap.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0000.tpfbhd.patch [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0000.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0001.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0002.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0003.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/gi_env_m21.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m21.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m21.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m21.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_cgrading.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_envmap.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_m21.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_m21.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_m21.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_m21.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_m21.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_m21.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_sm21.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_sm21.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_sm21.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_sm21.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_xm21.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm21.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_xm21.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm21.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_m21.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_m21.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_m21.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_sm21.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_sm21.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_xm21.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_xm21.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/drawparam/m21_00_0000.gparambnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/drawparam/m21_00_0000.gparambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/mapstudio/m21_00_00_00.msb.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/mapstudio/m21_00_00_00.msb.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btab.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btab.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btl.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btl.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btpb.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btpb.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00.nva.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00.nva.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00.nvmhktbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00.nvmhktbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/breakobj/m21_00_00_00.breakobj.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/breakobj/m21_00_00_00.breakobj.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/script/talk/m21_00_00_00.talkesdbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/script/talk/m21_00_00_00.talkesdbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/script/m21_00_00_00.luabnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/script/m21_00_00_00.luabnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m21_00.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m21_00.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/onav/m21_00_00_00.onav.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/onav/m21_00_00_00.onav.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbhd.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbhd.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbdt.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbdt.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/l21_00_00_00.hkxbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/l21_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/l21_00_00_00.hkxbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/l21_00_00_00.hkxbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m21_00_00_00.emeld.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m21_00_00_00.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m21_00_00_00.emevd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m21_00_00_00.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/drawparam/m21_00_0000.gparambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btab.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btl.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/mapstudio/m21_00_00_00.msb.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00.nva.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbhd.patch [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/l21_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00.nvmhktbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/breakobj/m21_00_00_00.breakobj.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/script/talk/m21_00_00_00.talkesdbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/script/m21_00_00_00.luabnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m21_00.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/onav/m21_00_00_00.onav.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m21_00_00_00.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m21_00_00_00.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_0000.btpb.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 34 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 35 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 36 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 37 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 38 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 39 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_f_2200.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_f_2200.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_f_4000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_f_4000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_f_4000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hr_a_0109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hr_a_0109.partsbnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x7cc2c044 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_2500.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_2500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_0800.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_0800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1800.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1030.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1030.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_2001.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_2001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_7002.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_7002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_3000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_3000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_5000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_5000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_6000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_6000.partsbnd.dcx [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint _76 = 0u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[_76]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = as_type(cbuf_8.data[_76]); out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[36]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _101 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _102 = _101.x; float4 _107 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _115 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _117 = _115.y; float4 _122 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _123 = _122.x; float _124 = _122.y; float _125 = _122.z; float _196 = fma(2.0, _107.z, -1.0); float _214 = fma(2.0, _107.y, -1.0); float _235 = fma(2.0, _107.x, -1.0); float _243 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _102, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _245 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _102, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _274 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _102, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _275 = spvFMul(_243, _245); float _276 = rsqrt(fma(_235, _235, fma(_214, _214, spvFMul(_196, _196)))); float _278 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _102, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _279 = spvFMul(_274, _245); float _281 = spvFMul(_196, _276); float _282 = spvFMul(_278, _245); float _284 = spvFMul(_214, _276); float _288 = spvFMul(_235, _276); float _293 = rsqrt(fma(_282, _282, fma(_279, _279, spvFMul(_275, _275)))); uint _294 = 4u + buf1_dword_off; uint _297 = 5u + buf1_dword_off; uint _300 = 6u + buf1_dword_off; uint _303 = 7u + buf1_dword_off; float _311 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _288, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _284, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _281))); float _312 = spvFMul(_275, _293); float _315 = fma(-_243, _245, as_type(cbuf_56.data[2u + buf1_dword_off])); float _319 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _288, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _284, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _281))); float _320 = spvFMul(_279, _293); float _325 = fma(-_274, _245, as_type(cbuf_56.data[1u + buf1_dword_off])); float _328 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _288, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _284, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _281))); float _329 = spvFMul(_282, _293); float _334 = fma(-_278, _245, as_type(cbuf_56.data[0u + buf1_dword_off])); float _339 = spvFMul(fma(_328, _329, fma(_319, _320, spvFMul(_311, _312))), 2.0); float _341 = exp2(spvFMul(13.0, _115.x)); float _343 = rsqrt(fma(_334, _334, fma(_325, _325, spvFMul(_315, _315)))); float _347 = spvFMul(_315, _343); float _357 = spvFMul(_325, _343); float _367 = spvFMul(_334, _343); float _374 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_303]), _341), 1.0 / fma(_341, 0.01000213623046875, as_type(cbuf_56.data[_303])))); float _389 = spvFMul(10.0, _117); float _391 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_329, _328, fma(-_320, _319, spvFMul(_311, -_312)))))); float _393 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_334, _334, fma(_325, _325, spvFMul(_315, _315)))), 0.0, 1.0))); float _394 = exp2(spvFMul(spvFMul(0.25, _374), log2(fast::clamp(fma(fma(_282, _293, -spvFMul(_328, _339)), _367, fma(fma(_279, _293, -spvFMul(_319, _339)), _357, spvFMul(fma(_275, _293, -spvFMul(_311, _339)), _347))), 0.0, 1.0)))); float4 _402 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _403 = _402.x; float _404 = spvFMul(_123, _123); float _405 = spvFMul(_124, _124); float _406 = spvFMul(_125, _125); bool _407 = 0.0 == _389; float _411 = fma(_328, _367, fma(_319, _357, spvFMul(_311, _347))); float _412 = spvFMul(_393, _393); float _413 = spvFMul(_394, fma(0.125, _374, 0.25)); uint _417; if (_407) { _417 = as_type(fast::clamp(fast::max(_411, _411), 0.0, 1.0)); } else { _417 = as_type(spvFMul(_391, _391)); } uint _430; uint _431; uint _432; uint _433; if (_407) { float _419 = spvFMul(_412, as_type(_417)); _430 = as_type(spvFMul(as_type(cbuf_56.data[_294]), _419)); _431 = as_type(spvFMul(as_type(cbuf_56.data[_300]), _419)); _432 = as_type(spvFMul(as_type(cbuf_56.data[_297]), _419)); _433 = as_type(_419); } else { _430 = as_type(_347); _431 = as_type(_320); _432 = as_type(_329); _433 = _417; } uint _437; if (!_407) { _437 = as_type(fma(_117, 10.0, _411)); } else { _437 = as_type(_394); } uint _478; uint _479; uint _480; if (!_407) { float _468 = fma(_412, spvFMul(fast::max(0.0, as_type(_437)), 1.0 / fma(2.0, _389, 1.0)), spvFMul(_389, spvFMul(_412, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_367, as_type(_432), fma(_357, as_type(_431), spvFMul(_312, as_type(_430)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), as_type(_433)))))); _478 = as_type(spvFMul(as_type(cbuf_56.data[_300]), _468)); _479 = as_type(spvFMul(as_type(cbuf_56.data[_297]), _468)); _480 = as_type(spvFMul(as_type(cbuf_56.data[_294]), _468)); } else { _478 = _431; _479 = _432; _480 = _430; } if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_404, spvFMul(_403, spvFMul(_412, spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _413)))); out.frag_color1.y = spvFMul(_405, spvFMul(_403, spvFMul(_412, spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _413)))); out.frag_color1.z = spvFMul(_406, spvFMul(_403, spvFMul(_412, spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _413)))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_403, spvFSub(as_type(_480), spvFMul(spvFMul(_404, as_type(_480)), 0.5))); out.frag_color0.y = spvFMul(_403, spvFSub(as_type(_479), spvFMul(spvFMul(_405, as_type(_479)), 0.5))); out.frag_color0.z = spvFMul(_403, spvFSub(as_type(_478), spvFMul(spvFMul(_406, as_type(_478)), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x186d69d5 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[72]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _109 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _110 = _109.x; float4 _115 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _123 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _125 = _123.y; float4 _130 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _131 = _130.x; float _132 = _130.y; float _133 = _130.z; float _204 = fma(2.0, _115.z, -1.0); float _222 = fma(2.0, _115.y, -1.0); float _243 = fma(2.0, _115.x, -1.0); float _251 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _110, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _253 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _110, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _282 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _110, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _283 = spvFMul(_251, _253); float _284 = rsqrt(fma(_243, _243, fma(_222, _222, spvFMul(_204, _204)))); float _286 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _110, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _287 = spvFMul(_282, _253); float _289 = spvFMul(_204, _284); float _290 = spvFMul(_286, _253); float _292 = spvFMul(_222, _284); float _296 = spvFMul(_243, _284); float _301 = rsqrt(fma(_290, _290, fma(_287, _287, spvFMul(_283, _283)))); uint _302 = 4u + buf1_dword_off; uint _305 = 5u + buf1_dword_off; uint _308 = 6u + buf1_dword_off; uint _311 = 7u + buf1_dword_off; float _319 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _296, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _292, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _289))); float _320 = spvFMul(_283, _301); float _323 = fma(-_251, _253, as_type(cbuf_56.data[2u + buf1_dword_off])); float _327 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _296, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _292, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _289))); float _328 = spvFMul(_287, _301); float _333 = fma(-_282, _253, as_type(cbuf_56.data[1u + buf1_dword_off])); float _336 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _296, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _292, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _289))); float _337 = spvFMul(_290, _301); float _342 = fma(-_286, _253, as_type(cbuf_56.data[0u + buf1_dword_off])); float _347 = spvFMul(fma(_336, _337, fma(_327, _328, spvFMul(_319, _320))), 2.0); float _349 = exp2(spvFMul(13.0, _123.x)); float _351 = rsqrt(fma(_342, _342, fma(_333, _333, spvFMul(_323, _323)))); float _354 = fma(_283, _301, -spvFMul(_319, _347)); float _355 = spvFMul(_323, _351); float _362 = fma(_287, _301, -spvFMul(_327, _347)); float _365 = spvFMul(_333, _351); float _372 = fma(_290, _301, -spvFMul(_336, _347)); float _375 = spvFMul(_342, _351); float _383 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_311]), _349), 1.0 / fma(_349, 0.01000213623046875, as_type(cbuf_56.data[_311])))); float _385 = fast::clamp(fma(_372, _375, fma(_362, _365, spvFMul(_354, _355))), 0.0, 1.0); float _399 = spvFMul(10.0, _125); float _401 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_337, _336, fma(-_328, _327, spvFMul(_319, -_320)))))); float _403 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_342, _342, fma(_333, _333, spvFMul(_323, _323)))), 0.0, 1.0))); float _404 = exp2(spvFMul(spvFMul(0.25, _383), log2(_385))); float4 _412 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _413 = _412.x; float _414 = spvFMul(_131, _131); float _415 = spvFMul(_132, _132); float _416 = spvFMul(_133, _133); bool _417 = _399 == 0.0; float _418 = fma(2.0, _399, 1.0); float _419 = spvFMul(_401, _401); float _421 = fma(_336, _375, fma(_327, _365, spvFMul(_319, _355))); float _422 = spvFMul(_403, _403); float _423 = spvFMul(_404, fma(0.125, _383, 0.25)); uint _427; if (_417) { _427 = as_type(fast::clamp(fast::max(_421, _421), 0.0, 1.0)); } else { _427 = as_type(_355); } uint _440; uint _441; uint _442; uint _443; if (_417) { float _429 = spvFMul(_422, as_type(_427)); _440 = as_type(spvFMul(as_type(cbuf_56.data[_302]), _429)); _441 = as_type(spvFMul(as_type(cbuf_56.data[_308]), _429)); _442 = as_type(spvFMul(as_type(cbuf_56.data[_305]), _429)); _443 = as_type(_429); } else { _440 = as_type(_385); _441 = as_type(_404); _442 = as_type(_375); _443 = _427; } uint _447; if (!_417) { _447 = as_type(fma(_125, 10.0, _421)); } else { _447 = _441; } uint _486; uint _487; uint _488; if (!_417) { float _476 = fma(_422, spvFMul(fast::max(0.0, as_type(_447)), 1.0 / _418), spvFMul(_399, spvFMul(_422, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_442), _337, fma(_365, _328, spvFMul(_320, as_type(_443)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _419))))); _486 = as_type(spvFMul(as_type(cbuf_56.data[_302]), _476)); _487 = as_type(spvFMul(as_type(cbuf_56.data[_308]), _476)); _488 = as_type(spvFMul(as_type(cbuf_56.data[_305]), _476)); } else { _486 = _440; _487 = _447; _488 = _442; } uint _511 = 20u + buf1_dword_off; uint _514 = 21u + buf1_dword_off; uint _517 = 22u + buf1_dword_off; uint _521 = 23u + buf1_dword_off; float _532 = fma(-_286, _253, as_type(cbuf_56.data[16u + buf1_dword_off])); float _535 = fma(-_282, _253, as_type(cbuf_56.data[17u + buf1_dword_off])); float _538 = fma(-_251, _253, as_type(cbuf_56.data[18u + buf1_dword_off])); float _542 = rsqrt(fma(_532, _532, fma(_535, _535, spvFMul(_538, _538)))); float _543 = spvFMul(_532, _542); float _544 = spvFMul(_535, _542); float _545 = spvFMul(_538, _542); float _548 = fma(_336, _543, fma(_327, _544, spvFMul(_319, _545))); float _556 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_532, _532, fma(_535, _535, spvFMul(_538, _538)))), 0.0, 1.0))); float _557 = spvFMul(_556, _556); float _564 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_521]), _349), 1.0 / fma(_349, 0.01000213623046875, as_type(cbuf_56.data[_521])))); float _572 = exp2(spvFMul(spvFMul(0.25, _564), log2(fast::clamp(fma(_372, _543, fma(_362, _544, spvFMul(_354, _545))), 0.0, 1.0)))); float _575 = spvFMul(_572, fma(0.125, _564, 0.25)); uint _579; if (_417) { _579 = as_type(fast::clamp(fast::max(_548, _548), 0.0, 1.0)); } else { _579 = as_type(_419); } uint _592; uint _593; uint _594; uint _595; if (_417) { float _581 = spvFMul(_557, as_type(_579)); _592 = as_type(spvFMul(as_type(cbuf_56.data[_511]), _581)); _593 = as_type(spvFMul(as_type(cbuf_56.data[_517]), _581)); _594 = as_type(spvFMul(as_type(cbuf_56.data[_514]), _581)); _595 = as_type(_581); } else { _592 = as_type(_572); _593 = as_type(_328); _594 = as_type(_337); _595 = _579; } uint _599; if (!_417) { _599 = as_type(fma(_125, 10.0, _548)); } else { _599 = _592; } uint _640; uint _641; uint _642; if (!_417) { float _630 = fma(_557, spvFMul(fast::max(0.0, as_type(_599)), 1.0 / _418), spvFMul(_399, spvFMul(_557, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_543, as_type(_594), fma(_544, as_type(_593), spvFMul(_320, _545))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), as_type(_595)))))); _640 = as_type(spvFMul(as_type(cbuf_56.data[_517]), _630)); _641 = as_type(spvFMul(as_type(cbuf_56.data[_514]), _630)); _642 = as_type(spvFMul(as_type(cbuf_56.data[_511]), _630)); } else { _640 = _593; _641 = _594; _642 = _599; } float _654 = spvFAdd(as_type(_486), as_type(_642)); float _657 = spvFAdd(as_type(_488), as_type(_641)); float _660 = spvFAdd(as_type(_487), as_type(_640)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_414, spvFMul(_413, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _423), _422, spvFMul(_557, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _575))))); out.frag_color1.y = spvFMul(_415, spvFMul(_413, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _423), _422, spvFMul(_557, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _575))))); out.frag_color1.z = spvFMul(_416, spvFMul(_413, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _423), _422, spvFMul(_557, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _575))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_413, spvFSub(_654, spvFMul(spvFMul(_414, _654), 0.5))); out.frag_color0.y = spvFMul(_413, spvFSub(_657, spvFMul(spvFMul(_415, _657), 0.5))); out.frag_color0.z = spvFMul(_413, spvFSub(_660, spvFMul(spvFMul(_416, _660), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xd22cbfd1 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[108]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _117 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _118 = _117.x; float4 _123 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _131 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _133 = _131.y; float4 _138 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _139 = _138.x; float _140 = _138.y; float _141 = _138.z; float _212 = fma(2.0, _123.z, -1.0); float _230 = fma(2.0, _123.y, -1.0); float _251 = fma(2.0, _123.x, -1.0); float _259 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _118, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _261 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _118, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _290 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _118, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _291 = spvFMul(_259, _261); float _292 = rsqrt(fma(_251, _251, fma(_230, _230, spvFMul(_212, _212)))); float _294 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _118, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _295 = spvFMul(_290, _261); float _297 = spvFMul(_212, _292); float _298 = spvFMul(_294, _261); float _300 = spvFMul(_230, _292); float _304 = spvFMul(_251, _292); float _309 = rsqrt(fma(_298, _298, fma(_295, _295, spvFMul(_291, _291)))); uint _310 = 4u + buf1_dword_off; uint _313 = 5u + buf1_dword_off; uint _316 = 6u + buf1_dword_off; uint _319 = 7u + buf1_dword_off; float _327 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _304, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _300, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _297))); float _328 = spvFMul(_291, _309); float _331 = fma(-_259, _261, as_type(cbuf_56.data[2u + buf1_dword_off])); float _335 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _304, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _300, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _297))); float _336 = spvFMul(_295, _309); float _341 = fma(-_290, _261, as_type(cbuf_56.data[1u + buf1_dword_off])); float _344 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _304, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _300, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _297))); float _345 = spvFMul(_298, _309); float _350 = fma(-_294, _261, as_type(cbuf_56.data[0u + buf1_dword_off])); float _355 = spvFMul(fma(_344, _345, fma(_335, _336, spvFMul(_327, _328))), 2.0); float _357 = exp2(spvFMul(13.0, _131.x)); float _359 = rsqrt(fma(_350, _350, fma(_341, _341, spvFMul(_331, _331)))); float _362 = fma(_291, _309, -spvFMul(_327, _355)); float _363 = spvFMul(_331, _359); float _370 = fma(_295, _309, -spvFMul(_335, _355)); float _373 = spvFMul(_341, _359); float _380 = fma(_298, _309, -spvFMul(_344, _355)); float _383 = spvFMul(_350, _359); float _391 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_319]), _357), 1.0 / fma(_357, 0.01000213623046875, as_type(cbuf_56.data[_319])))); float _406 = spvFMul(10.0, _133); float _408 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_345, _344, fma(-_336, _335, spvFMul(_327, -_328)))))); float _410 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_350, _350, fma(_341, _341, spvFMul(_331, _331)))), 0.0, 1.0))); float _411 = exp2(spvFMul(spvFMul(0.25, _391), log2(fast::clamp(fma(_380, _383, fma(_370, _373, spvFMul(_362, _363))), 0.0, 1.0)))); float4 _419 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _420 = _419.x; float _421 = spvFMul(_139, _139); float _422 = spvFMul(_140, _140); float _423 = spvFMul(_141, _141); bool _424 = _406 == 0.0; float _425 = fma(2.0, _406, 1.0); float _426 = spvFMul(_408, _408); float _428 = fma(_344, _383, fma(_335, _373, spvFMul(_327, _363))); float _429 = spvFMul(_410, _410); float _430 = spvFMul(_411, fma(0.125, _391, 0.25)); uint _434; if (_424) { _434 = as_type(fast::clamp(fast::max(_428, _428), 0.0, 1.0)); } else { _434 = as_type(_363); } uint _446; uint _447; uint _448; if (_424) { float _436 = spvFMul(_429, as_type(_434)); _446 = as_type(spvFMul(as_type(cbuf_56.data[_316]), _436)); _447 = as_type(spvFMul(as_type(cbuf_56.data[_313]), _436)); _448 = as_type(spvFMul(as_type(cbuf_56.data[_310]), _436)); } else { _446 = as_type(_411); _447 = as_type(_383); _448 = _434; } uint _452; if (!_424) { _452 = as_type(fma(_133, 10.0, _428)); } else { _452 = _446; } uint _491; uint _492; uint _493; if (!_424) { float _481 = fma(_429, spvFMul(fast::max(0.0, as_type(_452)), 1.0 / _425), spvFMul(_406, spvFMul(_429, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_447), _345, fma(_373, _336, spvFMul(_328, as_type(_448)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _426))))); _491 = as_type(spvFMul(as_type(cbuf_56.data[_316]), _481)); _492 = as_type(spvFMul(as_type(cbuf_56.data[_313]), _481)); _493 = as_type(spvFMul(as_type(cbuf_56.data[_310]), _481)); } else { _491 = _452; _492 = _447; _493 = _448; } uint _516 = 20u + buf1_dword_off; uint _519 = 21u + buf1_dword_off; uint _522 = 22u + buf1_dword_off; uint _526 = 23u + buf1_dword_off; float _537 = fma(-_294, _261, as_type(cbuf_56.data[16u + buf1_dword_off])); float _540 = fma(-_290, _261, as_type(cbuf_56.data[17u + buf1_dword_off])); float _543 = fma(-_259, _261, as_type(cbuf_56.data[18u + buf1_dword_off])); float _547 = rsqrt(fma(_537, _537, fma(_540, _540, spvFMul(_543, _543)))); float _548 = spvFMul(_537, _547); float _550 = spvFMul(_540, _547); float _552 = spvFMul(_543, _547); float _555 = fma(_344, _548, fma(_335, _550, spvFMul(_327, _552))); float _564 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_537, _537, fma(_540, _540, spvFMul(_543, _543)))), 0.0, 1.0))); float _565 = spvFMul(_564, _564); float _572 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_526]), _357), 1.0 / fma(_357, 0.01000213623046875, as_type(cbuf_56.data[_526])))); float _580 = exp2(spvFMul(spvFMul(0.25, _572), log2(fast::clamp(fma(_380, _548, fma(_370, _550, spvFMul(_362, _552))), 0.0, 1.0)))); float _583 = spvFMul(_580, fma(0.125, _572, 0.25)); uint _587; if (_424) { _587 = as_type(fast::clamp(fast::max(_555, _555), 0.0, 1.0)); } else { _587 = as_type(_580); } uint _600; uint _601; uint _602; uint _603; if (_424) { float _589 = spvFMul(_565, as_type(_587)); _600 = as_type(spvFMul(as_type(cbuf_56.data[_516]), _589)); _601 = as_type(spvFMul(as_type(cbuf_56.data[_522]), _589)); _602 = as_type(_589); _603 = as_type(spvFMul(as_type(cbuf_56.data[_519]), _589)); } else { _600 = as_type(_550); _601 = as_type(_548); _602 = _587; _603 = as_type(_555); } uint _608; if (!_424) { _608 = as_type(fma(_133, 10.0, as_type(_603))); } else { _608 = _602; } uint _648; uint _649; uint _650; if (!_424) { float _638 = fma(_565, spvFMul(fast::max(0.0, as_type(_608)), 1.0 / _425), spvFMul(_406, spvFMul(_565, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_601), _345, fma(as_type(_600), _336, spvFMul(_328, _552))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _426))))); _648 = as_type(spvFMul(as_type(cbuf_56.data[_522]), _638)); _649 = as_type(spvFMul(as_type(cbuf_56.data[_519]), _638)); _650 = as_type(spvFMul(as_type(cbuf_56.data[_516]), _638)); } else { _648 = _601; _649 = _603; _650 = _600; } uint _668 = 36u + buf1_dword_off; uint _672 = 37u + buf1_dword_off; uint _676 = 38u + buf1_dword_off; uint _680 = 39u + buf1_dword_off; float _694 = fma(-_259, _261, as_type(cbuf_56.data[34u + buf1_dword_off])); float _697 = fma(-_290, _261, as_type(cbuf_56.data[33u + buf1_dword_off])); float _701 = fma(-_294, _261, as_type(cbuf_56.data[32u + buf1_dword_off])); float _704 = rsqrt(fma(_701, _701, fma(_697, _697, spvFMul(_694, _694)))); float _714 = spvFMul(_694, _704); float _717 = spvFMul(_697, _704); float _723 = spvFMul(_701, _704); float _728 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_680]), _357), 1.0 / fma(_357, 0.01000213623046875, as_type(cbuf_56.data[_680])))); float _749 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_701, _701, fma(_697, _697, spvFMul(_694, _694)))), 0.0, 1.0))); float _756 = fma(_344, _723, fma(_335, _717, spvFMul(_327, _714))); float _757 = spvFMul(_749, _749); float _758 = spvFMul(exp2(spvFMul(spvFMul(0.25, _728), log2(fast::clamp(fma(_380, _723, fma(_370, _717, spvFMul(_362, _714))), 0.0, 1.0)))), fma(0.125, _728, 0.25)); uint _762; if (_424) { _762 = as_type(fast::clamp(fast::max(_756, _756), 0.0, 1.0)); } else { _762 = as_type(_426); } uint _775; uin[Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 2 t _776; uint _777; uint _778; if (_424) { float _764 = spvFMul(_757, as_type(_762)); _775 = as_type(spvFMul(as_type(cbuf_56.data[_668]), _764)); _776 = as_type(spvFMul(as_type(cbuf_56.data[_676]), _764)); _777 = as_type(spvFMul(as_type(cbuf_56.data[_672]), _764)); _778 = as_type(_764); } else { _775 = as_type(_749); _776 = as_type(_336); _777 = as_type(_345); _778 = _762; } uint _782; if (!_424) { _782 = as_type(fma(_133, 10.0, _756)); } else { _782 = _775; } uint _823; uint _824; uint _825; if (!_424) { float _813 = fma(_757, spvFMul(fast::max(0.0, as_type(_782)), 1.0 / _425), spvFMul(_406, spvFMul(_757, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_723, as_type(_777), fma(_717, as_type(_776), spvFMul(_328, _714))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), as_type(_778)))))); _823 = as_type(spvFMul(as_type(cbuf_56.data[_676]), _813)); _824 = as_type(spvFMul(as_type(cbuf_56.data[_672]), _813)); _825 = as_type(spvFMul(as_type(cbuf_56.data[_668]), _813)); } else { _823 = _776; _824 = _777; _825 = _782; } float _839 = spvFAdd(spvFAdd(as_type(_493), as_type(_650)), as_type(_825)); float _841 = spvFAdd(spvFAdd(as_type(_492), as_type(_649)), as_type(_824)); float _843 = spvFAdd(spvFAdd(as_type(_491), as_type(_648)), as_type(_823)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_421, spvFMul(_420, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _758), _757, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _430), _429, spvFMul(_565, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _583)))))); out.frag_color1.y = spvFMul(_422, spvFMul(_420, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _758), _757, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _430), _429, spvFMul(_565, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _583)))))); out.frag_color1.z = spvFMul(_423, spvFMul(_420, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _758), _757, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _430), _429, spvFMul(_565, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _583)))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_420, spvFSub(_839, spvFMul(spvFMul(_421, _839), 0.5))); out.frag_color0.y = spvFMul(_420, spvFSub(_841, spvFMul(spvFMul(_422, _841), 0.5))); out.frag_color0.z = spvFMul(_420, spvFSub(_843, spvFMul(spvFMul(_423, _843), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 3 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 4 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 5 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 6 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 7 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x71c96598 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0x8453cd1c [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7f03e945 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling ls shader 0x4cd21a0f [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; }; kernel void main0(main0_in in [[stage_in]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(18)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr0.x; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr0.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr0.z; ((device float*)&out.out_attrs[0u])[3u] = 1.0; ((device float*)&out.out_attrs[1u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[1u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[1u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[1u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[2u])[0u] = in.vs_in_attr2.x; ((device float*)&out.out_attrs[2u])[1u] = in.vs_in_attr2.y; ((device float*)&out.out_attrs[2u])[2u] = in.vs_in_attr2.z; ((device float*)&out.out_attrs[2u])[3u] = in.vs_in_attr2.w; ((device float*)&out.out_attrs[3u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[3u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[3u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[3u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr6.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr6.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr6.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr6.w; ((device float*)&out.out_attrs[5u])[0u] = in.vs_in_attr7.x; ((device float*)&out.out_attrs[5u])[1u] = in.vs_in_attr7.y; ((device float*)&out.out_attrs[5u])[2u] = in.vs_in_attr7.z; ((device float*)&out.out_attrs[5u])[3u] = in.vs_in_attr7.w; ((device float*)&out.out_attrs[6u])[0u] = in.vs_in_attr3.x; ((device float*)&out.out_attrs[6u])[1u] = in.vs_in_attr3.y; ((device float*)&out.out_attrs[6u])[2u] = in.vs_in_attr3.z; ((device float*)&out.out_attrs[7u])[0u] = in.vs_in_attr4.x; ((device float*)&out.out_attrs[7u])[1u] = in.vs_in_attr4.y; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; }; kernel void main0(main0_in in [[stage_in]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(18)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr0.x; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr0.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr0.z; ((device float*)&out.out_attrs[0u])[3u] = 1.0; ((device float*)&out.out_attrs[1u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[1u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[1u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[1u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[2u])[0u] = in.vs_in_attr2.x; ((device float*)&out.out_attrs[2u])[1u] = in.vs_in_attr2.y; ((device float*)&out.out_attrs[2u])[2u] = in.vs_in_attr2.z; ((device float*)&out.out_attrs[2u])[3u] = in.vs_in_attr2.w; ((device float*)&out.out_attrs[3u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[3u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[3u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[3u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr6.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr6.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr6.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr6.w; ((device float*)&out.out_attrs[5u])[0u] = in.vs_in_attr7.x; ((device float*)&out.out_attrs[5u])[1u] = in.vs_in_attr7.y; ((device float*)&out.out_attrs[5u])[2u] = in.vs_in_attr7.z; ((device float*)&out.out_attrs[5u])[3u] = in.vs_in_attr7.w; ((device float*)&out.out_attrs[6u])[0u] = in.vs_in_attr3.x; ((device float*)&out.out_attrs[6u])[1u] = in.vs_in_attr3.y; ((device float*)&out.out_attrs[6u])[2u] = in.vs_in_attr3.z; ((device float*)&out.out_attrs[7u])[0u] = in.vs_in_attr4.x; ((device float*)&out.out_attrs[7u])[1u] = in.vs_in_attr4.y; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; }; kernel void main0(main0_in in [[stage_in]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(18)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr0.x; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr0.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr0.z; ((device float*)&out.out_attrs[0u])[3u] = 1.0; ((device float*)&out.out_attrs[1u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[1u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[1u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[1u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[2u])[0u] = in.vs_in_attr2.x; ((device float*)&out.out_attrs[2u])[1u] = in.vs_in_attr2.y; ((device float*)&out.out_attrs[2u])[2u] = in.vs_in_attr2.z; ((device float*)&out.out_attrs[2u])[3u] = in.vs_in_attr2.w; ((device float*)&out.out_attrs[3u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[3u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[3u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[3u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr6.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr6.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr6.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr6.w; ((device float*)&out.out_attrs[5u])[0u] = in.vs_in_attr7.x; ((device float*)&out.out_attrs[5u])[1u] = in.vs_in_attr7.y; ((device float*)&out.out_attrs[5u])[2u] = in.vs_in_attr7.z; ((device float*)&out.out_attrs[5u])[3u] = in.vs_in_attr7.w; ((device float*)&out.out_attrs[6u])[0u] = in.vs_in_attr3.x; ((device float*)&out.out_attrs[6u])[1u] = in.vs_in_attr3.y; ((device float*)&out.out_attrs[6u])[2u] = in.vs_in_attr3.z; ((device float*)&out.out_attrs[7u])[0u] = in.vs_in_attr4.x; ((device float*)&out.out_attrs[7u])[1u] = in.vs_in_attr4.y; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_patchOut { float4 patch_out0; float4 patch_out1; float4 patch_out2; float4 patch_out3; float4 patch_out4; float4 patch_out5; }; struct main0_in { spvUnsafeArray in_attrs; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device main0_patchOut* spvPatchOut [[buffer(24)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 1]; device main0_patchOut& patchOut = spvPatchOut[gl_GlobalInvocationID.x / 1]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 1; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1); gl_out[gl_InvocationID].out_attrs[0u].x = gl_in[gl_InvocationID].in_attrs[0u].x; gl_out[gl_InvocationID].out_attrs[0u].y = gl_in[gl_InvocationID].in_attrs[0u].y; gl_out[gl_InvocationID].out_attrs[0u].z = gl_in[gl_InvocationID].in_attrs[0u].z; gl_out[gl_InvocationID].out_attrs[0u].w = gl_in[gl_InvocationID].in_attrs[0u].w; gl_out[gl_InvocationID].out_attrs[1u].x = gl_in[gl_InvocationID].in_attrs[1u].x; gl_out[gl_InvocationID].out_attrs[1u].y = gl_in[gl_InvocationID].in_attrs[1u].y; gl_out[gl_InvocationID].out_attrs[1u].z = gl_in[gl_InvocationID].in_attrs[1u].z; gl_out[gl_InvocationID].out_attrs[1u].w = gl_in[gl_InvocationID].in_attrs[1u].w; gl_out[gl_InvocationID].out_attrs[2u].x = gl_in[gl_InvocationID].in_attrs[2u].x; gl_out[gl_InvocationID].out_attrs[2u].y = gl_in[gl_InvocationID].in_attrs[2u].y; gl_out[gl_InvocationID].out_attrs[2u].z = gl_in[gl_InvocationID].in_attrs[2u].z; gl_out[gl_InvocationID].out_attrs[2u].w = gl_in[gl_InvocationID].in_attrs[2u].w; gl_out[gl_InvocationID].out_attrs[3u].x = gl_in[gl_InvocationID].in_attrs[3u].x; gl_out[gl_InvocationID].out_attrs[3u].y = gl_in[gl_InvocationID].in_attrs[3u].y; gl_out[gl_InvocationID].out_attrs[3u].z = gl_in[gl_InvocationID].in_attrs[3u].z; gl_out[gl_InvocationID].out_attrs[3u].w = gl_in[gl_InvocationID].in_attrs[3u].w; gl_out[gl_InvocationID].out_attrs[4u].x = gl_in[gl_InvocationID].in_attrs[4u].x; gl_out[gl_InvocationID].out_attrs[4u].y = gl_in[gl_InvocationID].in_attrs[4u].y; gl_out[gl_InvocationID].out_attrs[4u].z = gl_in[gl_InvocationID].in_attrs[4u].z; gl_out[gl_InvocationID].out_attrs[4u].w = gl_in[gl_InvocationID].in_attrs[4u].w; gl_out[gl_InvocationID].out_attrs[5u].x = gl_in[gl_InvocationID].in_attrs[5u].x; gl_out[gl_InvocationID].out_attrs[5u].y = gl_in[gl_InvocationID].in_attrs[5u].y; gl_out[gl_InvocationID].out_attrs[5u].z = gl_in[gl_InvocationID].in_attrs[5u].z; gl_out[gl_InvocationID].out_attrs[5u].w = gl_in[gl_InvocationID].in_attrs[5u].w; gl_out[gl_InvocationID].out_attrs[6u].x = gl_in[gl_InvocationID].in_attrs[6u].x; gl_out[gl_InvocationID].out_attrs[6u].y = gl_in[gl_InvocationID].in_attrs[6u].y; gl_out[gl_InvocationID].out_attrs[6u].z = gl_in[gl_InvocationID].in_attrs[6u].z; gl_out[gl_InvocationID].out_attrs[6u].w = gl_in[gl_InvocationID].in_attrs[6u].w; gl_out[gl_InvocationID].out_attrs[7u].x = gl_in[gl_InvocationID].in_attrs[7u].x; gl_out[gl_InvocationID].out_attrs[7u].y = gl_in[gl_InvocationID].in_attrs[7u].y; gl_out[gl_InvocationID].out_attrs[7u].z = gl_in[gl_InvocationID].in_attrs[7u].z; gl_out[gl_InvocationID].out_attrs[7u].w = gl_in[gl_InvocationID].in_attrs[7u].w; spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0u] = half(3.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1u] = half(3.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2u] = half(3.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3u] = half(3.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1u] = half(1.0); ((device float*)&patchOut.patch_out0)[0u] = 3.0; ((device float*)&patchOut.patch_out1)[0u] = 3.0; ((device float*)&patchOut.patch_out2)[0u] = 3.0; ((device float*)&patchOut.patch_out3)[0u] = 3.0; ((device float*)&patchOut.patch_out4)[0u] = 1.0; ((device float*)&patchOut.patch_out5)[0u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct vs_cbuf_block_f32_1 { uint data[104]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32_1& cbuf_4 [[buffer(12)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; float _92 = spvFAdd(-0.5, gl_TessCoord.y); float _93 = spvFAdd(-0.5, gl_TessCoord.x); float _131 = spvFSub(float(_92 > 0.0), float(0.0 > _92)); float _155 = fma(_92, 0.8786799907684326171875, spvFMul(0.06065998971462249755859375, _131)); float _168 = spvFSub(_93, spvFMul(spvFMul(fma(_131, -0.20710666477680206298828125, _155), spvFMul(_93, _131)), 2.0)); float _169 = spvFAdd(_155, gl_in[0u].in_attrs[0u].y); float _172 = spvFAdd(_168, gl_in[0u].in_attrs[0u].x); uint _189 = 87u + buf3_dword_off; float _194 = fma(gl_in[0u].in_attrs[5u].x, _172, fma(gl_in[0u].in_attrs[5u].y, _169, fma(gl_in[0u].in_attrs[5u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[5u].w, gl_in[0u].in_attrs[0u].w)))); float _220 = fma(gl_in[0u].in_attrs[4u].x, _172, fma(gl_in[0u].in_attrs[4u].y, _169, fma(gl_in[0u].in_attrs[4u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[4u].w, gl_in[0u].in_attrs[0u].w)))); float _224 = fma(gl_in[0u].in_attrs[3u].x, _172, fma(gl_in[0u].in_attrs[3u].y, _169, fma(gl_in[0u].in_attrs[3u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[3u].w, gl_in[0u].in_attrs[0u].w)))); float _240 = fma(as_type(cbuf_4.data[12u + buf3_dword_off]), _224, fma(as_type(cbuf_4.data[13u + buf3_dword_off]), _220, fma(as_type(cbuf_4.data[14u + buf3_dword_off]), _194, as_type(cbuf_4.data[15u + buf3_dword_off])))); float _244 = spvFSub(_240, spvFMul(fast::max(gl_in[0u].in_attrs[7u].y, gl_in[0u].in_attrs[7u].y), 0.5)); float _250 = spvFMul(_240, 1.0 / _244); float _254 = 1.0 / as_type(cbuf_4.data[85u + buf3_dword_off]); float _264 = spvFMul(1.0, _168); float _267 = spvFMul(-1.0, _155); float _279 = fma(as_type(cbuf_4.data[0u + buf3_dword_off]), _224, fma(as_type(cbuf_4.data[1u + buf3_dword_off]), _220, fma(as_type(cbuf_4.data[2u + buf3_dword_off]), _194, as_type(cbuf_4.data[3u + buf3_dword_off])))); float _281 = fma(as_type(cbuf_4.data[4u + buf3_dword_off]), _224, fma(as_type(cbuf_4.data[5u + buf3_dword_off]), _220, fma(as_type(cbuf_4.data[6u + buf3_dword_off]), _194, as_type(cbuf_4.data[7u + buf3_dword_off])))); bool _284 = (_240 > as_type(cbuf_4.data[_189])) && (as_type(cbuf_4.data[_189]) > _244); uint _285; if (_284) { _285 = 0u; } else { _285 = as_type(spvFSub(spvFMul(_250, spvFMul(spvFMul(as_type(cbuf_4.data[86u + buf3_dword_off]), _244), _254)), spvFMul(spvFMul(as_type(cbuf_4.data[84u + buf3_dword_off]), _250), _254))); } uint _300; if (_284) { float _291 = fast::clamp(spvFMul(spvFSub(as_type(cbuf_4.data[_189]), _244), 1.0 / spvFSub(_240, _244)), 0.0, 1.0); float _292 = spvFMul(_291, _291); _300 = as_type(spvFSub(1.0, fma(_292, 3.0, -spvFMul(spvFMul(_291, _292), 2.0)))); } else { _300 = as_type(_264); } uint _302; if (!_284) { _302 = 1065353216u; } else { _302 = _300; } out.gl_Position.x = _279; out.gl_Position.y = _281; out.gl_Position.z = as_type(_285); out.gl_Position.w = _240; uint _321 = 92u + buf3_dword_off; uint _329 = 94u + buf3_dword_off; out.out_attr2.x = _279; out.out_attr2.y = _281; out.out_attr2.z = as_type(_285); out.out_attr2.w = _240; float _342 = spvFSub(_194, as_type(cbuf_4.data[90u + buf3_dword_off])); float _348 = spvFSub(_220, as_type(cbuf_4.data[89u + buf3_dword_off])); uint _355 = 65u + buf3_dword_off; float _359 = spvFSub(_224, as_type(cbuf_4.data[88u + buf3_dword_off])); float _378 = sqrt(fma(_359, _359, fma(_348, _348, spvFMul(_342, _342)))); float _391 = 1.0 / _240; float _397 = fma(-spvFSub(as_type(cbuf_4.data[_321]), fast::min(as_type(cbuf_4.data[_321]), _378)), 1.0 / as_type(cbuf_4.data[93u + buf3_dword_off]), 1.0); out.out_attr0.x = gl_in[0u].in_attrs[1u].x; out.out_attr0.y = gl_in[0u].in_attrs[1u].y; out.out_attr0.z = gl_in[0u].in_attrs[1u].z; out.out_attr0.w = spvFMul(spvFMul(spvFMul(as_type(_302), gl_in[0u].in_attrs[1u].w), 1.0 / gl_in[0u].in_attrs[7u].y), fma(-spvFMul(spvFSub(fast::max(as_type(cbuf_4.data[_329]), _378), as_type(cbuf_4.data[_329])), 1.0 / as_type(cbuf_4.data[95u + buf3_dword_off])), _397, _397)); out.out_attr1.x = fma(0.5, spvFMul(_279, _391), 0.5); out.out_attr1.y = fma(-0.5, spvFMul(_281, _391), 0.5); out.out_attr1.z = _244; out.out_attr1.w = gl_in[0u].in_attrs[7u].y; out.out_attr3.x = spvFSub(as_type(cbuf_4.data[19u + buf3_dword_off]), _224); out.out_attr3.y = spvFSub(as_type(cbuf_4.data[23u + buf3_dword_off]), _220); out.out_attr3.z = spvFSub(as_type(cbuf_4.data[27u + buf3_dword_off]), _194); out.out_attr3.w = 0.0; out.out_attr4.x = fma(_264, gl_in[0u].in_attrs[6u].x, gl_in[0u].in_attrs[2u].x); out.out_attr4.y = fma(_267, gl_in[0u].in_attrs[6u].y, gl_in[0u].in_attrs[2u].y); out.out_attr4.z = fast::clamp(spvFAdd(spvFMul(as_type(cbuf_4.data[_355]), _240), -spvFMul(as_type(cbuf_4.data[64u + buf3_dword_off]), as_type(cbuf_4.data[_355]))), 0.0, 1.0); out.out_attr4.w = 1.0; out.out_attr5.x = fma(gl_in[0u].in_attrs[6u].x, _264, gl_in[0u].in_attrs[2u].z); out.out_attr5.y = fma(gl_in[0u].in_attrs[6u].y, _267, gl_in[0u].in_attrs[2u].w); out.out_attr5.z = gl_in[0u].in_attrs[6u].z; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct fs_cbuf_block_f32_1 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_24 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _102 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float _103 = _102.x; float _104 = _102.y; float _105 = _102.z; float4 _111 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y)); float _112 = _111.x; float _113 = _111.y; float _115 = _111.z; float _116 = _111.w; float _125 = 1.0 / in.fs_in_attr2.w; float _147 = spvFSub(_102.w, _116); float _153 = fma(in.fs_in_attr5.z, fma(-_112, _112, spvFMul(_103, _103)), spvFMul(_112, _112)); float _154 = fma(in.fs_in_attr5.z, fma(-_113, _113, spvFMul(_104, _104)), spvFMul(_113, _113)); float _156 = fma(in.fs_in_attr5.z, fma(-_115, _115, spvFMul(_105, _105)), spvFMul(_115, _115)); float _157 = fma(in.fs_in_attr5.z, _147, _116); bool _159 = cbuf_24.data[95u + buf0_dword_off] == 2u; uint _244; uint _245; uint _246; uint _247; if (_159) { uint _162 = 36u + buf0_dword_off; uint _166 = 37u + buf0_dword_off; uint _170 = 38u + buf0_dword_off; float _193 = spvFMul(_153, _157); float _194 = spvFMul(_154, _157); float _195 = spvFMul(_156, _157); float _205 = fma(-as_type(cbuf_24.data[_162]), in.fs_in_attr0.x, 1.0); float _208 = fma(-as_type(cbuf_24.data[_166]), in.fs_in_attr0.y, 1.0); float _211 = fma(-as_type(cbuf_24.data[_170]), in.fs_in_attr0.z, 1.0); _244 = as_type((_194 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_166]), in.fs_in_attr0.y), _194), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_208, _208), 2.0), spvFMul(spvFMul(_157, spvFMul(_154, _208)), 2.0)))); _245 = as_type((0.5 > _195) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_170]), in.fs_in_attr0.z), _195), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_211, _211), 2.0), spvFMul(spvFMul(_157, spvFMul(_156, _211)), 2.0)))); _246 = as_type((_193 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_162]), in.fs_in_attr0.x), _193), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_205, _205), 2.0), spvFMul(spvFMul(_157, spvFMul(_153, _205)), 2.0)))); _247 = as_type(spvFMul(_157, spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), in.fs_in_attr0.w))); } else { _244 = as_type(_113); _245 = as_type(_147); _246 = as_type(_154); _247 = as_type(_157); } uint _286; uint _287; uint _288; uint _289; if (!_159) { _286 = as_type(spvFMul(as_type(cbuf_24.data[36u + buf0_dword_off]), spvFMul(_153, in.fs_in_attr0.x))); _287 = as_type(spvFMul(as_type(cbuf_24.data[37u + buf0_dword_off]), spvFMul(as_type(_246), in.fs_in_attr0.y))); _288 = as_type(spvFMul(as_type(cbuf_24.data[38u + buf0_dword_off]), spvFMul(_156, in.fs_in_attr0.z))); _289 = as_type(spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), spvFMul(as_type(_247), in.fs_in_attr0.w))); } else { _286 = _246; _287 = _244; _288 = _245; _289 = _247; } float4 _294 = fs_img16.sample(fs_samp12, float2(fma(0.5, spvFMul(in.fs_in_attr2.x, _125), 0.5), fma(-0.5, spvFMul(in.fs_in_attr2.y, _125), 0.5))); float _324 = spvFMul(as_type(_289), fast::max(0.0, fast::min(in.fs_in_attr1.w, fma(-as_type(cbuf_24.data[16u + buf0_dword_off]), 1.0 / fma(as_type(cbuf_24.data[17u + buf0_dword_off]), _294.x, -as_type(cbuf_24.data[18u + buf0_dword_off])), -in.fs_in_attr1.z)))); uint _491; uint _492; uint _493; if (0.0 < _324) { uint _327 = 47u + buf0_dword_off; uint _331 = 43u + buf0_dword_off; uint _335 = 51u + buf0_dword_off; uint _338 = 8u + buf1_dword_off; uint _346 = 10u + buf1_dword_off; float _367 = spvFMul(as_type(cbuf_24.data[_327]), as_type(_287)); uint _379 = 14u + buf1_dword_off; float _388 = spvFMul(as_type(cbuf_24.data[_331]), as_type(_286)); float _398 = spvFMul(as_type(cbuf_24.data[_335]), as_type(_288)); float _427 = spvFAdd(-1.0, fma(_398, 0.11448000371456146240234375, fma(_388, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _367)))); float _433 = fma(as_type(cbuf_28.data[7u + buf1_dword_off]), _427, 1.0); float _452 = fast::clamp(spvFAdd(as_type(cbuf_28.data[_338]), spvFMul(as_type(cbuf_28.data[_338]), -exp2(-fma(as_type(cbuf_28.data[_346]), sqrt(fma(-in.fs_in_attr3.x, -in.fs_in_attr3.x, spvFMul(-in.fs_in_attr3.z, -in.fs_in_attr3.z))), -spvFMul(as_type(cbuf_28.data[9u + buf1_dword_off]), as_type(cbuf_28.data[_346])))))), 0.0, 1.0); float _469 = fma(as_type(cbuf_28.data[19u + buf1_dword_off]), _427, 1.0); float _470 = fma(_452, fma(-as_type(_286), as_type(cbuf_24.data[_331]), spvFMul(as_type(cbuf_28.data[4u + buf1_dword_off]), _433)), _388); float _471 = fma(_452, fma(-as_type(_287), as_type(cbuf_24.data[_327]), spvFMul(as_type(cbuf_28.data[5u + buf1_dword_off]), _433)), _367); float _472 = fma(_452, fma(-as_type(_288), as_type(cbuf_24.data[_335]), spvFMul(as_type(cbuf_28.data[6u + buf1_dword_off]), _433)), _398); float _475 = fast::clamp(spvFMul(as_type(cbuf_28.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_28.data[_379]), spvFSub(as_type(cbuf_28.data[15u + buf1_dword_off]), in.fs_in_attr3.y)), -spvFMul(as_type(cbuf_28.data[13u + buf1_dword_off]), as_type(cbuf_28.data[_379]))), 0.0, 1.0)), 0.0, 1.0); _491 = as_type(fma(_475, fma(as_type(cbuf_28.data[18u + buf1_dword_off]), _469, -_472), _472)); _492 = as_type(fma(_475, fma(as_type(cbuf_28.data[17u + buf1_dword_off]), _469, -_471), _471)); _493 = as_type(fma(_475, fma(as_type(cbuf_28.data[16u + buf1_dword_off]), _469, -_470), _470)); } else { _491 = _288; _492 = _287; _493 = _286; } if (false) { discard_fragment(); } out.frag_color0.x = fast::max(0.0, as_type(_493)); out.frag_color0.y = fast::max(0.0, as_type(_492)); out.frag_color0.z = fast::max(0.0, as_type(_491)); out.frag_color0.w = fast::max(0.0, _324); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x2e86d610 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_f_2200.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_f_4000.partsbnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0xbc234799 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x52d756df [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling ls shader 0x4dde1a10 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_patchOut { float4 patch_out0; float4 patch_out1; float4 patch_out2; float4 patch_out3; float4 patch_out4; float4 patch_out5; }; struct main0_in { spvUnsafeArray in_attrs; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device main0_patchOut* spvPatchOut [[buffer(24)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 1]; device main0_patchOut& patchOut = spvPatchOut[gl_GlobalInvocationID.x / 1]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 1; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1); gl_out[gl_InvocationID].out_attrs[0u].x = gl_in[gl_InvocationID].in_attrs[0u].x; gl_out[gl_InvocationID].out_attrs[0u].y = gl_in[gl_InvocationID].in_attrs[0u].y; gl_out[gl_InvocationID].out_attrs[0u].z = gl_in[gl_InvocationID].in_attrs[0u].z; gl_out[gl_InvocationID].out_attrs[0u].w = gl_in[gl_InvocationID].in_attrs[0u].w; gl_out[gl_InvocationID].out_attrs[1u].x = gl_in[gl_InvocationID].in_attrs[1u].x; gl_out[gl_InvocationID].out_attrs[1u].y = gl_in[gl_InvocationID].in_attrs[1u].y; gl_out[gl_InvocationID].out_attrs[1u].z = gl_in[gl_InvocationID].in_attrs[1u].z; gl_out[gl_InvocationID].out_attrs[1u].w = gl_in[gl_InvocationID].in_attrs[1u].w; gl_out[gl_InvocationID].out_attrs[2u].x = gl_in[gl_InvocationID].in_attrs[2u].x; gl_out[gl_InvocationID].out_attrs[2u].y = gl_in[gl_InvocationID].in_attrs[2u].y; gl_out[gl_InvocationID].out_attrs[2u].z = gl_in[gl_InvocationID].in_attrs[2u].z; gl_out[gl_InvocationID].out_attrs[2u].w = gl_in[gl_InvocationID].in_attrs[2u].w; gl_out[gl_InvocationID].out_attrs[3u].x = gl_in[gl_InvocationID].in_attrs[3u].x; gl_out[gl_InvocationID].out_attrs[3u].y = gl_in[gl_InvocationID].in_attrs[3u].y; gl_out[gl_InvocationID].out_attrs[3u].z = gl_in[gl_InvocationID].in_attrs[3u].z; gl_out[gl_InvocationID].out_attrs[3u].w = gl_in[gl_InvocationID].in_attrs[3u].w; gl_out[gl_InvocationID].out_attrs[4u].x = gl_in[gl_InvocationID].in_attrs[4u].x; gl_out[gl_InvocationID].out_attrs[4u].y = gl_in[gl_InvocationID].in_attrs[4u].y; gl_out[gl_InvocationID].out_attrs[4u].z = gl_in[gl_InvocationID].in_attrs[4u].z; gl_out[gl_InvocationID].out_attrs[4u].w = gl_in[gl_InvocationID].in_attrs[4u].w; gl_out[gl_InvocationID].out_attrs[5u].x = gl_in[gl_InvocationID].in_attrs[5u].x; gl_out[gl_InvocationID].out_attrs[5u].y = gl_in[gl_InvocationID].in_attrs[5u].y; gl_out[gl_InvocationID].out_attrs[5u].z = gl_in[gl_InvocationID].in_attrs[5u].z; gl_out[gl_InvocationID].out_attrs[5u].w = gl_in[gl_InvocationID].in_attrs[5u].w; gl_out[gl_InvocationID].out_attrs[6u].x = gl_in[gl_InvocationID].in_attrs[6u].x; gl_out[gl_InvocationID].out_attrs[6u].y = gl_in[gl_InvocationID].in_attrs[6u].y; gl_out[gl_InvocationID].out_attrs[6u].z = gl_in[gl_InvocationID].in_attrs[6u].z; gl_out[gl_InvocationID].out_attrs[6u].w = gl_in[gl_InvocationID].in_attrs[6u].w; gl_out[gl_InvocationID].out_attrs[7u].x = gl_in[gl_InvocationID].in_attrs[7u].x; gl_out[gl_InvocationID].out_attrs[7u].y = gl_in[gl_InvocationID].in_attrs[7u].y; gl_out[gl_InvocationID].out_attrs[7u].z = gl_in[gl_InvocationID].in_attrs[7u].z; gl_out[gl_InvocationID].out_attrs[7u].w = gl_in[gl_InvocationID].in_attrs[7u].w; spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1u] = half(1.0); ((device float*)&patchOut.patch_out0)[0u] = 1.0; ((device float*)&patchOut.patch_out1)[0u] = 1.0; ((device float*)&patchOut.patch_out2)[0u] = 1.0; ((device float*)&patchOut.patch_out3)[0u] = 1.0; ((device float*)&patchOut.patch_out4)[0u] = 1.0; ((device float*)&patchOut.patch_out5)[0u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct vs_cbuf_block_f32_1 { uint data[104]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32_1& cbuf_4 [[buffer(12)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; float _84 = spvFAdd(-0.5, gl_TessCoord.y); float _85 = spvFAdd(-0.5, gl_TessCoord.x); float _182 = spvFAdd(_84, gl_in[0u].in_attrs[0u].y); float _186 = spvFAdd(_85, gl_in[0u].in_attrs[0u].x); float _192 = fma(gl_in[0u].in_attrs[5u].x, _186, fma(gl_in[0u].in_attrs[5u].y, _182, fma(gl_in[0u].in_attrs[5u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[5u].w, gl_in[0u].in_attrs[0u].w)))); float _194 = fma(gl_in[0u].in_attrs[4u].x, _186, fma(gl_in[0u].in_attrs[4u].y, _182, fma(gl_in[0u].in_attrs[4u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[4u].w, gl_in[0u].in_attrs[0u].w)))); float _207 = fma(gl_in[0u].in_attrs[3u].x, _186, fma(gl_in[0u].in_attrs[3u].y, _182, fma(gl_in[0u].in_attrs[3u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[3u].w, gl_in[0u].in_attrs[0u].w)))); float _223 = fma(as_type(cbuf_4.data[12u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[13u + buf3_dword_off]), _194, fma(as_type(cbuf_4.data[14u + buf3_dword_off]), _192, as_type(cbuf_4.data[15u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_4.data[0u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[1u + buf3_dword_off]), _194, fma(as_type(cbuf_4.data[2u + buf3_dword_off]), _192, as_type(cbuf_4.data[3u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_4.data[4u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[5u + buf3_dword_off]), _194, fma(as_type(cbuf_4.data[6u + buf3_dword_off]), _192, as_type(cbuf_4.data[7u + buf3_dword_off])))); out.gl_Position.z = fma(as_type(cbuf_4.data[8u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[9u + buf3_dword_off]), _194, fma(as_type(cbuf_4.data[10u + buf3_dword_off]), _192, as_type(cbuf_4.data[11u + buf3_dword_off])))); out.gl_Position.w = _223; uint _241 = 92u + buf3_dword_off; uint _249 = 94u + buf3_dword_off; float _257 = spvFSub(_192, as_type(cbuf_4.data[90u + buf3_dword_off])); float _259 = spvFSub(_194, as_type(cbuf_4.data[89u + buf3_dword_off])); uint _266 = 65u + buf3_dword_off; float _270 = spvFSub(_207, as_type(cbuf_4.data[88u + buf3_dword_off])); float _303 = sqrt(fma(_270, _270, fma(_259, _259, spvFMul(_257, _257)))); float _319 = fma(-spvFSub(as_type(cbuf_4.data[_241]), fast::min(as_type(cbuf_4.data[_241]), _303)), 1.0 / as_type(cbuf_4.data[93u + buf3_dword_off]), 1.0); out.out_attr0.x = gl_in[0u].in_attrs[1u].x; out.out_attr0.y = gl_in[0u].in_attrs[1u].y; out.out_attr0.z = gl_in[0u].in_attrs[1u].z; out.out_attr0.w = spvFMul(gl_in[0u].in_attrs[1u].w, fma(-spvFMul(spvFSub(fast::max(as_type(cbuf_4.data[_249]), _303), as_type(cbuf_4.data[_249])), 1.0 / as_type(cbuf_4.data[95u + buf3_dword_off])), _319, _319)); out.out_attr1.x = spvFSub(as_type(cbuf_4.data[19u + buf3_dword_off]), _207); out.out_attr1.y = spvFSub(as_type(cbuf_4.data[23u + buf3_dword_off]), _194); out.out_attr1.z = spvFSub(as_type(cbuf_4.data[27u + buf3_dword_off]), _192); out.out_attr1.w = 0.0; out.out_attr2.x = fma(_85, gl_in[0u].in_attrs[6u].x, gl_in[0u].in_attrs[2u].x); out.out_attr2.y = fma(-_84, gl_in[0u].in_attrs[6u].y, gl_in[0u].in_attrs[2u].y); out.out_attr2.z = fast::clamp(spvFAdd(spvFMul(as_type(cbuf_4.data[_266]), _223), -spvFMul(as_type(cbuf_4.data[64u + buf3_dword_off]), as_type(cbuf_4.data[_266]))), 0.0, 1.0); out.out_attr2.w = 1.0; out.out_attr3.x = fma(gl_in[0u].in_attrs[6u].x, _85, gl_in[0u].in_attrs[2u].z); out.out_attr3.y = fma(gl_in[0u].in_attrs[6u].y, -_84, gl_in[0u].in_attrs[2u].w); out.out_attr3.z = gl_in[0u].in_attrs[6u].z; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct fs_cbuf_block_f32_1 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _95 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y)); float _96 = _95.x; float _97 = _95.y; float _99 = _95.z; float _101 = _95.w; float4 _110 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y)); float _111 = _110.x; float _112 = _110.y; float _113 = _110.z; float _131 = fma(in.fs_in_attr3.z, fma(-_96, _96, spvFMul(_111, _111)), spvFMul(_96, _96)); float _132 = fma(in.fs_in_attr3.z, fma(-_97, _97, spvFMul(_112, _112)), spvFMul(_97, _97)); float _134 = fma(in.fs_in_attr3.z, fma(-_99, _99, spvFMul(_113, _113)), spvFMul(_99, _99)); float _135 = fma(in.fs_in_attr3.z, spvFSub(_110.w, _101), _101); bool _141 = cbuf_16.data[95u + buf0_dword_off] == 2u; uint _229; uint _230; uint _231; uint _232; if (_141) { uint _144 = 36u + buf0_dword_off; uint _148 = 37u + buf0_dword_off; uint _152 = 38u + buf0_dword_off; float _176 = spvFMul(_131, _135); float _177 = spvFMul(_132, _135); float _178 = spvFMul(_134, _135); float _189 = fma(-as_type(cbuf_16.data[_144]), in.fs_in_attr0.x, 1.0); float _192 = fma(-as_type(cbuf_16.data[_148]), in.fs_in_attr0.y, 1.0); float _195 = fma(-as_type(cbuf_16.data[_152]), in.fs_in_attr0.z, 1.0); _229 = as_type((0.5 > _178) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_16.data[_152]), in.fs_in_attr0.z), _178), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_195, _195), 2.0), spvFMul(spvFMul(_135, spvFMul(_134, _195)), 2.0)))); _230 = as_type((_177 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_16.data[_148]), in.fs_in_attr0.y), _177), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_192, _192), 2.0), spvFMul(spvFMul(_135, spvFMul(_132, _192)), 2.0)))); _231 = as_type((_176 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_16.data[_144]), in.fs_in_attr0.x), _176), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_189, _189), 2.0), spvFMul(spvFMul(_135, spvFMul(_131, _189)), 2.0)))); _232 = as_type(spvFMul(_135, spvFMul(as_type(cbuf_16.data[39u + buf0_dword_off]), in.fs_in_attr0.w))); } else { _229 = as_type(_99); _230 = as_type(_97); _231 = as_type(_132); _232 = as_type(_135); } uint _271; uint _272; uint _273; uint _274; if (!_141) { _271 = as_type(spvFMul(as_type(cbuf_16.data[36u + buf0_dword_off]), spvFMul(_131, in.fs_in_attr0.x))); _272 = as_type(spvFMul(as_type(cbuf_16.data[38u + buf0_dword_off]), spvFMul(_134, in.fs_in_attr0.z))); _273 = as_type(spvFMul(as_type(cbuf_16.data[37u + buf0_dword_off]), spvFMul(as_type(_231), in.fs_in_attr0.y))); _274 = as_type(spvFMul(as_type(cbuf_16.data[39u + buf0_dword_off]), spvFMul(as_type(_232), in.fs_in_attr0.w))); } else { _271 = _231; _272 = _229; _273 = _230; _274 = _232; } uint _442; uint _443; uint _444; if (0.0 < as_type(_274)) { uint _277 = 8u + buf1_dword_off; uint _285 = 10u + buf1_dword_off; uint _315 = 14u + buf1_dword_off; float _367 = spvFAdd(-1.0, fma(as_type(_272), 0.11448000371456146240234375, fma(as_type(_271), 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, as_type(_273))))); float _386 = fma(as_type(cbuf_20.data[7u + buf1_dword_off]), _367, 1.0); float _394 = fast::clamp(spvFAdd(as_type(cbuf_20.data[_277]), spvFMul(as_type(cbuf_20.data[_277]), -exp2(-fma(as_type(cbuf_20.data[_285]), sqrt(fma(-in.fs_in_attr1.x, -in.fs_in_attr1.x, spvFMul(-in.fs_in_attr1.z, -in.fs_in_attr1.z))), -spvFMul(as_type(cbuf_20.data[9u + buf1_dword_off]), as_type(cbuf_20.data[_285])))))), 0.0, 1.0); float _411 = fma(as_type(cbuf_20.data[19u + buf1_dword_off]), _367, 1.0); float _413 = fma(_394, fma(as_type(cbuf_20.data[4u + buf1_dword_off]), _386, -as_type(_271)), as_type(_271)); float _415 = fma(_394, fma(as_type(cbuf_20.data[5u + buf1_dword_off]), _386, -as_type(_273)), as_type(_273)); float _417 = fma(_394, fma(as_type(cbuf_20.data[6u + buf1_dword_off]), _386, -as_type(_272)), as_type(_272)); float _420 = fast::clamp(spvFMul(as_type(cbuf_20.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_20.data[_315]), spvFSub(as_type(cbuf_20.data[15u + buf1_dword_off]), in.fs_in_attr1.y)), -spvFMul(as_type(cbuf_20.data[13u + buf1_dword_off]), as_type(cbuf_20.data[_315]))), 0.0, 1.0)), 0.0, 1.0); _442 = as_type(spvFMul(as_type(cbuf_16.data[51u + buf0_dword_off]), fma(_420, fma(as_type(cbuf_20.data[18u + buf1_dword_off]), _411, -_417), _417))); _443 = as_type(spvFMul(as_type(cbuf_16.data[47u + buf0_dword_off]), fma(_420, fma(as_type(cbuf_20.data[17u + buf1_dword_off]), _411, -_415), _415))); _444 = as_type(spvFMul(as_type(cbuf_16.data[43u + buf0_dword_off]), fma(_420, fma(as_type(cbuf_20.data[16u + buf1_dword_off]), _411, -_413), _413))); } else { _442 = _272; _443 = _273; _444 = _271; } if (false) { discard_fragment(); } out.frag_color0.x = fast::max(0.0, as_type(_444)); out.frag_color0.y = fast::max(0.0, as_type(_443)); out.frag_color0.z = fast::max(0.0, as_type(_442)); out.frag_color0.w = fast::max(0.0, as_type(_274)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0xbc234799 (permutation) [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc1888bd [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct vs_cbuf_block_f32_1 { uint data[104]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32_1& cbuf_4 [[buffer(12)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; float _92 = spvFAdd(-0.5, gl_TessCoord.y); float _93 = spvFAdd(-0.5, gl_TessCoord.x); float _152 = spvFAdd(_92, gl_in[0u].in_attrs[0u].y); float _156 = spvFAdd(_93, gl_in[0u].in_attrs[0u].x); uint _173 = 87u + buf3_dword_off; float _178 = fma(gl_in[0u].in_attrs[5u].x, _156, fma(gl_in[0u].in_attrs[5u].y, _152, fma(gl_in[0u].in_attrs[5u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[5u].w, gl_in[0u].in_attrs[0u].w)))); float _204 = fma(gl_in[0u].in_attrs[4u].x, _156, fma(gl_in[0u].in_attrs[4u].y, _152, fma(gl_in[0u].in_attrs[4u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[4u].w, gl_in[0u].in_attrs[0u].w)))); float _208 = fma(gl_in[0u].in_attrs[3u].x, _156, fma(gl_in[0u].in_attrs[3u].y, _152, fma(gl_in[0u].in_attrs[3u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[3u].w, gl_in[0u].in_attrs[0u].w)))); float _224 = fma(as_type(cbuf_4.data[12u + buf3_dword_off]), _208, fma(as_type(cbuf_4.data[13u + buf3_dword_off]), _204, fma(as_type(cbuf_4.data[14u + buf3_dword_off]), _178, as_type(cbuf_4.data[15u + buf3_dword_off])))); float _228 = spvFSub(_224, spvFMul(fast::max(gl_in[0u].in_attrs[7u].y, gl_in[0u].in_attrs[7u].y), 0.5)); float _235 = spvFMul(_224, 1.0 / _228); float _239 = 1.0 / as_type(cbuf_4.data[85u + buf3_dword_off]); float _262 = fma(as_type(cbuf_4.data[0u + buf3_dword_off]), _208, fma(as_type(cbuf_4.data[1u + buf3_dword_off]), _204, fma(as_type(cbuf_4.data[2u + buf3_dword_off]), _178, as_type(cbuf_4.data[3u + buf3_dword_off])))); float _264 = fma(as_type(cbuf_4.data[4u + buf3_dword_off]), _208, fma(as_type(cbuf_4.data[5u + buf3_dword_off]), _204, fma(as_type(cbuf_4.data[6u + buf3_dword_off]), _178, as_type(cbuf_4.data[7u + buf3_dword_off])))); bool _267 = (_224 > as_type(cbuf_4.data[_173])) && (as_type(cbuf_4.data[_173]) > _228); uint _268; if (_267) { _268 = 0u; } else { _268 = as_type(spvFSub(spvFMul(_235, spvFMul(spvFMul(as_type(cbuf_4.data[86u + buf3_dword_off]), _228), _239)), spvFMul(spvFMul(as_type(cbuf_4.data[84u + buf3_dword_off]), _235), _239))); } uint _284; if (_267) { float _274 = fast::clamp(spvFMul(spvFSub(as_type(cbuf_4.data[_173]), _228), 1.0 / spvFSub(_224, _228)), 0.0, 1.0); float _275 = spvFMul(_274, _274); _284 = as_type(spvFSub(1.0, fma(_275, 3.0, -spvFMul(spvFMul(_274, _275), 2.0)))); } else { _284 = as_type(_93); } uint _286; if (!_267) { _286 = 1065353216u; } else { _286 = _284; } out.gl_Position.x = _262; out.gl_Position.y = _264; out.gl_Position.z = as_type(_268); out.gl_Position.w = _224; uint _305 = 92u + buf3_dword_off; uint _313 = 94u + buf3_dword_off; out.out_attr2.x = _262; out.out_attr2.y = _264; out.out_attr2.z = as_type(_268); out.out_attr2.w = _224; float _326 = spvFSub(_178, as_type(cbuf_4.data[90u + buf3_dword_off])); float _332 = spvFSub(_204, as_type(cbuf_4.data[89u + buf3_dword_off])); uint _339 = 65u + buf3_dword_off; float _343 = spvFSub(_208, as_type(cbuf_4.data[88u + buf3_dword_off])); float _362 = sqrt(fma(_343, _343, fma(_332, _332, spvFMul(_326, _326)))); float _375 = 1.0 / _224; float _381 = fma(-spvFSub(as_type(cbuf_4.data[_305]), fast::min(as_type(cbuf_4.data[_305]), _362)), 1.0 / as_type(cbuf_4.data[93u + buf3_dword_off]), 1.0); out.out_attr0.x = gl_in[0u].in_attrs[1u].x; out.out_attr0.y = gl_in[0u].in_attrs[1u].y; out.out_attr0.z = gl_in[0u].in_attrs[1u].z; out.out_attr0.w = spvFMul(spvFMul(spvFMul(as_type(_286), gl_in[0u].in_attrs[1u].w), 1.0 / gl_in[0u].in_attrs[7u].y), fma(-spvFMul(spvFSub(fast::max(as_type(cbuf_4.data[_313]), _362), as_type(cbuf_4.data[_313])), 1.0 / as_type(cbuf_4.data[95u + buf3_dword_off])), _381, _381)); out.out_attr1.x = fma(0.5, spvFMul(_262, _375), 0.5); out.out_attr1.y = fma(-0.5, spvFMul(_264, _375), 0.5); out.out_attr1.z = _228; out.out_attr1.w = gl_in[0u].in_attrs[7u].y; out.out_attr3.x = spvFSub(as_type(cbuf_4.data[19u + buf3_dword_off]), _208); out.out_attr3.y = spvFSub(as_type(cbuf_4.data[23u + buf3_dword_off]), _204); out.out_attr3.z = spvFSub(as_type(cbuf_4.data[27u + buf3_dword_off]), _178); out.out_attr3.w = 0.0; out.out_attr4.x = fma(_93, gl_in[0u].in_attrs[6u].x, gl_in[0u].in_attrs[2u].x); out.out_attr4.y = fma(-_92, gl_in[0u].in_attrs[6u].y, gl_in[0u].in_attrs[2u].y); out.out_attr4.z = fast::clamp(spvFAdd(spvFMul(as_type(cbuf_4.data[_339]), _224), -spvFMul(as_type(cbuf_4.data[64u + buf3_dword_off]), as_type(cbuf_4.data[_339]))), 0.0, 1.0); out.out_attr4.w = 1.0; out.out_attr5.x = fma(gl_in[0u].in_attrs[6u].x, _93, gl_in[0u].in_attrs[2u].z); out.out_attr5.y = fma(gl_in[0u].in_attrs[6u].y, -_92, gl_in[0u].in_attrs[2u].w); out.out_attr5.z = gl_in[0u].in_attrs[6u].z; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 2 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 3 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 4 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0xd67db0ef [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 5 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc6f6c39 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_f_4000.partsbnd.dcx [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 6 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_patchOut { float4 patch_out0; float4 patch_out1; float4 patch_out2; float4 patch_out3; float4 patch_out4; float4 patch_out5; }; struct main0_in { spvUnsafeArray in_attrs; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device main0_patchOut* spvPatchOut [[buffer(24)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 1]; device main0_patchOut& patchOut = spvPatchOut[gl_GlobalInvocationID.x / 1]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 1; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1); gl_out[gl_InvocationID].out_attrs[0u].x = gl_in[gl_InvocationID].in_attrs[0u].x; gl_out[gl_InvocationID].out_attrs[0u].y = gl_in[gl_InvocationID].in_attrs[0u].y; gl_out[gl_InvocationID].out_attrs[0u].z = gl_in[gl_InvocationID].in_attrs[0u].z; gl_out[gl_InvocationID].out_attrs[0u].w = gl_in[gl_InvocationID].in_attrs[0u].w; gl_out[gl_InvocationID].out_attrs[1u].x = gl_in[gl_InvocationID].in_attrs[1u].x; gl_out[gl_InvocationID].out_attrs[1u].y = gl_in[gl_InvocationID].in_attrs[1u].y; gl_out[gl_InvocationID].out_attrs[1u].z = gl_in[gl_InvocationID].in_attrs[1u].z; gl_out[gl_InvocationID].out_attrs[1u].w = gl_in[gl_InvocationID].in_attrs[1u].w; gl_out[gl_InvocationID].out_attrs[2u].x = gl_in[gl_InvocationID].in_attrs[2u].x; gl_out[gl_InvocationID].out_attrs[2u].y = gl_in[gl_InvocationID].in_attrs[2u].y; gl_out[gl_InvocationID].out_attrs[2u].z = gl_in[gl_InvocationID].in_attrs[2u].z; gl_out[gl_InvocationID].out_attrs[2u].w = gl_in[gl_InvocationID].in_attrs[2u].w; gl_out[gl_InvocationID].out_attrs[3u].x = gl_in[gl_InvocationID].in_attrs[3u].x; gl_out[gl_InvocationID].out_attrs[3u].y = gl_in[gl_InvocationID].in_attrs[3u].y; gl_out[gl_InvocationID].out_attrs[3u].z = gl_in[gl_InvocationID].in_attrs[3u].z; gl_out[gl_InvocationID].out_attrs[3u].w = gl_in[gl_InvocationID].in_attrs[3u].w; gl_out[gl_InvocationID].out_attrs[4u].x = gl_in[gl_InvocationID].in_attrs[4u].x; gl_out[gl_InvocationID].out_attrs[4u].y = gl_in[gl_InvocationID].in_attrs[4u].y; gl_out[gl_InvocationID].out_attrs[4u].z = gl_in[gl_InvocationID].in_attrs[4u].z; gl_out[gl_InvocationID].out_attrs[4u].w = gl_in[gl_InvocationID].in_attrs[4u].w; gl_out[gl_InvocationID].out_attrs[5u].x = gl_in[gl_InvocationID].in_attrs[5u].x; gl_out[gl_InvocationID].out_attrs[5u].y = gl_in[gl_InvocationID].in_attrs[5u].y; gl_out[gl_InvocationID].out_attrs[5u].z = gl_in[gl_InvocationID].in_attrs[5u].z; gl_out[gl_InvocationID].out_attrs[5u].w = gl_in[gl_InvocationID].in_attrs[5u].w; gl_out[gl_InvocationID].out_attrs[6u].x = gl_in[gl_InvocationID].in_attrs[6u].x; gl_out[gl_InvocationID].out_attrs[6u].y = gl_in[gl_InvocationID].in_attrs[6u].y; gl_out[gl_InvocationID].out_attrs[6u].z = gl_in[gl_InvocationID].in_attrs[6u].z; gl_out[gl_InvocationID].out_attrs[6u].w = gl_in[gl_InvocationID].in_attrs[6u].w; gl_out[gl_InvocationID].out_attrs[7u].x = gl_in[gl_InvocationID].in_attrs[7u].x; gl_out[gl_InvocationID].out_attrs[7u].y = gl_in[gl_InvocationID].in_attrs[7u].y; gl_out[gl_InvocationID].out_attrs[7u].z = gl_in[gl_InvocationID].in_attrs[7u].z; gl_out[gl_InvocationID].out_attrs[7u].w = gl_in[gl_InvocationID].in_attrs[7u].w; spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0u] = half(2.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1u] = half(2.0); ((device float*)&patchOut.patch_out0)[0u] = 1.0; ((device float*)&patchOut.patch_out1)[0u] = 1.0; ((device float*)&patchOut.patch_out2)[0u] = 1.0; ((device float*)&patchOut.patch_out3)[0u] = 1.0; ((device float*)&patchOut.patch_out4)[0u] = 2.0; ((device float*)&patchOut.patch_out5)[0u] = 2.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000010.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000020.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000030.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000040.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000040.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000100.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000110.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000120.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000130.flver.dcx flags = 0x0 mode = 365 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 7 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000140.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000140.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000150.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000160.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000160.flver.dcx [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct vs_cbuf_block_f32_1 { uint data[104]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32_1& cbuf_4 [[buffer(12)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; float _92 = spvFAdd(-0.5, gl_TessCoord.y); float _94 = spvFAdd(-0.5, gl_TessCoord.x); float _154 = spvFAdd(_92, gl_in[0u].in_attrs[0u].y); float _158 = spvFAdd(_94, gl_in[0u].in_attrs[0u].x); uint _175 = 87u + buf3_dword_off; float _180 = fma(gl_in[0u].in_attrs[5u].x, _158, fma(gl_in[0u].in_attrs[5u].y, _154, fma(gl_in[0u].in_attrs[5u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[5u].w, gl_in[0u].in_attrs[0u].w)))); float _206 = fma(gl_in[0u].in_attrs[4u].x, _158, fma(gl_in[0u].in_attrs[4u].y, _154, fma(gl_in[0u].in_attrs[4u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[4u].w, gl_in[0u].in_attrs[0u].w)))); float _210 = fma(gl_in[0u].in_attrs[3u].x, _158, fma(gl_in[0u].in_attrs[3u].y, _154, fma(gl_in[0u].in_attrs[3u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[3u].w, gl_in[0u].in_attrs[0u].w)))); float _226 = fma(as_type(cbuf_4.data[12u + buf3_dword_off]), _210, fma(as_type(cbuf_4.data[13u + buf3_dword_off]), _206, fma(as_type(cbuf_4.data[14u + buf3_dword_off]), _180, as_type(cbuf_4.data[15u + buf3_dword_off])))); float _230 = spvFSub(_226, spvFMul(fast::max(gl_in[0u].in_attrs[7u].y, gl_in[0u].in_attrs[7u].y), 0.5)); float _237 = spvFMul(_226, 1.0 / _230); float _241 = 1.0 / as_type(cbuf_4.data[85u + buf3_dword_off]); float _255 = spvFMul(_237, spvFMul(spvFMul(as_type(cbuf_4.data[86u + buf3_dword_off]), _230), _241)); float _265 = fma(as_type(cbuf_4.data[0u + buf3_dword_off]), _210, fma(as_type(cbuf_4.data[1u + buf3_dword_off]), _206, fma(as_type(cbuf_4.data[2u + buf3_dword_off]), _180, as_type(cbuf_4.data[3u + buf3_dword_off])))); float _267 = fma(as_type(cbuf_4.data[4u + buf3_dword_off]), _210, fma(as_type(cbuf_4.data[5u + buf3_dword_off]), _206, fma(as_type(cbuf_4.data[6u + buf3_dword_off]), _180, as_type(cbuf_4.data[7u + buf3_dword_off])))); bool _270 = (_226 > as_type(cbuf_4.data[_175])) && (as_type(cbuf_4.data[_175]) > _230); uint _271; if (_270) { _271 = 0u; } else { _271 = as_type(_92); } uint _287; uint _288; if (_270) { float _277 = fast::clamp(spvFMul(spvFSub(as_type(cbuf_4.data[_175]), _230), 1.0 / spvFSub(_226, _230)), 0.0, 1.0); float _278 = spvFMul(_277, _277); _287 = as_type(spvFSub(1.0, fma(_278, 3.0, -spvFMul(spvFMul(_277, _278), 2.0)))); _288 = _271; } else { _287 = as_type(_255); _288 = as_type(spvFSub(_255, spvFMul(spvFMul(as_type(cbuf_4.data[84u + buf3_dword_off]), _237), _241))); } uint _290; if (!_270) { _290 = 1065353216u; } else { _290 = _287; } out.gl_Position.x = _265; out.gl_Position.y = _267; out.gl_Position.z = as_type(_288); out.gl_Position.w = _226; float _296 = spvFAdd(-0.5, gl_in[0u].in_attrs[0u].z); float _309 = spvFAdd(0.0, _154); float _311 = spvFAdd(0.0, _158); float _326 = rsqrt(fma(_311, _311, fma(_309, _309, spvFMul(_296, _296)))); float _327 = spvFMul(_296, _326); uint _329 = 92u + buf3_dword_off; uint _337 = 94u + buf3_dword_off; float _344 = spvFMul(_309, _326); float _347 = spvFSub(_180, as_type(cbuf_4.data[90u + buf3_dword_off])); float _364 = spvFMul(_311, _326); float _368 = spvFSub(_206, as_type(cbuf_4.data[89u + buf3_dword_off])); uint _375 = 65u + buf3_dword_off; float _394 = spvFSub(_210, as_type(cbuf_4.data[88u + buf3_dword_off])); float _413 = fma(gl_in[0u].in_attrs[4u].x, _364, fma(gl_in[0u].in_attrs[4u].y, _344, spvFMul(gl_in[0u].in_attrs[4u].z, _327))); float _432 = sqrt(fma(_394, _394, fma(_368, _368, spvFMul(_347, _347)))); float _434 = fma(as_type(cbuf_4.data[68u + buf3_dword_off]), fma(gl_in[0u].in_attrs[3u].x, _364, fma(gl_in[0u].in_attrs[3u].y, _344, spvFMul(gl_in[0u].in_attrs[3u].z, _327))), fma(as_type(cbuf_4.data[69u + buf3_dword_off]), _413, spvFMul(as_type(cbuf_4.data[70u + buf3_dword_off]), fma(gl_in[0u].in_attrs[5u].x, _364, fma(gl_in[0u].in_attrs[5u].y, _344, spvFMul(gl_in[0u].in_attrs[5u].z, _327)))))); float _439 = spvFAdd(1.0, _413); float _449 = 1.0 / _226; float _461 = fast::clamp(fma(-gl_in[0u].in_attrs[7u].x, _434, spvFAdd(gl_in[0u].in_attrs[7u].x, _434)), 0.0, 1.0); float _467 = fma(-spvFSub(as_type(cbuf_4.data[_329]), fast::min(as_type(cbuf_4.data[_329]), _432)), 1.0 / as_type(cbuf_4.data[93u + buf3_dword_off]), 1.0); out.out_attr0.x = spvFMul(fma(as_type(cbuf_4.data[72u + buf3_dword_off]), _461, fma(as_type(cbuf_4.data[76u + buf3_dword_off]), _439, as_type(cbuf_4.data[80u + buf3_dword_off]))), gl_in[0u].in_attrs[1u].x); out.out_attr0.y = spvFMul(fma(as_type(cbuf_4.data[73u + buf3_dword_off]), _461, fma(as_type(cbuf_4.data[77u + buf3_dword_off]), _439, as_type(cbuf_4.data[81u + buf3_dword_off]))), gl_in[0u].in_attrs[1u].y); out.out_attr0.z = spvFMul(fma(as_type(cbuf_4.data[74u + buf3_dword_off]), _461, fma(as_type(cbuf_4.data[78u + buf3_dword_off]), _439, as_type(cbuf_4.data[82u + buf3_dword_off]))), gl_in[0u].in_attrs[1u].z); out.out_attr0.w = spvFMul(spvFMul(spvFMul(as_type(_290), gl_in[0u].in_attrs[1u].w), 1.0 / gl_in[0u].in_attrs[7u].y), fma(-spvFMul(spvFSub(fast::max(as_type(cbuf_4.data[_337]), _432), as_type(cbuf_4.data[_337])), 1.0 / as_type(cbuf_4.data[95u + buf3_dword_off])), _467, _467)); out.out_attr1.x = fma(0.5, spvFMul(_265, _449), 0.5); out.out_attr1.y = fma(-0.5, spvFMul(_267, _449), 0.5); out.out_attr1.z = _230; out.out_attr1.w = gl_in[0u].in_attrs[7u].y; out.out_attr2.x = _265; out.out_attr2.y = _267; out.out_attr2.z = as_type(_288); out.out_attr2.w = _226; out.out_attr3.x = spvFSub(as_type(cbuf_4.data[19u + buf3_dword_off]), _210); out.out_attr3.y = spvFSub(as_type(cbuf_4.data[23u + buf3_dword_off]), _206); out.out_attr3.z = spvFSub(as_type(cbuf_4.data[27u + buf3_dword_off]), _180); out.out_attr3.w = 0.0; out.out_attr4.x = fma(_94, gl_in[0u].in_attrs[6u].x, gl_in[0u].in_attrs[2u].x); out.out_attr4.y = fma(-_92, gl_in[0u].in_attrs[6u].y, gl_in[0u].in_attrs[2u].y); out.out_attr4.z = fast::clamp(spvFAdd(spvFMul(as_type(cbuf_4.data[_375]), _226), -spvFMul(as_type(cbuf_4.data[64u + buf3_dword_off]), as_type(cbuf_4.data[_375]))), 0.0, 1.0); out.out_attr4.w = 1.0; out.out_attr5.x = fma(gl_in[0u].in_attrs[6u].x, _94, gl_in[0u].in_attrs[2u].z); out.out_attr5.y = fma(gl_in[0u].in_attrs[6u].y, -_92, gl_in[0u].in_attrs[2u].w); out.out_attr5.z = gl_in[0u].in_attrs[6u].z; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hr_a_0109.partsbnd.dcx [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 1 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 33 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000210.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001000.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001010.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001011.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o000300.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o000300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210001.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210001.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210002.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210002.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210003.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210003.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210004.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210004.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210005.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210005.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210006.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210006.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210007.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210007.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210008.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210008.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210009.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210009.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210010.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210011.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210011.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_2500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_0800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_2001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_7002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_3000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_5000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_6000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001020.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001026.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001026.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001030.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1030.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000040.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000140.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_000160.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o000300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210001.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210002.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210003.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210004.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210005.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210006.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210007.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210008.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210009.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210011.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001031.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001031.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001032.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001032.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001033.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001033.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001040.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001040.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001041.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001041.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001072.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001072.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c8030.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c8030.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c8030_eng.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c8030_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c8030.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c8030.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c8040.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c8040.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c8040_eng.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c8040_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c8040.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c8040.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001073.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001073.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001031.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001026.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210012.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210012.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210013.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210013.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210020.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210021.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210021.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210030.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210030.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210031.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210031.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210051.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210051.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210201.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210201.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210202.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210202.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o210500.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o210500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c8030.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c8030.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001032.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001040.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001033.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c8030.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001072.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c8030_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c8030.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c8040.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c8040_eng.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c8040.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001073.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210012.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210013.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210021.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210030.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c8030.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210031.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001041.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210201.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210202.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o210051.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c8030.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c8030.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c8030.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c8030.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c8040.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c8040.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c8040.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c8040.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c8040.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c8040.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c9010.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c9010.hks [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xa040875f [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[12]; }; constant uint _61 = {}; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d_array cs_img4 [[texture(0)]], texture2d cs_img16 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _80 = (gl_WorkGroupID.x << 3u) + gl_LocalInvocationID.x; uint _81 = (gl_WorkGroupID.y << 3u) + gl_LocalInvocationID.y; uint _103 = cbuf_12.data[4u + buf0_dword_off] + _80; uint _104 = cbuf_12.data[5u + buf0_dword_off] + _81; bool _109 = (cbuf_12.data[9u + buf0_dword_off] > _104) && (cbuf_12.data[8u + buf0_dword_off] > _103); uint _110; if (_109) { _110 = 0u; } else { _110 = _61; } if (_109) { uint3 _111 = uint3(cbuf_12.data[0u + buf0_dword_off] + _80, cbuf_12.data[1u + buf0_dword_off] + _81, _110); uint4 _114 = as_type(cs_img4.read(uint2(_111.xy), uint(_111.z), 0u)); cs_img16.write((float4(float4(as_type(_114.x), as_type(_114.y), as_type(_114.z), as_type(_114.w)).xy, 0.0, 1.0)), uint2(uint2(_103, _104))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xf61fd27 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_20 [[buffer(9)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint _83 = 6u + buf0_dword_off; uint _86 = 4u + buf1_dword_off; uint _89 = 5u + buf1_dword_off; uint _98 = 2u + buf0_dword_off; uint _109 = 10u + buf0_dword_off; uint _121 = 14u + buf0_dword_off; uint _133 = 18u + buf0_dword_off; uint _145 = 22u + buf0_dword_off; uint _161 = 26u + buf0_dword_off; uint _180 = 30u + buf0_dword_off; float4 _193 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[4u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[5u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _207 = 34u + buf0_dword_off; float4 _220 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[0u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[1u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _234 = 38u + buf0_dword_off; float4 _247 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[8u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[9u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _261 = 42u + buf0_dword_off; float4 _274 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[12u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[13u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _288 = 46u + buf0_dword_off; float4 _301 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[16u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[17u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _315 = 50u + buf0_dword_off; float4 _328 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[20u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[21u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _343 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[24u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[25u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _358 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[28u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[29u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _373 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[32u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[33u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _388 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[36u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[37u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _403 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[40u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[41u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _418 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[44u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[45u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _427 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_86]), as_type(cbuf_20.data[48u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_89]), as_type(cbuf_20.data[49u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _513 = fma(as_type(cbuf_20.data[_261]), _403.x, fma(as_type(cbuf_20.data[_234]), _388.x, fma(as_type(cbuf_20.data[_207]), _373.x, fma(as_type(cbuf_20.data[_180]), _358.x, fma(as_type(cbuf_20.data[_161]), _343.x, fma(as_type(cbuf_20.data[_145]), _328.x, fma(as_type(cbuf_20.data[_133]), _301.x, fma(as_type(cbuf_20.data[_121]), _274.x, fma(as_type(cbuf_20.data[_109]), _247.x, fma(as_type(cbuf_20.data[_98]), _220.x, spvFMul(as_type(cbuf_20.data[_83]), _193.x))))))))))); float _515 = fma(as_type(cbuf_20.data[_261]), _403.y, fma(as_type(cbuf_20.data[_234]), _388.y, fma(as_type(cbuf_20.data[_207]), _373.y, fma(as_type(cbuf_20.data[_180]), _358.y, fma(as_type(cbuf_20.data[_161]), _343.y, fma(as_type(cbuf_20.data[_145]), _328.y, fma(as_type(cbuf_20.data[_133]), _301.y, fma(as_type(cbuf_20.data[_121]), _274.y, fma(as_type(cbuf_20.data[_109]), _247.y, fma(as_type(cbuf_20.data[_98]), _220.y, spvFMul(as_type(cbuf_20.data[_83]), _193.y))))))))))); float _517 = fma(as_type(cbuf_20.data[_261]), _403.z, fma(as_type(cbuf_20.data[_234]), _388.z, fma(as_type(cbuf_20.data[_207]), _373.z, fma(as_type(cbuf_20.data[_180]), _358.z, fma(as_type(cbuf_20.data[_161]), _343.z, fma(as_type(cbuf_20.data[_145]), _328.z, fma(as_type(cbuf_20.data[_133]), _301.z, fma(as_type(cbuf_20.data[_121]), _274.z, fma(as_type(cbuf_20.data[_109]), _247.z, fma(as_type(cbuf_20.data[_98]), _220.z, spvFMul(as_type(cbuf_20.data[_83]), _193.z))))))))))); float _519 = fma(as_type(cbuf_20.data[_261]), _403.w, fma(as_type(cbuf_20.data[_234]), _388.w, fma(as_type(cbuf_20.data[_207]), _373.w, fma(as_type(cbuf_20.data[_180]), _358.w, fma(as_type(cbuf_20.data[_161]), _343.w, fma(as_type(cbuf_20.data[_145]), _328.w, fma(as_type(cbuf_20.data[_133]), _301.w, fma(as_type(cbuf_20.data[_121]), _274.w, fma(as_type(cbuf_20.data[_109]), _247.w, fma(as_type(cbuf_20.data[_98]), _220.w, spvFMul(as_type(cbuf_20.data[_83]), _193.w))))))))))); out.frag_color0.x = fma(as_type(cbuf_20.data[_315]), _427.x, fma(as_type(cbuf_20.data[_288]), _418.x, _513)); out.frag_color0.y = fma(as_type(cbuf_20.data[_315]), _427.y, fma(as_type(cbuf_20.data[_288]), _418.y, _515)); out.frag_color0.z = fma(as_type(cbuf_20.data[_315]), _427.z, fma(as_type(cbuf_20.data[_288]), _418.z, _517)); out.frag_color0.w = fma(as_type(cbuf_20.data[_315]), _427.w, fma(as_type(cbuf_20.data[_288]), _418.w, _519)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_42; float4 gl_Position; }; struct main0_in { float4 m_27; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _64 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _67 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _70 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _78 = ((_64.x && _70.y) || (_64.y && _70.x)) ? (-1.0) : 1.0; bool _85 = (_67.x && _64.y) || (_67.y && _64.x); float _86 = _85 ? (-1.0) : 1.0; bool _93 = (_70.x && _67.y) || (_70.y && _67.x); float _94 = _93 ? (-1.0) : 1.0; bool _98 = gl_InvocationID == 3; int _100 = ((_85 ? 1 : (_93 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _98 ? ((gl_in[0].gl_Position * _78) + ((gl_in[1].gl_Position * _86) + (gl_in[2].gl_Position * _94))) : gl_in[_100].gl_Position; gl_out[gl_InvocationID].m_42 = _98 ? ((gl_in[0].m_27 * _78) + ((gl_in[1].m_27 * _86) + (gl_in[2].m_27 * _94))) : gl_in[_100].m_27; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_31 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _43 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_43].gl_Position; out.m_31 = gl_in[_43].m_27; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xe96447c3 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8747a367 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint _76 = 0u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = as_type(cbuf_8.data[_76]); out.gl_Position.w = in.vs_in_attr0.w; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = as_type(cbuf_8.data[_76]); out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[36]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img24 [[texture(0)]], texture2d fs_img32 [[texture(1)]], texture2d fs_img64 [[texture(2)]], texture2d fs_img48 [[texture(3)]], texture2d fs_img40 [[texture(4)]], texturecube fs_img56 [[texture(5)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _205 = fs_img24.sample(fs_samp4, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _213 = fs_img32.sample(fs_samp4, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _214 = _213.x; float _218 = fma(2.0, _205.x, -1.0); float _219 = fma(2.0, _205.y, -1.0); float _220 = fma(2.0, _205.z, -1.0); float _224 = rsqrt(fma(_218, _218, fma(_219, _219, spvFMul(_220, _220)))); float _225 = spvFMul(_218, _224); float _226 = spvFMul(_219, _224); float _227 = spvFMul(_220, _224); float _241 = fma(as_type(cbuf_16.data[16u + buf0_dword_off]), _225, fma(as_type(cbuf_16.data[17u + buf0_dword_off]), _226, spvFMul(as_type(cbuf_16.data[18u + buf0_dword_off]), _227))); float _243 = fma(as_type(cbuf_16.data[20u + buf0_dword_off]), _225, fma(as_type(cbuf_16.data[21u + buf0_dword_off]), _226, spvFMul(as_type(cbuf_16.data[22u + buf0_dword_off]), _227))); float _245 = fma(as_type(cbuf_16.data[24u + buf0_dword_off]), _225, fma(as_type(cbuf_16.data[25u + buf0_dword_off]), _226, spvFMul(as_type(cbuf_16.data[26u + buf0_dword_off]), _227))); float _267 = fma(as_type(cbuf_16.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_16.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_16.data[2u + buf0_dword_off]), _214, as_type(cbuf_16.data[3u + buf0_dword_off])))); float _269 = fma(as_type(cbuf_16.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_16.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_16.data[6u + buf0_dword_off]), _214, as_type(cbuf_16.data[7u + buf0_dword_off])))); float _271 = fma(as_type(cbuf_16.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_16.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_16.data[10u + buf0_dword_off]), _214, as_type(cbuf_16.data[11u + buf0_dword_off])))); float _306 = 1.0 / fma(as_type(cbuf_16.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_16.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_16.data[14u + buf0_dword_off]), _214, as_type(cbuf_16.data[15u + buf0_dword_off])))); float _307 = spvFMul(_267, _306); float _308 = spvFMul(_269, _306); float _309 = spvFMul(_271, _306); float _313 = rsqrt(fma(_307, _307, fma(_308, _308, spvFMul(_309, _309)))); float _314 = spvFMul(_307, _313); float _315 = spvFMul(_308, _313); float _316 = spvFMul(_309, _313); float _320 = spvFMul(fma(_241, _314, fma(_243, _315, spvFMul(_245, _316))), 2.0); float _339 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_314, _241, fma(-_315, _243, spvFMul(_245, -_316)))))); float _344 = fma(-_267, _306, as_type(cbuf_20.data[0u + buf1_dword_off])); float _347 = fma(-_269, _306, as_type(cbuf_20.data[1u + buf1_dword_off])); float _350 = fma(-_271, _306, as_type(cbuf_20.data[2u + buf1_dword_off])); float _354 = rsqrt(fma(_344, _344, fma(_347, _347, spvFMul(_350, _350)))); float _355 = spvFMul(_344, _354); float _356 = spvFMul(_347, _354); float _357 = spvFMul(_350, _354); float _360 = fma(_241, _355, fma(_243, _356, spvFMul(_245, _357))); float _368 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_20.data[3u + buf1_dword_off]), fma(_344, _344, fma(_347, _347, spvFMul(_350, _350)))), 0.0, 1.0))); float _369 = spvFMul(_368, _368); float _372 = fma(-_267, _306, as_type(cbuf_20.data[20u + buf1_dword_off])); float _375 = fma(-_269, _306, as_type(cbuf_20.data[21u + buf1_dword_off])); float _378 = fma(-_271, _306, as_type(cbuf_20.data[22u + buf1_dword_off])); uint _379 = 4u + buf1_dword_off; uint _382 = 5u + buf1_dword_off; uint _385 = 6u + buf1_dword_off; uint _388 = 7u + buf1_dword_off; float _395 = fast::max(abs(_378), fast::max(abs(_372), abs(_375))); float _402 = 1.0 / spvFMul(-as_type(cbuf_20.data[17u + buf1_dword_off]), 1.0 / spvFAdd(as_type(cbuf_20.data[16u + buf1_dword_off]), -1.0)); float _408 = 1.0 / abs(1.0); float4 _416 = fs_img64.sample(fs_samp8, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _417 = _416.x; float4 _422 = fs_img48.sample(fs_samp4, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _423 = _422.x; float _424 = _422.y; float _425 = _422.z; float4 _430 = fs_img40.sample(fs_samp4, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _432 = _430.y; float4 _440 = fs_img56.sample(fs_samp8, float3(spvFSub(fma(-_372, _408, 1.5), 1.5), spvFSub(fma(-_375, _408, 1.5), 1.5), -_378)); float _441 = _440.x; float _448 = spvFMul(_423, _423); float _449 = spvFMul(_424, _424); float _450 = spvFMul(_425, _425); float _452 = spvFMul(10.0, _432); float _455 = exp2(spvFMul(13.0, _430.x)); bool _456 = _452 == 0.0; float _459 = float(_441 >= spvFMul(_395, _402)); float _465 = fast::max(spvFMul(0.001000000047497451305389404296875, _402), fma(-_441, _441, _440.y)); float _467 = fma(_395, _402, -_441); float _474 = fma(as_type(cbuf_20.data[19u + buf1_dword_off]), spvFAdd(-1.0, fast::max(_459, spvFMul(_465, 1.0 / fma(_467, _467, _465)))), 1.0); float _482 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_20.data[_388]), _455), 1.0 / fma(_455, 0.01000213623046875, as_type(cbuf_20.data[_388])))); float _486 = exp2(spvFMul(spvFMul(0.25, _482), log2(fast::clamp(fma(fma(_307, _313, -spvFMul(_241, _320)), _355, fma(fma(_308, _313, -spvFMul(_243, _320)), _356, spvFMul(fma(_309, _313, -spvFMul(_245, _320)), _357))), 0.0, 1.0)))); float _490 = spvFMul(_486, fma(0.125, _482, 0.25)); uint _494; if (_456) { _494 = as_type(fast::clamp(fast::max(_360, _360), 0.0, 1.0)); } else { _494 = as_type(_486); } uint _510; uint _511; uint _512; uint _513; if (_456) { float _496 = spvFMul(_369, as_type(_494)); float _502 = spvFMul(as_type(cbuf_20.data[_385]), _496); _510 = as_type(spvFMul(_474, spvFMul(as_type(cbuf_20.data[_379]), _496))); _511 = as_type(spvFMul(_474, _502)); _512 = as_type(_502); _513 = as_type(spvFMul(_474, spvFMul(as_type(cbuf_20.data[_382]), _496))); } else { _510 = as_type(_459); _511 = as_type(spvFMul(_339, _339)); _512 = _494; _513 = as_type(_432); } uint _518; if (!_456) { _518 = as_type(fma(as_type(_513), 10.0, _360)); } else { _518 = _512; } uint _557; uint _558; uint _559; if (!_456) { float _547 = fma(spvFMul(_369, _474), spvFMul(fast::max(0.0, as_type(_518)), 1.0 / fma(2.0, _452, 1.0)), spvFMul(_452, spvFMul(_369, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_20.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_355, _314, fma(_356, _315, spvFMul(_316, _357))), 0.0, 1.0)))), spvFMul(as_type(cbuf_20.data[12u + buf1_dword_off]), as_type(_511)))))); _557 = as_type(spvFMul(as_type(cbuf_20.data[_385]), _547)); _558 = as_type(spvFMul(as_type(cbuf_20.data[_382]), _547)); _559 = as_type(spvFMul(as_type(cbuf_20.data[_379]), _547)); } else { _557 = _511; _558 = _513; _559 = _510; } if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_448, spvFMul(_417, spvFMul(_474, spvFMul(_369, spvFMul(as_type(cbuf_20.data[8u + buf1_dword_off]), _490))))); out.frag_color1.y = spvFMul(_449, spvFMul(_417, spvFMul(_474, spvFMul(_369, spvFMul(as_type(cbuf_20.data[9u + buf1_dword_off]), _490))))); out.frag_color1.z = spvFMul(_450, spvFMul(_417, spvFMul(_474, spvFMul(_369, spvFMul(as_type(cbuf_20.data[10u + buf1_dword_off]), _490))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_417, spvFSub(as_type(_559), spvFMul(spvFMul(_448, as_type(_559)), 0.5))); out.frag_color0.y = spvFMul(_417, spvFSub(as_type(_558), spvFMul(spvFMul(_449, as_type(_558)), 0.5))); out.frag_color0.z = spvFMul(_417, spvFSub(as_type(_557), spvFMul(spvFMul(_450, as_type(_557)), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c8040.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c8030.anibnd.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xb6e87124 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x4ca76892 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wunused-variable" #include #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[4]; }; struct cs_cbuf_block_f32_1 { uint data[188]; }; struct cs_cbuf_block_f32_2 { uint data[1]; }; constant uint _215 = {}; constant uint _216 = {}; constant uint _217 = {}; constant uint _218 = {}; constant uint _219 = {}; constant uint _220 = {}; constant uint _221 = {}; constant uint _222 = {}; constant uint _223 = {}; constant uint _224 = {}; constant uint _225 = {}; constant uint _226 = {}; constant uint _227 = {}; constant uint _228 = {}; constant uint _229 = {}; constant uint _230 = {}; constant uint _231 = {}; constant uint _232 = {}; constant uint _233 = {}; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant cs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], device cs_cbuf_block_f32_2& ssbo_16 [[buffer(11)]], device cs_cbuf_block_f32_2& ssbo_0 [[buffer(12)]], device cs_cbuf_block_f32_2& ssbo_20 [[buffer(13)]], texture_buffer texbuf_4 [[texture(0)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint _275 = (gl_WorkGroupID.x << 7u) + gl_LocalInvocationID.x; uint _292 = 0u + buf1_dword_off; uint _295 = 2u + buf1_dword_off; uint _302 = cbuf_24.data[_292] + as_type(float4(as_type(texbuf_4.read(uint(((0u << extract_bits(push_data.buf_offsets0[1u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[1u], 8u, 6u))))).x, 0.0, 0.0, 0.0).x); bool _305 = (cbuf_8.data[0u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u)] > _302) && (cbuf_24.data[_292] > _275); if (_305) { uint _307 = 63u & (gl_LocalInvocationID.x + ((gl_LocalInvocationID.z << 7u) + (gl_LocalInvocationID.y << 7u))); uint _308 = _307 << 4u; uint2 _309 = uint2(0u, _308); uint _317 = (((0u + (_309.x * 1024u)) + _309.y) + buf2_off) >> 2u; uint4 _330 = uint4(ssbo_16.data[_317 + 0u], ssbo_16.data[_317 + 1u], ssbo_16.data[_317 + 2u], ssbo_16.data[_317 + 3u]); uint _331 = _330.x; uint _332 = _330.y; uint _333 = _330.z; uint _334 = _330.w; uint _340 = 137u + buf1_dword_off; bool _343 = cbuf_24.data[_295] == 0u; uint _345; uint _346; uint _347; uint _348; uint _349; uint _350; uint _351; uint _352; uint _353; uint _354; uint _355; uint _356; uint _357; uint _358; uint _359; uint _360; uint _361; if (_343) { _345 = 0u; _346 = 1065353216u; _347 = 0u; _348 = _332; _349 = _331; _350 = _334; _351 = _333; _352 = 0u; _353 = 0u; _354 = 0u; _355 = 0u; _356 = 1065353216u; _357 = 1065353216u; _358 = 0u; _359 = 0u; _360 = 1065353216u; _361 = 0u; } else { _345 = _302; _346 = _215; _347 = _216; _348 = _217; _349 = _218; _350 = _219; _351 = _220; _352 = _221; _353 = _222; _354 = _223; _355 = _307; _356 = _228; _357 = _231; _358 = _232; _359 = _233; _360 = _334; _361 = _333; } uint _1848; uint _1849; uint _1850; uint _1851; uint _1852; uint _1853; uint _1854; uint _1855; uint _1856; uint _1857; uint _1858; uint _1859; uint _1860; uint _1861; uint _1862; uint _1863; uint _1864; if (!_343) { bool _362 = cbuf_24.data[_295] == 1u; uint _595; uint _596; uint _597; uint _598; uint _599; uint _600; uint _601; uint _602; uint _603; uint _604; uint _605; uint _606; uint _607; uint _608; uint _609; uint _610; uint _611; uint _612; uint _613; uint _614; if (_362) { uint _373 = _331 + ((_332 ^ ((_332 << 4u) + 2738958700u)) ^ ((_332 >> 5u) + 3355524772u)); uint _382 = _332 + ((_373 ^ ((_373 << 4u) + 2911926141u)) ^ ((_373 >> 5u) + 2123724318u)); uint _389 = _361 + ((_360 ^ ((_360 << 4u) + 2738958700u)) ^ ((_360 >> 5u) + 3355524772u)); uint _396 = _360 + ((_389 ^ ((_389 << 4u) + 2911926141u)) ^ ((_389 >> 5u) + 2123724318u)); uint _405 = _373 + ((((_382 << 4u) + 2738958700u) ^ (_382 + 2654435769u)) ^ ((_382 >> 5u) + 3355524772u)); uint _413 = _382 + ((((_405 << 4u) + 2911926141u) ^ (_405 + 2654435769u)) ^ ((_405 >> 5u) + 2123724318u)); uint _421 = _389 + ((((_396 << 4u) + 2738958700u) ^ (_396 + 2654435769u)) ^ ((_396 >> 5u) + 3355524772u)); uint _429 = _396 + ((((_421 << 4u) + 2911926141u) ^ (_421 + 2654435769u)) ^ ((_421 >> 5u) + 2123724318u)); uint _438 = _405 + ((((_413 << 4u) + 2738958700u) ^ (_413 + 1013904242u)) ^ ((_413 >> 5u) + 3355524772u)); uint _446 = _413 + ((((_438 << 4u) + 2911926141u) ^ (_438 + 1013904242u)) ^ ((_438 >> 5u) + 2123724318u)); uint _454 = _421 + ((((_429 << 4u) + 2738958700u) ^ (_429 + 1013904242u)) ^ ((_429 >> 5u) + 3355524772u)); uint _464 = _438 + (_275 + _446); uint _469 = ((spvMulExtended(_464, 2863311531u))._m1 >> 2u) * 6u; uint _470 = _464 - _469; uint _472 = min(5u, _470); bool _473 = 0u == _472; bool _474 = _305 && _473; uint _475; if (_474) { _475 = 0u; } else { _475 = _357; } uint _476; uint _477; uint _478; uint _479; uint _480; uint _481; uint _482; uint _483; if (_474) { _476 = 2147483648u; _477 = 0u; _478 = 3212836864u; _479 = 1065353216u; _480 = 0u; _481 = 1065353216u; _482 = 0u; _483 = 2147483648u; } else { _476 = _346; _477 = _347; _478 = _355; _479 = _469; _480 = _421; _481 = _358; _482 = _359; _483 = _470; } bool _485 = _305 && (!_474); bool _487; if (_485) { _487 = 1u == _472; } else { _487 = _473; } uint _585; uint _586; uint _587; uint _588; uint _589; uint _590; uint _591; uint _592; uint _593; uint _594; if (_485) { bool _488 = _485 && _487; uint _489; if (_488) { _489 = 0u; } else { _489 = _475; } uint _490; uint _491; uint _492; uint _493; uint _494; uint _495; uint _496; uint _497; if (_488) { _490 = 1065353216u; _491 = 2147483648u; _492 = 0u; _493 = 2147483648u; _494 = 3212836864u; _495 = 0u; _496 = 1065353216u; _497 = 0u; } else { _490 = _476; _491 = _477; _492 = _478; _493 = _479; _494 = _480; _495 = _481; _496 = _482; _497 = _483; } bool _499 = _485 && (!_488); bool _501; if (_499) { _501 = 2u == _472; } else { _501 = _487; } uint _575; uint _576; uint _577; uint _578; uint _579; uint _580; uint _581; uint _582; uint _583; uint _584; if (_499) { bool _502 = _499 && _501; uint _503; if (_502) { _503 = 1065353216u; } else { _503 = _489; } uint _504; uint _505; uint _506; uint _507; uint _508; uint _509; uint _510; if (_502) { _504 = 1065353216u; _505 = 0u; _506 = 1065353216u; _507 = 0u; _508 = 0u; _509 = 0u; _510 = 0u; } else { _504 = _490; _505 = _492; _506 = _493; _507 = _494; _508 = _495; _509 = _496; _510 = _497; } bool _512 = _499 && (!_502); bool _514; if (_512) { _514 = 3u == _472; } else { _514 = _501; } uint _566; uint _567; uint _568; uint _569; uint _570; uint _571; uint _572; uint _573; uint _574; if (_512) { bool _515 = _512 && _514; uint _516; if (_515) { _516 = 2147483648u; } else { _516 = _503; } uint _517; uint _518; uint _519; uint _520; uint _521; uint _522; uint _523; if (_515) { _517 = 0u; _518 = 1065353216u; _519 = 1065353216u; _520 = 0u; _521 = 3212836864u; _522 = 2147483648u; _523 = 0u; } else { _517 = _504; _518 = _505; _519 = _506; _520 = _507; _521 = _508; _522 = _509; _523 = _510; } bool _525 = _512 && (!_515); bool _527; if (_525) { _527 = 4u == _472; } else { _527 = _514; } uint _557; uint _558; uint _559; uint _560; uint _561; uint _562; uint _563; uint _564; uint _565; if (_525) { bool _528 = _525 && _527; uint _529; if (_528) { _529 = 2147483648u; } else { _529 = _516; } uint _530; uint _531; uint _532; uint _533; uint _534; uint _535; if (_528) { _530 = 1065353216u; _531 = 0u; _532 = 1065353216u; _533 = 2147483648u; _534 = 3212836864u; _535 = 0u; } else { _530 = _517; _531 = _519; _532 = _520; _533 = _521; _534 = _522; _535 = _523; } bool _537 = _525 && (!_528); uint _538; if (_537) { _538 = 0u; } else { _538 = _532; } uint _550; uint _551; uint _552; uint _553; uint _554; uint _555; uint _556; if (_537) { bool _539 = 5u == _472; float _541 = _539 ? (-0.0) : 0.0; float _545 = _539 ? (-1.0) : 1.0; _550 = as_type(_545); _551 = 2147483648u; _552 = 1065353216u; _553 = as_type(_545); _554 = as_type(_541); _555 = as_type(_541); _556 = as_type(_541); } else { _550 = _530; _551 = _227; _552 = _531; _553 = _529; _554 = _533; _555 = _534; _556 = _535; } _557 = _550; _558 = _556; _559 = _556; _560 = _551; _561 = _552; _562 = _538; _563 = _553; _564 = _554; _565 = _555; } else { _557 = _517; _558 = _523; _559 = _518; _560 = _227; _561 = _519; _562 = _520; _563 = _516; _564 = _521; _565 = _522; } _566 = _557; _567 = _558; _568 = _559; _569 = _560; _570 = _561; _571 = _562; _572 = _563; _573 = _564; _574 = _565; } else { _566 = _504; _567 = _510; _568 = _505; _569 = _227; _570 = _506; _571 = _507; _572 = _503; _573 = _508; _574 = _509; } _575 = _566; _576 = 0u; _577 = _567; _578 = _568; _579 = _569; _580 = _570; _581 = _571; _582 = _572; _583 = _573; _584 = _574; } else { _575 = _490; _576 = _491; _577 = _497; _578 = _492; _579 = _227; _580 = _493; _581 = _494; _582 = _489; _583 = _495; _584 = _496; } _585 = _575; _586 = _576; _587 = _577; _588 = _578; _589 = _579; _590 = _580; _591 = _581; _592 = _584; _593 = _583; _594 = _582; } else { _585 = _476; _586 = _477; _587 = _483; _588 = _478; _589 = _227; _590 = _479; _591 = _480; _592 = _482; _593 = _481; _594 = _475; } _595 = _472; _596 = _585; _597 = _586; _598 = _594; _599 = _446; _600 = _438; _601 = _429 + ((((_454 << 4u) + 2911926141u) ^ (_454 + 1013904242u)) ^ ((_454 >> 5u) + 2123724318u)); _602 = _454; _603 = _592; _604 = _593; _605 = _592; _606 = _587; _607 = _588; _608 = _589; _609 = _590; _610 = _593; _611 = _594; _612 = _591; _613 = _413; _614 = 2863311531u; } else { _595 = _345; _596 = _346; _597 = _347; _598 = _357; _599 = _348; _600 = _349; _601 = _350; _602 = _351; _603 = _352; _604 = _353; _605 = _359; _606 = _354; _607 = _355; _608 = _227; _609 = _356; _610 = _358; _611 = _360; _612 = _361; _613 = _332; _614 = cbuf_24.data[136u + buf1_dword_off]; } uint _1831; uint _1832; uint _1833; uint _1834; uint _1835; uint _1836; uint _1837; uint _1838; uint _1839; uint _1840; uint _1841; uint _1842; uint _1843; uint _1844; uint _1845; uint _1846; uint _1847; if (!_362) { bool _615 = cbuf_24.data[_295] == 2u; uint _1032; uint _1033; uint _1034; uint _1035; uint _1036; uint _1037; uint _1038; uint _1039; uint _1040; uint _1041; uint _1042; uint _1043; uint _1044; uint _1045; uint _1046; uint _1047; uint _1048; uint _1049; uint _1050; uint _1051; uint _1052; uint _1053; bool _1054; if (!_615) { bool _617 = cbuf_24.data[_295] == 3u; uint _1010; uint _1011; uint _1012; uint _1013; uint _1014; uint _1015; uint _1016; uint _1017; uint _1018; uint _1019; uint _1020; uint _1021; uint _1022; uint _1023; uint _1024; uint _1025; uint _1026; uint _1027; uint _1028; uint _1029; uint _1030; uint _1031; if (_617) { uint _625 = _331 + ((_613 ^ ((_613 << 4u) + 2738958700u)) ^ ((_613 >> 5u) + 3355524772u)); uint _632 = _613 + ((_625 ^ ((_625 << 4u) + 2911926141u)) ^ ((_625 >> 5u) + 2123724318u)); uint _639 = _612 + ((_611 ^ ((_611 << 4u) + 2738958700u)) ^ ((_611 >> 5u) + 3355524772u)); uint _646 = _611 + ((_639 ^ ((_639 << 4u) + 2911926141u)) ^ ((_639 >> 5u) + 2123724318u)); uint _654 = _625 + ((((_632 << 4u) + 2738958700u) ^ (_632 + 2654435769u)) ^ ((_632 >> 5u) + 3355524772u)); uint _662 = _632 + ((((_654 << 4u) + 2911926141u) ^ (_654 + 2654435769u)) ^ ((_654 >> 5u) + 2123724318u)); uint _670 = _639 + ((((_646 << 4u) + 2738958700u) ^ (_646 + 2654435769u)) ^ ((_646 >> 5u) + 3355524772u)); uint _678 = _646 + ((((_670 << 4u) + 2911926141u) ^ (_670 + 2654435769u)) ^ ((_670 >> 5u) + 2123724318u)); uint _686 = _654 + ((((_662 << 4u) + 2738958700u) ^ (_662 + 1013904242u)) ^ ((_662 >> 5u) + 3355524772u)); uint _694 = _662 + ((((_686 << 4u) + 2911926141u) ^ (_686 + 1013904242u)) ^ ((_686 >> 5u) + 2123724318u)); uint _702 = _670 + ((((_678 << 4u) + 2738958700u) ^ (_678 + 1013904242u)) ^ ((_678 >> 5u) + 3355524772u)); uint _710 = _678 + ((((_702 << 4u) + 2911926141u) ^ (_702 + 1013904242u)) ^ ((_702 >> 5u) + 2123724318u)); uint _719 = _686 + ((((_694 << 4u) + 2738958700u) ^ (_694 + 3668340011u)) ^ ((_694 >> 5u) + 3355524772u)); uint _727 = _694 + ((((_719 << 4u) + 2911926141u) ^ (_719 + 3668340011u)) ^ ((_719 >> 5u) + 2123724318u)); uint _735 = _702 + ((((_710 << 4u) + 2738958700u) ^ (_710 + 3668340011u)) ^ ((_710 >> 5u) + 3355524772u)); uint _743 = _710 + ((((_735 << 4u) + 2911926141u) ^ (_735 + 3668340011u)) ^ ((_735 >> 5u) + 2123724318u)); uint _752 = _719 + ((((_727 << 4u) + 2738958700u) ^ (_727 + 2027808484u)) ^ ((_727 >> 5u) + 3355524772u)); uint _760 = _727 + ((((_752 << 4u) + 2911926141u) ^ (_752 + 2027808484u)) ^ ((_752 >> 5u) + 2123724318u)); uint _768 = _735 + ((((_743 << 4u) + 2738958700u) ^ (_743 + 2027808484u)) ^ ((_743 >> 5u) + 3355524772u)); uint _776 = _743 + ((((_768 << 4u) + 2911926141u) ^ (_768 + 2027808484u)) ^ ((_768 >> 5u) + 2123724318u)); uint _785 = _752 + ((((_760 << 4u) + 2738958700u) ^ (_760 + 387276957u)) ^ ((_760 >> 5u) + 3355524772u)); uint _793 = _760 + ((((_785 << 4u) + 2911926141u) ^ (_785 + 387276957u)) ^ ((_785 >> 5u) + 2123724318u)); uint _801 = _768 + ((((_776 << 4u) + 2738958700u) ^ (_776 + 387276957u)) ^ ((_776 >> 5u) + 3355524772u)); uint _810 = _275 + _801; uint _818 = _275 + _793; float _836 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(fast::max(as_type(_614), as_type(_614)), 2.0), spvFMul(0.001000000047497451305389404296875, float(_810 - (((spvMulExtended(_810, 274877907u))._m1 >> 6u) * 1000u))), -as_type(_614))); float _847 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(0.001000000047497451305389404296875, float(_818 - (((spvMulExtended(_818, 274877907u))._m1 >> 6u) * 1000u))), spvFMul(fast::max(as_type(cbuf_24.data[_340]), as_type(cbuf_24.data[_340])), 2.0), -as_type(cbuf_24.data[_340]))); uint _856 = (2147483648u & as_type(_847)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _847)))); float _859 = sin(6.283185482025146484375 * as_type(_856)); uint _865 = (2147483648u & as_type(_836)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _836)))); float _869 = spvFMul(_859, cos(6.283185482025146484375 * as_type(_865))); float _873 = cos(6.283185482025146484375 * as_type(_856)); float _878 = spvFMul(_859, sin(6.283185482025146484375 * as_type(_865))); float _884 = sqrt(spvFAdd(1.0, fma(_878, _878, fma(_869, _869, spvFMul(_873, _873))))); bool _888 = _305 && (9.9999997473787516355514526367188e-05 >= _884); uint _889; uint _890; uint _891; if (_888) { _889 = 0u; _890 = 1065353216u; _891 = 0u; } else { _889 = _229; _890 = _610; _891 = _230; } bool _893 = _305 && (!_888); uint _896; if (_893) { _896 = as_type(fma(_878, _878, 1.0)); } else { _896 = as_type(_884); } uint _907; uint _908; uint _909; if (_893) { float _900 = rsqrt(fma(_869, _869, fma(_873, _873, as_type(_896)))); _907 = as_type(spvFMul(_873, _900)); _908 = as_type(spvFMul(_878, _900)); _909 = as_type(spvFMul(_869, _900)); } else { _907 = _891; _908 = _890; _909 = _889; } float _916 = fma(as_type(_907), 0.0, -spvFMul(1.0, as_type(_909))); float _921 = fma(as_type(_909), 0.0, -spvFMul(0.0, as_type(_908))); float _925 = fma(as_type(_908), 1.0, -spvFMul(0.0, as_type(_907))); float _928 = rsqrt(fma(_925, _925, fma(_921, _921, spvFMul(_916, _916)))); float _929 = spvFMul(_921, _928); float _930 = spvFMul(_916, _928); float _931 = spvFMul(_925, _928); bool _939 = ((9.9999997473787516355514526367188e-05 > abs(_930)) && (9.9999997473787516355514526367188e-05 > abs(_929))) && (9.9999997473787516355514526367188e-05 > abs(_931)); float _940 = _939 ? 0.0 : _931; float _942 = _939 ? 0.0500000007450580596923828125 : _930; float _944 = _939 ? 0.949999988079071044921875 : _929; float _951 = fma(as_type(_909), _944, -spvFMul(as_type(_907), _940)); float _956 = fma(as_type(_908), _940, -spvFMul(as_type(_909), _942)); float _960 = fma(as_type(_907), _942, -spvFMul(as_type(_908), _944)); float _963 = rsqrt(fma(_960, _960, fma(_956, _956, spvFMul(_951, _951)))); float _965 = spvFMul(_960, _963); float _967 = spvFMul(_956, _963); float _969 = spvFMul(_951, _963); float _974 = fma(_940, _967, -spvFMul(_944, _965)); float _977 = fma(_942, _965, -spvFMul(_940, _969)); float _980 = fma(_944, _969, -spvFMul(_942, _967)); float _983 = rsqrt(fma(_980, _980, fma(_977, _977, spvFMul(_974, _974)))); float _984 = spvFMul(_980, _983); float _986 = spvFMul(_977, _983); float _988 = spvFMul(_974, _983); float _993 = fma(_965, _986, -spvFMul(_967, _984)); float _996 = fma(_969, _984, -spvFMul(_965, _988)); float _999 = fma(_967, _988, -spvFMul(_969, _986)); float _1003 = rsqrt(fma(_999, _999, fma(_996, _996, spvFMul(_993, _993)))); _1010 = as_type(spvFMul(_999, _1003)); _1011 = as_type(_965); _1012 = as_type(_878); _1013 = _793; _1014 = _785; _1015 = _776 + ((((_801 << 4u) + 2911926141u) ^ (_801 + 387276957u)) ^ ((_801 >> 5u) + 2123724318u)); _1016 = _801; _1017 = as_type(_986); _1018 = as_type(spvFMul(_996, _1003)); _1019 = as_type(spvFMul(_993, _1003)); _1020 = as_type(_967); _1021 = as_type(_988); _1022 = as_type(_969); _1023 = as_type(_869); _1024 = as_type(_873); _1025 = as_type(_999); _1026 = as_type(_984); _1027 = as_type(_963); _1028 = 953267991u; _1029 = _776; _1030 = _768; _1031 = _760; } else { _1010 = _596; _1011 = _597; _1012 = _598; _1013 = _599; _1014 = _600; _1015 = _601; _1016 = _602; _1017 = _605; _1018 = _606; _1019 = _607; _1020 = _224; _1021 = _225; _1022 = _226; _1023 = _608; _1024 = _609; _1025 = _229; _1026 = _610; _1027 = _230; _1028 = _614; _1029 = _611; _1030 = _612; _1031 = _613; } _1032 = _1010; _1033 = _1011; _1034 = _1012; _1035 = _1013; _1036 = _1014; _1037 = _1015; _1038 = _1016; _1039 = _1017; _1040 = _1018; _1041 = _1019; _1042 = _1020; _1043 = _1021; _1044 = _1022; _1045 = _1023; _1046 = _1024; _1047 = _1025; _1048 = _1026; _1049 = _1027; _1050 = _1028; _1051 = _1029; _1052 = _1030; _1053 = _1031; _1054 = !_617; } else { _1032 = _596; _1033 = _597; _1034 = _598; _1035 = _599; _1036 = _600; _1037 = _601; _1038 = _602; _1039 = _605; _1040 = _606; _1041 = _607; _1042 = _224; _1043 = _225; _1044 = _226; _1045 = _608; _1046 = _609; _1047 = _229; _1048 = _610; _1049 = _230; _1050 = _614; _1051 = _611; _1052 = _612; _1053 = _613; _1054 = false; } uint _1815; uint _1816; uint _1817; uint _1818; uint _1819; uint _1820; uint _1821; uint _1822; uint _1823; uint _1824; uint _1825; uint _1826; uint _1827; uint _1828; uint _1829; uint _1830; if (_615 || _1054) { uint _1308; uint _1309; uint _1310; uint _1311; uint _1312; uint _1313; uint _1314; uint _1315; uint _1316; uint _1317; uint _1318; uint _1319; uint _1320; uint _1321; uint _1322; uint _1323; uint _1324; uint _1325; uint _1326; uint _1327; uint _1328; bool _1329; if (!_615) { bool _1057 = cbuf_24.data[_295] == 4u; uint _1287; uint _1288; uint _1289; uint _1290; uint _1291; uint _1292; uint _1293; uint _1294; uint _1295; uint _1296; uint _1297; uint _1298; uint _1299; uint _1300; uint _1301; uint _1302; uint _1303; uint _1304; uint _1305; uint _1306; uint _1307; if (_1057) { uint _1065 = _331 + ((_1053 ^ ((_1053 << 4u) + 2738958700u)) ^ ((_1053 >> 5u) + 3355524772u)); uint _1072 = _1053 + ((_1065 ^ ((_1065 << 4u) + 2911926141u)) ^ ((_1065 >> 5u) + 2123724318u)); uint _1079 = _1052 + ((_1051 ^ ((_1051 << 4u) + 2738958700u)) ^ ((_1051 >> 5u) + 3355524772u)); uint _1086 = _1051 + ((_1079 ^ ((_1079 << 4u) + 2911926141u)) ^ ((_1079 >> 5u) + 2123724318u)); uint _1094 = _1065 + ((((_1072 << 4u) + 2738958700u) ^ (_1072 + 2654435769u)) ^ ((_1072 >> 5u) + 3355524772u)); uint _1102 = _1072 + ((((_1094 << 4u) + 2911926141u) ^ (_1094 + 2654435769u)) ^ ((_1094 >> 5u) + 2123724318u)); uint _1110 = _1079 + ((((_1086 << 4u) + 2738958700u) ^ (_1086 + 2654435769u)) ^ ((_1086 >> 5u) + 3355524772u)); uint _1118 = _1086 + ((((_1110 << 4u) + 2911926141u) ^ (_1110 + 2654435769u)) ^ ((_1110 >> 5u) + 2123724318u)); uint _1126 = _1094 + ((((_1102 << 4u) + 2738958700u) ^ (_1102 + 1013904242u)) ^ ((_1102 >> 5u) + 3355524772u)); uint _1134 = _1102 + ((((_1126 << 4u) + 2911926141u) ^ (_1126 + 1013904242u)) ^ ((_1126 >> 5u) + 2123724318u)); uint _1142 = _1110 + ((((_1118 << 4u) + 2738958700u) ^ (_1118 + 1013904242u)) ^ ((_1118 >> 5u) + 3355524772u)); uint _1150 = _1118 + ((((_1142 << 4u) + 2911926141u) ^ (_1142 + 1013904242u)) ^ ((_1142 >> 5u) + 2123724318u)); uint _1158 = _1126 + ((((_1134 << 4u) + 2738958700u) ^ (_1134 + 3668340011u)) ^ ((_1134 >> 5u) + 3355524772u)); uint _1166 = _1134 + ((((_1158 << 4u) + 2911926141u) ^ (_1158 + 3668340011u)) ^ ((_1158 >> 5u) + 2123724318u)); uint _1174 = _1142 + ((((_1150 << 4u) + 2738958700u) ^ (_1150 + 3668340011u)) ^ ((_1150 >> 5u) + 3355524772u)); uint _1182 = _1150 + ((((_1174 << 4u) + 2911926141u) ^ (_1174 + 3668340011u)) ^ ((_1174 >> 5u) + 2123724318u)); uint _1190 = _1158 + ((((_1166 << 4u) + 2738958700u) ^ (_1166 + 2027808484u)) ^ ((_1166 >> 5u) + 3355524772u)); uint _1198 = _1166 + ((((_1190 << 4u) + 2911926141u) ^ (_1190 + 2027808484u)) ^ ((_1190 >> 5u) + 2123724318u)); uint _1206 = _1174 + ((((_1182 << 4u) + 2738958700u) ^ (_1182 + 2027808484u)) ^ ((_1182 >> 5u) + 3355524772u)); uint _1214 = _1182 + ((((_1206 << 4u) + 2911926141u) ^ (_1206 + 2027808484u)) ^ ((_1206 >> 5u) + 2123724318u)); uint _1222 = _1190 + ((((_1198 << 4u) + 2738958700u) ^ (_1198 + 387276957u)) ^ ((_1198 >> 5u) + 3355524772u)); uint _1230 = _1198 + ((((_1222 << 4u) + 2911926141u) ^ (_1222 + 387276957u)) ^ ((_1222 >> 5u) + 2123724318u)); uint _1238 = _1206 + ((((_1214 << 4u) + 2738958700u) ^ (_1214 + 387276957u)) ^ ((_1214 >> 5u) + 3355524772u)); uint _1247 = _275 + _1230; float _1258 = spvFMul(fma(spvFMul(0.001000000047497451305389404296875, float(_1247 - (((spvMulExtended(_1247, 274877907u))._m1 >> 6u) * 1000u))), 6.283185482025146484375, -3.1415927410125732421875), 0.5); uint _1265 = (2147483648u & as_type(_1258)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1258)))); float _1271 = cos(6.283185482025146484375 * as_type(_1265)); float _1272 = spvFMul(1.0, sin(6.283185482025146484375 * as_type(_1265))); float _1275 = spvFMul(spvFMul(_1272, -_1271), 2.0); float _1277 = spvFMul(_1271, _1271); float _1279 = fma(-_1272, _1272, _1277); _1287 = as_type(_1279); _1288 = 0u; _1289 = as_type(_1279); _1290 = _1230; _1291 = _1222; _1292 = _1214 + ((((_1238 << 4u) + 2911926141u) ^ (_1238 + 387276957u)) ^ ((_1238 >> 5u) + 2123724318u)); _1293 = _1238; _1294 = 0u; _1295 = 0u; _1296 = as_type(_1275); _1297 = as_type(fma(_1272, _1272, _1277)); _1298 = as_type(_1279); _1299 = 0u; _1300 = as_type(_1275); _1301 = 0u; _1302 = as_type(_1275); _1303 = _1190; _1304 = _1214; _1305 = _1206; _1306 = _1198; _1307 = 1086918619u; } else { _1287 = _1032; _1288 = _1033; _1289 = _1034; _1290 = _1035; _1291 = _1036; _1292 = _1037; _1293 = _1038; _1294 = _1039; _1295 = _1040; _1296 = _1041; _1297 = _1042; _1298 = _1043; _1299 = _1044; _1300 = _1045; _1301 = _1046; _1302 = _1048; _1303 = _1049; _1304 = _1051; _1305 = _1052; _1306 = _1053; _1307 = _1050; } _1308 = _1287; _1309 = _1288; _1310 = _1289; _1311 = _1290; _1312 = _1291; _1313 = _1292; _1314 = _1293; _1315 = _1294; _1316 = _1295; _1317 = _1296; _1318 = _1297; _1319 = _1298; _1320 = _1299; _1321 = _1300; _1322 = _1301; _1323 = _1302; _1324 = _1303; _1325 = _1304; _1326 = _1305; _1327 = _1306; _1328 = _1307; _1329 = !_1057; } else { _1308 = _1032; _1309 = _1033; _1310 = _1034; _1311 = _1035; _1312 = _1036; _1313 = _1037; _1314 = _1038; _1315 = _1039; _1316 = _1040; _1317 = _1041; _1318 = _1042; _1319 = _1043; _1320 = _1044; _1321 = _1045; _1322 = _1046; _1323 = _1048; _1324 = _1049; _1325 = _1051; _1326 = _1052; _1327 = _1053; _1328 = _1050; _1329 = false; } uint _1799; uint _1800; uint _1801; uint _1802; uint _1803; uint _1804; uint _1805; uint _1806; uint _1807; uint _1808; uint _1809; uint _1810; uint _1811; uint _1812; uint _1813; uint _1814; if (_615 || _1329) { uint _1729; uint _1730; uint _1731; uint _1732; uint _1733; uint _1734; uint _1735; uint _1736; uint _1737; uint _1738; uint _1739; uint _1740; uint _1741; uint _1742; uint _1743; uint _1744; uint _1745; uint _1746; uint _1747; bool _1748; if (!_615) { bool _1332 = cbuf_24.data[_295] == 5u; uint _1710; uint _1711; uint _1712; uint _1713; uint _1714; uint _1715; uint _1716; uint _1717; uint _1718; uint _1719; uint _1720; uint _1721; uint _1722; uint _1723; uint _1724; uint _1725; uint _1726; uint _1727; uint _1728; if (_1332) { uint _1340 = _331 + ((_1327 ^ ((_1327 << 4u) + 2738958700u)) ^ ((_1327 >> 5u) + 3355524772u)); uint _1347 = _1327 + ((_1340 ^ ((_1340 << 4u) + 2911926141u)) ^ ((_1340 >> 5u) + 2123724318u)); uint _1354 = _1326 + ((_1325 ^ ((_1325 << 4u) + 2738958700u)) ^ ((_1325 >> 5u) + 3355524772u)); uint _1361 = _1325 + ((_1354 ^ ((_1354 << 4u) + 2911926141u)) ^ ((_1354 >> 5u) + 2123724318u)); uint _1369 = _1340 + ((((_1347 << 4u) + 2738958700u) ^ (_1347 + 2654435769u)) ^ ((_1347 >> 5u) + 3355524772u)); uint _1377 = _1347 + ((((_1369 << 4u) + 2911926141u) ^ (_1369 + 2654435769u)) ^ ((_1369 >> 5u) + 2123724318u)); uint _1385 = _1354 + ((((_1361 << 4u) + 2738958700u) ^ (_1361 + 2654435769u)) ^ ((_1361 >> 5u) + 3355524772u)); uint _1393 = _1361 + ((((_1385 << 4u) + 2911926141u) ^ (_1385 + 2654435769u)) ^ ((_1385 >> 5u) + 2123724318u)); uint _1401 = _1369 + ((((_1377 << 4u) + 2738958700u) ^ (_1377 + 1013904242u)) ^ ((_1377 >> 5u) + 3355524772u)); uint _1409 = _1377 + ((((_1401 << 4u) + 2911926141u) ^ (_1401 + 1013904242u)) ^ ((_1401 >> 5u) + 2123724318u)); uint _1417 = _1385 + ((((_1393 << 4u) + 2738958700u) ^ (_1393 + 1013904242u)) ^ ((_1393 >> 5u) + 3355524772u)); uint _1425 = _1393 + ((((_1417 << 4u) + 2911926141u) ^ (_1417 + 1013904242u)) ^ ((_1417 >> 5u) + 2123724318u)); uint _1433 = _1401 + ((((_1409 << 4u) + 2738958700u) ^ (_1409 + 3668340011u)) ^ ((_1409 >> 5u) + 3355524772u)); uint _1441 = _1409 + ((((_1433 << 4u) + 2911926141u) ^ (_1433 + 3668340011u)) ^ ((_1433 >> 5u) + 2123724318u)); uint _1449 = _1417 + ((((_1425 << 4u) + 2738958700u) ^ (_1425 + 3668340011u)) ^ ((_1425 >> 5u) + 3355524772u)); uint _1457 = _1425 + ((((_1449 << 4u) + 2911926141u) ^ (_1449 + 3668340011u)) ^ ((_1449 >> 5u) + 2123724318u)); uint _1465 = _1433 + ((((_1441 << 4u) + 2738958700u) ^ (_1441 + 2027808484u)) ^ ((_1441 >> 5u) + 3355524772u)); uint _1473 = _1441 + ((((_1465 << 4u) + 2911926141u) ^ (_1465 + 2027808484u)) ^ ((_1465 >> 5u) + 2123724318u)); uint _1481 = _1449 + ((((_1457 << 4u) + 2738958700u) ^ (_1457 + 2027808484u)) ^ ((_1457 >> 5u) + 3355524772u)); uint _1489 = _1457 + ((((_1481 << 4u) + 2911926141u) ^ (_1481 + 2027808484u)) ^ ((_1481 >> 5u) + 2123724318u)); uint _1497 = _1465 + ((((_1473 << 4u) + 2738958700u) ^ (_1473 + 387276957u)) ^ ((_1473 >> 5u) + 3355524772u)); uint _1505 = _1473 + ((((_1497 << 4u) + 2911926141u) ^ (_1497 + 387276957u)) ^ ((_1497 >> 5u) + 2123724318u)); uint _1513 = _1481 + ((((_1489 << 4u) + 2738958700u) ^ (_1489 + 387276957u)) ^ ((_1489 >> 5u) + 3355524772u)); uint _1522 = _275 + _1513; uint _1528 = _275 + _1505; float _1543 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(fast::max(as_type(_1328), as_type(_1328)), 2.0), spvFMul(0.001000000047497451305389404296875, float(_1522 - (((spvMulExtended(_1522, 274877907u))._m1 >> 6u) * 1000u))), -as_type(_1328))); float _1554 = spvFAdd(-1.57079637050628662109375, fma(spvFMul(fast::max(as_type(cbuf_24.data[_340]), as_type(cbuf_24.data[_340])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_1528 - (((spvMulExtended(_1528, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_24.data[_340]))); uint _1561 = (2147483648u & as_type(_1554)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1554)))); float _1564 = sin(6.283185482025146484375 * as_type(_1561)); uint _1570 = (2147483648u & as_type(_1543)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1543)))); float _1574 = spvFMul(_1564, cos(6.283185482025146484375 * as_type(_1570))); float _1578 = cos(6.283185482025146484375 * as_type(_1561)); float _1583 = spvFMul(_1564, sin(6.283185482025146484375 * as_type(_1570))); float _1589 = sqrt(spvFAdd(1.0, fma(_1583, _1583, fma(_1574, _1574, spvFMul(_1578, _1578))))); bool _1592 = _305 && (9.9999997473787516355514526367188e-05 >= _1589); uint _1593; uint _1594; uint _1595; if (_1592) { _1593 = 0u; _1594 = 1065353216u; _1595 = 0u; } else { _1593 = _1047; _1594 = _1323; _1595 = _1324; } bool _1597 = _305 && (!_1592); uint _1600; if (_1597) { _1600 = as_type(fma(_1583, _1583, 1.0)); } else { _1600 = as_type(_1589); } uint _1611; uint _1612; uint _1613; if (_1597) { float _1604 = rsqrt(fma(_1574, _1574, fma(_1578, _1578, as_type(_1600)))); _1611 = as_type(spvFMul(_1578, _1604)); _1612 = as_type(spvFMul(_1583, _1604)); _1613 = as_type(spvFMul(_1574, _1604)); } else { _1611 = _1595; _1612 = _1594; _1613 = _1593; } float _1620 = fma(as_type(_1611), 0.0, -spvFMul(1.0, as_type(_1613))); float _1625 = fma(as_type(_1613), 0.0, -spvFMul(0.0, as_type(_1612))); float _1629 = fma(as_type(_1612), 1.0, -spvFMul(0.0, as_type(_1611))); float _1632 = rsqrt(fma(_1629, _1629, fma(_1625, _1625, spvFMul(_1620, _1620)))); float _1633 = spvFMul(_1625, _1632); float _1634 = spvFMul(_1620, _1632); float _1635 = spvFMul(_1629, _1632); bool _1643 = ((9.9999997473787516355514526367188e-05 > abs(_1634)) && (9.9999997473787516355514526367188e-05 > abs(_1633))) && (9.9999997473787516355514526367188e-05 > abs(_1635)); float _1644 = _1643 ? 0.0 : _1635; float _1645 = _1643 ? 0.0500000007450580596923828125 : _1634; float _1646 = _1643 ? 0.949999988079071044921875 : _1633; float _1653 = fma(as_type(_1613), _1646, -spvFMul(as_type(_1611), _1644)); float _1658 = fma(as_type(_1612), _1644, -spvFMul(as_type(_1613), _1645)); float _1662 = fma(as_type(_1611), _1645, -spvFMul(as_type(_1612), _1646)); float _1665 = rsqrt(fma(_1662, _1662, fma(_1658, _1658, spvFMul(_1653, _1653)))); float _1666 = spvFMul(_1662, _1665); float _1668 = spvFMul(_1658, _1665); float _1670 = spvFMul(_1653, _1665); float _1675 = fma(_1644, _1668, -spvFMul(_1646, _1666)); float _1678 = fma(_1645, _1666, -spvFMul(_1644, _1670)); float _1681 = fma(_1646, _1670, -spvFMul(_1645, _1668)); float _1684 = rsqrt(fma(_1681, _1681, fma(_1678, _1678, spvFMul(_1675, _1675)))); float _1685 = spvFMul(_1681, _1684); float _1687 = spvFMul(_1678, _1684); float _1689 = spvFMul(_1675, _1684); float _1694 = fma(_1666, _1687, -spvFMul(_1668, _1685)); float _1697 = fma(_1670, _1685, -spvFMul(_1666, _1689)); float _1700 = fma(_1668, _1689, -spvFMul(_1670, _1687)); float _1703 = rsqrt(fma(_1700, _1700, fma(_1697, _1697, spvFMul(_1694, _1694)))); _1710 = as_type(spvFMul(_1700, _1703)); _1711 = as_type(_1666); _1712 = as_type(_1583); _1713 = _1505; _1714 = _1497; _1715 = _1489 + ((((_1513 << 4u) + 2911926141u) ^ (_1513 + 387276957u)) ^ ((_1513 >> 5u) + 2123724318u)); _1716 = _1513; _1717 = as_type(_1685); _1718 = as_type(_1687); _1719 = as_type(spvFMul(_1697, _1703)); _1720 = as_type(spvFMul(_1694, _1703)); _1721 = as_type(_1668); _1722 = as_type(_1689); _1723 = as_type(_1670); _1724 = as_type(_1574); _1725 = as_type(_1578); _1726 = _1489; _1727 = _1481; _1728 = _1473; } else { _1710 = _1308; _1711 = _1309; _1712 = _1310; _1713 = _1311; _1714 = _1312; _1715 = _1313; _1716 = _1314; _1717 = _1323; _1718 = _1315; _1719 = _1316; _1720 = _1317; _1721 = _1318; _1722 = _1319; _1723 = _1320; _1724 = _1321; _1725 = _1322; _1726 = _1325; _1727 = _1326; _1728 = _1327; } _1729 = _1710; _1730 = _1711; _1731 = _1712; _1732 = _1713; _1733 = _1714; _1734 = _1715; _1735 = _1716; _1736 = _1717; _1737 = _1718; _1738 = _1719; _1739 = _1720; _1740 = _1721; _1741 = _1722; _1742 = _1723; _1743 = _1724; _1744 = _1725; _1745 = _1726; _1746 = _1727; _1747 = _1728; _1748 = !_1332; } else { _1729 = _1308; _1730 = _1309; _1731 = _1310; _1732 = _1311; _1733 = _1312; _1734 = _1313; _1735 = _1314; _1736 = _1323; _1737 = _1315; _1738 = _1316; _1739 = _1317; _1740 = _1318; _1741 = _1319; _1742 = _1320; _1743 = _1321; _1744 = _1322; _1745 = _1325; _1746 = _1326; _1747 = _1327; _1748 = false; } uint _1783; uint _1784; uint _1785; uint _1786; uint _1787; uint _1788; uint _1789; uint _1790; uint _1791; uint _1792; uint _1793; uint _1794; uint _1795; uint _1796; uint _1797; uint _1798; if (_615 || _1748) { uint _1751; uint _1752; uint _1753; uint _1754; uint _1755; uint _1756; uint _1757; uint _1758; uint _1759; uint _1760; uint _1761; uint _1762; uint _1763; uint _1764; uint _1765; uint _1766; if (!_615) { _1751 = 1065353216u; _1752 = 0u; _1753 = 1065353216u; _1754 = _1747; _1755 = _331; _1756 = _1745; _1757 = _1746; _1758 = 0u; _1759 = 0u; _1760 = 0u; _1761 = 0u; _1762 = 1065353216u; _1763 = 1065353216u; _1764 = 0u; _1765 = 0u; _1766 = 0u; } else { _1751 = _1729; _1752 = _1730; _1753 = _1731; _1754 = _1732; _1755 = _1733; _1756 = _1734; _1757 = _1735; _1758 = _1736; _1759 = _1737; _1760 = _1738; _1761 = _1739; _1762 = _1740; _1763 = _1741; _1764 = _1742; _1765 = _1743; _1766 = _1744; } uint _1767; uint _1768; uint _1769; uint _1770; uint _1771; uint _1772; uint _1773; uint _1774; uint _1775; uint _1776; uint _1777; uint _1778; uint _1779; uint _1780; uint _1781; uint _1782; if (_615) { _1767 = 1065353216u; _1768 = 0u; _1769 = 1065353216u; _1770 = _1747; _1771 = _331; _1772 = _1745; _1773 = _1746; _1774 = 0u; _1775 = 0u; _1776 = 0u; _1777 = 0u; _1778 = 1065353216u; _1779 = 1065353216u; _1780 = 0u; _1781 = 0u; _1782 = 0u; } else { _1767 = _1751; _1768 = _1752; _1769 = _1753; _1770 = _1754; _1771 = _1755; _1772 = _1756; _1773 = _1757; _1774 = _1758; _1775 = _1759; _1776 = _1760; _1777 = _1761; _1778 = _1762; _1779 = _1763; _1780 = _1764; _1781 = _1765; _1782 = _1766; } _1783 = _1767; _1784 = _1768; _1785 = _1769; _1786 = _1770; _1787 = _1771; _1788 = _1772; _1789 = _1773; _1790 = _1774; _1791 = _1775; _1792 = _1776; _1793 = _1777; _1794 = _1778; _1795 = _1779; _1796 = _1780; _1797 = _1781; _1798 = _1782; } else { _1783 = _1729; _1784 = _1730; _1785 = _1731; _1786 = _1732; _1787 = _1733; _1788 = _1734; _1789 = _1735; _1790 = _1736; _1791 = _1737; _1792 = _1738; _1793 = _1739; _1794 = _1740; _1795 = _1741; _1796 = _1742; _1797 = _1743; _1798 = _1744; } _1799 = _1783; _1800 = _1784; _1801 = _1785; _1802 = _1786; _1803 = _1787; _1804 = _1788; _1805 = _1789; _1806 = _1790; _1807 = _1791; _1808 = _1792; _1809 = _1793; _1810 = _1794; _1811 = _1795; _1812 = _1796; _1813 = _1797; _1814 = _1798; } else { _1799 = _1308; _1800 = _1309; _1801 = _1310; _1802 = _1311; _1803 = _1312; _1804 = _1313; _1805 = _1314; _1806 = _1323; _1807 = _1315; _1808 = _1316; _1809 = _1317; _1810 = _1318; _1811 = _1319; _1812 = _1320; _1813 = _1321; _1814 = _1322; } _1815 = _1799; _1816 = _1800; _1817 = _1801; _1818 = _1802; _1819 = _1803; _1820 = _1804; _1821 = _1805; _1822 = _1806; _1823 = _1807; _1824 = _1808; _1825 = _1809; _1826 = _1810; _1827 = _1814; _1828 = _1813; _1829 = _1811; _1830 = _1812; } else { _1815 = _1032; _1816 = _1033; _1817 = _1034; _1818 = _1035; _1819 = _1036; _1820 = _1037; _1821 = _1038; _1822 = _1048; _1823 = _1039; _1824 = _1040; _1825 = _1041; _1826 = _1042; _1827 = _1046; _1828 = _1045; _1829 = _1043; _1830 = _1044; } _1831 = 0u; _1832 = _1815; _1833 = _1816; _1834 = _1817; _1835 = _1818; _1836 = _1819; _1837 = _1820; _1838 = _1821; _1839 = _1827; _1840 = _1828; _1841 = _1822; _1842 = _1823; _1843 = _1826; _1844 = _1824; _1845 = _1829; _1846 = _1830; _1847 = _1825; } else { _1831 = _595; _1832 = _596; _1833 = _597; _1834 = _598; _1835 = _599; _1836 = _600; _1837 = _601; _1838 = _602; _1839 = _603; _1840 = _604; _1841 = _610; _1842 = _605; _1843 = _609; _1844 = _606; _1845 = _611; _1846 = _612; _1847 = _607; } _1848 = _1831; _1849 = _1845; _1850 = _1846; _1851 = _1847; _1852 = _1840; _1853 = _1842; _1854 = _1843; _1855 = _1844; _1856 = _1839; _1857 = _1841; _1858 = _1833; _1859 = _1832; _1860 = _1834; _1861 = _1836; _1862 = _1835; _1863 = _1838; _1864 = _1837; } else { _1848 = _345; _1849 = _360; _1850 = _361; _1851 = _355; _1852 = _353; _1853 = _359; _1854 = _356; _1855 = _354; _1856 = _352; _1857 = _358; _1858 = _347; _1859 = _346; _1860 = _357; _1861 = _349; _1862 = _348; _1863 = _351; _1864 = _350; } uint _1871 = _1863 + ((_1864 ^ ((_1864 << 4u) + 2738958700u)) ^ ((_1864 >> 5u) + 3355524772u)); uint _1878 = _1864 + ((_1871 ^ ((_1871 << 4u) + 2911926141u)) ^ ((_1871 >> 5u) + 2123724318u)); uint _1886 = _1871 + ((((_1878 << 4u) + 2738958700u) ^ (_1878 + 2654435769u)) ^ ((_1878 >> 5u) + 3355524772u)); uint _1894 = _1878 + ((((_1886 << 4u) + 2911926141u) ^ (_1886 + 2654435769u)) ^ ((_1886 >> 5u) + 2123724318u)); uint _1901 = _1886 + ((_1894 ^ ((_1894 << 4u) + 2738958700u)) ^ ((_1894 >> 5u) + 3355524772u)); uint _1908 = _1894 + ((_1901 ^ ((_1901 << 4u) + 2911926141u)) ^ ((_1901 >> 5u) + 2123724318u)); uint _1916 = _1901 + ((((_1908 << 4u) + 2738958700u) ^ (_1908 + 2654435769u)) ^ ((_1908 >> 5u) + 3355524772u)); uint _1924 = _1908 + ((((_1916 << 4u) + 2911926141u) ^ (_1916 + 2654435769u)) ^ ((_1916 >> 5u) + 2123724318u)); uint _1931 = _1916 + ((_1924 ^ ((_1924 << 4u) + 2738958700u)) ^ ((_1924 >> 5u) + 3355524772u)); uint _1938 = _1924 + ((_1931 ^ ((_1931 << 4u) + 2911926141u)) ^ ((_1931 >> 5u) + 2123724318u)); uint _1946 = _1931 + ((((_1938 << 4u) + 2738958700u) ^ (_1938 + 2654435769u)) ^ ((_1938 >> 5u) + 3355524772u)); uint _1954 = _1938 + ((((_1946 << 4u) + 2911926141u) ^ (_1946 + 2654435769u)) ^ ((_1946 >> 5u) + 2123724318u)); uint _1961 = _1946 + ((_1954 ^ ((_1954 << 4u) + 2738958700u)) ^ ((_1954 >> 5u) + 3355524772u)); uint _1968 = _1954 + ((_1961 ^ ((_1961 << 4u) + 2911926141u)) ^ ((_1961 >> 5u) + 2123724318u)); uint _1982 = _1861 + ((_1862 ^ ((_1862 << 4u) + 2738958700u)) ^ ((_1862 >> 5u) + 3355524772u)); uint _1983 = _1961 + ((((_1968 << 4u) + 2738958700u) ^ (_1968 + 2654435769u)) ^ ((_1968 >> 5u) + 3355524772u)); uint _1997 = _1862 + ((_1982 ^ ((_1982 << 4u) + 2911926141u)) ^ ((_1982 >> 5u) + 2123724318u)); uint _1998 = _1968 + ((((_1983 << 4u) + 2911926141u) ^ (_1983 + 2654435769u)) ^ ((_1983 >> 5u) + 2123724318u)); uint _2012 = _1982 + ((((_1997 << 4u) + 2738958700u) ^ (_1997 + 2654435769u)) ^ ((_1997 >> 5u) + 3355524772u)); uint _2013 = _1983 + ((_1998 ^ ((_1998 << 4u) + 2738958700u)) ^ ((_1998 >> 5u) + 3355524772u)); uint _2027 = _1997 + ((((_2012 << 4u) + 2911926141u) ^ (_2012 + 2654435769u)) ^ ((_2012 >> 5u) + 2123724318u)); uint _2028 = _1998 + ((_2013 ^ ((_2013 << 4u) + 2911926141u)) ^ ((_2013 >> 5u) + 2123724318u)); uint _2037 = 164u + buf1_dword_off; uint _2041 = 165u + buf1_dword_off; uint _2045 = 166u + buf1_dword_off; uint _2053 = 168u + buf1_dword_off; uint _2057 = 169u + buf1_dword_off; uint _2061 = 170u + buf1_dword_off; uint _2069 = 172u + buf1_dword_off; uint _2073 = 173u + buf1_dword_off; uint _2077 = 174u + buf1_dword_off; uint _2089 = 148u + buf1_dword_off; uint _2093 = 149u + buf1_dword_off; uint _2097 = 150u + buf1_dword_off; uint _2101 = 151u + buf1_dword_off; uint _2105 = 152u + buf1_dword_off; uint _2109 = 153u + buf1_dword_off; uint _2113 = 154u + buf1_dword_off; uint _2117 = 155u + buf1_dword_off; uint _2122 = _2012 + ((_2027 ^ ((_2027 << 4u) + 2738958700u)) ^ ((_2027 >> 5u) + 3355524772u)); uint _2123 = _2013 + ((((_2028 << 4u) + 2738958700u) ^ (_2028 + 2654435769u)) ^ ((_2028 >> 5u) + 3355524772u)); uint _2125 = 156u + buf1_dword_off; uint _2129 = 157u + buf1_dword_off; uint _2133 = 158u + buf1_dword_off; uint _2137 = 159u + buf1_dword_off; uint _2216 = _2027 + ((_2122 ^ ((_2122 << 4u) + 2911926141u)) ^ ((_2122 >> 5u) + 2123724318u)); uint _2217 = _2028 + ((((_2123 << 4u) + 2911926141u) ^ (_2123 + 2654435769u)) ^ ((_2123 >> 5u) + 2123724318u)); float _2223 = fma(as_type(cbuf_24.data[_2125]), as_type(cbuf_24.data[_2045]), fma(as_type(cbuf_24.data[_2105]), as_type(cbuf_24.data[_2041]), spvFMul(as_type(cbuf_24.data[_2089]), as_type(cbuf_24.data[_2037])))); float _2227 = fma(as_type(cbuf_24.data[_2133]), as_type(cbuf_24.data[_2045]), fma(as_type(cbuf_24.data[_2113]), as_type(cbuf_24.data[_2041]), spvFMul(as_type(cbuf_24.data[_2097]), as_type(cbuf_24.data[_2037])))); float _2237 = fma(as_type(cbuf_24.data[_2125]), as_type(cbuf_24.data[_2061]), fma(as_type(cbuf_24.data[_2105]), as_type(cbuf_24.data[_2057]), spvFMul(as_type(cbuf_24.data[_2089]), as_type(cbuf_24.data[_2053])))); float _2240 = fma(as_type(cbuf_24.data[_2133]), as_type(cbuf_24.data[_2061]), fma(as_type(cbuf_24.data[_2113]), as_type(cbuf_24.data[_2057]), spvFMul(as_type(cbuf_24.data[_2097]), as_type(cbuf_24.data[_2053])))); float _2249 = fma(as_type(cbuf_24.data[_2125]), as_type(cbuf_24.data[_2077]), fma(as_type(cbuf_24.data[_2105]), as_type(cbuf_24.data[_2073]), spvFMul(as_type(cbuf_24.data[_2089]), as_type(cbuf_24.data[_2069])))); float _2252 = fma(as_type(cbuf_24.data[_2133]), as_type(cbuf_24.data[_2077]), fma(as_type(cbuf_24.data[_2113]), as_type(cbuf_24.data[_2073]), spvFMul(as_type(cbuf_24.data[_2097]), as_type(cbuf_24.data[_2069])))); float _2278 = fma(as_type(cbuf_24.data[_2129]), as_type(cbuf_24.data[_2045]), fma(as_type(cbuf_24.data[_2109]), as_type(cbuf_24.data[_2041]), spvFMul(as_type(cbuf_24.data[_2093]), as_type(cbuf_24.data[_2037])))); float _2282 = fma(as_type(cbuf_24.data[_2129]), as_type(cbuf_24.data[_2061]), fma(as_type(cbuf_24.data[_2109]), as_type(cbuf_24.data[_2057]), spvFMul(as_type(cbuf_24.data[_2093]), as_type(cbuf_24.data[_2053])))); float _2286 = fma(as_type(cbuf_24.data[_2129]), as_type(cbuf_24.data[_2077]), fma(as_type(cbuf_24.data[_2109]), as_type(cbuf_24.data[_2073]), spvFMul(as_type(cbuf_24.data[_2093]), as_type(cbuf_24.data[_2069])))); uint _2356 = ((spvMulExtended(_1983, 274877907u))._m1 >> 6u) * 1000u; uint _2357 = ((spvMulExtended(_2123, 274877907u))._m1 >> 6u) * 1000u; uint _2360 = 179u + buf1_dword_off; float _2373 = fma(_2223, as_type(_1852), fma(_2278, as_type(_1856), fma(_2227, as_type(_1860), fma(as_type(cbuf_24.data[_2137]), as_type(cbuf_24.data[_2045]), fma(as_type(cbuf_24.data[_2117]), as_type(cbuf_24.data[_2041]), spvFMul(as_type(cbuf_24.data[_2101]), as_type(cbuf_24.data[_2037]))))))); float _2375 = fma(_2237, as_type(_1852), fma(_2282, as_type(_1856), fma(_2240, as_type(_1860), fma(as_type(cbuf_24.data[_2137]), as_type(cbuf_24.data[_2061]), fma(as_type(cbuf_24.data[_2117]), as_type(cbuf_24.data[_2057]), spvFMul(as_type(cbuf_24.data[_2101]), as_type(cbuf_24.data[_2053]))))))); float _2377 = fma(_2249, as_type(_1852), fma(_2286, as_type(_1856), fma(_2252, as_type(_1860), fma(as_type(cbuf_24.data[_2137]), as_type(cbuf_24.data[_2077]), fma(as_type(cbuf_24.data[_2117]), as_type(cbuf_24.data[_2073]), spvFMul(as_type(cbuf_24.data[_2101]), as_type(cbuf_24.data[_2069]))))))); float _2382 = fma(as_type(_1850), _2227, fma(as_type(_1854), _2278, spvFMul(as_type(_1858), _2223))); float _2384 = fma(as_type(_1849), _2227, fma(as_type(_1853), _2278, spvFMul(as_type(_1857), _2223))); float _2386 = fma(as_type(_1851), _2240, fma(as_type(_1855), _2282, spvFMul(as_type(_1859), _2237))); float _2388 = fma(as_type(_1850), _2240, fma(as_type(_1854), _2282, spvFMul(as_type(_1858), _2237))); float _2390 = fma(as_type(_1849), _2240, fma(as_type(_1853), _2282, spvFMul(as_type(_1857), _2237))); float _2395 = fma(as_type(_1850), _2252, fma(as_type(_1854), _2286, spvFMul(as_type(_1858), _2249))); bool _2405 = cbuf_24.data[_295] == 2u; uint _2477; uint _2478; uint _2479; uint _2480; uint _2481; if (_2405) { uint _2407 = _275 + _2027; uint _2408 = 8u + buf1_dword_off; uint _2412 = 9u + buf1_dword_off; uint _2416 = 10u + buf1_dword_off; uint _2419 = _275 + _2012; uint _2425 = _275 + _1886; float _2450 = fma(spvFMul(fast::max(as_type(cbuf_24.data[_2412]), as_type(cbuf_24.data[_2412])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_2407 - (((spvMulExtended(_2407, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_24.data[_2412])); float _2454 = fma(spvFMul(fast::max(as_type(cbuf_24.data[_2408]), as_type(cbuf_24.data[_2408])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_2419 - (((spvMulExtended(_2419, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_24.data[_2408])); float _2461 = spvFMul(fast::max(as_type(cbuf_24.data[_2416]), as_type(cbuf_24.data[_2416])), 2.0); float _2466 = fma(_2461, spvFMul(0.001000000047497451305389404296875, float(_2425 - (((spvMulExtended(_2425, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_24.data[_2416])); _2477 = as_type(fma(_2466, _2373, fma(_2454, _2223, spvFMul(_2278, _2450)))); _2478 = as_type(_2461); _2479 = as_type(_2466); _2480 = as_type(fma(_2466, _2375, fma(_2454, _2237, spvFMul(_2282, _2450)))); _2481 = as_type(fma(_2466, _2377, fma(_2454, _2249, spvFMul(_2286, _2450)))); } else { _2477 = as_type(_2278); _2478 = as_type(fma(as_type(_1851), _2227, fma(as_type(_1855), _2278, spvFMul(as_type(_1859), _2223)))); _2479 = as_type(fma(as_type(_1849), _2252, fma(as_type(_1853), _2286, spvFMul(as_type(_1857), _2249)))); _2480 = as_type(fma(as_type(_1851), _2252, fma(as_type(_1855), _2286, spvFMul(as_type(_1859), _2249)))); _2481 = _1848; } uint _3096; uint _3097; uint _3098; if (!_2405) { bool _2482 = cbuf_24.data[_295] == 1u; uint _3055; uint _3056; uint _3057; if (_2482) { uint _2484 = 8u + buf1_dword_off; uint _2487 = 9u + buf1_dword_off; uint _2490 = 10u + buf1_dword_off; uint _2494 = 11u + buf1_dword_off; uint _2497 = _275 + _1894; uint _2500 = (spvMulExtended(_2497, 1561286381u))._m1; float _2512 = spvFSub(1.0, as_type(cbuf_24.data[_2494])); float _2515 = fma(spvFMul(0.00133333331905305385589599609375, float(_2497 - (((((_2497 - _2500) >> 1u) + _2500) >> 9u) * 751u))), _2512, as_type(cbuf_24.data[_2494])); bool _2517 = 0u == _2481; bool _2518 = _305 && _2517; uint _2520; if (_2518) { _2520 = _275 + _2012; } else { _2520 = _2481; } uint _2581; uint _2582; uint _2583; uint _2584; uint _2585; uint _2586; uint _2587; uint _2588; uint _2589; uint _2590; uint _2591; bool _2592; uint _2593; if (_2518) { uint _2523 = (spvMulExtended(_2520, 98685563u))._m1; float _2537 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2490]), spvFMul(0.001000000047497451305389404296875, float(_2520 - (((((_2520 - _2523) >> 1u) + _2523) >> 9u) * 1001u)))), 2.0), as_type(cbuf_24.data[_2490])); uint _2547 = _275 + _2027; uint _2549 = (spvMulExtended(_2547, 98685563u))._m1; uint _2554 = ((((_2547 - _2549) >> 1u) + _2549) >> 9u) * 1001u; float _2563 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2487]), spvFMul(0.001000000047497451305389404296875, float(_2547 - _2554))), 2.0), as_type(cbuf_24.data[_2487])); float _2572 = spvFMul(as_type(cbuf_24.data[_2484]), _2515); _2581 = as_type(spvFMul(_2386, _2537)); _2582 = as_type(spvFMul(as_type(_2480), _2537)); _2583 = as_type(spvFMul(_2395, _2563)); _2584 = as_type(spvFMul(_2388, _2563)); _2585 = as_type(spvFMul(_2382, _2563)); _2586 = as_type(spvFMul(as_type(_2478), _2537)); _2587 = as_type(spvFMul(as_type(_2479), _2572)); _2588 = as_type(spvFMul(_2384, _2572)); _2589 = as_type(spvFMul(_2390, _2572)); _2590 = as_type(_2572); _2591 = as_type(_2563); _2592 = _2554 > _2547; _2593 = as_type(_2537); } else { _2581 = _2357; _2582 = as_type(_2227); _2583 = as_type(_2282); _2584 = _2356; _2585 = as_type(_2223); _2586 = _2477; _2587 = _1946; _2588 = as_type(_2512); _2589 = _2478; _2590 = as_type(_2515); _2591 = _2480; _2592 = _2517; _2593 = _2520; } bool _2595 = _305 && (!_2518); bool _2597; if (_2595) { _2597 = 1u == _2593; } else { _2597 = _2592; } uint _3028; uint _3029; uint _3030; uint _3031; uint _3032; uint _3033; uint _3034; uint _3035; uint _3036; if (_2595) { bool _2598 = _2595 && _2597; uint _2600; if (_2598) { _2600 = _275 + _2012; } else { _2600 = _2593; } uint _2660; uint _2661; uint _2662; uint _2663; uint _2664; uint _2665; uint _2666; uint _2667; uint _2668; uint _2669; uint _2670; bool _2671; uint _2672; if (_2598) { uint _2602 = (spvMulExtended(_2600, 98685563u))._m1; float _2615 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2484]), spvFMul(0.001000000047497451305389404296875, float(_2600 - (((((_2600 - _2602) >> 1u) + _2602) >> 9u) * 1001u)))), 2.0), as_type(cbuf_24.data[_2484])); uint _2625 = _275 + _2027; uint _2627 = (spvMulExtended(_2625, 98685563u))._m1; uint _2632 = ((((_2625 - _2627) >> 1u) + _2627) >> 9u) * 1001u; float _2641 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2490]), spvFMul(0.001000000047497451305389404296875, float(_2625 - _2632))), 2.0), as_type(cbuf_24.data[_2490])); float _2651 = spvFMul(as_type(cbuf_24.data[_2487]), as_type(_2590)); _2660 = as_type(spvFMul(_2388, _2641)); _2661 = as_type(spvFMul(_2395, _2641)); _2662 = as_type(spvFMul(as_type(_2479), _2651)); _2663 = as_type(spvFMul(_2390, _2651)); _2664 = as_type(spvFMul(_2384, _2651)); _2665 = as_type(spvFMul(_2382, _2641)); _2666 = as_type(spvFMul(as_type(_2591), _2615)); _2667 = as_type(spvFMul(as_type(_2589), _2615)); _2668 = as_type(spvFMul(_2386, _2615)); _2669 = as_type(_2651); _2670 = as_type(_2641); _2671 = _2632 > _2625; _2672 = as_type(_2615); } else { _2660 = _2581; _2661 = _2582; _2662 = _2583; _2663 = _2584; _2664 = _2585; _2665 = _2586; _2666 = _2587; _2667 = _2588; _2668 = _2589; _2669 = _2590; _2670 = _2591; _2671 = _2597; _2672 = _2600; } bool _2674 = _2595 && (!_2598); bool _2676; if (_2674) { _2676 = 2u == _2672; } else { _2676 = _2671; } uint _3019; uint _3020; uint _3021; uint _3022; uint _3023; uint _3024; uint _3025; uint _3026; uint _3027; if (_2674) { bool _2677 = _2674 && _2676; uint _2679; if (_2677) { _2679 = _275 + _2012; } else { _2679 = _2672; } uint _2739; uint _2740; uint _2741; uint _2742; uint _2743; uint _2744; uint _2745; uint _2746; uint _2747; uint _2748; uint _2749; bool _2750; uint _2751; if (_2677) { uint _2681 = (spvMulExtended(_2679, 98685563u))._m1; float _2694 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2484]), spvFMul(0.001000000047497451305389404296875, float(_2679 - (((((_2679 - _2681) >> 1u) + _2681) >> 9u) * 1001u)))), 2.0), as_type(cbuf_24.data[_2484])); uint _2704 = _275 + _2027; uint _2706 = (spvMulExtended(_2704, 98685563u))._m1; uint _2711 = ((((_2704 - _2706) >> 1u) + _2706) >> 9u) * 1001u; float _2720 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2487]), spvFMul(0.001000000047497451305389404296875, float(_2704 - _2711))), 2.0), as_type(cbuf_24.data[_2487])); float _2730 = spvFMul(as_type(cbuf_24.data[_2490]), as_type(_2669)); _2739 = as_type(spvFMul(_2390, _2730)); _2740 = as_type(spvFMul(as_type(_2479), _2730)); _2741 = as_type(spvFMul(_2395, _2720)); _2742 = as_type(spvFMul(_2388, _2720)); _2743 = as_type(spvFMul(_2382, _2720)); _2744 = as_type(spvFMul(_2384, _2730)); _2745 = as_type(spvFMul(as_type(_2670), _2694)); _2746 = as_type(spvFMul(as_type(_2668), _2694)); _2747 = as_type(spvFMul(_2386, _2694)); _2748 = as_type(_2730); _2749 = as_type(_2720); _2750 = _2711 > _2704; _2751 = as_type(_2694); } else { _2739 = _2660; _2740 = _2661; _2741 = _2662; _2742 = _2663; _2743 = _2664; _2744 = _2665; _2745 = _2666; _2746 = _2667; _2747 = _2668; _2748 = _2669; _2749 = _2670; _2750 = _2676; _2751 = _2679; } bool _2753 = _2674 && (!_2677); bool _2755; if (_2753) { _2755 = 3u == _2751; } else { _2755 = _2750; } uint _3010; uint _3011; uint _3012; uint _3013; uint _3014; uint _3015; uint _3016; uint _3017; uint _3018; if (_2753) { bool _2756 = _2753 && _2755; uint _2758; if (_2756) { _2758 = _275 + _2012; } else { _2758 = _2751; } uint _2818; uint _2819; uint _2820; uint _2821; uint _2822; uint _2823; uint _2824; uint _2825; uint _2826; uint _2827; uint _2828; bool _2829; uint _2830; if (_2756) { uint _2760 = (spvMulExtended(_2758, 98685563u))._m1; float _2773 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2490]), spvFMul(0.001000000047497451305389404296875, float(_2758 - (((((_2758 - _2760) >> 1u) + _2760) >> 9u) * 1001u)))), 2.0), as_type(cbuf_24.data[_2490])); uint _2783 = _275 + _2027; uint _2785 = (spvMulExtended(_2783, 98685563u))._m1; uint _2790 = ((((_2783 - _2785) >> 1u) + _2785) >> 9u) * 1001u; float _2799 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2487]), spvFMul(0.001000000047497451305389404296875, float(_2783 - _2790))), 2.0), as_type(cbuf_24.data[_2487])); float _2809 = spvFMul(as_type(cbuf_24.data[_2484]), as_type(_2748)); _2818 = as_type(spvFMul(_2386, _2773)); _2819 = as_type(spvFMul(as_type(_2749), _2773)); _2820 = as_type(spvFMul(_2395, _2799)); _2821 = as_type(spvFMul(_2388, _2799)); _2822 = as_type(spvFMul(_2382, _2799)); _2823 = as_type(spvFMul(as_type(_2747), _2773)); _2824 = as_type(spvFMul(as_type(_2479), _2809)); _2825 = as_type(spvFMul(_2384, _2809)); _2826 = as_type(spvFMul(_2390, _2809)); _2827 = as_type(_2809); _2828 = as_type(_2799); _2829 = _2790 > _2783; _2830 = as_type(_2773); } else { _2818 = _2739; _2819 = _2740; _2820 = _2741; _2821 = _2742; _2822 = _2743; _2823 = _2744; _2824 = _2745; _2825 = _2746; _2826 = _2747; _2827 = _2748; _2828 = _2749; _2829 = _2755; _2830 = _2758; } bool _2832 = _2753 && (!_2756); bool _2834; if (_2832) { _2834 = 4u == _2830; } else { _2834 = _2829; } uint _3001; uint _3002; uint _3003; uint _3004; uint _3005; uint _3006; uint _3007; uint _3008; uint _3009; if (_2832) { bool _2835 = _2832 && _2834; uint _2837; if (_2835) { _2837 = _275 + _2012; } else { _2837 = _2830; } uint _2897; uint _2898; uint _2899; uint _2900; uint _2901; uint _2902; uint _2903; uint _2904; uint _2905; uint _2906; uint _2907; bool _2908; uint _2909; if (_2835) { uint _2839 = (spvMulExtended(_2837, 98685563u))._m1; float _2852 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2484]), spvFMul(0.001000000047497451305389404296875, float(_2837 - (((((_2837 - _2839) >> 1u) + _2839) >> 9u) * 1001u)))), 2.0), as_type(cbuf_24.data[_2484])); uint _2862 = _275 + _2027; uint _2864 = (spvMulExtended(_2862, 98685563u))._m1; uint _2869 = ((((_2862 - _2864) >> 1u) + _2864) >> 9u) * 1001u; float _2878 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2490]), spvFMul(0.001000000047497451305389404296875, float(_2862 - _2869))), 2.0), as_type(cbuf_24.data[_2490])); float _2888 = spvFMul(as_type(cbuf_24.data[_2487]), as_type(_2827)); _2897 = as_type(spvFMul(_2388, _2878)); _2898 = as_type(spvFMul(_2395, _2878)); _2899 = as_type(spvFMul(as_type(_2479), _2888)); _2900 = as_type(spvFMul(_2390, _2888)); _2901 = as_type(spvFMul(_2384, _2888)); _2902 = as_type(spvFMul(_2382, _2878)); _2903 = as_type(spvFMul(as_type(_2828), _2852)); _2904 = as_type(spvFMul(as_type(_2826), _2852)); _2905 = as_type(spvFMul(_2386, _2852)); _2906 = as_type(_2888); _2907 = as_type(_2878); _2908 = _2869 > _2862; _2909 = as_type(_2852); } else { _2897 = _2818; _2898 = _2819; _2899 = _2820; _2900 = _2821; _2901 = _2822; _2902 = _2823; _2903 = _2824; _2904 = _2825; _2905 = _2826; _2906 = _2827; _2907 = _2828; _2908 = _2834; _2909 = _2837; } bool _2911 = _2832 && (!_2835); bool _2913; if (_2911) { _2913 = 5u == _2909; } else { _2913 = _2908; } uint _2992; uint _2993; uint _2994; uint _2995; uint _2996; uint _2997; uint _2998; uint _2999; uint _3000; if (_2911) { bool _2914 = _2911 && _2913; uint _2916; if (_2914) { _2916 = _275 + _2012; } else { _2916 = _2909; } uint _2972; uint _2973; uint _2974; uint _2975; uint _2976; uint _2977; uint _2978; uint _2979; uint _2980; if (_2914) { uint _2918 = (spvMulExtended(_2916, 98685563u))._m1; float _2931 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2484]), spvFMul(0.001000000047497451305389404296875, float(_2916 - (((((_2916 - _2918) >> 1u) + _2918) >> 9u) * 1001u)))), 2.0), as_type(cbuf_24.data[_2484])); uint _2940 = _275 + _2027; uint _2942 = (spvMulExtended(_2940, 98685563u))._m1; float _2955 = spvFSub(spvFMul(spvFMul(as_type(cbuf_24.data[_2487]), spvFMul(0.001000000047497451305389404296875, float(_2940 - (((((_2940 - _2942) >> 1u) + _2942) >> 9u) * 1001u)))), 2.0), as_type(cbuf_24.data[_2487])); float _2964 = spvFMul(as_type(cbuf_24.data[_2490]), as_type(_2906)); _2972 = as_type(spvFMul(_2390, _2964)); _2973 = as_type(spvFMul(as_type(_2479), _2964)); _2974 = as_type(spvFMul(_2395, _2955)); _2975 = as_type(spvFMul(_2388, _2955)); _2976 = as_type(spvFMul(_2382, _2955)); _2977 = as_type(spvFMul(_2384, _2964)); _2978 = as_type(spvFMul(as_type(_2907), _2931)); _2979 = as_type(spvFMul(_2386, _2931)); _2980 = as_type(spvFMul(as_type(_2905), _2931)); } else { _2972 = _2897; _2973 = _2898; _2974 = _2899; _2975 = _2900; _2976 = _2901; _2977 = _2902; _2978 = _2903; _2979 = _2905; _2980 = _2904; } bool _2982 = _2911 && (!_2914); uint _2983; if (_2982) { _2983 = 0u; } else { _2983 = _2978; } uint _2984; uint _2985; uint _2986; uint _2987; uint _2988; uint _2989; uint _2990; uint _2991; if (_2982) { _2984 = 0u; _2985 = 0u; _2986 = 0u; _2987 = 0u; _2988 = 0u; _2989 = 0u; _2990 = 0u; _2991 = 0u; } else { _2984 = _2972; _2985 = _2973; _2986 = _2974; _2987 = _2975; _2988 = _2976; _2989 = _2977; _2990 = _2979; _2991 = _2980; } _2992 = _2984; _2993 = _2985; _2994 = _2986; _2995 = _2987; _2996 = _2988; _2997 = _2989; _2998 = _2983; _2999 = _2990; _3000 = _2991; } else { _2992 = _2897; _2993 = _2898; _2994 = _2899; _2995 = _2900; _2996 = _2901; _2997 = _2902; _2998 = _2903; _2999 = _2905; _3000 = _2904; } _3001 = _2992; _3002 = _2993; _3003 = _2994; _3004 = _2995; _3005 = _2996; _3006 = _2997; _3007 = _2998; _3008 = _2999; _3009 = _3000; } else { _3001 = _2818; _3002 = _2819; _3003 = _2820; _3004 = _2821; _3005 = _2822; _3006 = _2823; _3007 = _2824; _3008 = _2826; _3009 = _2825; } _3010 = _3001; _3011 = _3002; _3012 = _3003; _3013 = _3004; _3014 = _3005; _3015 = _3006; _3016 = _3007; _3017 = _3008; _3018 = _3009; } else { _3010 = _2739; _3011 = _2740; _3012 = _2741; _3013 = _2742; _3014 = _2743; _3015 = _2744; _3016 = _2745; _3017 = _2747; _3018 = _2746; } _3019 = _3010; _3020 = _3011; _3021 = _3012; _3022 = _3013; _3023 = _3014; _3024 = _3015; _3025 = _3016; _3026 = _3017; _3027 = _3018; } else { _3019 = _2660; _3020 = _2661; _3021 = _2662; _3022 = _2663; _3023 = _2664; _3024 = _2665; _3025 = _2666; _3026 = _2668; _3027 = _2667; } _3028 = _3025; _3029 = _3026; _3030 = _3027; _3031 = _3021; _3032 = _3020; _3033 = _3022; _3034 = _3019; _3035 = _3023; _3036 = _3024; } else { _3028 = _2587; _3029 = _2589; _3030 = _2588; _3031 = _2583; _3032 = _2582; _3033 = _2584; _3034 = _2581; _3035 = _2585; _3036 = _2586; } _3055 = as_type(spvFAdd(as_type(_3030), spvFAdd(as_type(_3036), as_type(_3035)))); _3056 = as_type(spvFAdd(as_type(_3029), spvFAdd(as_type(_3034), as_type(_3033)))); _3057 = as_type(spvFAdd(as_type(_3028), spvFAdd(as_type(_3032), as_type(_3031)))); } else { _3055 = _2477; _3056 = _2480; _3057 = _2481; } uint _3093; uint _3094; uint _3095; if (!_2482) { uint _3064 = 10u + buf1_dword_off; bool _3067 = cbuf_24.data[_295] == 4u; uint _3078; uint _3079; uint _3080; if (_3067) { _3078 = as_type(spvFMul(as_type(cbuf_24.data[_3064]), _2373)); _3079 = as_type(spvFMul(as_type(cbuf_24.data[_3064]), _2375)); _3080 = as_type(spvFMul(as_type(cbuf_24.data[_3064]), _2377)); } else { _3078 = _3055; _3079 = _3056; _3080 = _3057; } uint _3090; uint _3091; uint _3092; if (!_3067) { _3090 = as_type(spvFMul(as_type(cbuf_24.data[8u + buf1_dword_off]), fma(as_type(cbuf_24.data[_2037]), as_type(_1852), fma(as_type(cbuf_24.data[_2041]), as_type(_1856), spvFMul(as_type(cbuf_24.data[_2045]), as_type(_1860)))))); _3091 = as_type(spvFMul(as_type(cbuf_24.data[9u + buf1_dword_off]), fma(as_type(cbuf_24.data[_2053]), as_type(_1852), fma(as_type(cbuf_24.data[_2057]), as_type(_1856), spvFMul(as_type(cbuf_24.data[_2061]), as_type(_1860)))))); _3092 = as_type(spvFMul(as_type(cbuf_24.data[_3064]), fma(as_type(cbuf_24.data[_2069]), as_type(_1852), fma(as_type(cbuf_24.data[_2073]), as_type(_1856), spvFMul(as_type(cbuf_24.data[_2077]), as_type(_1860)))))); } else { _3090 = _3078; _3091 = _3079; _3092 = _3080; } _3093 = _3090; _3094 = _3091; _3095 = _3092; } else { _3093 = _3055; _3094 = _3056; _3095 = _3057; } _3096 = _3093; _3097 = _3094; _3098 = _3095; } else { _3096 = _2477; _3097 = _2480; _3098 = _2481; } uint _3099 = _275 + _1894; uint _3101 = (spvMulExtended(_3099, 1561286381u))._m1; uint _3128; uint _3129; uint _3130; if (!(cbuf_24.data[_295] == 1u)) { uint _3112 = 11u + buf1_dword_off; float _3118 = fma(spvFMul(0.00133333331905305385589599609375, float(_3099 - (((((_3099 - _3101) >> 1u) + _3101) >> 9u) * 751u))), spvFSub(1.0, as_type(cbuf_24.data[_3112])), as_type(cbuf_24.data[_3112])); _3128 = as_type(spvFMul(as_type(_3096), _3118)); _3129 = as_type(spvFMul(as_type(_3097), _3118)); _3130 = as_type(spvFMul(as_type(_3098), _3118)); } else { _3128 = _3096; _3129 = _3097; _3130 = _3098; } uint _3159; uint _3160; uint _3161; if (cbuf_24.data[_295] == 4u) { uint _3132 = _275 + _2012; uint _3133 = 9u + buf1_dword_off; float _3149 = fma(spvFMul(fast::max(as_type(cbuf_24.data[_3133]), as_type(cbuf_24.data[_3133])), 2.0), spvFMul(0.001000000047497451305389404296875, float(_3132 - (((spvMulExtended(_3132, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_24.data[_3133])); _3159 = as_type(fma(_2382, _3149, as_type(_3128))); _3160 = as_type(fma(_2395, _3149, as_type(_3130))); _3161 = as_type(fma(_2388, _3149, as_type(_3129))); } else { _3159 = _3128; _3160 = _3130; _3161 = _3129; } uint _3162 = _2122 + ((((_2216 << 4u) + 2738958700u) ^ (_2216 + 2654435769u)) ^ ((_2216 >> 5u) + 3355524772u)); uint _3170 = _2216 + ((((_3162 << 4u) + 2911926141u) ^ (_3162 + 2654435769u)) ^ ((_3162 >> 5u) + 2123724318u)); uint _3177 = 16u + buf1_dword_off; uint _3181 = 17u + buf1_dword_off; uint _3185 = 18u + buf1_dword_off; uint _3188 = _3162 + ((_3170 ^ ((_3170 << 4u) + 2738958700u)) ^ ((_3170 >> 5u) + 3355524772u)); uint _3212 = _275 + _2027; uint _3213 = _275 + _2012; uint _3216 = 28u + buf1_dword_off; uint _3220 = 29u + buf1_dword_off; uint _3224 = 30u + buf1_dword_off; uint _3257 = _275 + _3162; uint _3258 = _275 + _3170; uint _3259 = _275 + _1916; uint _3274 = 40u + buf1_dword_off; uint _3278 = 41u + buf1_dword_off; uint _3282 = 42u + buf1_dword_off; uint _3309 = _3170 + ((_3188 ^ ((_3188 << 4u) + 2911926141u)) ^ ((_3188 >> 5u) + 2123724318u)); float _3358 = spvFMul(0.001000000047497451305389404296875, float(_3257 - (((spvMulExtended(_3257, 274877907u))._m1 >> 6u) * 1000u))); float _3365 = spvFMul(0.001000000047497451305389404296875, float(_3258 - (((spvMulExtended(_3258, 274877907u))._m1 >> 6u) * 1000u))); float _3372 = spvFMul(0.001000000047497451305389404296875, float(_3259 - (((spvMulExtended(_3259, 274877907u))._m1 >> 6u) * 1000u))); uint _3391 = as_type(spvFAdd(as_type(cbuf_24.data[167u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_24.data[20u + buf1_dword_off]), as_type(cbuf_24.data[_3177])), spvFMul(0.001000000047497451305389404296875, float(_3212 - (((spvMulExtended(_3212, 274877907u))._m1 >> 6u) * 1000u))), spvFAdd(as_type(_3159), spvFAdd(as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[_3177])))))); uint _3394 = as_type(spvFAdd(as_type(cbuf_24.data[171u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_24.data[21u + buf1_dword_off]), as_type(cbuf_24.data[_3181])), spvFMul(0.001000000047497451305389404296875, float(_3099 - (((spvMulExtended(_3099, 274877907u))._m1 >> 6u) * 1000u))), spvFAdd(as_type(cbuf_24.data[_3181]), spvFAdd(as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(_3161)))))); uint _3397 = as_type(spvFAdd(as_type(cbuf_24.data[175u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_24.data[22u + buf1_dword_off]), as_type(cbuf_24.data[_3185])), spvFMul(0.001000000047497451305389404296875, float(_3213 - (((spvMulExtended(_3213, 274877907u))._m1 >> 6u) * 1000u))), spvFAdd(as_type(cbuf_24.data[_3185]), spvFAdd(as_type(cbuf_24.data[14u + buf1_dword_off]), as_type(_3160)))))); float _3399 = fma(spvFSub(as_type(cbuf_24.data[32u + buf1_dword_off]), as_type(cbuf_24.data[_3216])), _3358, spvFAdd(as_type(cbuf_24.data[24u + buf1_dword_off]), as_type(cbuf_24.data[_3216]))); float _3401 = fma(spvFSub(as_type(cbuf_24.data[33u + buf1_dword_off]), as_type(cbuf_24.data[_3220])), _3365, spvFAdd(as_type(cbuf_24.data[25u + buf1_dword_off]), as_type(cbuf_24.data[_3220]))); float _3403 = fma(spvFSub(as_type(cbuf_24.data[34u + buf1_dword_off]), as_type(cbuf_24.data[_3224])), _3372, spvFAdd(as_type(cbuf_24.data[26u + buf1_dword_off]), as_type(cbuf_24.data[_3224]))); uint _3422; uint _3423; uint _3424; if (cbuf_24.data[3u + buf1_dword_off] == 1u) { float _3415 = sqrt(fma(_3403, _3403, fma(_3399, _3399, spvFMul(_3401, _3401)))); _3422 = as_type(spvFMul(_2377, _3415)); _3423 = as_type(spvFMul(_2373, _3415)); _3424 = as_type(spvFMul(_2375, _3415)); } else { _3422 = as_type(_3403); _3423 = as_type(_3399); _3424 = as_type(_3401); } uint _3425 = _3188 + ((((_3309 << 4u) + 2738958700u) ^ (_3309 + 2654435769u)) ^ ((_3309 >> 5u) + 3355524772u)); uint _3433 = _3309 + ((((_3425 << 4u) + 2911926141u) ^ (_3425 + 2654435769u)) ^ ((_3425 >> 5u) + 2123724318u)); uint _3440 = _3425 + ((_3433 ^ ((_3433 << 4u) + 2738958700u)) ^ ((_3433 >> 5u) + 3355524772u)); uint _3447 = _3433 + ((_3440 ^ ((_3440 << 4u) + 2911926141u)) ^ ((_3440 >> 5u) + 2123724318u)); uint _3455 = _3440 + ((((_3447 << 4u) + 2738958700u) ^ (_3447 + 2654435769u)) ^ ((_3447 >> 5u) + 3355524772u)); uint _3463 = _3447 + ((((_3455 << 4u) + 2911926141u) ^ (_3455 + 2654435769u)) ^ ((_3455 >> 5u) + 2123724318u)); uint _3470 = _3455 + ((_3463 ^ ((_3463 << 4u) + 2738958700u)) ^ ((_3463 >> 5u) + 3355524772u)); uint _3477 = _3463 + ((_3470 ^ ((_3470 << 4u) + 2911926141u)) ^ ((_3470 >> 5u) + 2123724318u)); uint _3485 = _3470 + ((((_3477 << 4u) + 2738958700u) ^ (_3477 + 2654435769u)) ^ ((_3477 >> 5u) + 3355524772u)); uint2 _3487 = uint2(0u, _308); uint _3496 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_3487.x * 1024u)) + _3487.y) + buf2_off) >> 2u], _3485 - _331, memory_order_relaxed); uint2 _3497 = uint2(0u, _308); uint _3514 = _3477 + ((((_3485 << 4u) + 2911926141u) ^ (_3485 + 2654435769u)) ^ ((_3485 >> 5u) + 2123724318u)); float _3517 = spvFMul(0.001000000047497451305389404296875, float(_1983 - _2356)); float _3518 = spvFMul(0.001000000047497451305389404296875, float(_2123 - _2357)); float _3526 = spvFMul(0.001000000047497451305389404296875, float(_2217 - (((spvMulExtended(_2217, 274877907u))._m1 >> 6u) * 1000u))); uint2 _3551 = uint2(0u, _308 + 4u); uint _3560 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_3551.x * 1024u)) + _3551.y) + buf2_off) >> 2u], _3514 - ssbo_16.data[(((4u + (_3497.x * 1024u)) + _3497.y) + buf2_off) >> 2u], memory_order_relaxed); uint2 _3561 = uint2(0u, _308); uint2 _3573 = uint2(0u, _308 + 8u); uint _3582 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_3573.x * 1024u)) + _3573.y) + buf2_off) >> 2u], _2123 - ssbo_16.data[(((8u + (_3561.x * 1024u)) + _3561.y) + buf2_off) >> 2u], memory_order_relaxed); uint2 _3583 = uint2(0u, _308); uint _3592 = ssbo_16.data[(((12u + (_3583.x * 1024u)) + _3583.y) + buf2_off) >> 2u]; uint _3602 = cbuf_24.data[145u + buf1_dword_off] + 1u; uint _3607 = uint(spvFMul(4294967296.0, 1.0 / float(_3602))); uint _3613 = 129u + buf1_dword_off; uint _3624 = _3602 * _3607; bool _3630 = 0u != (spvMulExtended(_3602, _3607))._m1; uint _3649 = 52u + buf1_dword_off; uint _3653 = 53u + buf1_dword_off; uint _3657 = 54u + buf1_dword_off; uint _3673 = 64u + buf1_dword_off; uint _3677 = 65u + buf1_dword_off; uint _3681 = 66u + buf1_dword_off; uint _3697 = 84u + buf1_dword_off; uint _3701 = 85u + buf1_dword_off; uint _3705 = 86u + buf1_dword_off; uint _3712 = (spvMulExtended(as_type(_3630 ? as_type(_3624) : as_type(0u - _3624)), _3607))._m1; uint _3758 = 96u + buf1_dword_off; uint _3762 = 97u + buf1_dword_off; uint _3766 = 98u + buf1_dword_off; uint _3804 = 132u + buf1_dword_off; float _3818 = spvFMul(0.001000000047497451305389404296875, float(_3425 - (((spvMulExtended(_3425, 274877907u))._m1 >> 6u) * 1000u))); uint _3829 = (spvMulExtended(as_type(_3630 ? as_type(_3607 - _3712) : as_type(_3607 + _3712)), _3514))._m1 * _3602; float _3860 = spvFMul(0.001000000047497451305389404296875, float(_3463 - (((spvMulExtended(_3463, 274877907u))._m1 >> 6u) * 1000u))); uint _3862 = _3514 - _3829; uint _3865 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[9u], 1, memory_order_relaxed); uint _3867 = 72u + buf1_dword_off; uint _3871 = 73u + buf1_dword_off; uint _3875 = 74u + buf1_dword_off; uint _3879 = 104u + buf1_dword_off; uint _3883 = 105u + buf1_dword_off; uint _3887 = 106u + buf1_dword_off; uint _3891 = 112u + buf1_dword_off; uint _3895 = 113u + buf1_dword_off; uint _3899 = 114u + buf1_dword_off; uint _3903 = 115u + buf1_dword_off; float _3959 = spvFMul(0.001000000047497451305389404296875, float(_3455 - (((spvMulExtended(_3455, 274877907u))._m1 >> 6u) * 1000u))); float _3969 = spvFMul(0.001000000047497451305389404296875, float(_3514 - (((spvMulExtended(_3514, 274877907u))._m1 >> 6u) * 1000u))); bool _3979 = _3514 >= _3829; uint _3984 = as_type(half2(float2(spvFMul(as_type(cbuf_24.data[131u + buf1_dword_off]), fast::max(0.0, fma(spvFSub(as_type(cbuf_24.data[130u + buf1_dword_off]), as_type(cbuf_24.data[_3613])), _3818, spvFAdd(as_type(cbuf_24.data[128u + buf1_dword_off]), as_type(cbuf_24.data[_3613]))))), 0.0))); float _3994 = spvFMul(0.001000000047497451305389404296875, float(_3485 - (((spvMulExtended(_3485, 274877907u))._m1 >> 6u) * 1000u))); uint2 _4038 = uint2(0u, _308 + 12u); uint _4047 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_16.data[(((0u + (_4038.x * 1024u)) + _4038.y) + buf2_off) >> 2u], _2217 - _3592, memory_order_relaxed); uint4 _4074 = uint4(_3391, _3394, _3397, cbuf_24.data[_2360]); uint _4079 = ((0u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4079 + 0u] = _4074.x; ssbo_20.data[_4079 + 1u] = _4074.y; ssbo_20.data[_4079 + 2u] = _4074.z; ssbo_20.data[_4079 + 3u] = _4074.w; uint4 _4116 = uint4(_3391, _3394, _3397, cbuf_24.data[_2360]); uint _4120 = ((16u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4120 + 0u] = _4116.x; ssbo_20.data[_4120 + 1u] = _4116.y; ssbo_20.data[_4120 + 2u] = _4116.z; ssbo_20.data[_4120 + 3u] = _4116.w; float _4154 = (_3979 && (_3862 >= _3602)) ? as_type(_3862 - _3602) : as_type(_3862); uint4 _4156 = uint4(_3984 | (_3984 << 16u), 0u, as_type(half2(float2(as_type(_3423), 0.0))) | (as_type(half2(float2(as_type(_3424), 0.0))) << 16u), as_type(half2(float2(as_type(_3422), 0.0))) | (as_type(half2(float2(as_type(cbuf_24.data[140u + buf1_dword_off]), 0.0))) << 16u)); uint _4160 = ((32u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4160 + 0u] = _4156.x; ssbo_20.data[_4160 + 1u] = _4156.y; ssbo_20.data[_4160 + 2u] = _4156.z; ssbo_20.data[_4160 + 3u] = _4156.w; uint4 _4202 = uint4(as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[56u + buf1_dword_off]), as_type(cbuf_24.data[_3649])), _3994, spvFAdd(as_type(cbuf_24.data[48u + buf1_dword_off]), as_type(cbuf_24.data[_3649]))), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[57u + buf1_dword_off]), as_type(cbuf_24.data[_3653])), _3969, spvFAdd(as_type(cbuf_24.data[49u + buf1_dword_off]), as_type(cbuf_24.data[_3653]))), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[58u + buf1_dword_off]), as_type(cbuf_24.data[_3657])), _3518, spvFAdd(as_type(cbuf_24.data[50u + buf1_dword_off]), as_type(cbuf_24.data[_3657]))), 0.0))), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[68u + buf1_dword_off]), as_type(cbuf_24.data[_3673])), _3526, spvFAdd(as_type(cbuf_24.data[60u + buf1_dword_off]), as_type(cbuf_24.data[_3673]))), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[69u + buf1_dword_off]), as_type(cbuf_24.data[_3677])), _3518, spvFAdd(as_type(cbuf_24.data[61u + buf1_dword_off]), as_type(cbuf_24.data[_3677]))), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[70u + buf1_dword_off]), as_type(cbuf_24.data[_3681])), _3969, spvFAdd(as_type(cbuf_24.data[62u + buf1_dword_off]), as_type(cbuf_24.data[_3681]))), 0.0)))); uint _4206 = ((48u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4206 + 0u] = _4202.x; ssbo_20.data[_4206 + 1u] = _4202.y; ssbo_20.data[_4206 + 2u] = _4202.z; ssbo_20.data[_4206 + 3u] = _4202.w; uint4 _4253 = uint4(as_type(half2(float2(spvFMul(as_type(cbuf_24.data[_3804]), spvFAdd(as_type(cbuf_24.data[80u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_24.data[88u + buf1_dword_off]), as_type(cbuf_24.data[_3697])), _3959, as_type(cbuf_24.data[_3697])))), 0.0))) | (as_type(half2(float2(spvFMul(as_type(cbuf_24.data[_3804]), spvFAdd(as_type(cbuf_24.data[81u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_24.data[89u + buf1_dword_off]), as_type(cbuf_24.data[_3701])), _3860, as_type(cbuf_24.data[_3701])))), 0.0))) << 16u), as_type(half2(float2(spvFMul(as_type(cbuf_24.data[_3804]), spvFAdd(as_type(cbuf_24.data[82u + buf1_dword_off]), fma(spvFSub(as_type(cbuf_24.data[90u + buf1_dword_off]), as_type(cbuf_24.data[_3705])), _3517, as_type(cbuf_24.data[_3705])))), 0.0))) | (as_type(half2(float2(as_type(cbuf_24.data[133u + buf1_dword_off]), 0.0))) << 16u), 0u, 0u); uint _4257 = ((64u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4257 + 0u] = _4253.x; ssbo_20.data[_4257 + 1u] = _4253.y; ssbo_20.data[_4257 + 2u] = _4253.z; ssbo_20.data[_4257 + 3u] = _4253.w; uint4 _4294 = uint4(as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[100u + buf1_dword_off]), as_type(cbuf_24.data[_3758])), _3959, spvFAdd(as_type(cbuf_24.data[92u + buf1_dword_off]), as_type(cbuf_24.data[_3758]))), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[101u + buf1_dword_off]), as_type(cbuf_24.data[_3762])), _3860, spvFAdd(as_type(cbuf_24.data[93u + buf1_dword_off]), as_type(cbuf_24.data[_3762]))), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[102u + buf1_dword_off]), as_type(cbuf_24.data[_3766])), _3517, spvFAdd(as_type(cbuf_24.data[94u + buf1_dword_off]), as_type(cbuf_24.data[_3766]))), 0.0))), 1006648320u, 1006648320u); uint _4298 = ((80u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4298 + 0u] = _4294.x; ssbo_20.data[_4298 + 1u] = _4294.y; ssbo_20.data[_4298 + 2u] = _4294.z; ssbo_20.data[_4298 + 3u] = _4294.w; uint4 _4324 = uint4(0u, 1006648320u, as_type(half2(float2(as_type(cbuf_24.data[120u + buf1_dword_off]), 0.0))) | (as_type(half2(float2(as_type(cbuf_24.data[121u + buf1_dword_off]), 0.0))) << 16u), as_type(half2(float2(as_type(cbuf_24.data[122u + buf1_dword_off]), 0.0))) | (as_type(half2(float2(as_type(cbuf_24.data[123u + buf1_dword_off]), 0.0))) << 16u)); uint _4328 = ((96u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4328 + 0u] = _4324.x; ssbo_20.data[_4328 + 1u] = _4324.y; ssbo_20.data[_4328 + 2u] = _4324.z; ssbo_20.data[_4328 + 3u] = _4324.w; uint4 _4344 = uint4((cbuf_24.data[124u + buf1_dword_off] & 65535u) | (cbuf_24.data[125u + buf1_dword_off] << 16u), (cbuf_24.data[126u + buf1_dword_off] & 65535u) | (cbuf_24.data[127u + buf1_dword_off] << 16u), as_type(half2(float2(fma(_3365, spvFSub(as_type(cbuf_24.data[44u + buf1_dword_off]), as_type(cbuf_24.data[_3274])), as_type(cbuf_24.data[_3274])), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[45u + buf1_dword_off]), as_type(cbuf_24.data[_3278])), _3372, as_type(cbuf_24.data[_3278])), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[46u + buf1_dword_off]), as_type(cbuf_24.data[_3282])), _3358, as_type(cbuf_24.data[_3282])), 0.0)))); uint _4348 = ((112u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4348 + 0u] = _4344.x; ssbo_20.data[_4348 + 1u] = _4344.y; ssbo_20.data[_4348 + 2u] = _4344.z; ssbo_20.data[_4348 + 3u] = _4344.w; uint4 _4361 = uint4(as_type(half2(float2(fma(_3518, spvFSub(as_type(cbuf_24.data[76u + buf1_dword_off]), as_type(cbuf_24.data[_3867])), as_type(cbuf_24.data[_3867])), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[77u + buf1_dword_off]), as_type(cbuf_24.data[_3871])), _3994, as_type(cbuf_24.data[_3871])), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[78u + buf1_dword_off]), as_type(cbuf_24.data[_3875])), _3526, as_type(cbuf_24.data[_3875])), 0.0))), as_type(half2(float2(fma(_3959, spvFSub(as_type(cbuf_24.data[108u + buf1_dword_off]), as_type(cbuf_24.data[_3879])), as_type(cbuf_24.data[_3879])), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[109u + buf1_dword_off]), as_type(cbuf_24.data[_3883])), _3860, as_type(cbuf_24.data[_3883])), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[110u + buf1_dword_off]), as_type(cbuf_24.data[_3887])), _3517, as_type(cbuf_24.data[_3887])), 0.0)))); uint _4365 = ((128u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4365 + 0u] = _4361.x; ssbo_20.data[_4365 + 1u] = _4361.y; ssbo_20.data[_4365 + 2u] = _4361.z; ssbo_20.data[_4365 + 3u] = _4361.w; uint4 _4378 = uint4(as_type(half2(float2(fma(_3818, spvFSub(as_type(cbuf_24.data[116u + buf1_dword_off]), as_type(cbuf_24.data[_3891])), as_type(cbuf_24.data[_3891])), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[117u + buf1_dword_off]), as_type(cbuf_24.data[_3895])), spvFMul(0.001000000047497451305389404296875, float(_3433 - (((spvMulExtended(_3433, 274877907u))._m1 >> 6u) * 1000u))), as_type(cbuf_24.data[_3895])), 0.0))) << 16u), as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[118u + buf1_dword_off]), as_type(cbuf_24.data[_3899])), spvFMul(0.001000000047497451305389404296875, float(_1946 - (((spvMulExtended(_1946, 274877907u))._m1 >> 6u) * 1000u))), as_type(cbuf_24.data[_3899])), 0.0))) | (as_type(half2(float2(fma(spvFSub(as_type(cbuf_24.data[119u + buf1_dword_off]), as_type(cbuf_24.data[_3903])), spvFMul(0.001000000047497451305389404296875, float(_1954 - (((spvMulExtended(_1954, 274877907u))._m1 >> 6u) * 1000u))), as_type(cbuf_24.data[_3903])), 0.0))) << 16u), 0u, 0u); uint _4382 = ((144u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4382 + 0u] = _4378.x; ssbo_20.data[_4382 + 1u] = _4378.y; ssbo_20.data[_4382 + 2u] = _4378.z; ssbo_20.data[_4382 + 3u] = _4378.w; uint4 _4395 = uint4(extract_bits(cbuf_24.data[144u + buf1_dword_off] + as_type((0u != _3602) ? (_3979 ? _4154 : as_type(_3602 + as_type(_4154))) : as_type(0xffffffffu /* nan */)), 0u, 16u), 0u, 0u, 0u); uint _4400 = ((160u + (_3865 * 176u)) + buf4_off) >> 2u; ssbo_20.data[_4400 + 0u] = _4395.x; ssbo_20.data[_4400 + 1u] = _4395.y; ssbo_20.data[_4400 + 2u] = _4395.z; ssbo_20.data[_4400 + 3u] = _4395.w; } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x2da7fe60 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001100.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001101.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001102.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001102.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001104.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001104.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001110.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001120.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001130.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001131.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001131.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001140.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001140.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001141.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001141.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001150.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001200.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001201.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001201.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001210.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9010.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c9020.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c9020.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9020.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9020.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9020.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9020.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o212000.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o212000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o212002.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o212002.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c8030.chrbnd.dcx [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wunused-variable" #include #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[1]; }; struct cs_cbuf_block_f32_1 { uint data[11264]; }; struct cs_cbuf_block_f32_2 { uint data[276]; }; struct cs_cbuf_block_f32_3 { uint data[872]; }; constant uint _1209 = {}; constant uint _1210 = {}; constant uint _1211 = {}; constant uint _1212 = {}; constant uint _1213 = {}; constant uint _1214 = {}; constant uint _1215 = {}; constant uint _1216 = {}; constant uint _1217 = {}; constant uint _1218 = {}; constant uint _1219 = {}; constant uint _1220 = {}; constant uint _1221 = {}; constant uint _1222 = {}; constant uint _1223 = {}; constant uint _1224 = {}; constant uint _1225 = {}; constant uint _1226 = {}; constant uint _1227 = {}; constant uint _1228 = {}; constant uint _1229 = {}; constant uint _1230 = {}; constant uint _1231 = {}; constant uint _1232 = {}; constant uint _1233 = {}; constant uint _1234 = {}; kernel void main0(constant AuxData& push_data [[buffer(8)]], device cs_cbuf_block_f32& ssbo_0 [[buffer(9)]], constant cs_cbuf_block_f32_1& cbuf_44 [[buffer(10)]], constant cs_cbuf_block_f32_2& cbuf_52 [[buffer(11)]], constant cs_cbuf_block_f32_3& cbuf_56 [[buffer(12)]], device cs_cbuf_block_f32& ssbo_48 [[buffer(13)]], texture_buffer texbuf_32 [[texture(0)]], texture2d cs_img4 [[texture(1)]], texture2d cs_img36 [[texture(2)]], texture2d cs_img16 [[texture(3)]], texture2d cs_img24 [[texture(4)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf3_dword_off = buf3_off >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint _1276 = (gl_WorkGroupID.x << 5u) + gl_LocalInvocationID.x; uint _1280 = gl_LocalInvocationID.x + ((gl_LocalInvocationID.z << 5u) + (gl_LocalInvocationID.y << 5u)); bool _1290 = _1276 < as_type(float4(as_type(texbuf_32.read(uint(((0u << extract_bits(push_data.buf_offsets0[1u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[1u], 8u, 6u))))).x, 0.0, 0.0, 0.0).x); if (!_1290) { } if (_1290) { if (!_1290) { } uint _1294 = atomic_fetch_sub_explicit((device atomic_uint*)&ssbo_0.data[8u], 1, memory_order_relaxed); uint _1296 = (_1294 - 0u) - 1u; uint _1301 = ((0u + (_1296 * 176u)) + buf1_off) >> 2u; uint4 _1315 = uint4(cbuf_44.data[_1301 + 0u], cbuf_44.data[_1301 + 1u], cbuf_44.data[_1301 + 2u], cbuf_44.data[_1301 + 3u]); uint _1316 = _1315.x; uint _1317 = _1315.y; uint _1318 = _1315.z; uint _1319 = _1315.w; uint _1323 = ((16u + (_1296 * 176u)) + buf1_off) >> 2u; uint3 _1333 = uint3(cbuf_44.data[_1323 + 0u], cbuf_44.data[_1323 + 1u], cbuf_44.data[_1323 + 2u]); uint _1341 = ((32u + (_1296 * 176u)) + buf1_off) >> 2u; uint4 _1354 = uint4(cbuf_44.data[_1341 + 0u], cbuf_44.data[_1341 + 1u], cbuf_44.data[_1341 + 2u], cbuf_44.data[_1341 + 3u]); uint _1355 = _1354.x; uint _1356 = _1354.y; uint _1357 = _1354.z; uint _1358 = _1354.w; uint _1363 = ((48u + (_1296 * 176u)) + buf1_off) >> 2u; uint4 _1376 = uint4(cbuf_44.data[_1363 + 0u], cbuf_44.data[_1363 + 1u], cbuf_44.data[_1363 + 2u], cbuf_44.data[_1363 + 3u]); uint _1377 = _1376.x; uint _1378 = _1376.y; uint _1379 = _1376.z; uint _1380 = _1376.w; uint _1385 = ((64u + (_1296 * 176u)) + buf1_off) >> 2u; uint4 _1398 = uint4(cbuf_44.data[_1385 + 0u], cbuf_44.data[_1385 + 1u], cbuf_44.data[_1385 + 2u], cbuf_44.data[_1385 + 3u]); uint _1399 = _1398.x; uint _1400 = _1398.y; uint _1406 = ((80u + (_1296 * 176u)) + buf1_off) >> 2u; uint2 _1413 = uint2(cbuf_44.data[_1406 + 0u], cbuf_44.data[_1406 + 1u]); uint _1414 = _1413.x; uint _1415 = _1413.y; uint _1420 = ((108u + (_1296 * 176u)) + buf1_off) >> 2u; uint _1427 = ((112u + (_1296 * 176u)) + buf1_off) >> 2u; uint2 _1434 = uint2(cbuf_44.data[_1427 + 0u], cbuf_44.data[_1427 + 1u]); uint _1435 = _1434.x; uint _1436 = _1434.y; uint _1441 = ((120u + (_1296 * 176u)) + buf1_off) >> 2u; uint4 _1454 = uint4(cbuf_44.data[_1441 + 0u], cbuf_44.data[_1441 + 1u], cbuf_44.data[_1441 + 2u], cbuf_44.data[_1441 + 3u]); uint _1455 = _1454.x; uint _1456 = _1454.y; uint _1457 = _1454.z; uint _1458 = _1454.w; uint _1463 = ((136u + (_1296 * 176u)) + buf1_off) >> 2u; uint4 _1476 = uint4(cbuf_44.data[_1463 + 0u], cbuf_44.data[_1463 + 1u], cbuf_44.data[_1463 + 2u], cbuf_44.data[_1463 + 3u]); uint _1477 = _1476.x; uint _1478 = _1476.y; uint _1479 = _1476.z; uint _1480 = _1476.w; uint _1485 = ((152u + (_1296 * 176u)) + buf1_off) >> 2u; uint2 _1492 = uint2(cbuf_44.data[_1485 + 0u], cbuf_44.data[_1485 + 1u]); uint _1493 = _1492.x; uint _1494 = _1492.y; uint _1499 = ((160u + (_1296 * 176u)) + buf1_off) >> 2u; uint4 _1512 = uint4(cbuf_44.data[_1499 + 0u], cbuf_44.data[_1499 + 1u], cbuf_44.data[_1499 + 2u], cbuf_44.data[_1499 + 3u]); uint _1513 = _1512.x; uint _1514 = _1512.y; uint _1515 = _1512.z; float _1519 = float(as_type(ushort(_1357))); uint _1520 = as_type(_1519); float _1531 = float(as_type(ushort(_1358 >> 16u))); float _1545 = float(as_type(ushort(_1400 >> 16u))); uint _1546 = as_type(_1545); uint _1547 = _1435 >> 16u; float _1554 = float(as_type(ushort(_1493 >> 16u))); uint _1555 = as_type(_1554); uint _1559 = extract_bits(_1513, 0u, 16u); uint _1560 = _1514 >> 16u; float _1564 = float(as_type(ushort(_1355 >> 16u))); float _1567 = float(as_type(ushort(_1356))); uint _1568 = 0u + buf2_dword_off; uint _1571 = 1u + buf2_dword_off; float _1575 = spvFAdd(as_type(cbuf_52.data[_1568]), _1567); uint _1576 = as_type(_1575); float _1581 = fast::clamp(spvFMul(_1575, 1.0 / _1564), 0.0, 1.0); uint _1582 = 24u + buf2_dword_off; uint _1586 = 26u + buf2_dword_off; uint _1594 = cbuf_52.data[_1586] + 4294967295u; float _1610 = spvFMul(0.449999988079071044921875, _1564); float _1613 = fast::max(0.0, _1610); float _1614 = spvFSub(_1613, fast::max(0.0, fast::min(fma(_1564, -0.550000011920928955078125, _1575), _1610))); float _1619 = 1.0 / spvFMul(_1613, _1613); float _1621 = spvFSub(1.0, _1581); float _1640 = 1.0 / _1613; bool _1646 = cbuf_52.data[196u + buf2_dword_off] == 0u; uint _1805; uint _1806; uint _1807; uint _1808; uint _1809; uint _1810; uint _1811; uint _1812; uint _1813; uint _1814; uint _1815; uint _1816; uint _1817; uint _1818; uint _1819; uint _1820; uint _1821; uint _1822; uint _1823; uint _1824; uint _1825; uint _1826; if (_1646) { uint _1654 = uint(int(spvFMul(_1581, float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint4 _1702 = as_type(cs_img4.read(uint2(uint2(0u, _1654)), 0u)); uint4 _1708 = as_type(cs_img4.read(uint2(uint2(1u, _1654)), 0u)); uint _1712 = _1708.w; uint4 _1716 = as_type(cs_img4.read(uint2(uint2(2u, _1654)), 0u)); uint4 _1723 = as_type(cs_img4.read(uint2(uint2(3u, _1654)), 0u)); uint4 _1731 = as_type(cs_img4.read(uint2(uint2(4u, _1654)), 0u)); float _1759 = fma(_1621, float(as_type(ushort(_1457))), as_type(_1716.x)); float _1762 = fma(_1621, float(as_type(ushort(_1457 >> 16u))), as_type(_1716.y)); _1805 = as_type(_1759); _1806 = _1712; _1807 = _1702.z; _1808 = as_type(fast::max(0.0, fma(_1621, float(as_type(ushort(_1480 >> 16u))), as_type(_1731.w)))); _1809 = as_type(fast::max(0.0, fma(_1621, float(as_type(ushort(_1480))), as_type(_1731.z)))); _1810 = as_type(fast::max(0.0, fma(_1621, float(as_type(ushort(_1479 >> 16u))), as_type(_1731.y)))); _1811 = as_type(fast::max(0.0, fma(_1621, float(as_type(ushort(_1479))), as_type(_1731.x)))); _1812 = _1702.y; _1813 = as_type(fma(_1621, float(as_type(ushort(_1458))), as_type(_1716.z))); _1814 = as_type(_1762); _1815 = as_type(_1759); _1816 = as_type(fma(_1621, float(as_type(ushort(_1478))), as_type(_1723.z))); _1817 = as_type(fma(_1621, float(as_type(ushort(_1477 >> 16u))), as_type(_1723.y))); _1818 = as_type(fma(_1621, float(as_type(ushort(_1477))), as_type(_1723.x))); _1819 = _1712; _1820 = as_type(fma(_1621, float(as_type(ushort(_1456))), as_type(_1708.z))); _1821 = as_type(fma(_1621, float(as_type(ushort(_1455 >> 16u))), as_type(_1708.y))); _1822 = as_type(fma(_1621, float(as_type(ushort(_1455))), as_type(_1708.x))); _1823 = as_type(exp2(spvFMul(1.44269502162933349609375, spvFMul(as_type(cbuf_52.data[_1568]), -as_type(as_type(cs_img4.read(uint2(uint2(7u, _1654)), 0u)).x))))); _1824 = as_type(cs_img4.read(uint2(uint2(8u, _1654)), 0u)).x; _1825 = as_type(_1762); _1826 = as_type(cs_img4.read(uint2(uint2(6u, _1654)), 0u)).x; } else { _1805 = _1210; _1806 = _1211; _1807 = _1212; _1808 = _1213; _1809 = _1214; _1810 = _1215; _1811 = _1216; _1812 = _1217; _1813 = _1218; _1814 = _1219; _1815 = _1220; _1816 = _1221; _1817 = _1222; _1818 = _1223; _1819 = _1224; _1820 = _1225; _1821 = _1226; _1822 = _1227; _1823 = as_type(_1619); _1824 = as_type(_1640); _1825 = _1234; _1826 = as_type(_1621); } uint _2149; uint _2150; uint _2151; uint _2152; uint _2153; uint _2154; uint _2155; uint _2156; uint _2157; uint _2158; uint _2159; uint _2160; uint _2161; uint _2162; uint _2163; uint _2164; uint _2165; uint _2166; uint _2167; uint _2168; uint _2169; uint _2170; if (!_1646) { uint _1832 = uint(int(spvFMul(_1581, float(int(cbuf_52.data[197u + buf2_dword_off]))))); uint _1835 = uint(int(spvFMul(_1581, float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint4 _1840 = as_type(cs_img36.read(uint2(uint2(10u, _1832)), 0u)); uint _1841 = _1840.x; uint4 _1845 = as_type(cs_img4.read(uint2(uint2(0u, _1835)), 0u)); uint _1846 = _1845.y; uint _1847 = _1845.z; uint4 _1854 = as_type(cs_img36.read(uint2(uint2(0u, _1832)), 0u)); uint4 _1860 = as_type(cs_img4.read(uint2(uint2(1u, _1835)), 0u)); uint _1861 = _1860.x; uint _1862 = _1860.y; uint _1863 = _1860.z; uint _1864 = _1860.w; uint4 _1887 = as_type(cs_img36.read(uint2(uint2(1u, _1832)), 0u)); uint4 _1925 = as_type(cs_img4.read(uint2(uint2(2u, _1835)), 0u)); uint _1926 = _1925.x; uint _1927 = _1925.y; uint _1928 = _1925.z; uint4 _1932 = as_type(cs_img36.read(uint2(uint2(2u, _1832)), 0u)); uint4 _1973 = as_type(cs_img4.read(uint2(uint2(3u, _1835)), 0u)); uint _1974 = _1973.x; uint _1975 = _1973.y; uint _1976 = _1973.z; uint4 _1980 = as_type(cs_img36.read(uint2(uint2(3u, _1832)), 0u)); uint4 _2021 = as_type(cs_img4.read(uint2(uint2(4u, _1835)), 0u)); uint _2022 = _2021.x; uint _2023 = _2021.y; uint _2024 = _2021.z; uint _2025 = _2021.w; uint4 _2029 = as_type(cs_img36.read(uint2(uint2(4u, _1832)), 0u)); float _2064 = float(as_type(ushort(_1479 >> 16u))); float _2068 = float(as_type(ushort(_1480))); uint4 _2089 = as_type(cs_img4.read(uint2(uint2(6u, _1835)), 0u)); uint _2090 = _2089.x; uint4 _2110 = as_type(cs_img4.read(uint2(uint2(8u, _1835)), 0u)); uint _2111 = _2110.x; float _2117 = exp2(spvFMul(1.44269502162933349609375, spvFMul(as_type(cbuf_52.data[_1568]), -as_type(as_type(cs_img4.read(uint2(uint2(7u, _1835)), 0u)).x)))); _2149 = as_type(_2064); _2150 = as_type(_2117); _2151 = as_type(fma(as_type(_1841), spvFSub(as_type(_1854.z), as_type(_1847)), as_type(_1847))); _2152 = as_type(fast::max(0.0, fma(as_type(_1826), float(as_type(ushort(_1480 >> 16u))), fma(as_type(_1841), spvFSub(as_type(_2029.w), as_type(_2025)), as_type(_2025))))); _2153 = as_type(fast::max(0.0, fma(as_type(_1826), _2068, fma(as_type(_1841), spvFSub(as_type(_2029.z), as_type(_2024)), as_type(_2024))))); _2154 = as_type(fast::max(0.0, fma(as_type(_1826), _2064, fma(as_type(_1841), spvFSub(as_type(_2029.y), as_type(_2023)), as_type(_2023))))); _2155 = as_type(fast::max(0.0, fma(as_type(_1826), float(as_type(ushort(_1479))), fma(as_type(_1841), spvFSub(as_type(_2029.x), as_type(_2022)), as_type(_2022))))); _2156 = as_type(fma(as_type(_1841), spvFSub(as_type(_1854.y), as_type(_1846)), as_type(_1846))); _2157 = as_type(fma(as_type(_1826), float(as_type(ushort(_1458))), fma(as_type(_1841), spvFSub(as_type(_1932.z), as_type(_1928)), as_type(_1928)))); _2158 = as_type(fma(as_type(_1826), float(as_type(ushort(_1457 >> 16u))), fma(as_type(_1841), spvFSub(as_type(_1932.y), as_type(_1927)), as_type(_1927)))); _2159 = as_type(fma(as_type(_1826), float(as_type(ushort(_1457))), fma(as_type(_1841), spvFSub(as_type(_1932.x), as_type(_1926)), as_type(_1926)))); _2160 = as_type(fma(as_type(_1826), float(as_type(ushort(_1478))), fma(as_type(_1841), spvFSub(as_type(_1980.z), as_type(_1976)), as_type(_1976)))); _2161 = as_type(fma(as_type(_1826), float(as_type(ushort(_1477 >> 16u))), fma(as_type(_1841), spvFSub(as_type(_1980.y), as_type(_1975)), as_type(_1975)))); _2162 = as_type(fma(as_type(_1826), float(as_type(ushort(_1477))), fma(as_type(_1841), spvFSub(as_type(_1980.x), as_type(_1974)), as_type(_1974)))); _2163 = as_type(fma(as_type(_1841), spvFSub(as_type(_1887.w), as_type(_1864)), as_type(_1864))); _2164 = as_type(fma(as_type(_1826), float(as_type(ushort(_1456))), fma(as_type(_1841), spvFSub(as_type(_1887.z), as_type(_1863)), as_type(_1863)))); _2165 = as_type(fma(as_type(_1826), float(as_type(ushort(_1455 >> 16u))), fma(as_type(_1841), spvFSub(as_type(_1887.y), as_type(_1862)), as_type(_1862)))); _2166 = as_type(fma(as_type(_1826), float(as_type(ushort(_1455))), fma(as_type(_1841), spvFSub(as_type(_1887.x), as_type(_1861)), as_type(_1861)))); _2167 = as_type(_2117); _2168 = as_type(fma(as_type(_1841), spvFSub(as_type(as_type(cs_img36.read(uint2(uint2(8u, _1832)), 0u)).x), as_type(_2111)), as_type(_2111))); _2169 = as_type(fma(as_type(_1841), spvFSub(as_type(as_type(cs_img36.read(uint2(uint2(6u, _1832)), 0u)).x), as_type(_2090)), as_type(_2090))); _2170 = as_type(_2068); } else { _2149 = _1805; _2150 = _1806; _2151 = _1807; _2152 = _1808; _2153 = _1809; _2154 = _1810; _2155 = _1811; _2156 = _1812; _2157 = _1813; _2158 = _1814; _2159 = _1815; _2160 = _1816; _2161 = _1817; _2162 = _1818; _2163 = _1819; _2164 = _1820; _2165 = _1821; _2166 = _1822; _2167 = _1823; _2168 = _1824; _2169 = _1826; _2170 = _1825; } float _2171 = float(int(cbuf_52.data[27u + buf2_dword_off])); bool _2175 = _1290 && (0.949999988079071044921875 <= _2171); uint _2400; uint _2401; uint _2402; uint _2403; uint _2404; uint _2405; uint _2406; if (_2175) { uint4 _2186 = as_type(cs_img4.read(uint2(uint2(9u, uint(int(spvFMul(_1581, float(int(cbuf_52.data[31u + buf2_dword_off]))))))), 0u)); uint _2187 = _2186.x; bool _2193 = _2175 && (float(int(_1514 >> 16u)) > as_type(_2187)); uint _2194; if (_2193) { _2194 = 0u; } else { _2194 = _1559; } uint _2199; uint _2200; if (_2193) { _2199 = _2194; _2200 = (cbuf_52.data[_1586] + extract_bits(_1513, 0u, 16u)) - (_1514 >> 16u); } else { _2199 = _1560; _2200 = _2194; } uint _2202 = uint(max(int(cbuf_52.data[_1586]), int(0u - cbuf_52.data[_1586]))); uint _2207 = uint(spvFMul(4294967296.0, 1.0 / float(_2202))); uint _2209 = _2202 * _2207; bool _2216 = 0u != (spvMulExtended(_2202, _2207))._m1; uint _2222 = uint(int(spvFSub(spvFAdd(as_type(_2187), float(int(_2200))), float(int(_2199))))); uint _2224 = (spvMulExtended(as_type(_2216 ? as_type(_2209) : as_type(0u - _2209)), _2207))._m1; uint _2228 = uint(max(int(_2222), int(0u - _2222))); uint _2232 = as_type(_2216 ? as_type(_2207 - _2224) : as_type(_2207 + _2224)); uint _2235 = (spvMulExtended(_2232, _2228))._m1 * _2202; uint _2236 = _2228 - _2235; bool _2237 = _2228 >= _2235; float _2243 = (_2237 && (_2236 >= _2202)) ? as_type(_2236 - _2202) : as_type(_2236); bool _2248 = 0u != _2202; float _2250 = _2248 ? (_2237 ? _2243 : as_type(_2202 + as_type(_2243))) : as_type(0xffffffffu /* nan */); uint _2256 = as_type((int(0u) > int(_2222)) ? as_type(0u - as_type(_2250)) : _2250); uint _2257 = _2256 + 1u; uint _2259 = uint(max(int(_2257), int(0u - _2257))); uint _2262 = (spvMulExtended(_2232, _2259))._m1 * _2202; uint _2263 = _2259 - _2262; bool _2264 = _2259 >= _2262; uint _2267 = uint(max(int(cbuf_52.data[_1582]), int(0u - cbuf_52.data[_1582]))); float _2274 = (_2264 && (_2263 >= _2202)) ? as_type(_2263 - _2202) : as_type(_2263); uint _2278 = uint(spvFMul(4294967296.0, 1.0 / float(_2267))); uint _2281 = _2267 * _2278; float _2284 = _2248 ? (_2264 ? _2274 : as_type(_2202 + as_type(_2274))) : as_type(0xffffffffu /* nan */); bool _2287 = 0u != (spvMulExtended(_2267, _2278))._m1; uint _2296 = as_type((int(0u) > int(_2257)) ? as_type(0u - as_type(_2284)) : _2284); uint _2298 = (spvMulExtended(as_type(_2287 ? as_type(_2281) : as_type(0u - _2281)), _2278))._m1; uint _2303 = uint(max(int(_2256), int(0u - _2256))); uint _2307 = as_type(_2287 ? as_type(_2278 - _2298) : as_type(_2278 + _2298)); uint _2308 = uint(max(int(_2296), int(0u - _2296))); uint _2312 = (spvMulExtended(_2307, _2308))._m1; uint _2313 = (spvMulExtended(_2307, _2303))._m1 * _2267; uint _2314 = _2312 * _2267; uint _2315 = _2303 - _2313; uint _2316 = _2308 - _2314; bool _2317 = _2303 >= _2313; bool _2319 = _2308 >= _2314; bool _2324 = _2319 && (_2316 >= _2267); float _2328 = (_2317 && (_2315 >= _2267)) ? as_type(_2315 - _2267) : as_type(_2315); float _2332 = _2324 ? as_type(_2316 - _2267) : as_type(_2316); bool _2339 = 0u != _2267; uint _2344 = 188u + buf2_dword_off; uint _2348 = 189u + buf2_dword_off; float _2355 = _2339 ? (_2319 ? (_2324 ? as_type(_2312 + 1u) : as_type(_2312)) : as_type(_2312 + 4294967295u)) : as_type(0xffffffffu /* nan */); float _2358 = _2339 ? (_2317 ? _2328 : as_type(_2267 + as_type(_2328))) : as_type(0xffffffffu /* nan */); float _2361 = _2339 ? (_2319 ? _2332 : as_type(_2267 + as_type(_2332))) : as_type(0xffffffffu /* nan */); _2400 = as_type(spvFMul(as_type(cbuf_52.data[_2348]), trunc(float(int(as_type((int(cbuf_52.data[_1582] ^ _2296) < int(0u)) ? as_type(0u - as_type(_2355)) : _2355)))))); _2401 = as_type(spvFMul(as_type(cbuf_52.data[_2344]), float(int(as_type((int(0u) > int(_2296)) ? as_type(0u - as_type(_2361)) : _2361))))); _2402 = as_type(spvFMul(as_type(cbuf_52.data[_2348]), trunc(spvFMul(float(int(_2256)), 1.0 / float(int(cbuf_52.data[_1582])))))); _2403 = as_type(spvFMul(as_type(cbuf_52.data[_2344]), float(int(as_type((int(_2256) < int(0u)) ? as_type(0u - as_type(_2358)) : _2358))))); _2404 = uint(int(as_type(_2187))); _2405 = _2222; _2406 = _2186.y; } else { _2400 = _2170; _2401 = _2149; _2402 = _2150; _2403 = as_type(_2171); _2404 = _1560; _2405 = _1559; _2406 = as_type(spvFMul(_1581, float(int(uint(max(int(_1594), int(1u))))))); } uint _2535; uint _2536; uint _2537; uint _2538; uint _2539; if (_1290 && (!_2175)) { uint _2410 = uint(max(int(cbuf_52.data[_1582]), int(0u - cbuf_52.data[_1582]))); uint _2416 = uint(spvFMul(4294967296.0, 1.0 / float(_2410))); uint _2417 = uint(int(trunc(as_type(_2406)))); uint _2418 = _2410 * _2416; bool _2423 = 0u != (spvMulExtended(_2410, _2416))._m1; uint _2424 = uint(min(int(_1594), int(_2417 + 1u))); uint _2429 = uint(max(int(1u), int(_2424))); uint _2431 = (spvMulExtended(as_type(_2423 ? as_type(_2418) : as_type(0u - _2418)), _2416))._m1; uint _2436 = uint(max(int(_2417), int(0u - _2417))); uint _2440 = as_type(_2423 ? as_type(_2416 - _2431) : as_type(_2416 + _2431)); uint _2442 = uint(max(int(_2424), int(uint(max(int(1u), int(0u - _2429)))))); uint _2446 = (spvMulExtended(_2440, _2442))._m1; uint _2447 = (spvMulExtended(_2440, _2436))._m1 * _2410; uint _2448 = _2446 * _2410; uint _2449 = _2436 - _2447; uint _2450 = _2442 - _2448; bool _2451 = _2436 >= _2447; bool _2453 = _2442 >= _2448; bool _2458 = _2453 && (_2450 >= _2410); float _2462 = (_2451 && (_2449 >= _2410)) ? as_type(_2449 - _2410) : as_type(_2449); float _2466 = _2458 ? as_type(_2450 - _2410) : as_type(_2450); bool _2473 = 0u != _2410; uint _2477 = 188u + buf2_dword_off; uint _2480 = 189u + buf2_dword_off; float _2487 = _2473 ? (_2453 ? (_2458 ? as_type(_2446 + 1u) : as_type(_2446)) : as_type(_2446 + 4294967295u)) : as_type(0xffffffffu /* nan */); float _2490 = _2473 ? (_2451 ? _2462 : as_type(_2410 + as_type(_2462))) : as_type(0xffffffffu /* nan */); float _2493 = _2473 ? (_2453 ? _2466 : as_type(_2410 + as_type(_2466))) : as_type(0xffffffffu /* nan */); float _2497 = float(int(_2417)); _2535 = as_type(spvFMul(as_type(cbuf_52.data[_2480]), trunc(float(int(as_type((int(cbuf_52.data[_1582] ^ _2429) < int(0u)) ? as_type(0u - as_type(_2487)) : _2487)))))); _2536 = as_type(spvFMul(as_type(cbuf_52.data[_2477]), float(int(as_type((int(0u) > int(_2429)) ? as_type(0u - as_type(_2493)) : _2493))))); _2537 = as_type(spvFMul(as_type(cbuf_52.data[_2480]), trunc(spvFMul(_2497, 1.0 / float(int(cbuf_52.data[_1582])))))); _2538 = as_type(spvFMul(as_type(cbuf_52.data[_2477]), float(int(as_type((int(_2417) < int(0u)) ? as_type(0u - as_type(_2490)) : _2490))))); _2539 = as_type(fast::clamp(spvFAdd(as_type(_2406), -_2497), 0.0, 1.0)); } else { _2535 = _2400; _2536 = _2401; _2537 = _2402; _2538 = _2403; _2539 = _2406; } uint _2540 = uint(spvFMul(10.0, as_type(_1316))); uint _2541 = uint(spvFMul(10.0, as_type(_1317))); uint _2542 = uint(spvFMul(10.0, as_type(_1318))); uint _2564 = uint(fma(as_type(cbuf_52.data[_1571]), 10.0, float(_2540))); uint _2567 = uint(fma(as_type(cbuf_52.data[_1571]), 10.0, float(_2541))); uint _2570 = uint(fma(as_type(cbuf_52.data[_1571]), 10.0, float(_2542))); uint _2574 = 264u + buf2_dword_off; uint _2584 = uint(fma(as_type(cbuf_52.data[_1571]), 10.0, float((_1276 + _2540) + 7001u))); uint _2587 = uint(fma(as_type(cbuf_52.data[_1571]), 10.0, float((_1276 + _2541) + 8001u))); uint _2590 = uint(fma(as_type(cbuf_52.data[_1571]), 10.0, float((_1276 + _2542) + 7777u))); uint _2606 = (spvMulExtended(_2590, 274877907u))._m1 >> 6u; float _2642 = spvFAdd(as_type(cbuf_52.data[265u + buf2_dword_off]), as_type(cbuf_52.data[_2574])); uint _2648 = 0u + buf3_dword_off; float _2651 = float(_1276 + 1547u); float _2652 = sqrt(fma(as_type(_1316), as_type(_1316), spvFMul(as_type(_1318), as_type(_1318)))); float _2653 = float(_1276 + 1107u); float _2654 = float(_1276 + 253u); float _2656 = spvFAdd(0.0500000007450580596923828125, fma(spvFMul(0.001000000047497451305389404296875, float(_2564 - (((spvMulExtended(_2564, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, spvFSub(as_type(_1316), as_type(_1333.x)))); float _2659 = fma(_2642, spvFMul(0.001000000047497451305389404296875, float(_2584 - (((spvMulExtended(_2584, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_52.data[_2574])); float _2660 = spvFAdd(0.0500000007450580596923828125, fma(spvFMul(0.001000000047497451305389404296875, float(_2567 - (((spvMulExtended(_2567, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, spvFSub(as_type(_1317), as_type(_1333.y)))); float _2663 = fma(_2642, spvFMul(0.001000000047497451305389404296875, float(_2587 - (((spvMulExtended(_2587, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_52.data[_2574])); float _2664 = spvFAdd(0.0500000007450580596923828125, fma(spvFMul(0.001000000047497451305389404296875, float(_2570 - (((spvMulExtended(_2570, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, spvFSub(as_type(_1318), as_type(_1333.z)))); float _2667 = fma(_2642, spvFMul(0.001000000047497451305389404296875, float(_2590 - (_2606 * 1000u))), -as_type(cbuf_52.data[_2574])); uint _2668 = as_type(float(as_type(ushort(_1493)))); uint _2669 = as_type(float(as_type(ushort(_1494)))); uint _2670 = as_type(_1554); uint _6670; bool _2712; uint _3088; uint _3089; uint _3090; uint _3091; uint _3092; uint _3093; uint _3094; uint _3095; uint _3096; uint _3097; uint _3098; uint _3099; uint _3100; uint _6648; uint _6649; uint _6650; uint _6651; uint _6652; uint _6653; uint _6654; uint _6655; uint _6656; uint _6657; uint _6658; uint _6659; uint _6660; uint _6661; uint _6662; uint _6663; uint _6664; uint _6665; uint _6666; uint _6667; uint _6668; uint _6669; uint _6671; uint _6672; uint _6673; uint _6674; uint _6675; uint _6676; uint _6677; uint _6678; uint _6679; uint _6680; uint _6681; uint _6682; uint _2671; uint _2672 = 0u; uint _2673 = 0u; uint _2674 = 0u; uint _2675 = 0u; uint _2676 = 0u; uint _2677 = 0u; uint _2678 = _2669; uint _2679 = _2670; uint _2680 = _2668; uint _2681; uint _2682; uint _2683 = _2606; uint _2684; uint _2685; uint _2686; uint _2687 = _2606; uint _2688; uint _2689; uint _2690 = _2606; uint _2691; uint _2692; uint _2693 = _2606; uint _2694 = _2606; uint _2695 = _2606; uint _2696 = _2606; uint _2697; uint _2698; uint _2699 = _2606; uint _2700; uint _2701; uint _2702 = 1065353216u; uint _2703 = 0u; uint _2704 = _1555; uint _2705; bool _2706 = _1290; uint _2707 = 0u; for (;;) { if (int(cbuf_56.data[_2648]) <= int(_2707)) { bool _2710 = _2706 && (!_1290); if (!_2710) { _6671 = _2671; _6672 = _2678; _6673 = _2679; _6674 = _2680; _6675 = _2672; _6676 = _2675; _6677 = _2673; _6678 = _2676; _6679 = _2674; _6680 = _2677; _6681 = _2702; _6682 = _2703; break; } else { _2712 = _2710; } } else { _2712 = _2706; } uint _2718 = ((0u + ((_2707 + 65u) * 16u)) + buf3_off) >> 2u; uint3 _2728 = uint3(cbuf_56.data[_2718 + 0u], cbuf_56.data[_2718 + 1u], cbuf_56.data[_2718 + 2u]); uint _2729 = _2728.x; uint _2730 = _2728.y; uint _2731 = _2728.z; uint _2737 = ((0u + ((_2707 + 57u) * 16u)) + buf3_off) >> 2u; bool _2740 = 0u == cbuf_56.data[_2737]; bool _2741 = _1290 && _2740; uint _2742; if (_2741) { _2742 = 1u; } else { _2742 = _2704; } uint _2743; uint _2744; uint _2745; if (_2741) { _2743 = 0u; _2744 = 0u; _2745 = 0u; } else { _2743 = _2700; _2744 = _2701; _2745 = _2705; } bool _2747 = _1290 && (!_2741); bool _2749; if (_2747) { _2749 = 1u == cbuf_56.data[_2737]; } else { _2749 = _2740; } uint _3087; uint _3101; uint _3102; uint _3103; if (_2747) { bool _2750 = _2747 && _2749; uint _2755; if (_2750) { _2755 = as_type(spvFSub(as_type(_2729), as_type(_1316))); } else { _2755 = _2745; } uint _2781; uint _2782; uint _2783; uint _2784; bool _2785; if (_2750) { float _2758 = spvFSub(as_type(_2730), as_type(_1317)); float _2761 = spvFSub(as_type(_2731), as_type(_1318)); bool _2777 = as_type(cbuf_56.data[((0u + ((_2707 + 73u) * 16u)) + buf3_off) >> 2u]) > sqrt(fma(as_type(_2755), as_type(_2755), fma(_2758, _2758, spvFMul(_2761, _2761)))); _2781 = _2731; _2782 = _2730; _2783 = _2729; _2784 = as_type(_2777 ? 1.4012984643248170709237295832899e-45 : 0.0); _2785 = _2777; } else { _2781 = _2743; _2782 = _2744; _2783 = _2755; _2784 = _2742; _2785 = _2749; } bool _2787 = _2747 && (!_2750); bool _2789; if (_2787) { _2789 = 2u == cbuf_56.data[_2737]; } else { _2789 = _2785; } uint _3070; uint _3071; uint _3072; uint _3073; uint _3074; uint _3075; uint _3076; uint _3077; uint _3078; uint _3079; uint _3080; uint _3081; uint _3082; uint _3083; uint _3084; uint _3085; uint _3086; if (_2787) { bool _2790 = _2787 && _2789; uint _2958; uint _2959; uint _2960; uint _2961; uint _2962; uint _2963; uint _2964; uint _2965; uint _2966; uint _2967; uint _2968; uint _2969; uint _2970; uint _2971; uint _2972; uint _2973; uint _2974; bool _2975; if (_2790) { uint _2791 = _2707 << 2u; uint _2797 = ((0u + ((_2791 + 105u) * 16u)) + buf3_off) >> 2u; uint3 _2807 = uint3(cbuf_56.data[_2797 + 0u], cbuf_56.data[_2797 + 1u], cbuf_56.data[_2797 + 2u]); uint _2808 = _2807.x; uint _2809 = _2807.y; uint _2810 = _2807.z; uint _2816 = ((0u + ((_2791 + 106u) * 16u)) + buf3_off) >> 2u; uint3 _2826 = uint3(cbuf_56.data[_2816 + 0u], cbuf_56.data[_2816 + 1u], cbuf_56.data[_2816 + 2u]); uint _2827 = _2826.x; uint _2828 = _2826.y; uint _2829 = _2826.z; uint _2835 = ((0u + ((_2791 + 107u) * 16u)) + buf3_off) >> 2u; uint3 _2845 = uint3(cbuf_56.data[_2835 + 0u], cbuf_56.data[_2835 + 1u], cbuf_56.data[_2835 + 2u]); uint _2846 = _2845.x; uint _2847 = _2845.y; uint _2848 = _2845.z; uint _2854 = ((0u + ((_2707 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _2864 = uint3(cbuf_56.data[_2854 + 0u], cbuf_56.data[_2854 + 1u], cbuf_56.data[_2854 + 2u]); uint _2865 = _2864.x; uint _2866 = _2864.y; uint _2867 = _2864.z; float _2872 = spvFMul(spvFAdd(as_type(_2729), as_type(_2865)), 0.5); float _2876 = spvFMul(spvFAdd(as_type(_2730), as_type(_2866)), 0.5); float _2880 = spvFMul(spvFAdd(as_type(_2731), as_type(_2867)), 0.5); float _2882 = spvFSub(as_type(_2865), _2872); float _2888 = spvFSub(as_type(_2866), _2876); float _2893 = spvFSub(as_type(_2867), _2880); float _2898 = spvFSub(as_type(_1316), _2872); float _2901 = spvFSub(as_type(_1317), _2876); float _2903 = spvFSub(as_type(_1318), _2880); bool _2912 = abs(fma(_2898, as_type(_2808), fma(_2901, as_type(_2809), spvFMul(as_type(_2810), _2903)))) > abs(_2882); bool _2913 = _2790 && _2912; uint _2914; if (_2913) { _2914 = 4294967295u; } else { _2914 = _2784; } bool _2916 = _2790 && (!_2913); uint _2920; if (_2916) { _2920 = as_type(spvFMul(as_type(_2829), _2903)); } else { _2920 = as_type(_2882); } uint _2950; bool _2951; if (_2916) { float _2925 = fma(_2898, as_type(_2827), fma(_2901, as_type(_2828), as_type(_2920))); bool _2929 = abs(_2925) > abs(_2888); bool _2930 = _2916 && _2929; uint _2931; if (_2930) { _2931 = 4294967295u; } else { _2931 = _2914; } bool _2933 = _2916 && (!_2930); uint _2937; if (_2933) { _2937 = as_type(spvFMul(as_type(_2848), _2903)); } else { _2937 = as_type(_2925); } uint _2948; bool _2949; if (_2933) { bool _2945 = abs(fma(_2898, as_type(_2846), fma(_2901, as_type(_2847), as_type(_2937)))) > abs(_2893); _2948 = as_type(_2945 ? as_type(0xffffffffu /* nan */) : 1.4012984643248170709237295832899e-45); _2949 = _2945; } else { _2948 = _2931; _2949 = _2929; } _2950 = _2948; _2951 = _2949; } else { _2950 = _2914; _2951 = _2912; } _2958 = as_type(_2898); _2959 = _2810; _2960 = _2809; _2961 = _2808; _2962 = _2829; _2963 = _2828; _2964 = _2827; _2965 = _2848; _2966 = _2847; _2967 = _2846; _2968 = as_type(fast::max(abs(_2882), abs(_2882))); _2969 = as_type(fast::max(abs(_2888), abs(_2888))); _2970 = as_type(fast::max(abs(_2893), abs(_2893))); _2971 = as_type(_2880); _2972 = as_type(_2876); _2973 = as_type(_2872); _2974 = _2950; _2975 = _2951; } else { _2958 = _2671; _2959 = _2685; _2960 = _2686; _2961 = _2687; _2962 = _2688; _2963 = _2689; _2964 = _2690; _2965 = _2691; _2966 = _2692; _2967 = _2693; _2968 = _2694; _2969 = _2695; _2970 = _2696; _2971 = _2781; _2972 = _2782; _2973 = _2783; _2974 = _2784; _2975 = _2789; } bool _2977 = _2787 && (!_2790); bool _2979; if (_2977) { _2979 = 3u == cbuf_56.data[_2737]; } else { _2979 = _2975; } uint _3066; uint _3067; uint _3068; uint _3069; if (_2977) { bool _2980 = _2977 && _2979; uint _3056; uint _3057; uint _3058; uint _3059; if (_2980) { uint _2985 = ((0u + ((_2707 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _2995 = uint3(cbuf_56.data[_2985 + 0u], cbuf_56.data[_2985 + 1u], cbuf_56.data[_2985 + 2u]); float _3001 = spvFSub(as_type(_2995.x), as_type(_2729)); float _3004 = spvFSub(as_type(_2995.y), as_type(_2730)); float _3007 = spvFSub(as_type(_2995.z), as_type(_2731)); float _3025 = fast::clamp(spvFMul(fma(spvFSub(as_type(_1316), as_type(_2729)), _3001, fma(spvFSub(as_type(_1317), as_type(_2730)), _3004, spvFMul(_3007, spvFSub(as_type(_1318), as_type(_2731))))), 1.0 / fma(_3001, _3001, fma(_3004, _3004, spvFMul(_3007, _3007)))), 0.0, 1.0); float _3027 = fma(_3001, _3025, as_type(_2729)); float _3030 = fma(_3004, _3025, as_type(_2730)); float _3033 = fma(_3007, _3025, as_type(_2731)); float _3036 = spvFSub(as_type(_1316), _3027); float _3038 = spvFSub(as_type(_1317), _3030); float _3040 = spvFSub(as_type(_1318), _3033); _3056 = as_type(_3033); _3057 = as_type(_3030); _3058 = as_type(_3027); _3059 = as_type((as_type(cbuf_56.data[((0u + ((_2707 + 73u) * 16u)) + buf3_off) >> 2u]) >= sqrt(fma(_3036, _3036, fma(_3038, _3038, spvFMul(_3040, _3040))))) ? 1.4012984643248170709237295832899e-45 : 0.0); } else { _3056 = _2971; _3057 = _2972; _3058 = _2973; _3059 = _2974; } uint _3062; uint _3063; uint _3064; uint _3065; if (_2977 && (!_2980)) { _3062 = _2731; _3063 = _2730; _3064 = _2729; _3065 = 0u; } else { _3062 = _3056; _3063 = _3057; _3064 = _3058; _3065 = _3059; } _3066 = _3062; _3067 = _3063; _3068 = _3064; _3069 = _3065; } else { _3066 = _2971; _3067 = _2972; _3068 = _2973; _3069 = _2974; } _3070 = _2958; _3071 = _2959; _3072 = _2960; _3073 = _2961; _3074 = _2962; _3075 = _2963; _3076 = _2964; _3077 = _2965; _3078 = _2966; _3079 = _2967; _3080 = _2968; _3081 = _2969; _3082 = _2970; _3083 = _3066; _3084 = _3067; _3085 = _3068; _3086 = _3069; } else { _3070 = _2671; _3071 = _2685; _3072 = _2686; _3073 = _2687; _3074 = _2688; _3075 = _2689; _3076 = _2690; _3077 = _2691; _3078 = _2692; _3079 = _2693; _3080 = _2694; _3081 = _2695; _3082 = _2696; _3083 = _2781; _3084 = _2782; _3085 = _2783; _3086 = _2784; } _3087 = _3070; _3088 = _3071; _3089 = _3072; _3090 = _3073; _3091 = _3074; _3092 = _3075; _3093 = _3076; _3094 = _3077; _3095 = _3078; _3096 = _3079; _3097 = _3080; _3098 = _3081; _3099 = _3082; _3100 = _3083; _3101 = _3084; _3102 = _3085; _3103 = _3086; } else { _3087 = _2671; _3088 = _2685; _3089 = _2686; _3090 = _2687; _3091 = _2688; _3092 = _2689; _3093 = _2690; _3094 = _2691; _3095 = _2692; _3096 = _2693; _3097 = _2694; _3098 = _2695; _3099 = _2696; _3100 = _2743; _3101 = _2744; _3102 = _2745; _3103 = _2742; } bool _3105 = _1290 && (int(0u) < int(_3103)); if (_3105) { uint _3111 = ((0u + ((_2707 + 137u) * 16u)) + buf3_off) >> 2u; uint4 _3124 = uint4(cbuf_56.data[_3111 + 0u], cbuf_56.data[_3111 + 1u], cbuf_56.data[_3111 + 2u], cbuf_56.data[_3111 + 3u]); uint _3125 = _3124.x; uint _3135 = ((0u + ((_2707 + 25u) * 16u)) + buf3_off) >> 2u; uint4 _3148 = uint4(cbuf_56.data[_3135 + 0u], cbuf_56.data[_3135 + 1u], cbuf_56.data[_3135 + 2u], cbuf_56.data[_3135 + 3u]); uint _3149 = _3148.x; uint _3150 = _3148.y; uint _3151 = _3148.z; uint _3152 = _3148.w; uint _3156 = ((0u + ((_2707 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _3169 = uint4(cbuf_56.data[_3156 + 0u], cbuf_56.data[_3156 + 1u], cbuf_56.data[_3156 + 2u], cbuf_56.data[_3156 + 3u]); uint _3170 = _3169.x; uint _3171 = _3169.z; uint _3178 = ((0u + ((_2707 + 33u) * 16u)) + buf3_off) >> 2u; uint3 _3188 = uint3(cbuf_56.data[_3178 + 0u], cbuf_56.data[_3178 + 1u], cbuf_56.data[_3178 + 2u]); uint _3189 = _3188.x; uint _3190 = _3188.y; uint _3191 = _3188.z; float _3198 = spvFMul(0.0055555556900799274444580078125, fma(_2652, as_type(_3124.w), spvFMul(as_type(cbuf_52.data[_1571]), as_type(_3124.z)))); float _3206 = spvFMul(6.283052921295166015625, fract(abs(spvFMul(0.159158289432525634765625, _3198)))); uint _3208 = uint(spvFAdd(_2651, as_type(_3149))); float _3214 = spvFAdd(-3.1415264606475830078125, (0.0 > _3198) ? (-_3206) : _3206); bool _3227 = _3171 == 2u; bool _3230 = _3171 == 5u; float _3244 = fma(as_type(_3152), spvFMul(0.001000000047497451305389404296875, float(_3208 - (((spvMulExtended(_3208, 274877907u))._m1 >> 6u) * 1000u))), as_type(_3149)); float _3246 = fma(fast::clamp(fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_3214)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _3214)))))), 0.5, 0.5), 0.0, 1.0), spvFSub(as_type(_3124.y), as_type(_3125)), as_type(_3125)); float _3250 = spvFAdd(1.0, as_type(_2703)); bool _3264 = _3105 && ((((_3171 == 1u) || (_3171 == 4u)) || _3227) || _3230); uint _3269; if (_3264) { _3269 = as_type(spvFSub(as_type(_1316), as_type(_3102))); } else { _3269 = as_type(_3246); } uint _3367; uint _3368; uint _3369; uint _3370; if (_3264) { float _3272 = spvFSub(as_type(_1317), as_type(_3101)); float _3276 = spvFSub(as_type(_1318), as_type(_3100)); uint _3328; uint _3329; uint _3330; if (_3264 && (_3227 || _3230)) { uint _3285 = ((0u + ((_2707 + 97u) * 16u)) + buf3_off) >> 2u; uint2 _3292 = uint2(cbuf_56.data[_3285 + 0u], cbuf_56.data[_3285 + 1u]); float _3305 = rsqrt(fma(as_type(_3269), as_type(_3269), fma(_3272, _3272, spvFMul(_3276, _3276)))); float _3314 = fma(fast::clamp(spvFMul(fast::max(0.0, spvFSub(sqrt(fma(as_type(_3269), as_type(_3269), spvFMul(_3276, _3276))), as_type(_3292.x))), 1.0 / as_type(_3292.y)), 0.0, 1.0), -0.89999997615814208984375, 1.0); float _3315 = spvFMul(_3272, _3305); _3328 = as_type(spvFMul(_3314, spvFMul(as_type(_3269), _3305))); _3329 = as_type(spvFAdd(1.0, spvFSub(fma(-_3315, _3314, _3315), _3314))); _3330 = as_type(spvFMul(_3314, spvFMul(_3276, _3305))); } else { _3328 = _3269; _3329 = as_type(_3272); _3330 = as_type(_3276); } float _3340 = rsqrt(fma(as_type(_3328), as_type(_3328), fma(as_type(_3329), as_type(_3329), spvFMul(as_type(_3330), as_type(_3330))))); uint _3349 = uint(spvFAdd(_2653, as_type(_3149))); float _3359 = fma(as_type(_3152), spvFMul(0.001000000047497451305389404296875, float(_3349 - (((spvMulExtended(_3349, 274877907u))._m1 >> 6u) * 1000u))), as_type(_3149)); _3367 = as_type(spvFMul(spvFMul(as_type(_3330), _3340), _3359)); _3368 = as_type(spvFMul(spvFMul(as_type(_3328), _3340), _3359)); _3369 = as_type(_3359); _3370 = as_type(spvFMul(spvFMul(as_type(_3329), _3340), _3359)); } else { _3367 = as_type(spvFMul(as_type(_3191), _3244)); _3368 = _3269; _3369 = as_type(spvFMul(as_type(_3190), _3244)); _3370 = as_type(spvFMul(as_type(_3189), _3244)); } uint _3373; uint _3374; if (_3105 && (!_3264)) { _3373 = _3369; _3374 = _3370; } else { _3373 = _3370; _3374 = _3368; } bool _3376 = _3105 && (int(0u) < int(_3169.w)); uint _6170; uint _6171; uint _6172; uint _6173; uint _6174; uint _6175; uint _6176; uint _6177; if (_3376) { bool _3379 = (_3171 == 0u) || (3u == _3171); bool _3380 = _3376 && _3379; bool _3382; if (_3380) { _3382 = 1u == cbuf_56.data[_2737]; } else { _3382 = _3379; } uint _6135; uint _6136; uint _6137; uint _6138; uint _6139; uint _6140; uint _6141; uint _6142; uint _6143; if (_3380) { bool _3383 = _3380 && _3382; uint _3514; uint _3515; uint _3516; uint _3517; uint _3518; uint _3519; uint _3520; uint _3521; bool _3522; if (_3383) { uint _3388 = ((0u + ((_2707 + 73u) * 16u)) + buf3_off) >> 2u; float _3395 = spvFMul(fast::max(as_type(cbuf_56.data[_3388]), as_type(cbuf_56.data[_3388])), 4.0); float _3399 = fma(-as_type(_3189), _3395, as_type(_1316)); float _3403 = fma(-as_type(_3190), _3395, as_type(_1317)); float _3407 = fma(-as_type(_3191), _3395, as_type(_1318)); float _3409 = spvFMul(as_type(_3189), _3395); float _3412 = spvFMul(as_type(_3190), _3395); float _3415 = spvFMul(as_type(_3191), _3395); float _3417 = spvFSub(_3399, as_type(_3102)); float _3420 = spvFSub(_3403, as_type(_3101)); float _3422 = spvFSub(_3407, as_type(_3100)); float _3425 = fma(_3417, _3409, fma(_3420, _3412, spvFMul(_3415, _3422))); float _3432 = fma(-as_type(cbuf_56.data[_3388]), as_type(cbuf_56.data[_3388]), fma(_3417, _3417, fma(_3420, _3420, spvFMul(_3422, _3422)))); bool _3437 = _3383 && ((_3425 > 0.0) && (0.0 < _3432)); uint _3438; uint _3439; if (_3437) { _3438 = 0u; _3439 = _2699; } else { _3438 = as_type(_3417); _3439 = as_type(_3409); } bool _3441 = _3383 && (!_3437); uint _3445; if (_3441) { _3445 = as_type(fma(_3425, _3425, -_3432)); } else { _3445 = as_type(_3432); } uint _3471; uint _3472; uint _3473; uint _3474; if (_3441) { bool _3448 = _3441 && (0.0 > as_type(_3445)); uint _3449; uint _3450; if (_3448) { _3449 = 0u; _3450 = _2699; } else { _3449 = _3438; _3450 = _3439; } bool _3452 = _3441 && (!_3448); uint _3453; if (_3452) { _3453 = 1u; } else { _3453 = _3449; } uint _3468; uint _3469; uint _3470; if (_3452) { float _3458 = spvFAdd(-_3425, -sqrt(as_type(_3445))); float _3460 = (0.0 <= _3458) ? _3458 : 0.0; _3468 = as_type(fma(_3460, _3415, _3407)); _3469 = as_type(fma(_3460, _3412, _3403)); _3470 = as_type(fma(_3460, as_type(_3450), _3399)); } else { _3468 = _2697; _3469 = _2698; _3470 = _3450; } _3471 = _3468; _3472 = _3469; _3473 = _3470; _3474 = _3453; } else { _3471 = _2697; _3472 = _2698; _3473 = _3439; _3474 = _3438; } bool _3475 = 0u == _3474; bool _3478 = _3383 && (!(_3383 && _3475)); bool _3481; if (_3478) { _3481 = 0.0 >= as_type(_3150); } else { _3481 = _3475; } uint _3512; uint _3513; if (_3478) { bool _3482 = _3478 && _3481; uint _3483; if (_3482) { _3483 = 0u; } else { _3483 = 1065353216u; } bool _3485 = _3478 && (!_3482); uint _3490; if (_3485) { _3490 = as_type(spvFSub(as_type(_1316), as_type(_3473))); } else { _3490 = _2699; } uint _3510; uint _3511; if (_3485) { float _3493 = spvFSub(as_type(_1317), as_type(_3472)); float _3496 = spvFSub(as_type(_1318), as_type(_3471)); float _3504 = 1.0 / as_type(_3150); _3510 = as_type(_3504); _3511 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_3490), as_type(_3490), fma(_3493, _3493, spvFMul(_3496, _3496)))), _3504), 0.0, 1.0))); } else { _3510 = _3150; _3511 = _3483; } _3512 = _3510; _3513 = _3511; } else { _3512 = _3150; _3513 = 1065353216u; } _3514 = _3471; _3515 = _3472; _3516 = _3473; _3517 = _3512; _3518 = _3474; _3519 = as_type(_3412); _3520 = _3473; _3521 = _3513; _3522 = _3481; } else { _3514 = _2697; _3515 = _2698; _3516 = _2699; _3517 = _3150; _3518 = _3191; _3519 = _3190; _3520 = _3189; _3521 = _3369; _3522 = _3382; } bool _3524 = _3380 && (!_3383); bool _3526; if (_3524) { _3526 = 2u == cbuf_56.data[_2737]; } else { _3526 = _3522; } uint _6129; uint _6130; uint _6131; uint _6132; uint _6133; uint _6134; if (_3524) { bool _3527 = _3524 && _3526; uint _3532; if (_3527) { _3532 = as_type(fast::max(as_type(_3099), as_type(_3098))); } else { _3532 = _3521; } uint _5848; uint _5849; uint _5850; uint _5851; uint _5852; uint _5853; bool _5854; if (_3527) { float _3537 = spvFMul(3.0, fast::max(as_type(_3097), as_type(_3532))); float _3541 = fma(-as_type(_3520), _3537, as_type(_1316)); float _3545 = fma(-as_type(_3519), _3537, as_type(_1317)); float _3549 = fma(-as_type(_3518), _3537, as_type(_1318)); float _3555 = spvFMul(as_type(_3097), as_type(_3089)); float _3559 = spvFMul(as_type(_3097), as_type(_3088)); float _3563 = spvFMul(as_type(_3098), as_type(_3093)); float _3571 = fma(as_type(_3097), as_type(_3090), as_type(_3102)); float _3575 = fma(as_type(_3097), as_type(_3089), as_type(_3101)); float _3579 = fma(as_type(_3097), as_type(_3088), as_type(_3100)); float _3585 = fma(as_type(_3098), as_type(_3092), _3575); float _3588 = fma(as_type(_3098), as_type(_3091), _3579); float _3591 = fma(as_type(_3099), as_type(_3096), fma(as_type(_3098), as_type(_3093), _3571)); float _3594 = fma(as_type(_3099), as_type(_3095), _3585); float _3598 = fma(as_type(_3099), as_type(_3094), _3588); float _3603 = fma(-as_type(_3097), as_type(_3090), as_type(_3102)); float _3608 = fma(-as_type(_3097), as_type(_3089), as_type(_3101)); float _3613 = fma(-as_type(_3097), as_type(_3088), as_type(_3100)); float _3616 = fma(as_type(_3098), as_type(_3093), _3603); float _3620 = fma(as_type(_3098), as_type(_3092), _3608); float _3623 = fma(as_type(_3098), as_type(_3091), _3613); float _3626 = fma(as_type(_3099), as_type(_3096), _3616); float _3629 = fma(as_type(_3099), as_type(_3095), _3620); float _3632 = fma(as_type(_3099), as_type(_3094), _3623); float _3645 = fma(-as_type(_3098), as_type(_3093), fma(as_type(_3099), as_type(_3096), _3571)); float _3650 = fma(-as_type(_3098), as_type(_3092), fma(as_type(_3099), as_type(_3095), _3575)); float _3667 = fma(-as_type(_3098), as_type(_3093), fma(as_type(_3099), as_type(_3096), _3603)); float _3671 = fma(-as_type(_3098), as_type(_3092), fma(as_type(_3099), as_type(_3095), _3608)); float _3675 = fma(-as_type(_3098), as_type(_3091), fma(as_type(_3099), as_type(_3094), _3613)); float _3676 = spvFSub(_3645, _3591); uint _3677 = as_type(_3676); float _3678 = spvFSub(_3650, _3594); float _3679 = spvFSub(fma(-as_type(_3098), as_type(_3091), fma(as_type(_3099), as_type(_3094), _3579)), _3598); float _3681 = spvFSub(_3667, _3591); float _3683 = spvFSub(_3671, _3594); float _3684 = spvFSub(_3675, _3598); float _3686 = spvFSub(_3541, as_type(_1316)); float _3688 = spvFSub(_3545, as_type(_1317)); float _3690 = spvFSub(_3549, as_type(_1318)); float _3695 = fma(_3678, _3684, -spvFMul(_3679, _3683)); float _3698 = fma(_3679, _3681, -spvFMul(_3676, _3684)); float _3701 = fma(_3676, _3683, -spvFMul(_3678, _3681)); float _3704 = fma(_3686, _3695, fma(_3688, _3698, spvFMul(_3690, _3701))); bool _3706 = _3527 && (0.0 >= _3704); uint _3707; uint _3708; uint _3709; uint _3710; if (_3706) { _3707 = 0u; _3708 = 0u; _3709 = 0u; _3710 = 0u; } else { _3707 = as_type(_3679); _3708 = as_type(_3681); _3709 = as_type(_3698); _3710 = as_type(_3695); } bool _3712 = _3527 && (!_3706); uint _3715; if (_3712) { _3715 = as_type(spvFSub(_3541, _3591)); } else { _3715 = _2684; } uint _3827; uint _3828; uint _3829; uint _3830; uint _3831; if (_3712) { float _3716 = spvFSub(_3545, _3594); float _3717 = spvFSub(_3549, _3598); float _3723 = fma(as_type(_3715), as_type(_3710), fma(_3716, as_type(_3709), spvFMul(_3701, _3717))); bool _3724 = 0.0 > _3723; bool _3725 = _3712 && _3724; uint _3726; uint _3727; uint _3728; uint _3729; if (_3725) { _3726 = 0u; _3727 = 0u; _3728 = 0u; _3729 = 0u; } else { _3726 = _3709; _3727 = _3707; _3728 = _3710; _3729 = _3708; } bool _3731 = _3712 && (!_3725); bool _3733; if (_3731) { _3733 = _3723 > _3704; } else { _3733 = _3724; } uint _3822; uint _3823; uint _3824; uint _3825; uint _3826; if (_3731) { bool _3734 = _3731 && _3733; uint _3735; uint _3736; uint _3737; uint _3738; if (_3734) { _3735 = 0u; _3736 = 0u; _3737 = 0u; _3738 = 0u; } else { _3735 = _3726; _3736 = _3727; _3737 = _3728; _3738 = _3729; } bool _3740 = _3731 && (!_3734); uint _3744; if (_3740) { _3744 = as_type(spvFMul(_3688, as_type(_3715))); } else { _3744 = _3737; } uint _3817; uint _3818; uint _3819; uint _3820; uint _3821; if (_3740) { float _3748 = fma(_3686, _3716, -as_type(_3744)); float _3753 = fma(_3690, as_type(_3715), -spvFMul(_3686, _3717)); float _3757 = fma(_3688, _3717, -spvFMul(_3690, _3716)); float _3760 = fma(as_type(_3738), _3757, fma(_3683, _3753, spvFMul(_3684, _3748))); bool _3764 = _3740 && ((_3760 > _3704) || (_3760 < 0.0)); uint _3765; uint _3766; uint _3767; uint _3768; if (_3764) { _3765 = 0u; _3766 = 0u; _3767 = 0u; _3768 = 0u; } else { _3765 = _3738; _3766 = as_type(_3753); _3767 = as_type(_3748); _3768 = _3736; } bool _3770 = _3740 && (!_3764); uint _3775; if (_3770) { _3775 = as_type(spvFMul(as_type(_3768), as_type(_3767))); } else { _3775 = _3768; } uint _3812; uint _3813; uint _3814; uint _3815; uint _3816; if (_3770) { float _3779 = fma(_3676, _3757, fma(_3678, as_type(_3766), as_type(_3775))); float _3781 = spvFSub(_3760, _3779); bool _3787 = _3770 && ((_3781 > _3704) || (0.0 > (-_3779))); uint _3788; uint _3789; uint _3790; uint _3791; if (_3787) { _3788 = 0u; _3789 = 0u; _3790 = 0u; _3791 = 0u; } else { _3788 = _3767; _3789 = _3765; _3790 = as_type(_3779); _3791 = _3766; } bool _3793 = _3770 && (!_3787); uint _3794; if (_3793) { _3794 = 1u; } else { _3794 = _3791; } uint _3809; uint _3810; uint _3811; if (_3793) { float _3796 = spvFMul(_3723, 1.0 / _3704); _3809 = as_type(fma(_3796, spvFSub(as_type(_1316), _3541), _3541)); _3810 = as_type(fma(_3796, spvFSub(as_type(_1318), _3549), _3549)); _3811 = as_type(fma(_3796, spvFSub(as_type(_1317), _3545), _3545)); } else { _3809 = _3788; _3810 = _3789; _3811 = _3790; } _3812 = _3809; _3813 = _3810; _3814 = _3811; _3815 = as_type(_3781); _3816 = _3794; } else { _3812 = _3767; _3813 = _3765; _3814 = _3775; _3815 = _3677; _3816 = _3766; } _3817 = _3812; _3818 = _3813; _3819 = _3814; _3820 = _3815; _3821 = _3816; } else { _3817 = _3744; _3818 = _3738; _3819 = _3736; _3820 = _3677; _3821 = _3735; } _3822 = _3817; _3823 = _3818; _3824 = _3819; _3825 = _3820; _3826 = _3821; } else { _3822 = _3728; _3823 = _3729; _3824 = _3727; _3825 = _3677; _3826 = _3726; } _3827 = _3822; _3828 = _3823; _3829 = _3824; _3830 = _3825; _3831 = _3826; } else { _3827 = _3710; _3828 = _3708; _3829 = _3707; _3830 = _3677; _3831 = _3709; } bool _3835 = _3527 && (!(_3527 && (int(0u) < int(_3831)))); uint _3838; if (_3835) { _3838 = as_type(spvFSub(_3626, _3667)); } else { _3838 = _3830; } uint _3986; uint _3987; uint _3988; uint _3989; uint _3990; if (_3835) { float _3839 = spvFSub(_3629, _3671); float _3840 = spvFSub(_3632, _3675); float _3842 = spvFSub(_3591, _3667); float _3844 = spvFSub(_3594, _3671); float _3845 = spvFSub(_3598, _3675); float _3852 = fma(_3839, _3845, -spvFMul(_3840, _3844)); float _3855 = fma(_3840, _3842, -spvFMul(as_type(_3838), _3845)); float _3858 = fma(as_type(_3838), _3844, -spvFMul(_3839, _3842)); float _3861 = fma(_3686, _3852, fma(_3688, _3855, spvFMul(_3690, _3858))); bool _3863 = _3835 && (0.0 >= _3861); uint _3864; uint _3865; uint _3866; uint _3867; if (_3863) { _3864 = 0u; _3865 = 0u; _3866 = 0u; _3867 = 0u; } else { _3864 = as_type(_3840); _3865 = as_type(_3845); _3866 = as_type(_3842); _3867 = as_type(_3852); } bool _3869 = _3835 && (!_3863); uint _3872; if (_3869) { _3872 = as_type(spvFSub(_3541, _3667)); } else { _3872 = _3715; } uint _3981; uint _3982; uint _3983; uint _3984; if (_3869) { float _3873 = spvFSub(_3545, _3671); float _3874 = spvFSub(_3549, _3675); float _3879 = fma(as_type(_3872), as_type(_3867), fma(_3873, _3855, spvFMul(_3858, _3874))); bool _3880 = 0.0 > _3879; bool _3881 = _3869 && _3880; uint _3882; uint _3883; uint _3884; uint _3885; if (_3881) { _3882 = 0u; _3883 = 0u; _3884 = 0u; _3885 = 0u; } else { _3882 = _3864; _3883 = _3867; _3884 = _3865; _3885 = _3866; } bool _3887 = _3869 && (!_3881); bool _3889; if (_3887) { _3889 = _3879 > _3861; } else { _3889 = _3880; } uint _3977; uint _3978; uint _3979; uint _3980; if (_3887) { bool _3890 = _3887 && _3889; uint _3891; uint _3892; uint _3893; uint _3894; if (_3890) { _3891 = 0u; _3892 = 0u; _3893 = 0u; _3894 = 0u; } else { _3891 = _3882; _3892 = _3883; _3893 = _3884; _3894 = _3885; } bool _3896 = _3887 && (!_3890); uint _3900; if (_3896) { _3900 = as_type(spvFMul(_3688, as_type(_3872))); } else { _3900 = _3892; } uint _3973; uint _3974; uint _3975; uint _3976; if (_3896) { float _3904 = fma(_3686, _3873, -as_type(_3900)); float _3909 = fma(_3690, as_type(_3872), -spvFMul(_3686, _3874)); float _3913 = fma(_3688, _3874, -spvFMul(_3690, _3873)); float _3916 = fma(as_type(_3894), _3913, fma(_3844, _3909, spvFMul(as_type(_3893), _3904))); bool _3921 = _3896 && ((_3916 > _3861) || (_3916 < 0.0)); uint _3922; uint _3923; uint _3924; uint _3925; if (_3921) { _3922 = 0u; _3923 = 0u; _3924 = 0u; _3925 = 0u; } else { _3922 = _3894; _3923 = as_type(_3916); _3924 = as_type(_3904); _3925 = _3891; } bool _3927 = _3896 && (!_3921); uint _3932; if (_3927) { _3932 = as_type(spvFMul(as_type(_3925), as_type(_3924))); } else { _3932 = _3925; } uint _3969; uint _3970; uint _3971; uint _3972; if (_3927) { float _3936 = fma(as_type(_3838), _3913, fma(_3839, _3909, as_type(_3932))); bool _3944 = _3927 && ((spvFSub(as_type(_3923), _3936) > _3861) || (0.0 > (-_3936))); uint _3945; uint _3946; uint _3947; uint _3948; if (_3944) { _3945 = 0u; _3946 = 0u; _3947 = 0u; _3948 = 0u; } else { _3945 = _3924; _3946 = _3922; _3947 = as_type(_3936); _3948 = _3923; } bool _3950 = _3927 && (!_3944); uint _3951; if (_3950) { _3951 = 1u; } else { _3951 = _3948; } uint _3966; uint _3967; uint _3968; if (_3950) { float _3953 = spvFMul(_3879, 1.0 / _3861); _3966 = as_type(fma(_3953, spvFSub(as_type(_1316), _3541), _3541)); _3967 = as_type(fma(_3953, spvFSub(as_type(_1318), _3549), _3549)); _3968 = as_type(fma(_3953, spvFSub(as_type(_1317), _3545), _3545)); } else { _3966 = _3945; _3967 = _3946; _3968 = _3947; } _3969 = _3966; _3970 = _3967; _3971 = _3968; _3972 = _3951; } else { _3969 = _3924; _3970 = _3922; _3971 = _3932; _3972 = _3923; } _3973 = _3969; _3974 = _3970; _3975 = _3971; _3976 = _3972; } else { _3973 = _3900; _3974 = _3894; _3975 = _3891; _3976 = _3893; } _3977 = _3973; _3978 = _3974; _3979 = _3975; _3980 = _3976; } else { _3977 = _3883; _3978 = _3885; _3979 = _3882; _3980 = _3884; } _3981 = _3977; _3982 = _3978; _3983 = _3979; _3984 = _3980; } else { _3981 = _3867; _3982 = _3866; _3983 = _3864; _3984 = _3865; } _3986 = _3872; _3987 = _3982; _3988 = _3983; _3989 = _3981; _3990 = uint(max(int(0u), int(_3984))); } else { _3986 = _3715; _3987 = _3828; _3988 = _3829; _3989 = _3827; _3990 = _3831; } float _4000 = fma(as_type(_3095), 0.00999999977648258209228515625, as_type(_3988)); float _4004 = fma(as_type(_3094), 0.00999999977648258209228515625, as_type(_3987)); bool _4007 = _3527 && (!(_3527 && (int(0u) < int(_3990)))); uint _4013; if (_4007) { _4013 = as_type(fma(-as_type(_3099), as_type(_3096), _3616)); } else { _4013 = as_type(_3616); } uint _5801; uint _5802; uint _5803; uint _5804; uint _5805; uint _5806; uint _5807; uint _5808; if (_4007) { float _4017 = fma(-as_type(_3099), as_type(_3095), _3620); float _4021 = fma(-as_type(_3099), as_type(_3094), _3623); float _4029 = fma(-as_type(_3099), as_type(_3095), _3585); float _4033 = fma(-as_type(_3099), as_type(_3094), _3588); float _4058 = fma(-as_type(_3099), as_type(_3096), spvFAdd(as_type(_3102), fma(-as_type(_3098), as_type(_3093), -spvFMul(as_type(_3097), as_type(_3090))))); float _4063 = fma(-as_type(_3099), as_type(_3095), spvFAdd(as_type(_3101), fma(-as_type(_3098), as_type(_3092), -_3555))); uint _4064 = as_type(_4063); float _4068 = fma(-as_type(_3099), as_type(_3094), spvFAdd(as_type(_3100), fma(-as_type(_3098), as_type(_3091), -_3559))); uint _4069 = as_type(_4068); float _4091 = fma(-as_type(_3099), as_type(_3096), spvFAdd(as_type(_3102), fma(as_type(_3097), as_type(_3090), -_3563))); uint _4092 = as_type(_4091); float _4096 = fma(-as_type(_3099), as_type(_3095), spvFAdd(as_type(_3101), fma(as_type(_3097), as_type(_3089), -_4004))); float _4100 = fma(-as_type(_3099), as_type(_3094), spvFAdd(as_type(_3100), fma(as_type(_3097), as_type(_3088), -spvFMul(as_type(_3098), as_type(_3091))))); float _4102 = spvFSub(_4058, as_type(_4013)); uint _4103 = as_type(_4102); float _4104 = spvFSub(_4063, _4017); float _4105 = spvFSub(_4068, _4021); float _4108 = spvFSub(_4091, as_type(_4013)); float _4110 = spvFSub(_4096, _4017); float _4111 = spvFSub(_4100, _4021); float _4116 = fma(_4104, _4111, -spvFMul(_4105, _4110)); float _4119 = fma(_4105, _4108, -spvFMul(_4102, _4111)); float _4122 = fma(_4102, _4110, -spvFMul(_4104, _4108)); float _4125 = fma(_3686, _4116, fma(_3688, _4119, spvFMul(_3690, _4122))); bool _4127 = _4007 && (0.0 >= _4125); uint _4128; uint _4129; uint _4130; uint _4131; if (_4127) { _4128 = 0u; _4129 = 0u; _4130 = 0u; _4131 = 0u; } else { _4128 = as_type(_4105); _4129 = as_type(_4108); _4130 = as_type(_4119); _4131 = as_type(_4116); } bool _4133 = _4007 && (!_4127); uint _4137; if (_4133) { _4137 = as_type(spvFSub(_3541, as_type(_4013))); } else { _4137 = _3986; } uint _4249; uint _4250; uint _4251; uint _4252; uint _4253; if (_4133) { float _4138 = spvFSub(_3545, _4017); float _4139 = spvFSub(_3549, _4021); float _4145 = fma(as_type(_4137), as_type(_4131), fma(_4138, as_type(_4130), spvFMul(_4122, _4139))); bool _4146 = 0.0 > _4145; bool _4147 = _4133 && _4146; uint _4148; uint _4149; uint _4150; uint _4151; if (_4147) { _4148 = 0u; _4149 = 0u; _4150 = 0u; _4151 = 0u; } else { _4148 = _4130; _4149 = _4128; _4150 = _4131; _4151 = _4129; } bool _4153 = _4133 && (!_4147); bool _4155; if (_4153) { _4155 = _4145 > _4125; } else { _4155 = _4146; } uint _4244; uint _4245; uint _4246; uint _4247; uint _4248; if (_4153) { bool _4156 = _4153 && _4155; uint _4157; uint _4158; uint _4159; uint _4160; if (_4156) { _4157 = 0u; _4158 = 0u; _4159 = 0u; _4160 = 0u; } else { _4157 = _4148; _4158 = _4149; _4159 = _4150; _4160 = _4151; } bool _4162 = _4153 && (!_4156); uint _4166; if (_4162) { _4166 = as_type(spvFMul(_3688, as_type(_4137))); } else { _4166 = _4159; } uint _4239; uint _4240; uint _4241; uint _4242; uint _4243; if (_4162) { float _4170 = fma(_3686, _4138, -as_type(_4166)); float _4175 = fma(_3690, as_type(_4137), -spvFMul(_3686, _4139)); float _4179 = fma(_3688, _4139, -spvFMul(_3690, _4138)); float _4182 = fma(as_type(_4160), _4179, fma(_4110, _4175, spvFMul(_4111, _4170))); bool _4186 = _4162 && ((_4182 > _4125) || (_4182 < 0.0)); uint _4187; uint _4188; uint _4189; uint _4190; if (_4186) { _4187 = 0u; _4188 = 0u; _4189 = 0u; _4190 = 0u; } else { _4187 = _4160; _4188 = as_type(_4175); _4189 = as_type(_4170); _4190 = _4158; } bool _4192 = _4162 && (!_4186); uint _4197; if (_4192) { _4197 = as_type(spvFMul(as_type(_4190), as_type(_4189))); } else { _4197 = _4190; } uint _4234; uint _4235; uint _4236; uint _4237; uint _4238; if (_4192) { float _4201 = fma(_4102, _4179, fma(_4104, as_type(_4188), as_type(_4197))); float _4203 = spvFSub(_4182, _4201); bool _4209 = _4192 && ((_4203 > _4125) || (0.0 > (-_4201))); uint _4210; uint _4211; uint _4212; uint _4213; if (_4209) { _4210 = 0u; _4211 = 0u; _4212 = 0u; _4213 = 0u; } else { _4210 = _4189; _4211 = _4187; _4212 = as_type(_4201); _4213 = _4188; } bool _4215 = _4192 && (!_4209); uint _4216; if (_4215) { _4216 = 1u; } else { _4216 = _4213; } uint _4231; uint _4232; uint _4233; if (_4215) { float _4218 = spvFMul(_4145, 1.0 / _4125); _4231 = as_type(fma(_4218, spvFSub(as_type(_1316), _3541), _3541)); _4232 = as_type(fma(_4218, spvFSub(as_type(_1318), _3549), _3549)); _4233 = as_type(fma(_4218, spvFSub(as_type(_1317), _3545), _3545)); } else { _4231 = _4210; _4232 = _4211; _4233 = _4212; } _4234 = _4231; _4235 = _4232; _4236 = _4233; _4237 = as_type(_4203); _4238 = _4216; } else { _4234 = _4189; _4235 = _4187; _4236 = _4197; _4237 = _4103; _4238 = _4188; } _4239 = _4234; _4240 = _4235; _4241 = _4236; _4242 = _4237; _4243 = _4238; } else { _4239 = _4166; _4240 = _4160; _4241 = _4158; _4242 = _4103; _4243 = _4157; } _4244 = _4239; _4245 = _4240; _4246 = _4241; _4247 = _4242; _4248 = _4243; } else { _4244 = _4150; _4245 = _4151; _4246 = _4149; _4247 = _4103; _4248 = _4148; } _4249 = _4244; _4250 = _4245; _4251 = _4246; _4252 = _4247; _4253 = _4248; } else { _4249 = _4131; _4250 = _4129; _4251 = _4128; _4252 = _4103; _4253 = _4130; } bool _4257 = _4007 && (!(_4007 && (int(0u) < int(_4253)))); uint _4260; if (_4257) { _4260 = as_type(spvFSub(fma(-as_type(_3099), as_type(_3096), _4000), _4091)); } else { _4260 = _4252; } uint _4414; uint _4415; uint _4416; uint _4417; uint _4418; uint _4419; if (_4257) { float _4261 = spvFSub(_4029, _4096); float _4262 = spvFSub(_4033, _4100); float _4265 = spvFSub(as_type(_4013), _4091); float _4267 = spvFSub(_4017, _4096); float _4268 = spvFSub(_4021, _4100); float _4275 = fma(_4261, _4268, -spvFMul(_4262, _4267)); float _4278 = fma(_4262, _4265, -spvFMul(as_type(_4260), _4268)); float _4281 = fma(as_type(_4260), _4267, -spvFMul(_4261, _4265)); float _4284 = fma(_3686, _4275, fma(_3688, _4278, spvFMul(_3690, _4281))); bool _4286 = _4257 && (0.0 >= _4284); uint _4287; uint _4288; uint _4289; uint _4290; if (_4286) { _4287 = 0u; _4288 = 0u; _4289 = 0u; _4290 = 0u; } else { _4287 = as_type(_4262); _4288 = as_type(_4268); _4289 = as_type(_4265); _4290 = as_type(_4275); } bool _4292 = _4257 && (!_4286); uint _4295; if (_4292) { _4295 = as_type(spvFSub(_3541, _4091)); } else { _4295 = _4137; } uint _4408; uint _4409; uint _4410; uint _4411; uint _4412; if (_4292) { float _4296 = spvFSub(_3545, _4096); float _4297 = spvFSub(_3549, _4100); float _4302 = fma(as_type(_4295), as_type(_4290), fma(_4296, _4278, spvFMul(_4281, _4297))); bool _4303 = 0.0 > _4302; bool _4304 = _4292 && _4303; uint _4305; uint _4306; uint _4307; uint _4308; if (_4304) { _4305 = 0u; _4306 = 0u; _4307 = 0u; _4308 = 0u; } else { _4305 = _4287; _4306 = _4290; _4307 = _4288; _4308 = _4289; } bool _4310 = _4292 && (!_4304); bool _4312; if (_4310) { _4312 = _4302 > _4284; } else { _4312 = _4303; } uint _4403; uint _4404; uint _4405; uint _4406; uint _4407; if (_4310) { bool _4313 = _4310 && _4312; uint _4314; uint _4315; uint _4316; uint _4317; if (_4313) { _4314 = 0u; _4315 = 0u; _4316 = 0u; _4317 = 0u; } else { _4314 = _4305; _4315 = _4306; _4316 = _4307; _4317 = _4308; } bool _4319 = _4310 && (!_4313); uint _4323; if (_4319) { _4323 = as_type(spvFMul(_3688, as_type(_4295))); } else { _4323 = _4315; } uint _4398; uint _4399; uint _4400; uint _4401; uint _4402; if (_4319) { float _4327 = fma(_3686, _4296, -as_type(_4323)); float _4332 = fma(_3690, as_type(_4295), -spvFMul(_3686, _4297)); float _4336 = fma(_3688, _4297, -spvFMul(_3690, _4296)); float _4339 = fma(as_type(_4317), _4336, fma(_4267, _4332, spvFMul(as_type(_4316), _4327))); bool _4344 = _4319 && ((_4339 > _4284) || (_4339 < 0.0)); uint _4345; uint _4346; uint _4347; uint _4348; if (_4344) { _4345 = 0u; _4346 = 0u; _4347 = 0u; _4348 = 0u; } else { _4345 = _4317; _4346 = as_type(_4339); _4347 = as_type(_4327); _4348 = _4314; } bool _4350 = _4319 && (!_4344); uint _4355; if (_4350) { _4355 = as_type(spvFMul(as_type(_4348), as_type(_4347))); } else { _4355 = _4348; } uint _4393; uint _4394; uint _4395; uint _4396; uint _4397; if (_4350) { float _4359 = fma(as_type(_4260), _4336, fma(_4261, _4332, as_type(_4355))); float _4362 = spvFSub(as_type(_4346), _4359); bool _4368 = _4350 && ((_4362 > _4284) || (0.0 > (-_4359))); uint _4369; uint _4370; uint _4371; uint _4372; if (_4368) { _4369 = 0u; _4370 = 0u; _4371 = 0u; _4372 = 0u; } else { _4369 = _4347; _4370 = _4345; _4371 = as_type(_4359); _4372 = _4346; } bool _4374 = _4350 && (!_4368); uint _4375; if (_4374) { _4375 = 1u; } else { _4375 = _4372; } uint _4390; uint _4391; uint _4392; if (_4374) { float _4377 = spvFMul(_4302, 1.0 / _4284); _4390 = as_type(fma(_4377, spvFSub(as_type(_1316), _3541), _3541)); _4391 = as_type(fma(_4377, spvFSub(as_type(_1318), _3549), _3549)); _4392 = as_type(fma(_4377, spvFSub(as_type(_1317), _3545), _3545)); } else { _4390 = _4369; _4391 = _4370; _4392 = _4371; } _4393 = as_type(_4362); _4394 = _4390; _4395 = _4391; _4396 = _4392; _4397 = _4375; } else { _4393 = _4260; _4394 = _4347; _4395 = _4345; _4396 = _4355; _4397 = _4346; } _4398 = _4393; _4399 = _4394; _4400 = _4395; _4401 = _4396; _4402 = _4397; } else { _4398 = _4260; _4399 = _4323; _4400 = _4317; _4401 = _4314; _4402 = _4316; } _4403 = _4398; _4404 = _4399; _4405 = _4400; _4406 = _4401; _4407 = _4402; } else { _4403 = _4260; _4404 = _4306; _4405 = _4308; _4406 = _4305; _4407 = _4307; } _4408 = _4403; _4409 = _4404; _4410 = _4405; _4411 = _4406; _4412 = _4407; } else { _4408 = _4260; _4409 = _4290; _4410 = _4289; _4411 = _4287; _4412 = _4288; } _4414 = _4295; _4415 = _4408; _4416 = _4410; _4417 = _4411; _4418 = _4409; _4419 = uint(max(int(0u), int(_4412))); } else { _4414 = _4137; _4415 = _4260; _4416 = _4250; _4417 = _4251; _4418 = _4249; _4419 = _4253; } float _4429 = fma(as_type(_3095), -0.00999999977648258209228515625, as_type(_4417)); bool _4436 = _4007 && (!(_4007 && (int(0u) < int(_4419)))); uint _4440; if (_4436) { _4440 = as_type(spvFSub(as_type(_4013), _3626)); } else { _4440 = _4415; } uint _5793; uint _5794; uint _5795; uint _5796; uint _5797; uint _5798; uint _5799; uint _5800; if (_4436) { float _4441 = spvFSub(_4017, _3629); float _4442 = spvFSub(_4021, _3632); float _4444 = spvFSub(_4429, _3626); float _4446 = spvFSub(_4029, _3629); float _4447 = spvFSub(_4033, _3632); float _4453 = fma(_4441, _4447, -spvFMul(_4442, _4446)); float _4456 = fma(_4442, _4444, -spvFMul(as_type(_4440), _4447)); float _4460 = fma(as_type(_4440), _4446, -spvFMul(_4441, _4444)); float _4463 = fma(_3686, _4453, fma(_3688, _4456, spvFMul(_3690, _4460))); bool _4465 = _4436 && (0.0 >= _4463); uint _4466; uint _4467; uint _4468; uint _4469; if (_4465) { _4466 = 0u; _4467 = 0u; _4468 = 0u; _4469 = 0u; } else { _4466 = as_type(_4442); _4467 = as_type(_4444); _4468 = as_type(_4456); _4469 = as_type(_4453); } bool _4471 = _4436 && (!_4465); uint _4474; if (_4471) { _4474 = as_type(spvFSub(_3541, _3626)); } else { _4474 = _4414; } uint _4587; uint _4588; uint _4589; uint _4590; uint _4591; if (_4471) { float _4475 = spvFSub(_3545, _3629); float _4476 = spvFSub(_3549, _3632); float _4482 = fma(as_type(_4474), as_type(_4469), fma(_4475, as_type(_4468), spvFMul(_4460, _4476))); bool _4483 = 0.0 > _4482; bool _4484 = _4471 && _4483; uint _4485; uint _4486; uint _4487; uint _4488; if (_4484) { _4485 = 0u; _4486 = 0u; _4487 = 0u; _4488 = 0u; } else { _4485 = _4468; _4486 = _4466; _4487 = _4469; _4488 = _4467; } bool _4490 = _4471 && (!_4484); bool _4492; if (_4490) { _4492 = _4482 > _4463; } else { _4492 = _4483; } uint _4582; uint _4583; uint _4584; uint _4585; uint _4586; if (_4490) { bool _4493 = _4490 && _4492; uint _4494; uint _4495; uint _4496; uint _4497; if (_4493) { _4494 = 0u; _4495 = 0u; _4496 = 0u; _4497 = 0u; } else { _4494 = _4485; _4495 = _4486; _4496 = _4487; _4497 = _4488; } bool _4499 = _4490 && (!_4493); uint _4503; if (_4499) { _4503 = as_type(spvFMul(_3688, as_type(_4474))); } else { _4503 = _4496; } uint _4577; uint _4578; uint _4579; uint _4580; uint _4581; if (_4499) { float _4507 = fma(_3686, _4475, -as_type(_4503)); float _4512 = fma(_3690, as_type(_4474), -spvFMul(_3686, _4476)); float _4516 = fma(_3688, _4476, -spvFMul(_3690, _4475)); float _4519 = fma(as_type(_4497), _4516, fma(_4446, _4512, spvFMul(_4447, _4507))); bool _4523 = _4499 && ((_4519 > _4463) || (_4519 < 0.0)); uint _4524; uint _4525; uint _4526; uint _4527; if (_4523) { _4524 = 0u; _4525 = 0u; _4526 = 0u; _4527 = 0u; } else { _4524 = _4497; _4525 = as_type(_4512); _4526 = as_type(_4507); _4527 = _4495; } bool _4529 = _4499 && (!_4523); uint _4534; if (_4529) { _4534 = as_type(spvFMul(as_type(_4527), as_type(_4526))); } else { _4534 = _4527; } uint _4572; uint _4573; uint _4574; uint _4575; uint _4576; if (_4529) { float _4539 = fma(as_type(_4440), _4516, fma(_4441, as_type(_4525), as_type(_4534))); float _4541 = spvFSub(_4519, _4539); bool _4547 = _4529 && ((_4541 > _4463) || (0.0 > (-_4539))); uint _4548; uint _4549; uint _4550; uint _4551; if (_4547) { _4548 = 0u; _4549 = 0u; _4550 = 0u; _4551 = 0u; } else { _4548 = _4526; _4549 = _4524; _4550 = as_type(_4539); _4551 = _4525; } bool _4553 = _4529 && (!_4547); uint _4554; if (_4553) { _4554 = 1u; } else { _4554 = _4551; } uint _4569; uint _4570; uint _4571; if (_4553) { float _4556 = spvFMul(_4482, 1.0 / _4463); _4569 = as_type(fma(_4556, spvFSub(as_type(_1316), _3541), _3541)); _4570 = as_type(fma(_4556, spvFSub(as_type(_1318), _3549), _3549)); _4571 = as_type(fma(_4556, spvFSub(as_type(_1317), _3545), _3545)); } else { _4569 = _4548; _4570 = _4549; _4571 = _4550; } _4572 = _4569; _4573 = _4570; _4574 = _4571; _4575 = as_type(_4541); _4576 = _4554; } else { _4572 = _4526; _4573 = _4524; _4574 = _4534; _4575 = _4440; _4576 = _4525; } _4577 = _4572; _4578 = _4573; _4579 = _4574; _4580 = _4575; _4581 = _4576; } else { _4577 = _4503; _4578 = _4497; _4579 = _4495; _4580 = _4440; _4581 = _4494; } _4582 = _4577; _4583 = _4578; _4584 = _4579; _4585 = _4580; _4586 = _4581; } else { _4582 = _4487; _4583 = _4488; _4584 = _4486; _4585 = _4440; _4586 = _4485; } _4587 = _4582; _4588 = _4583; _4589 = _4584; _4590 = _4585; _4591 = _4586; } else { _4587 = _4469; _4588 = _4467; _4589 = _4466; _4590 = _4440; _4591 = _4468; } bool _4595 = _4436 && (!(_4436 && (int(0u) < int(_4591)))); uint _4598; if (_4595) { _4598 = as_type(spvFSub(_3591, _4429)); } else { _4598 = _4590; } uint _4751; uint _4752; uint _4753; uint _4754; uint _4755; uint _4756; if (_4595) { float _4599 = spvFSub(_3594, _4029); float _4600 = spvFSub(_3598, _4033); float _4602 = spvFSub(_3626, _4429); float _4604 = spvFSub(_3629, _4029); float _4605 = spvFSub(_3632, _4033); float _4612 = fma(_4599, _4605, -spvFMul(_4600, _4604)); float _4615 = fma(_4600, _4602, -spvFMul(as_type(_4598), _4605)); float _4618 = fma(as_type(_4598), _4604, -spvFMul(_4599, _4602)); float _4621 = fma(_3686, _4612, fma(_3688, _4615, spvFMul(_3690, _4618))); bool _4623 = _4595 && (0.0 >= _4621); uint _4624; uint _4625; uint _4626; uint _4627; if (_4623) { _4624 = 0u; _4625 = 0u; _4626 = 0u; _4627 = 0u; } else { _4624 = as_type(_4600); _4625 = as_type(_4605); _4626 = as_type(_4602); _4627 = as_type(_4612); } bool _4629 = _4595 && (!_4623); uint _4632; if (_4629) { _4632 = as_type(spvFSub(_3541, _4429)); } else { _4632 = _4474; } uint _4745; uint _4746; uint _4747; uint _4748; uint _4749; if (_4629) { float _4633 = spvFSub(_3545, _4029); float _4634 = spvFSub(_3549, _4033); float _4639 = fma(as_type(_4632), as_type(_4627), fma(_4633, _4615, spvFMul(_4618, _4634))); bool _4640 = 0.0 > _4639; bool _4641 = _4629 && _4640; uint _4642; uint _4643; uint _4644; uint _4645; if (_4641) { _4642 = 0u; _4643 = 0u; _4644 = 0u; _4645 = 0u; } else { _4642 = _4624; _4643 = _4627; _4644 = _4625; _4645 = _4626; } bool _4647 = _4629 && (!_4641); bool _4649; if (_4647) { _4649 = _4639 > _4621; } else { _4649 = _4640; } uint _4740; uint _4741; uint _4742; uint _4743; uint _4744; if (_4647) { bool _4650 = _4647 && _4649; uint _4651; uint _4652; uint _4653; uint _4654; if (_4650) { _4651 = 0u; _4652 = 0u; _4653 = 0u; _4654 = 0u; } else { _4651 = _4642; _4652 = _4643; _4653 = _4644; _4654 = _4645; } bool _4656 = _4647 && (!_4650); uint _4660; if (_4656) { _4660 = as_type(spvFMul(_3688, as_type(_4632))); } else { _4660 = _4652; } uint _4735; uint _4736; uint _4737; uint _4738; uint _4739; if (_4656) { float _4664 = fma(_3686, _4633, -as_type(_4660)); float _4669 = fma(_3690, as_type(_4632), -spvFMul(_3686, _4634)); float _4673 = fma(_3688, _4634, -spvFMul(_3690, _4633)); float _4676 = fma(as_type(_4654), _4673, fma(_4604, _4669, spvFMul(as_type(_4653), _4664))); bool _4681 = _4656 && ((_4676 > _4621) || (_4676 < 0.0)); uint _4682; uint _4683; uint _4684; uint _4685; if (_4681) { _4682 = 0u; _4683 = 0u; _4684 = 0u; _4685 = 0u; } else { _4682 = _4654; _4683 = as_type(_4676); _4684 = as_type(_4664); _4685 = _4651; } bool _4687 = _4656 && (!_4681); uint _4692; if (_4687) { _4692 = as_type(spvFMul(as_type(_4685), as_type(_4684))); } else { _4692 = _4685; } uint _4730; uint _4731; uint _4732; uint _4733; uint _4734; if (_4687) { float _4696 = fma(as_type(_4598), _4673, fma(_4599, _4669, as_type(_4692))); float _4699 = spvFSub(as_type(_4683), _4696); bool _4705 = _4687 && ((_4699 > _4621) || (0.0 > (-_4696))); uint _4706; uint _4707; uint _4708; uint _4709; if (_4705) { _4706 = 0u; _4707 = 0u; _4708 = 0u; _4709 = 0u; } else { _4706 = _4684; _4707 = _4682; _4708 = as_type(_4696); _4709 = _4683; } bool _4711 = _4687 && (!_4705); uint _4712; if (_4711) { _4712 = 1u; } else { _4712 = _4709; } uint _4727; uint _4728; uint _4729; if (_4711) { float _4714 = spvFMul(_4639, 1.0 / _4621); _4727 = as_type(fma(_4714, spvFSub(as_type(_1316), _3541), _3541)); _4728 = as_type(fma(_4714, spvFSub(as_type(_1318), _3549), _3549)); _4729 = as_type(fma(_4714, spvFSub(as_type(_1317), _3545), _3545)); } else { _4727 = _4706; _4728 = _4707; _4729 = _4708; } _4730 = as_type(_4699); _4731 = _4727; _4732 = _4728; _4733 = _4729; _4734 = _4712; } else { _4730 = _4598; _4731 = _4684; _4732 = _4682; _4733 = _4692; _4734 = _4683; } _4735 = _4730; _4736 = _4731; _4737 = _4732; _4738 = _4733; _4739 = _4734; } else { _4735 = _4598; _4736 = _4660; _4737 = _4654; _4738 = _4651; _4739 = _4653; } _4740 = _4735; _4741 = _4736; _4742 = _4737; _4743 = _4738; _4744 = _4739; } else { _4740 = _4598; _4741 = _4643; _4742 = _4645; _4743 = _4642; _4744 = _4644; } _4745 = _4740; _4746 = _4741; _4747 = _4742; _4748 = _4743; _4749 = _4744; } else { _4745 = _4598; _4746 = _4627; _4747 = _4626; _4748 = _4624; _4749 = _4625; } _4751 = _4632; _4752 = _4745; _4753 = _4747; _4754 = _4748; _4755 = _4746; _4756 = uint(max(int(0u), int(_4749))); } else { _4751 = _4474; _4752 = _4598; _4753 = _4588; _4754 = _4589; _4755 = _4587; _4756 = _4591; } float _4761 = fma(as_type(_3093), 0.00999999977648258209228515625, as_type(_4755)); float _4769 = fma(as_type(_3091), 0.00999999977648258209228515625, as_type(_4753)); bool _4772 = _4436 && (!(_4436 && (int(0u) < int(_4756)))); uint _4775; if (_4772) { _4775 = as_type(spvFSub(_3667, _4058)); } else { _4775 = _4752; } uint _5785; uint _5786; uint _5787; uint _5788; uint _5789; uint _5790; uint _5791; uint _5792; if (_4772) { float _4776 = spvFSub(_3671, _4063); float _4777 = spvFSub(_3675, _4068); float _4779 = spvFSub(_3645, _4058); float _4781 = spvFSub(_3650, _4063); float _4782 = spvFSub(_4761, _4068); float _4788 = fma(_4776, _4782, -spvFMul(_4777, _4781)); float _4791 = fma(_4777, _4779, -spvFMul(as_type(_4775), _4782)); float _4795 = fma(as_type(_4775), _4781, -spvFMul(_4776, _4779)); float _4798 = fma(_3686, _4788, fma(_3688, _4791, spvFMul(_3690, _4795))); bool _4800 = _4772 && (0.0 >= _4798); uint _4801; uint _4802; uint _4803; uint _4804; if (_4800) { _4801 = 0u; _4802 = 0u; _4803 = 0u; _4804 = 0u; } else { _4801 = as_type(_4777); _4802 = as_type(_4779); _4803 = as_type(_4791); _4804 = as_type(_4788); } bool _4806 = _4772 && (!_4800); uint _4809; if (_4806) { _4809 = as_type(spvFSub(_3541, _4058)); } else { _4809 = _4751; } uint _4922; uint _4923; uint _4924; uint _4925; uint _4926; if (_4806) { float _4810 = spvFSub(_3545, _4063); float _4811 = spvFSub(_3549, _4068); float _4817 = fma(as_type(_4809), as_type(_4804), fma(_4810, as_type(_4803), spvFMul(_4795, _4811))); bool _4818 = 0.0 > _4817; bool _4819 = _4806 && _4818; uint _4820; uint _4821; uint _4822; uint _4823; if (_4819) { _4820 = 0u; _4821 = 0u; _4822 = 0u; _4823 = 0u; } else { _4820 = _4803; _4821 = _4801; _4822 = _4804; _4823 = _4802; } bool _4825 = _4806 && (!_4819); bool _4827; if (_4825) { _4827 = _4817 > _4798; } else { _4827 = _4818; } uint _4917; uint _4918; uint _4919; uint _4920; uint _4921; if (_4825) { bool _4828 = _4825 && _4827; uint _4829; uint _4830; uint _4831; uint _4832; if (_4828) { _4829 = 0u; _4830 = 0u; _4831 = 0u; _4832 = 0u; } else { _4829 = _4820; _4830 = _4821; _4831 = _4822; _4832 = _4823; } bool _4834 = _4825 && (!_4828); uint _4838; if (_4834) { _4838 = as_type(spvFMul(_3688, as_type(_4809))); } else { _4838 = _4831; } uint _4912; uint _4913; uint _4914; uint _4915; uint _4916; if (_4834) { float _4842 = fma(_3686, _4810, -as_type(_4838)); float _4847 = fma(_3690, as_type(_4809), -spvFMul(_3686, _4811)); float _4851 = fma(_3688, _4811, -spvFMul(_3690, _4810)); float _4854 = fma(as_type(_4832), _4851, fma(_4781, _4847, spvFMul(_4782, _4842))); bool _4858 = _4834 && ((_4854 > _4798) || (_4854 < 0.0)); uint _4859; uint _4860; uint _4861; uint _4862; if (_4858) { _4859 = 0u; _4860 = 0u; _4861 = 0u; _4862 = 0u; } else { _4859 = _4832; _4860 = as_type(_4847); _4861 = as_type(_4842); _4862 = _4830; } bool _4864 = _4834 && (!_4858); uint _4869; if (_4864) { _4869 = as_type(spvFMul(as_type(_4862), as_type(_4861))); } else { _4869 = _4862; } uint _4907; uint _4908; uint _4909; uint _4910; uint _4911; if (_4864) { float _4874 = fma(as_type(_4775), _4851, fma(_4776, as_type(_4860), as_type(_4869))); float _4876 = spvFSub(_4854, _4874); bool _4882 = _4864 && ((_4876 > _4798) || (0.0 > (-_4874))); uint _4883; uint _4884; uint _4885; uint _4886; if (_4882) { _4883 = 0u; _4884 = 0u; _4885 = 0u; _4886 = 0u; } else { _4883 = _4861; _4884 = _4859; _4885 = as_type(_4874); _4886 = _4860; } bool _4888 = _4864 && (!_4882); uint _4889; if (_4888) { _4889 = 1u; } else { _4889 = _4886; } uint _4904; uint _4905; uint _4906; if (_4888) { float _4891 = spvFMul(_4817, 1.0 / _4798); _4904 = as_type(fma(_4891, spvFSub(as_type(_1316), _3541), _3541)); _4905 = as_type(fma(_4891, spvFSub(as_type(_1318), _3549), _3549)); _4906 = as_type(fma(_4891, spvFSub(as_type(_1317), _3545), _3545)); } else { _4904 = _4883; _4905 = _4884; _4906 = _4885; } _4907 = _4904; _4908 = _4905; _4909 = _4906; _4910 = as_type(_4876); _4911 = _4889; } else { _4907 = _4861; _4908 = _4859; _4909 = _4869; _4910 = _4775; _4911 = _4860; } _4912 = _4907; _4913 = _4908; _4914 = _4909; _4915 = _4910; _4916 = _4911; } else { _4912 = _4838; _4913 = _4832; _4914 = _4830; _4915 = _4775; _4916 = _4829; } _4917 = _4912; _4918 = _4913; _4919 = _4914; _4920 = _4915; _4921 = _4916; } else { _4917 = _4822; _4918 = _4823; _4919 = _4821; _4920 = _4775; _4921 = _4820; } _4922 = _4917; _4923 = _4918; _4924 = _4919; _4925 = _4920; _4926 = _4921; } else { _4922 = _4804; _4923 = _4802; _4924 = _4801; _4925 = _4775; _4926 = _4803; } bool _4930 = _4772 && (!(_4772 && (int(0u) < int(_4926)))); uint _4933; if (_4930) { _4933 = as_type(spvFSub(_4091, _3645)); } else { _4933 = _4925; } uint _5081; uint _5082; uint _5083; uint _5084; uint _5085; if (_4930) { float _4934 = spvFSub(_4769, _3650); float _4935 = spvFSub(_4100, _4761); float _4937 = spvFSub(_4058, _3645); float _4939 = spvFSub(_4063, _3650); float _4940 = spvFSub(_4068, _4761); float _4947 = fma(_4934, _4940, -spvFMul(_4935, _4939)); float _4950 = fma(_4935, _4937, -spvFMul(as_type(_4933), _4940)); float _4953 = fma(as_type(_4933), _4939, -spvFMul(_4934, _4937)); float _4956 = fma(_3686, _4947, fma(_3688, _4950, spvFMul(_3690, _4953))); bool _4958 = _4930 && (0.0 >= _4956); uint _4959; uint _4960; uint _4961; uint _4962; if (_4958) { _4959 = 0u; _4960 = 0u; _4961 = 0u; _4962 = 0u; } else { _4959 = as_type(_4935); _4960 = as_type(_4940); _4961 = as_type(_4937); _4962 = as_type(_4947); } bool _4964 = _4930 && (!_4958); uint _4967; if (_4964) { _4967 = as_type(spvFSub(_3541, _3645)); } else { _4967 = _4809; } uint _5076; uint _5077; uint _5078; uint _5079; if (_4964) { float _4968 = spvFSub(_3545, _3650); float _4969 = spvFSub(_3549, _4761); float _4974 = fma(as_type(_4967), as_type(_4962), fma(_4968, _4950, spvFMul(_4953, _4969))); bool _4975 = 0.0 > _4974; bool _4976 = _4964 && _4975; uint _4977; uint _4978; uint _4979; uint _4980; if (_4976) { _4977 = 0u; _4978 = 0u; _4979 = 0u; _4980 = 0u; } else { _4977 = _4959; _4978 = _4962; _4979 = _4960; _4980 = _4961; } bool _4982 = _4964 && (!_4976); bool _4984; if (_4982) { _4984 = _4974 > _4956; } else { _4984 = _4975; } uint _5072; uint _5073; uint _5074; uint _5075; if (_4982) { bool _4985 = _4982 && _4984; uint _4986; uint _4987; uint _4988; uint _4989; if (_4985) { _4986 = 0u; _4987 = 0u; _4988 = 0u; _4989 = 0u; } else { _4986 = _4977; _4987 = _4978; _4988 = _4979; _4989 = _4980; } bool _4991 = _4982 && (!_4985); uint _4995; if (_4991) { _4995 = as_type(spvFMul(_3688, as_type(_4967))); } else { _4995 = _4987; } uint _5068; uint _5069; uint _5070; uint _5071; if (_4991) { float _4999 = fma(_3686, _4968, -as_type(_4995)); float _5004 = fma(_3690, as_type(_4967), -spvFMul(_3686, _4969)); float _5008 = fma(_3688, _4969, -spvFMul(_3690, _4968)); float _5011 = fma(as_type(_4989), _5008, fma(_4939, _5004, spvFMul(as_type(_4988), _4999))); bool _5016 = _4991 && ((_5011 > _4956) || (_5011 < 0.0)); uint _5017; uint _5018; uint _5019; uint _5020; if (_5016) { _5017 = 0u; _5018 = 0u; _5019 = 0u; _5020 = 0u; } else { _5017 = _4989; _5018 = as_type(_5011); _5019 = as_type(_4999); _5020 = _4986; } bool _5022 = _4991 && (!_5016); uint _5027; if (_5022) { _5027 = as_type(spvFMul(as_type(_5020), as_type(_5019))); } else { _5027 = _5020; } uint _5064; uint _5065; uint _5066; uint _5067; if (_5022) { float _5031 = fma(as_type(_4933), _5008, fma(_4934, _5004, as_type(_5027))); bool _5039 = _5022 && ((spvFSub(as_type(_5018), _5031) > _4956) || (0.0 > (-_5031))); uint _5040; uint _5041; uint _5042; uint _5043; if (_5039) { _5040 = 0u; _5041 = 0u; _5042 = 0u; _5043 = 0u; } else { _5040 = _5019; _5041 = _5017; _5042 = as_type(_5031); _5043 = _5018; } bool _5045 = _5022 && (!_5039); uint _5046; if (_5045) { _5046 = 1u; } else { _5046 = _5043; } uint _5061; uint _5062; uint _5063; if (_5045) { float _5048 = spvFMul(_4974, 1.0 / _4956); _5061 = as_type(fma(_5048, spvFSub(as_type(_1316), _3541), _3541)); _5062 = as_type(fma(_5048, spvFSub(as_type(_1318), _3549), _3549)); _5063 = as_type(fma(_5048, spvFSub(as_type(_1317), _3545), _3545)); } else { _5061 = _5040; _5062 = _5041; _5063 = _5042; } _5064 = _5061; _5065 = _5062; _5066 = _5063; _5067 = _5046; } else { _5064 = _5019; _5065 = _5017; _5066 = _5027; _5067 = _5018; } _5068 = _5064; _5069 = _5065; _5070 = _5066; _5071 = _5067; } else { _5068 = _4995; _5069 = _4989; _5070 = _4986; _5071 = _4988; } _5072 = _5068; _5073 = _5069; _5074 = _5070; _5075 = _5071; } else { _5072 = _4978; _5073 = _4980; _5074 = _4977; _5075 = _4979; } _5076 = _5072; _5077 = _5073; _5078 = _5074; _5079 = _5075; } else { _5076 = _4962; _5077 = _4961; _5078 = _4959; _5079 = _4960; } _5081 = _4967; _5082 = _5077; _5083 = _5078; _5084 = _5076; _5085 = uint(max(int(0u), int(_5079))); } else { _5081 = _4809; _5082 = _4923; _5083 = _4924; _5084 = _4922; _5085 = _4926; } float _5090 = fma(as_type(_3093), -0.00999999977648258209228515625, as_type(_5084)); uint _5091 = as_type(_5090); float _5094 = fma(as_type(_3092), -0.00999999977648258209228515625, as_type(_5083)); float _5098 = fma(as_type(_3091), -0.00999999977648258209228515625, as_type(_5082)); bool _5101 = _4772 && (!(_4772 && (int(0u) < int(_5085)))); uint _5104; if (_5101) { _5104 = as_type(spvFSub(_4091, _5094)); } else { _5104 = _4092; } uint _5777; uint _5778; uint _5779; uint _5780; uint _5781; uint _5782; uint _5783; uint _5784; if (_5101) { float _5105 = spvFSub(_5098, _4029); float _5106 = spvFSub(_4100, _4033); float _5108 = spvFSub(_3645, _5094); float _5109 = spvFSub(_3650, _4029); float _5110 = spvFSub(_5090, _4033); float _5116 = fma(_5105, _5110, -spvFMul(_5106, _5109)); float _5119 = fma(_5106, _5108, -spvFMul(as_type(_5104), _5110)); float _5122 = fma(as_type(_5104), _5109, -spvFMul(_5105, _5108)); float _5125 = fma(_3686, _5116, fma(_3688, _5119, spvFMul(_3690, _5122))); bool _5127 = _5101 && (0.0 >= _5125); uint _5128; uint _5129; uint _5130; uint _5131; if (_5127) { _5128 = 0u; _5129 = 0u; _5130 = 0u; _5131 = 0u; } else { _5128 = _5104; _5129 = as_type(_5106); _5130 = _5085; _5131 = as_type(_5116); } bool _5133 = _5101 && (!_5127); uint _5136; if (_5133) { _5136 = as_type(spvFSub(_3541, _5094)); } else { _5136 = _5130; } uint _5245; uint _5246; uint _5247; uint _5248; uint _5249; if (_5133) { float _5137 = spvFSub(_3545, _4029); float _5138 = spvFSub(_3549, _4033); float _5143 = fma(as_type(_5136), as_type(_5131), fma(_5137, _5119, spvFMul(_5138, _5122))); bool _5144 = 0.0 > _5143; bool _5145 = _5133 && _5144; uint _5146; uint _5147; uint _5148; uint _5149; if (_5145) { _5146 = 0u; _5147 = 0u; _5148 = 0u; _5149 = 0u; } else { _5146 = _5128; _5147 = _5129; _5148 = _5136; _5149 = _5131; } bool _5151 = _5133 && (!_5145); bool _5153; if (_5151) { _5153 = _5143 > _5125; } else { _5153 = _5144; } uint _5240; uint _5241; uint _5242; uint _5243; uint _5244; if (_5151) { bool _5154 = _5151 && _5153; uint _5155; uint _5156; uint _5157; uint _5158; if (_5154) { _5155 = 0u; _5156 = 0u; _5157 = 0u; _5158 = 0u; } else { _5155 = _5146; _5156 = _5147; _5157 = _5148; _5158 = _5149; } bool _5160 = _5151 && (!_5154); uint _5163; if (_5160) { _5163 = as_type(spvFMul(_3690, _5137)); } else { _5163 = _5158; } uint _5235; uint _5236; uint _5237; uint _5238; uint _5239; if (_5160) { float _5169 = fma(_3688, _5138, -as_type(_5163)); float _5173 = fma(_3690, as_type(_5157), -spvFMul(_3686, _5138)); float _5175 = fma(_3686, _5137, -spvFMul(_3688, as_type(_5157))); float _5179 = fma(_5108, _5169, fma(_5109, _5173, spvFMul(_5175, _5110))); bool _5183 = _5160 && ((_5179 > _5125) || (_5179 < 0.0)); uint _5184; uint _5185; uint _5186; uint _5187; if (_5183) { _5184 = 0u; _5185 = 0u; _5186 = 0u; _5187 = 0u; } else { _5184 = _5157; _5185 = as_type(_5169); _5186 = _5155; _5187 = _5156; } bool _5189 = _5160 && (!_5183); uint _5193; if (_5189) { _5193 = as_type(spvFMul(_5175, as_type(_5187))); } else { _5193 = _5187; } uint _5231; uint _5232; uint _5233; uint _5234; if (_5189) { float _5198 = fma(as_type(_5186), as_type(_5185), fma(_5105, _5173, as_type(_5193))); float _5200 = spvFSub(_5179, _5198); bool _5206 = _5189 && ((_5200 > _5125) || (0.0 > (-_5198))); uint _5207; uint _5208; uint _5209; uint _5210; if (_5206) { _5207 = 0u; _5208 = 0u; _5209 = 0u; _5210 = 0u; } else { _5207 = _5185; _5208 = as_type(_5198); _5209 = as_type(_5200); _5210 = _5184; } bool _5212 = _5189 && (!_5206); uint _5213; if (_5212) { _5213 = 1u; } else { _5213 = _5210; } uint _5228; uint _5229; uint _5230; if (_5212) { float _5215 = spvFMul(_5143, 1.0 / _5125); _5228 = as_type(fma(_5215, spvFSub(as_type(_1316), _3541), _3541)); _5229 = as_type(fma(_5215, spvFSub(as_type(_1317), _3545), _3545)); _5230 = as_type(fma(_5215, spvFSub(as_type(_1318), _3549), _3549)); } else { _5228 = _5207; _5229 = _5208; _5230 = _5209; } _5231 = _5228; _5232 = _5229; _5233 = _5230; _5234 = _5213; } else { _5231 = _5185; _5232 = _5193; _5233 = _5186; _5234 = _5184; } _5235 = as_type(_5175); _5236 = _5231; _5237 = _5232; _5238 = _5233; _5239 = _5234; } else { _5235 = _5081; _5236 = _5163; _5237 = _5156; _5238 = _5155; _5239 = _5157; } _5240 = _5235; _5241 = _5236; _5242 = _5237; _5243 = _5238; _5244 = _5239; } else { _5240 = _5081; _5241 = _5149; _5242 = _5147; _5243 = _5146; _5244 = _5148; } _5245 = _5240; _5246 = _5241; _5247 = _5242; _5248 = _5243; _5249 = _5244; } else { _5245 = _5081; _5246 = _5131; _5247 = _5129; _5248 = _5128; _5249 = _5136; } bool _5253 = _5101 && (!(_5101 && (int(0u) < int(_5249)))); uint _5256; if (_5253) { _5256 = as_type(spvFSub(_3591, _3645)); } else { _5256 = _5248; } uint _5405; uint _5406; uint _5407; uint _5408; uint _5409; if (_5253) { float _5257 = spvFSub(_3594, _3650); float _5258 = spvFSub(_3598, _5090); float _5260 = spvFSub(_5094, _3645); float _5261 = spvFSub(_4029, _3650); float _5262 = spvFSub(_4033, _5090); float _5268 = fma(_5257, _5262, -spvFMul(_5258, _5261)); float _5271 = fma(_5258, _5260, -spvFMul(as_type(_5256), _5262)); uint _5272 = as_type(_5271); float _5275 = fma(as_type(_5256), _5261, -spvFMul(_5257, _5260)); float _5278 = fma(_3686, _5268, fma(_3688, _5271, spvFMul(_3690, _5275))); bool _5280 = _5253 && (0.0 >= _5278); uint _5281; uint _5282; uint _5283; uint _5284; if (_5280) { _5281 = 0u; _5282 = 0u; _5283 = 0u; _5284 = 0u; } else { _5281 = _5246; _5282 = _5256; _5283 = as_type(_5258); _5284 = _5091; } bool _5286 = _5253 && (!_5280); uint _5289; if (_5286) { _5289 = as_type(spvFSub(_3541, _3645)); } else { _5289 = as_type(_3645); } uint _5399; uint _5400; uint _5401; uint _5402; uint _5403; if (_5286) { float _5290 = spvFSub(_3545, _3650); float _5292 = spvFSub(_3549, as_type(_5284)); float _5297 = fma(as_type(_5289), _5268, fma(_5290, _5271, spvFMul(_5292, _5275))); bool _5298 = 0.0 > _5297; bool _5299 = _5286 && _5298; uint _5300; uint _5301; uint _5302; uint _5303; if (_5299) { _5300 = 0u; _5301 = 0u; _5302 = 0u; _5303 = 0u; } else { _5300 = _5281; _5301 = _5282; _5302 = _5283; _5303 = as_type(_5292); } bool _5305 = _5286 && (!_5299); bool _5307; if (_5305) { _5307 = _5297 > _5278; } else { _5307 = _5298; } uint _5394; uint _5395; uint _5396; uint _5397; uint _5398; if (_5305) { bool _5308 = _5305 && _5307; uint _5309; uint _5310; uint _5311; uint _5312; if (_5308) { _5309 = 0u; _5310 = 0u; _5311 = 0u; _5312 = 0u; } else { _5309 = _5300; _5310 = _5301; _5311 = _5302; _5312 = _5303; } bool _5314 = _5305 && (!_5308); uint _5317; if (_5314) { _5317 = as_type(spvFMul(_3690, _5290)); } else { _5317 = as_type(_5268); } uint _5389; uint _5390; uint _5391; uint _5392; uint _5393; if (_5314) { float _5325 = fma(_3688, as_type(_5312), -as_type(_5317)); float _5328 = fma(_3690, as_type(_5289), -spvFMul(_3686, as_type(_5312))); float _5331 = fma(_3686, _5290, -spvFMul(_3688, as_type(_5289))); float _5334 = fma(_5260, _5325, fma(_5261, _5328, spvFMul(_5331, _5262))); bool _5338 = _5314 && ((_5334 > _5278) || (_5334 < 0.0)); uint _5339; uint _5340; uint _5341; uint _5342; if (_5338) { _5339 = 0u; _5340 = 0u; _5341 = 0u; _5342 = 0u; } else { _5339 = _5309; _5340 = _5312; _5341 = _5310; _5342 = _5311; } bool _5344 = _5314 && (!_5338); uint _5348; if (_5344) { _5348 = as_type(spvFMul(_5331, as_type(_5342))); } else { _5348 = _5342; } uint _5385; uint _5386; uint _5387; uint _5388; if (_5344) { float _5352 = fma(as_type(_5341), _5325, fma(_5257, _5328, as_type(_5348))); float _5354 = spvFSub(_5334, _5352); bool _5360 = _5344 && ((_5354 > _5278) || (0.0 > (-_5352))); uint _5361; uint _5362; uint _5363; uint _5364; if (_5360) { _5361 = 0u; _5362 = 0u; _5363 = 0u; _5364 = 0u; } else { _5361 = _5339; _5362 = as_type(_5352); _5363 = as_type(_5354); _5364 = _5340; } bool _5366 = _5344 && (!_5360); uint _5367; if (_5366) { _5367 = 1u; } else { _5367 = _5364; } uint _5382; uint _5383; uint _5384; if (_5366) { float _5369 = spvFMul(_5297, 1.0 / _5278); _5382 = as_type(fma(_5369, spvFSub(as_type(_1316), _3541), _3541)); _5383 = as_type(fma(_5369, spvFSub(as_type(_1317), _3545), _3545)); _5384 = as_type(fma(_5369, spvFSub(as_type(_1318), _3549), _3549)); } else { _5382 = _5361; _5383 = _5362; _5384 = _5363; } _5385 = _5382; _5386 = _5383; _5387 = _5384; _5388 = _5367; } else { _5385 = _5339; _5386 = _5348; _5387 = _5341; _5388 = _5340; } _5389 = as_type(_5328); _5390 = _5385; _5391 = _5386; _5392 = _5387; _5393 = _5388; } else { _5389 = _5272; _5390 = _5309; _5391 = _5311; _5392 = _5310; _5393 = _5312; } _5394 = _5389; _5395 = _5390; _5396 = _5391; _5397 = _5392; _5398 = _5393; } else { _5394 = _5272; _5395 = _5300; _5396 = _5302; _5397 = _5301; _5398 = _5303; } _5399 = _5394; _5400 = _5395; _5401 = _5396; _5402 = _5397; _5403 = _5398; } else { _5399 = _5272; _5400 = _5281; _5401 = _5283; _5402 = _5282; _5403 = _5284; } _5405 = _5399; _5406 = _5402; _5407 = _5401; _5408 = _5400; _5409 = uint(max(int(0u), int(_5403))); } else { _5405 = as_type(_3594); _5406 = _5256; _5407 = _5247; _5408 = _5246; _5409 = _5249; } bool _5425 = _5101 && (!(_5101 && (int(0u) < int(_5409)))); uint _5428; if (_5425) { _5428 = as_type(spvFSub(_3667, _3626)); } else { _5428 = _5406; } uint _5770; uint _5771; uint _5772; uint _5773; uint _5774; uint _5775; uint _5776; if (_5425) { float _5429 = spvFSub(_3671, _3629); float _5431 = spvFSub(_3675, _3632); float _5433 = spvFSub(_4058, _3626); float _5434 = spvFSub(_4063, _3629); float _5435 = spvFSub(_4068, _3632); float _5442 = fma(_5429, _5435, -spvFMul(_5431, _5434)); float _5445 = fma(_5431, _5433, -spvFMul(as_type(_5428), _5435)); float _5448 = fma(as_type(_5428), _5434, -spvFMul(_5429, _5433)); float _5451 = fma(_3686, _5442, fma(_3688, _5445, spvFMul(_3690, _5448))); bool _5453 = _5425 && (0.0 >= _5451); uint _5454; uint _5455; uint _5456; uint _5457; if (_5453) { _5454 = 0u; _5455 = 0u; _5456 = 0u; _5457 = 0u; } else { _5454 = _5409; _5455 = as_type(_5429); _5456 = as_type(_5435); _5457 = as_type(_5442); } bool _5459 = _5425 && (!_5453); uint _5462; if (_5459) { _5462 = as_type(spvFSub(_3541, _3626)); } else { _5462 = _5405; } uint _5573; uint _5574; uint _5575; uint _5576; uint _5577; if (_5459) { float _5463 = spvFSub(_3545, _3629); float _5464 = spvFSub(_3549, _3632); float _5469 = fma(as_type(_5462), as_type(_5457), fma(_5463, _5445, spvFMul(_5464, _5448))); bool _5470 = 0.0 > _5469; bool _5471 = _5459 && _5470; uint _5472; uint _5473; uint _5474; uint _5475; if (_5471) { _5472 = 0u; _5473 = 0u; _5474 = 0u; _5475 = 0u; } else { _5472 = _5454; _5473 = _5455; _5474 = _5457; _5475 = _5456; } bool _5477 = _5459 && (!_5471); bool _5479; if (_5477) { _5479 = _5469 > _5451; } else { _5479 = _5470; } uint _5568; uint _5569; uint _5570; uint _5571; uint _5572; if (_5477) { bool _5480 = _5477 && _5479; uint _5481; uint _5482; uint _5483; uint _5484; if (_5480) { _5481 = 0u; _5482 = 0u; _5483 = 0u; _5484 = 0u; } else { _5481 = _5472; _5482 = _5473; _5483 = _5474; _5484 = _5475; } bool _5486 = _5477 && (!_5480); uint _5489; if (_5486) { _5489 = as_type(spvFMul(_3690, _5463)); } else { _5489 = _5483; } uint _5563; uint _5564; uint _5565; uint _5566; uint _5567; if (_5486) { float _5495 = fma(_3688, _5464, -as_type(_5489)); float _5499 = fma(_3690, as_type(_5462), -spvFMul(_3686, _5464)); float _5501 = fma(_3686, _5463, -spvFMul(_3688, as_type(_5462))); float _5505 = fma(_5433, _5495, fma(_5434, _5499, spvFMul(_5501, as_type(_5484)))); bool _5510 = _5486 && ((_5505 > _5451) || (_5505 < 0.0)); uint _5511; uint _5512; uint _5513; uint _5514; if (_5510) { _5511 = 0u; _5512 = 0u; _5513 = 0u; _5514 = 0u; } else { _5511 = _5481; _5512 = as_type(_5495); _5513 = as_type(_5505); _5514 = _5482; } bool _5516 = _5486 && (!_5510); uint _5519; if (_5516) { _5519 = as_type(spvFMul(_5501, _5431)); } else { _5519 = as_type(_5431); } uint _5558; uint _5559; uint _5560; uint _5561; uint _5562; if (_5516) { float _5525 = fma(as_type(_5428), as_type(_5512), fma(as_type(_5514), _5499, as_type(_5519))); float _5527 = spvFSub(as_type(_5513), _5525); bool _5533 = _5516 && ((_5527 > _5451) || (0.0 > (-_5525))); uint _5534; uint _5535; uint _5536; uint _5537; if (_5533) { _5534 = 0u; _5535 = 0u; _5536 = 0u; _5537 = 0u; } else { _5534 = _5512; _5535 = _5513; _5536 = _5514; _5537 = _5511; } bool _5539 = _5516 && (!_5533); uint _5540; if (_5539) { _5540 = 1u; } else { _5540 = _5537; } uint _5555; uint _5556; uint _5557; if (_5539) { float _5542 = spvFMul(_5469, 1.0 / _5451); _5555 = as_type(fma(_5542, spvFSub(as_type(_1317), _3545), _3545)); _5556 = as_type(fma(_5542, spvFSub(as_type(_1316), _3541), _3541)); _5557 = as_type(fma(_5542, spvFSub(as_type(_1318), _3549), _3549)); } else { _5555 = _5534; _5556 = _5535; _5557 = _5536; } _5558 = _5555; _5559 = _5556; _5560 = _5557; _5561 = as_type(_5527); _5562 = _5540; } else { _5558 = _5512; _5559 = _5513; _5560 = _5514; _5561 = _5428; _5562 = _5511; } _5563 = _5558; _5564 = _5559; _5565 = _5560; _5566 = _5561; _5567 = _5562; } else { _5563 = _5489; _5564 = _5484; _5565 = _5482; _5566 = _5428; _5567 = _5481; } _5568 = _5563; _5569 = _5564; _5570 = _5565; _5571 = _5566; _5572 = _5567; } else { _5568 = _5474; _5569 = _5475; _5570 = _5473; _5571 = _5428; _5572 = _5472; } _5573 = _5568; _5574 = _5569; _5575 = _5570; _5576 = _5571; _5577 = _5572; } else { _5573 = _5457; _5574 = _5456; _5575 = _5455; _5576 = _5428; _5577 = _5454; } bool _5581 = _5425 && (!(_5425 && (int(0u) < int(_5577)))); uint _5585; if (_5581) { _5585 = as_type(spvFSub(as_type(_4013), _4058)); } else { _5585 = _5576; } uint _5751; uint _5752; uint _5753; uint _5754; uint _5755; uint _5756; uint _5757; if (_5581) { float _5586 = spvFSub(_4017, _4063); float _5588 = spvFSub(_4021, _4068); float _5590 = spvFSub(_3626, _4058); float _5591 = spvFSub(_3629, _4063); float _5592 = spvFSub(_3632, _4068); float _5599 = fma(_5586, _5592, -spvFMul(_5588, _5591)); float _5602 = fma(_5588, _5590, -spvFMul(as_type(_5585), _5592)); float _5605 = fma(as_type(_5585), _5591, -spvFMul(_5586, _5590)); float _5608 = fma(_3686, _5599, fma(_3688, _5602, spvFMul(_3690, _5605))); bool _5610 = _5581 && (0.0 >= _5608); uint _5611; uint _5612; uint _5613; uint _5614; if (_5610) { _5611 = 0u; _5612 = 0u; _5613 = 0u; _5614 = 0u; } else { _5611 = as_type(_5586); _5612 = as_type(_5588); _5613 = as_type(_5592); _5614 = as_type(_5599); } bool _5616 = _5581 && (!_5610); uint _5619; if (_5616) { _5619 = as_type(spvFSub(_3541, _4058)); } else { _5619 = as_type(_4058); } uint _5743; uint _5744; uint _5745; uint _5746; uint _5747; uint _5748; uint _5749; if (_5616) { float _5620 = spvFSub(_3545, _4063); uint _5621 = as_type(_5620); float _5622 = spvFSub(_3549, _4068); uint _5623 = as_type(_5622); float _5628 = fma(as_type(_5619), as_type(_5614), fma(_5620, _5602, spvFMul(_5622, _5605))); bool _5629 = 0.0 > _5628; bool _5630 = _5616 && _5629; uint _5631; uint _5632; uint _5633; uint _5634; if (_5630) { _5631 = 0u; _5632 = 0u; _5633 = 0u; _5634 = 0u; } else { _5631 = _5611; _5632 = _5612; _5633 = _5614; _5634 = _5613; } bool _5636 = _5616 && (!_5630); bool _5638; if (_5636) { _5638 = _5628 > _5608; } else { _5638 = _5629; } uint _5736; uint _5737; uint _5738; uint _5739; uint _5740; uint _5741; uint _5742; if (_5636) { bool _5639 = _5636 && _5638; uint _5640; uint _5641; uint _5642; uint _5643; if (_5639) { _5640 = 0u; _5641 = 0u; _5642 = 0u; _5643 = 0u; } else { _5640 = _5631; _5641 = _5632; _5642 = _5633; _5643 = _5634; } bool _5645 = _5636 && (!_5639); uint _5648; if (_5645) { _5648 = as_type(spvFMul(_3690, _5620)); } else { _5648 = _5642; } uint _5729; uint _5730; uint _5731; uint _5732; uint _5733; uint _5734; uint _5735; if (_5645) { float _5654 = fma(_3688, _5622, -as_type(_5648)); float _5658 = fma(_3690, as_type(_5619), -spvFMul(_3686, _5622)); float _5660 = fma(_3686, _5620, -spvFMul(_3688, as_type(_5619))); float _5664 = fma(_5590, _5654, fma(_5591, _5658, spvFMul(_5660, as_type(_5643)))); bool _5668 = _5645 && ((_5664 > _5608) || (_5664 < 0.0)); uint _5669; uint _5670; uint _5671; uint _5672; if (_5668) { _5669 = 0u; _5670 = 0u; _5671 = 0u; _5672 = 0u; } else { _5669 = _5643; _5670 = as_type(_5654); _5671 = _5640; _5672 = _5641; } bool _5674 = _5645 && (!_5668); uint _5678; if (_5674) { _5678 = as_type(spvFMul(_5660, as_type(_5672))); } else { _5678 = _5621; } uint _5722; uint _5723; uint _5724; uint _5725; uint _5726; uint _5727; uint _5728; if (_5674) { float _5684 = fma(as_type(_5585), as_type(_5670), fma(as_type(_5671), _5658, as_type(_5678))); bool _5691 = _5674 && ((spvFSub(_5664, _5684) > _5608) || (0.0 > (-_5684))); uint _5692; uint _5693; uint _5694; uint _5695; if (_5691) { _5692 = 0u; _5693 = 0u; _5694 = 0u; _5695 = 0u; } else { _5692 = _5670; _5693 = _5669; _5694 = _5671; _5695 = _5672; } bool _5697 = _5674 && (!_5691); uint _5698; if (_5697) { _5698 = 1u; } else { _5698 = _5695; } uint _5716; uint _5717; uint _5718; uint _5719; uint _5720; uint _5721; if (_5697) { float _5700 = spvFMul(_5628, 1.0 / _5608); float _5703 = spvFSub(as_type(_1316), _3541); float _5706 = spvFSub(as_type(_1317), _3545); _5716 = as_type(_5706); _5717 = as_type(_5703); _5718 = as_type(_5700); _5719 = as_type(fma(_5700, _5706, _3545)); _5720 = as_type(fma(_5700, _5703, _3541)); _5721 = as_type(fma(_5700, spvFSub(as_type(_1318), _3549), _3549)); } else { _5716 = _5585; _5717 = _5623; _5718 = as_type(_5684); _5719 = _5692; _5720 = _5693; _5721 = _5694; } _5722 = _5716; _5723 = _5717; _5724 = _5718; _5725 = _5719; _5726 = _5720; _5727 = _5721; _5728 = _5698; } else { _5722 = _5585; _5723 = _5623; _5724 = _5678; _5725 = _5670; _5726 = _5669; _5727 = _5671; _5728 = _5672; } _5729 = _5722; _5730 = _5723; _5731 = _5724; _5732 = _5725; _5733 = _5726; _5734 = _5727; _5735 = _5728; } else { _5729 = _5585; _5730 = _5623; _5731 = _5621; _5732 = _5648; _5733 = _5643; _5734 = _5640; _5735 = _5641; } _5736 = _5729; _5737 = _5730; _5738 = _5731; _5739 = _5732; _5740 = _5733; _5741 = _5734; _5742 = _5735; } else { _5736 = _5585; _5737 = _5623; _5738 = _5621; _5739 = _5633; _5740 = _5634; _5741 = _5631; _5742 = _5632; } _5743 = _5736; _5744 = _5737; _5745 = _5738; _5746 = _5739; _5747 = _5740; _5748 = _5741; _5749 = _5742; } else { _5743 = _5585; _5744 = _4069; _5745 = _4064; _5746 = _5614; _5747 = _5613; _5748 = _5611; _5749 = _5612; } _5751 = _5743; _5752 = _5744; _5753 = _5745; _5754 = _5748; _5755 = _5746; _5756 = _5747; _5757 = uint(max(int(0u), int(_5749))); } else { _5751 = _5585; _5752 = _4069; _5753 = _4064; _5754 = _5575; _5755 = _5573; _5756 = _5574; _5757 = _5577; } _5770 = _5751; _5771 = _5752; _5772 = _5753; _5773 = as_type(fma(as_type(_3089), -0.00999999977648258209228515625, as_type(_5755))); _5774 = as_type(fma(as_type(_3088), -0.00999999977648258209228515625, as_type(_5754))); _5775 = as_type(fma(as_type(_3090), -0.00999999977648258209228515625, as_type(_5756))); _5776 = _5757; } else { _5770 = _5428; _5771 = _4069; _5772 = _4064; _5773 = as_type(fma(as_type(_3089), 0.00999999977648258209228515625, as_type(_5407))); _5774 = as_type(fma(as_type(_3088), 0.00999999977648258209228515625, as_type(_5406))); _5775 = as_type(fma(as_type(_3090), 0.00999999977648258209228515625, as_type(_5408))); _5776 = _5409; } _5777 = _5245; _5778 = _5770; _5779 = _5771; _5780 = _5772; _5781 = _5773; _5782 = _5774; _5783 = _5775; _5784 = _5776; } else { _5777 = _5081; _5778 = _5104; _5779 = _4069; _5780 = _4064; _5781 = as_type(_5094); _5782 = as_type(_5098); _5783 = _5091; _5784 = _5085; } _5785 = _5777; _5786 = _5778; _5787 = _5779; _5788 = _5780; _5789 = _5781; _5790 = _5782; _5791 = _5783; _5792 = _5784; } else { _5785 = _4751; _5786 = _4092; _5787 = _4069; _5788 = _4064; _5789 = as_type(fma(as_type(_3092), 0.00999999977648258209228515625, as_type(_4754))); _5790 = as_type(_4769); _5791 = as_type(_4761); _5792 = _4756; } _5793 = _5785; _5794 = _5786; _5795 = _5787; _5796 = _5788; _5797 = _5789; _5798 = _5790; _5799 = _5791; _5800 = _5792; } else { _5793 = _4414; _5794 = _4092; _5795 = _4069; _5796 = _4064; _5797 = as_type(_4429); _5798 = as_type(fma(as_type(_3094), -0.00999999977648258209228515625, as_type(_4416))); _5799 = as_type(fma(as_type(_3096), -0.00999999977648258209228515625, as_type(_4418))); _5800 = _4419; } _5801 = _5793; _5802 = _5794; _5803 = _5795; _5804 = _5796; _5805 = _5797; _5806 = _5798; _5807 = _5799; _5808 = _5800; } else { _5801 = _3986; _5802 = as_type(_3563); _5803 = as_type(_3559); _5804 = as_type(_3555); _5805 = as_type(_4000); _5806 = as_type(_4004); _5807 = as_type(fma(as_type(_3096), 0.00999999977648258209228515625, as_type(_3989))); _5808 = _3990; } bool _5809 = 0u == _5808; bool _5812 = _3527 && (!(_3527 && _5809)); bool _5815; if (_5812) { _5815 = 0.0 >= as_type(_3517); } else { _5815 = _5809; } uint _5846; uint _5847; if (_5812) { bool _5816 = _5812 && _5815; uint _5817; if (_5816) { _5817 = 0u; } else { _5817 = 1065353216u; } bool _5819 = _5812 && (!_5816); uint _5824; if (_5819) { _5824 = as_type(spvFSub(as_type(_1316), as_type(_5807))); } else { _5824 = _5817; } uint _5844; uint _5845; if (_5819) { float _5827 = spvFSub(as_type(_1317), as_type(_5805)); float _5830 = spvFSub(as_type(_1318), as_type(_5806)); float _5838 = 1.0 / as_type(_3517); _5844 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_5824), as_type(_5824), fma(_5827, _5827, spvFMul(_5830, _5830)))), _5838), 0.0, 1.0))); _5845 = as_type(_5838); } else { _5844 = _5824; _5845 = _3517; } _5846 = _5844; _5847 = _5845; } else { _5846 = 1065353216u; _5847 = _3517; } _5848 = _5801; _5849 = _5846; _5850 = _5802; _5851 = _5803; _5852 = _5804; _5853 = _5847; _5854 = _5815; } else { _5848 = _2684; _5849 = _3532; _5850 = _3518; _5851 = _3519; _5852 = _3520; _5853 = _3517; _5854 = _3526; } bool _5856 = _3524 && (!_3527); bool _5858; if (_5856) { _5858 = 3u == cbuf_56.data[_2737]; } else { _5858 = _5854; } uint _6124; uint _6125; uint _6126; uint _6127; uint _6128; if (_5856) { bool _5859 = _5856 && _5858; bool _5862; if (_5859) { _5862 = 0.0 >= as_type(_5853); } else { _5862 = _5858; } uint _6120; uint _6121; uint _6122; uint _6123; if (_5859) { bool _5863 = _5859 && _5862; if (_5863) { } bool _5865 = _5859 && (!_5863); uint _6116; uint _6117; uint _6118; uint _6119; if (_5865) { uint _5870 = ((0u + ((_2707 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _5880 = uint3(cbuf_56.data[_5870 + 0u], cbuf_56.data[_5870 + 1u], cbuf_56.data[_5870 + 2u]); uint _5881 = _5880.x; uint _5882 = _5880.y; uint _5883 = _5880.z; uint _5888 = ((0u + ((_2707 + 73u) * 16u)) + buf3_off) >> 2u; float _5893 = spvFSub(as_type(_2731), as_type(_5883)); float _5896 = spvFSub(as_type(_2730), as_type(_5882)); float _5900 = spvFSub(as_type(_2729), as_type(_5881)); float _5908 = fast::max(sqrt(fma(_5900, _5900, fma(_5896, _5896, spvFMul(_5893, _5893)))), spvFMul(fast::max(as_type(cbuf_56.data[_5888]), as_type(cbuf_56.data[_5888])), 4.0)); float _5913 = fma(-as_type(_5850), _5908, as_type(_1318)); float _5917 = fma(-as_type(_5851), _5908, as_type(_1317)); float _5919 = spvFSub(as_type(_1318), _5913); float _5923 = spvFSub(as_type(_5883), as_type(_2731)); float _5928 = fma(-as_type(_5852), _5908, as_type(_1316)); float _5930 = spvFSub(as_type(_1317), _5917); float _5933 = spvFSub(as_type(_5882), as_type(_2730)); float _5938 = spvFSub(as_type(_1316), _5928); float _5941 = spvFSub(as_type(_5881), as_type(_2729)); float _5945 = fma(_5938, _5938, fma(_5930, _5930, spvFMul(_5919, _5919))); float _5946 = fma(_5941, _5941, fma(_5933, _5933, spvFMul(_5923, _5923))); bool _5950 = _5945 <= 9.9999997473787516355514526367188e-06; float _5960 = spvFMul(as_type(_5852), _5908); float _5962 = spvFMul(as_type(_5851), _5908); float _5964 = spvFMul(as_type(_5850), _5908); float _5965 = fma(_5941, spvFSub(_5928, as_type(_2729)), fma(_5933, spvFSub(_5917, as_type(_2730)), spvFMul(_5923, spvFSub(_5913, as_type(_2731))))); bool _5967 = _5865 && ((9.9999999747524270787835121154785e-07 >= _5946) && _5950); uint _5968; uint _5969; uint _5970; if (_5967) { _5968 = _2730; _5969 = _2729; _5970 = _2731; } else { _5968 = as_type(_5933); _5969 = as_type(_5941); _5970 = as_type(_5923); } bool _5972 = _5865 && (!_5967); uint _6050; uint _6051; uint _6052; if (_5972) { bool _5973 = _5972 && _5950; uint _5978; if (_5973) { _5978 = as_type(fast::clamp(spvFMul(_5965, 1.0 / _5946), 0.0, 1.0)); } else { _5978 = as_type(_5908); } bool _5980 = _5972 && (!_5973); uint _5984; if (_5980) { _5984 = as_type(spvFMul(_5919, as_type(_5970))); } else { _5984 = _5978; } uint _6034; if (_5980) { bool _5992 = _5980 && (9.9999997473787516355514526367188e-06 >= _5946); uint _5993; if (_5992) { _5993 = 0u; } else { _5993 = as_type(fma(_5938, as_type(_5969), fma(_5930, as_type(_5968), as_type(_5984)))); } bool _5995 = _5980 && (!_5992); uint _6000; if (_5995) { _6000 = as_type(spvFMul(as_type(_5993), as_type(_5993))); } else { _6000 = as_type(_5919); } uint _6033; if (_5995) { float _6003 = fma(_5945, _5946, -as_type(_6000)); bool _6006 = _5995 && (0.0 != _6003); uint _6016; if (_6006) { _6016 = as_type(fast::clamp(spvFMul(fma(_5965, as_type(_5993), -spvFMul(_5946, as_type(_5993))), 1.0 / _6003), 0.0, 1.0)); } else { _6016 = as_type(_6003); } uint _6019; if (_5995 && (!_6006)) { _6019 = 0u; } else { _6019 = _6016; } uint _6032; if (_5995 && (!(_5995 && (0.0 > spvFMul(fma(as_type(_5993), as_type(_6019), _5965), 1.0 / _5946))))) { _6032 = as_type((1.0 >= 0.0) ? 0.0 : 1.0); } else { _6032 = 0u; } _6033 = _6032; } else { _6033 = _5993; } _6034 = _6033; } else { _6034 = _5984; } _6050 = as_type(fma(as_type(_5970), as_type(_6034), as_type(_2731))); _6051 = as_type(fma(as_type(_5968), as_type(_6034), as_type(_2730))); _6052 = as_type(fma(as_type(_5969), as_type(_6034), as_type(_2729))); } else { _6050 = _5970; _6051 = _5968; _6052 = _5969; } float _6054 = spvFSub(_5928, as_type(_6052)); float _6056 = spvFSub(_5917, as_type(_6051)); float _6058 = spvFSub(_5913, as_type(_6050)); float _6061 = fma(_6054, _5960, fma(_6056, _5962, spvFMul(_5964, _6058))); float _6068 = fma(-as_type(cbuf_56.data[_5888]), as_type(cbuf_56.data[_5888]), fma(_6054, _6054, fma(_6056, _6056, spvFMul(_6058, _6058)))); bool _6073 = _5865 && ((_6061 > 0.0) && (0.0 < _6068)); uint _6074; if (_6073) { _6074 = 0u; } else { _6074 = cbuf_56.data[_5888]; } bool _6076 = _5865 && (!_6073); uint _6080; if (_6076) { _6080 = as_type(fma(_6061, _6061, -_6068)); } else { _6080 = as_type(_6068); } uint _6104; uint _6105; uint _6106; uint _6107; if (_6076) { bool _6083 = _6076 && (0.0 > as_type(_6080)); uint _6084; if (_6083) { _6084 = 0u; } else { _6084 = _6074; } bool _6086 = _6076 && (!_6083); uint _6087; if (_6086) { _6087 = 1u; } else { _6087 = _6084; } uint _6101; uint _6102; uint _6103; if (_6086) { float _6092 = spvFAdd(-_6061, -sqrt(as_type(_6080))); float _6094 = (0.0 <= _6092) ? _6092 : 0.0; _6101 = as_type(fma(_5964, _6094, _5913)); _6102 = as_type(fma(_5962, _6094, _5917)); _6103 = as_type(fma(_5960, _6094, _5928)); } else { _6101 = _2681; _6102 = _2682; _6103 = _2683; } _6104 = _6101; _6105 = _6102; _6106 = _6103; _6107 = _6087; } else { _6104 = _2681; _6105 = _2682; _6106 = _2683; _6107 = _6074; } bool _6111 = _5865 && (!(_5865 && (0u == _6107))); if (_6111) { } uint _6115; if (_6111) { _6115 = as_type(1.0 / as_type(_5853)); } else { _6115 = _5853; } _6116 = _6104; _6117 = _6105; _6118 = _6106; _6119 = _6115; } else { _6116 = _2681; _6117 = _2682; _6118 = _2683; _6119 = _5853; } _6120 = _6116; _6121 = _6117; _6122 = _6118; _6123 = _6119; } else { _6120 = _2681; _6121 = _2682; _6122 = _2683; _6123 = _5853; } _6124 = _6120; _6125 = _6121; _6126 = _6122; _6127 = _6123; _6128 = 1065353216u; } else { _6124 = _2681; _6125 = _2682; _6126 = _2683; _6127 = _5853; _6128 = _5849; } _6129 = _5848; _6130 = _6124; _6131 = _6125; _6132 = _6126; _6133 = _6127; _6134 = _6128; } else { _6129 = _2684; _6130 = _2681; _6131 = _2682; _6132 = _2683; _6133 = _3517; _6134 = _3521; } _6135 = _6129; _6136 = _3514; _6137 = _3515; _6138 = _3516; _6139 = _6130; _6140 = _6131; _6141 = _6132; _6142 = _6133; _6143 = _6134; } else { _6135 = _2684; _6136 = _2697; _6137 = _2698; _6138 = _2699; _6139 = _2681; _6140 = _2682; _6141 = _2683; _6142 = _3150; _6143 = _3369; } bool _6145 = _3376 && (!_3380); uint _6150; if (_6145) { _6150 = as_type(spvFSub(as_type(_3102), as_type(_1316))); } else { _6150 = _6143; } uint _6169; if (_6145) { float _6153 = spvFSub(as_type(_3101), as_type(_1317)); float _6156 = spvFSub(as_type(_3100), as_type(_1318)); _6169 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_6150), as_type(_6150), fma(_6153, _6153, spvFMul(_6156, _6156)))), 1.0 / as_type(_6142)), 0.0, 1.0))); } else { _6169 = _6150; } _6170 = _6135; _6171 = _6136; _6172 = _6137; _6173 = _6138; _6174 = _6139; _6175 = _6140; _6176 = _6141; _6177 = _6169; } else { _6170 = _2684; _6171 = _2697; _6172 = _2698; _6173 = _2699; _6174 = _2681; _6175 = _2682; _6176 = _2683; _6177 = _3369; } uint _6180; if (_3105 && (!_3376)) { _6180 = 1065353216u; } else { _6180 = _6177; } bool _6183 = _3105 && (0.0 < as_type(_3151)); bool _6184 = 1u == cbuf_56.data[_2737]; uint _6491; if (_6183) { bool _6185 = _6183 && _6184; uint _6232; uint _6233; uint _6234; uint _6235; bool _6236; uint _6237; if (_6185) { float _6195 = spvFSub(as_type(_1316), as_type(_3102)); float _6198 = spvFSub(as_type(_1317), as_type(_3101)); float _6202 = spvFSub(as_type(_1318), as_type(_3100)); float _6205 = fma(_6195, _6195, fma(_6198, _6198, spvFMul(_6202, _6202))); float _6210 = fast::max(0.0, spvFSub(sqrt(_6205), as_type(_3151))); float _6214 = spvFSub(as_type(cbuf_56.data[((0u + ((_2707 + 73u) * 16u)) + buf3_off) >> 2u]), as_type(_3151)); bool _6216 = 0.0 > _6214; bool _6217 = _6185 && _6216; uint _6218; if (_6217) { _6218 = 1065353216u; } else { _6218 = as_type(_6214); } uint _6227; if (_6185 && (!_6217)) { _6227 = as_type(spvFSub(1.0, fast::clamp(spvFMul(_6210, 1.0 / as_type(_6218)), 0.0, 1.0))); } else { _6227 = _6218; } _6232 = as_type(_6198); _6233 = as_type(_6210); _6234 = as_type(spvFMul(as_type(_6180), as_type(_6227))); _6235 = _6227; _6236 = _6216; _6237 = as_type(_6205); } else { _6232 = _2731; _6233 = _2730; _6234 = _6180; _6235 = _2729; _6236 = _6184; _6237 = cbuf_56.data[_2737]; } bool _6239 = _6183 && (!_6185); bool _6241; if (_6239) { _6241 = 2u == _6237; } else { _6241 = _6236; } uint _6490; if (_6239) { bool _6242 = _6239 && _6241; uint _6247; if (_6242) { _6247 = as_type(spvFSub(as_type(_1316), as_type(_3102))); } else { _6247 = _6235; } uint _6349; uint _6350; uint _6351; uint _6352; bool _6353; uint _6354; if (_6242) { float _6250 = spvFSub(as_type(_1317), as_type(_3101)); float _6253 = spvFSub(as_type(_1318), as_type(_3100)); float _6260 = fma(as_type(_6247), as_type(_3090), fma(_6250, as_type(_3089), spvFMul(as_type(_3088), _6253))); float _6264 = (_6260 > as_type(_3097)) ? as_type(_3097) : _6260; float _6270 = ((-as_type(_3097)) > _6264) ? (-as_type(_3097)) : _6264; float _6286 = fma(as_type(_6247), as_type(_3093), fma(_6250, as_type(_3092), spvFMul(as_type(_3091), _6253))); float _6290 = (_6286 > as_type(_3098)) ? as_type(_3098) : _6286; float _6296 = ((-as_type(_3098)) > _6290) ? (-as_type(_3098)) : _6290; float _6309 = fma(as_type(_6247), as_type(_3096), fma(_6250, as_type(_3095), spvFMul(as_type(_3094), _6253))); float _6313 = (_6309 > as_type(_3099)) ? as_type(_3099) : _6309; bool _6316 = (-as_type(_3099)) > _6313; float _6319 = _6316 ? (-as_type(_3099)) : _6313; float _6325 = fma(_6319, as_type(_3094), fma(_6296, as_type(_3091), fma(_6270, as_type(_3088), as_type(_3100)))); float _6328 = spvFSub(as_type(_1316), fma(_6319, as_type(_3096), fma(_6296, as_type(_3093), fma(_6270, as_type(_3090), as_type(_3102))))); float _6330 = spvFSub(as_type(_1317), fma(_6319, as_type(_3095), fma(_6296, as_type(_3092), fma(_6270, as_type(_3089), as_type(_3101))))); float _6332 = spvFSub(as_type(_1318), _6325); float _6335 = fma(_6328, _6328, fma(_6330, _6330, spvFMul(_6332, _6332))); float _6341 = 1.0 / as_type(_3151); float _6344 = fast::clamp(spvFMul(fast::max(9.9999997473787516355514526367188e-05, sqrt(_6335)), _6341), 0.0, 1.0); _6349 = as_type(spvFMul(as_type(_6234), _6344)); _6350 = as_type(_6335); _6351 = as_type(_6341); _6352 = as_type(_6344); _6353 = _6316; _6354 = as_type(_6325); } else { _6349 = _6234; _6350 = _6232; _6351 = _6233; _6352 = _6247; _6353 = _6241; _6354 = _6237; } bool _6356 = _6239 && (!_6242); bool _6358; if (_6356) { _6358 = 3u == _6354; } else { _6358 = _6353; } uint _6489; if (_6356) { bool _6359 = _6356 && _6358; uint _6488; if (_6359) { uint _6364 = ((0u + ((_2707 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _6374 = uint3(cbuf_56.data[_6364 + 0u], cbuf_56.data[_6364 + 1u], cbuf_56.data[_6364 + 2u]); uint _6375 = _6374.x; uint _6376 = _6374.y; uint _6377 = _6374.z; float _6380 = spvFSub(as_type(_6375), as_type(_6352)); float _6383 = spvFSub(as_type(_6376), as_type(_6351)); float _6386 = spvFSub(as_type(_6377), as_type(_6350)); float _6390 = spvFSub(as_type(_1316), as_type(_6352)); float _6394 = spvFSub(as_type(_1317), as_type(_6351)); float _6397 = spvFSub(as_type(_1318), as_type(_6350)); float _6401 = spvFSub(as_type(_1316), as_type(_6375)); float _6404 = spvFSub(as_type(_1317), as_type(_6376)); float _6407 = spvFSub(as_type(_1318), as_type(_6377)); float _6410 = fma(_6390, _6380, fma(_6394, _6383, spvFMul(_6397, _6386))); bool _6412 = _6359 && (0.0 >= _6410); uint _6419; uint _6420; if (_6412) { float _6415 = fma(_6390, _6390, fma(_6394, _6394, spvFMul(_6397, _6397))); _6419 = as_type(sqrt(_6415)); _6420 = as_type(_6415); } else { _6419 = as_type(_6390); _6420 = as_type(_6397); } bool _6422 = _6359 && (!_6412); uint _6425; if (_6422) { _6425 = as_type(spvFMul(_6386, _6386)); } else { _6425 = as_type(_6386); } uint _6456; if (_6422) { float _6428 = fma(_6380, _6380, fma(_6383, _6383, as_type(_6425))); bool _6430 = _6422 && (_6410 >= _6428); uint _6436; if (_6430) { _6436 = as_type(sqrt(fma(_6401, _6401, fma(_6404, _6404, spvFMul(_6407, _6407))))); } else { _6436 = _6419; } bool _6438 = _6422 && (!_6430); uint _6443; if (_6438) { _6443 = as_type(spvFMul(as_type(_6420), as_type(_6420))); } else { _6443 = _6420; } uint _6455; if (_6438) { _6455 = as_type(sqrt(fma(-spvFMul(_6410, _6410), 1.0 / _6428, fma(as_type(_6436), as_type(_6436), fma(_6394, _6394, as_type(_6443)))))); } else { _6455 = _6436; } _6456 = _6455; } else { _6456 = _6419; } float _6471 = spvFSub(as_type(cbuf_56.data[((0u + ((_2707 + 73u) * 16u)) + buf3_off) >> 2u]), as_type(_3151)); bool _6473 = _6359 && (0.0 > _6471); uint _6474; if (_6473) { _6474 = 1065353216u; } else { _6474 = as_type(fast::max(0.0, spvFSub(as_type(_6456), as_type(_3151)))); } uint _6483; if (_6359 && (!_6473)) { _6483 = as_type(spvFSub(1.0, fast::clamp(spvFMul(as_type(_6474), 1.0 / _6471), 0.0, 1.0))); } else { _6483 = _6474; } _6488 = as_type(spvFMul(as_type(_6349), as_type(_6483))); } else { _6488 = _6349; } _6489 = _6488; } else { _6489 = _6349; } _6490 = _6489; } else { _6490 = _6234; } _6491 = _6490; } else { _6491 = _6180; } bool _6492 = 1u == _3170; bool _6493 = _3105 && _6492; float _6496 = spvFMul(as_type(_2169), as_type(_6491)); uint _6559; uint _6560; uint _6561; uint _6562; uint _6563; bool _6564; if (_6493) { float _6504 = spvFMul(as_type(cbuf_52.data[_1568]), spvFMul(as_type(_3374), _6496)); float _6506 = spvFMul(as_type(cbuf_52.data[_1568]), spvFMul(as_type(_3373), _6496)); float _6508 = spvFMul(as_type(cbuf_52.data[_1568]), spvFMul(as_type(_3367), _6496)); float _6512 = sqrt(fma(_6504, _6504, fma(_6506, _6506, spvFMul(_6508, _6508)))); float _6515 = spvFSub(as_type(_3102), as_type(_1316)); float _6518 = spvFSub(as_type(_3101), as_type(_1317)); float _6521 = spvFSub(as_type(_3100), as_type(_1318)); float _6525 = rsqrt(fma(_6515, _6515, fma(_6518, _6518, spvFMul(_6521, _6521)))); float _6526 = spvFMul(_6515, _6525); float _6527 = spvFMul(_6518, _6525); float _6528 = spvFMul(_6521, _6525); uint _6531 = uint(spvFAdd(_2654, as_type(_3149))); uint _6535 = ((spvMulExtended(_6531, 274877907u))._m1 >> 6u) * 1000u; float _6538 = spvFMul(0.001000000047497451305389404296875, float(_6531 - _6535)); bool _6543 = 0.0 > fma(as_type(_3152), _6538, as_type(_3149)); _6559 = _6535; _6560 = as_type(_6538); _6561 = as_type(fma(_6512, _6543 ? (-_6528) : _6528, as_type(_2678))); _6562 = as_type(fma(_6512, _6543 ? (-_6527) : _6527, as_type(_2679))); _6563 = as_type(fma(_6512, _6543 ? (-_6526) : _6526, as_type(_2680))); _6564 = _6543; } else { _6559 = _3101; _6560 = _3102; _6561 = _2678; _6562 = _2679; _6563 = _2680; _6564 = _6492; } bool _6566 = _3105 && (!_6493); bool _6568; if (_6566) { _6568 = 2u == _3170; } else { _6568 = _6564; } uint _6638; uint _6639; uint _6640; uint _6641; uint _6642; uint _6643; uint _6644; uint _6645; if (_6566) { uint _6630; uint _6631; uint _6632; uint _6633; uint _6634; uint _6635; uint _6636; uint _6637; if (_6566 && _6568) { uint _6575 = ((0u + ((_2707 + 89u) * 16u)) + buf3_off) >> 2u; uint3 _6585 = uint3(cbuf_56.data[_6575 + 0u], cbuf_56.data[_6575 + 1u], cbuf_56.data[_6575 + 2u]); float _6591 = spvFMul(as_type(_2169), as_type(_6491)); float _6593 = spvFMul(as_type(_3374), _6591); float _6596 = spvFMul(as_type(_3373), _6591); float _6607 = fma(as_type(cbuf_52.data[_1568]), _6593, fma(_2656, _2659, as_type(_6585.x))); float _6609 = fma(as_type(cbuf_52.data[_1568]), _6596, fma(_2660, _2663, as_type(_6585.y))); float _6611 = fma(as_type(cbuf_52.data[_1568]), spvFMul(as_type(_3367), _6591), fma(_2664, _2667, as_type(_6585.z))); _6630 = as_type(_6596); _6631 = as_type(_6593); _6632 = as_type(fast::max(as_type(_2672), _6611)); _6633 = as_type(fast::max(as_type(_2673), _6609)); _6634 = as_type(fast::max(as_type(_2674), _6607)); _6635 = as_type(fast::min(as_type(_2675), _6611)); _6636 = as_type(fast::min(as_type(_2676), _6609)); _6637 = as_type(fast::min(as_type(_2677), _6607)); } else { _6630 = _6559; _6631 = _6560; _6632 = _2672; _6633 = _2673; _6634 = _2674; _6635 = _2675; _6636 = _2676; _6637 = _2677; } _6638 = _6630; _6639 = _6631; _6640 = _6632; _6641 = _6633; _6642 = _6634; _6643 = _6635; _6644 = _6636; _6645 = _6637; } else { _6638 = _6559; _6639 = _6560; _6640 = _2672; _6641 = _2673; _6642 = _2674; _6643 = _2675; _6644 = _2676; _6645 = _2677; } _6648 = _6491; _6649 = _6170; _6650 = as_type(spvFAdd(as_type(_2702), _3246)); _6651 = as_type(_3250); _6652 = _6638; _6653 = _6639; _6654 = _6171; _6655 = _6172; _6656 = _6173; _6657 = _6174; _6658 = _6175; _6659 = _6176; _6660 = _6561; _6661 = _6562; _6662 = _6563; _6663 = _6640; _6664 = _6641; _6665 = _6642; _6666 = _6643; _6667 = _6644; _6668 = _6645; _6669 = as_type(_3250); } else { _6648 = _3087; _6649 = _2684; _6650 = _2702; _6651 = _2703; _6652 = _3101; _6653 = _3102; _6654 = _2697; _6655 = _2698; _6656 = _2699; _6657 = _2681; _6658 = _2682; _6659 = _2683; _6660 = _2678; _6661 = _2679; _6662 = _2680; _6663 = _2672; _6664 = _2673; _6665 = _2674; _6666 = _2675; _6667 = _2676; _6668 = _2677; _6669 = _3103; } _6670 = _2707 + 1u; if (true) { _2671 = _6648; _2672 = _6663; _2673 = _6664; _2674 = _6665; _2675 = _6666; _2676 = _6667; _2677 = _6668; _2678 = _6660; _2679 = _6661; _2680 = _6662; _2681 = _6657; _2682 = _6658; _2683 = _6659; _2684 = _6649; _2685 = _3088; _2686 = _3089; _2687 = _3090; _2688 = _3091; _2689 = _3092; _2690 = _3093; _2691 = _3094; _2692 = _3095; _2693 = _3096; _2694 = _3097; _2695 = _3098; _2696 = _3099; _2697 = _6654; _2698 = _6655; _2699 = _6656; _2700 = _3100; _2701 = _6652; _2702 = _6650; _2703 = _6651; _2704 = _6669; _2705 = _6653; _2706 = _2712; _2707 = _6670; continue; } else { _6671 = _6648; _6672 = _6660; _6673 = _6661; _6674 = _6662; _6675 = _6663; _6676 = _6666; _6677 = _6664; _6678 = _6667; _6679 = _6665; _6680 = _6668; _6681 = _6650; _6682 = _6651; break; } } float _6690 = (1.0 < as_type(_6682)) ? spvFMul(as_type(_6681), 1.0 / as_type(_6682)) : as_type(_6681); float _6693 = spvFAdd(as_type(_6680), as_type(_6679)); uint _6694 = as_type(_6693); float _6697 = spvFAdd(as_type(_6678), as_type(_6677)); uint _6698 = as_type(_6697); float _6701 = spvFAdd(as_type(_6676), as_type(_6675)); uint _6702 = as_type(_6701); uint _6704 = 180u + buf2_dword_off; uint _6708 = 181u + buf2_dword_off; uint _6843; uint _6844; uint _6845; if (int(cbuf_52.data[_6708]) > int(0u)) { float _6715 = float(int(cbuf_52.data[31u + buf2_dword_off])); float _6719 = 1.0 / float(int(cbuf_52.data[_6704])); bool _6721 = int(cbuf_52.data[_6704]) <= int(1u); bool _6733 = _1290 && ((abs(as_type(_2168)) > 0.0) && (int(uint(int(_6721 ? 1.0 : spvFMul(spvFMul(_1575, _6715), _6719)))) > int(uint(int(_6721 ? 0.0 : spvFMul(spvFMul(_1567, _6715), _6719)))))); uint _6736; if (_6733) { _6736 = as_type(spvFMul(_1581, _6715)); } else { _6736 = as_type(_6715); } uint _6840; uint _6841; uint _6842; if (_6733) { uint _6745 = uint(int(fma(as_type(cbuf_52.data[_1571]), 10.0, float(gl_LocalInvocationID.x + (uint(int(as_type(_6736))) + (_1276 + _1280)))))); uint _6751 = 1048575u & ((_6745 * 6389u) + 7381u); uint _6753 = uint(max(int(_6751), int(0u - _6751))); uint _6758 = _6753 - (((spvMulExtended(_6753, 274877907u))._m1 >> 6u) * 1000u); float _6772 = spvFSub(spvFMul(spvFMul(as_type(_2168), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6751)) ? as_type(0u - _6758) : as_type(_6758)))))), 2.0), as_type(_2168)); uint _6777 = 1048575u & (((gl_LocalInvocationID.x + _6745) * 6389u) + 7381u); uint _6779 = uint(max(int(_6777), int(0u - _6777))); uint _6784 = _6779 - (((spvMulExtended(_6779, 274877907u))._m1 >> 6u) * 1000u); float _6797 = spvFSub(spvFMul(spvFMul(as_type(_2168), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6777)) ? as_type(0u - _6784) : as_type(_6784)))))), 2.0), as_type(_2168)); uint _6804 = (2147483648u & as_type(_6772)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6772)))); float _6807 = sin(6.283185482025146484375 * as_type(_6804)); float _6810 = cos(6.283185482025146484375 * as_type(_6804)); uint _6816 = (2147483648u & as_type(_6797)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6797)))); float _6819 = sin(6.283185482025146484375 * as_type(_6816)); float _6822 = cos(6.283185482025146484375 * as_type(_6816)); float _6823 = spvFMul(_6807, _6819); _6840 = as_type(fma(-_6819, _6693, fma(spvFMul(_6807, _6822), _6697, spvFMul(_6701, spvFMul(_6810, _6822))))); _6841 = as_type(fma(_6693, 0.0, fma(_6810, _6697, spvFMul(_6701, -_6807)))); _6842 = as_type(fma(_6822, _6693, fma(_6823, _6697, spvFMul(_6701, _6823)))); } else { _6840 = _6702; _6841 = _6698; _6842 = _6694; } _6843 = _6840; _6844 = _6841; _6845 = _6842; } else { _6843 = _6702; _6844 = _6698; _6845 = _6694; } float _6848 = spvFAdd(as_type(_6674), as_type(_6845)); float _6851 = spvFAdd(as_type(_6673), as_type(_6844)); float _6854 = spvFAdd(as_type(_6672), as_type(_6843)); float _6856 = spvFMul(as_type(_2167), _6848); float _6858 = spvFMul(as_type(_2167), _6851); float _6860 = spvFMul(as_type(_2167), _6854); float _6863 = fma(as_type(_2166), as_type(cbuf_52.data[_1568]), _1519); uint _6864 = as_type(_6863); float _6870 = fma(as_type(_2164), as_type(cbuf_52.data[_1568]), float(as_type(ushort(_1358)))); uint _6871 = as_type(_6870); float _6874 = fma(as_type(cbuf_52.data[_1568]), as_type(_2163), fma(as_type(cbuf_52.data[_1568]), as_type(_2165), float(as_type(ushort(_1357 >> 16u))))); uint _6875 = as_type(_6874); uint _7004; uint _7005; uint _7006; if (int(cbuf_52.data[_6708]) > int(0u)) { float _6880 = float(int(cbuf_52.data[31u + buf2_dword_off])); float _6883 = 1.0 / float(int(cbuf_52.data[_6704])); bool _6885 = int(cbuf_52.data[_6704]) <= int(1u); uint _6891 = uint(int(_6885 ? 0.0 : spvFMul(spvFMul(_1567, _6880), _6883))); bool _6897 = _1290 && ((abs(as_type(_2168)) > 0.0) && (int(uint(int(_6885 ? 1.0 : spvFMul(spvFMul(_1575, _6880), _6883)))) > int(_6891))); uint _6903; if (_6897) { _6903 = as_type(spvFMul(fast::max(as_type(_2168), as_type(_2168)), 2.0)); } else { _6903 = _6891; } uint _7001; uint _7002; uint _7003; if (_6897) { uint _6912 = uint(int(fma(as_type(cbuf_52.data[_1571]), 10.0, float(gl_LocalInvocationID.x + ((_1276 + _1280) + uint(int(spvFMul(_1581, _6880)))))))); uint _6915 = 1048575u & ((_6912 * 6389u) + 7381u); uint _6917 = uint(max(int(_6915), int(0u - _6915))); uint _6922 = _6917 - (((spvMulExtended(_6917, 274877907u))._m1 >> 6u) * 1000u); float _6934 = fma(as_type(_6903), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6915)) ? as_type(0u - _6922) : as_type(_6922))))), -as_type(_2168)); uint _6939 = 1048575u & (((gl_LocalInvocationID.x + _6912) * 6389u) + 7381u); uint _6941 = uint(max(int(_6939), int(0u - _6939))); uint _6946 = _6941 - (((spvMulExtended(_6941, 274877907u))._m1 >> 6u) * 1000u); float _6958 = fma(as_type(_6903), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6939)) ? as_type(0u - _6946) : as_type(_6946))))), -as_type(_2168)); uint _6965 = (2147483648u & as_type(_6934)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6934)))); float _6968 = sin(6.283185482025146484375 * as_type(_6965)); float _6971 = cos(6.283185482025146484375 * as_type(_6965)); uint _6977 = (2147483648u & as_type(_6958)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6958)))); float _6980 = sin(6.283185482025146484375 * as_type(_6977)); float _6983 = cos(6.283185482025146484375 * as_type(_6977)); float _6984 = spvFMul(_6968, _6980); _7001 = as_type(fma(-_6980, _6863, fma(spvFMul(_6968, _6983), _6874, spvFMul(_6870, spvFMul(_6971, _6983))))); _7002 = as_type(fma(_6863, 0.0, fma(_6971, _6874, spvFMul(_6870, -_6968)))); _7003 = as_type(fma(_6983, _6863, fma(_6984, _6874, spvFMul(_6870, _6984)))); } else { _7001 = _6871; _7002 = _6875; _7003 = _6864; } _7004 = _7001; _7005 = _7002; _7006 = _7003; } else { _7004 = _6871; _7005 = _6875; _7006 = _6864; } uint _7019 = 192u + buf2_dword_off; uint _7023 = 193u + buf2_dword_off; uint _7031 = 195u + buf2_dword_off; float _7075 = fma(as_type(cbuf_52.data[_1568]), as_type(_2159), float(as_type(ushort(_1379)))); float _7078 = fma(as_type(cbuf_52.data[_1568]), as_type(_2158), float(as_type(ushort(_1379 >> 16u)))); float _7081 = fma(as_type(cbuf_52.data[_1568]), as_type(_2157), float(as_type(ushort(_1380)))); float _7090 = fma(as_type(cbuf_52.data[_1568]), as_type(_2162), float(as_type(ushort(_1414)))); float _7093 = fma(as_type(cbuf_52.data[_1568]), as_type(_2161), float(as_type(ushort(_1414 >> 16u)))); float _7096 = fma(as_type(cbuf_52.data[_1568]), as_type(_2160), float(as_type(ushort(_1415)))); uint _7124 = as_type(fma(as_type(cbuf_52.data[8u + buf2_dword_off]), as_type(cbuf_52.data[_7019]), fma(as_type(cbuf_52.data[_1568]), fma(_6690, _6856, as_type(_7006)), as_type(_1316)))); uint _7128 = as_type(fma(as_type(cbuf_52.data[9u + buf2_dword_off]), as_type(cbuf_52.data[_7019]), fma(as_type(cbuf_52.data[_1568]), fma(_6690, _6858, as_type(_7005)), as_type(_1317)))); uint _7132 = as_type(fma(as_type(cbuf_52.data[10u + buf2_dword_off]), as_type(cbuf_52.data[_7019]), fma(as_type(cbuf_52.data[_1568]), fma(_6690, _6860, as_type(_7004)), as_type(_1318)))); float _7140 = fma(as_type(cbuf_52.data[_1568]), _7090, float(as_type(ushort(_1399)))); float _7143 = fma(as_type(cbuf_52.data[_1568]), _7093, float(as_type(ushort(_1399 >> 16u)))); float _7146 = fma(as_type(cbuf_52.data[_1568]), _7096, float(as_type(ushort(_1400)))); uint _7153; uint _7154; if (_1290 && (0.0 < _1545)) { float _7150 = spvFMul(spvFAdd(_7140, _7143), 0.5); _7153 = as_type(_7150); _7154 = as_type(_7150); } else { _7153 = as_type(_7140); _7154 = as_type(_7143); } uint _7156 = 224u + buf2_dword_off; uint _7160 = 225u + buf2_dword_off; uint _7164 = 226u + buf2_dword_off; uint _7168 = 227u + buf2_dword_off; uint _7172 = 216u + buf2_dword_off; uint _7176 = 217u + buf2_dword_off; uint _7180 = 218u + buf2_dword_off; uint _7184 = 219u + buf2_dword_off; uint _7188 = 220u + buf2_dword_off; uint _7192 = 221u + buf2_dword_off; uint _7196 = 222u + buf2_dword_off; uint _7200 = 223u + buf2_dword_off; uint _7204 = 244u + buf2_dword_off; uint _7208 = 245u + buf2_dword_off; uint _7212 = 246u + buf2_dword_off; uint _7216 = 247u + buf2_dword_off; uint _7220 = 232u + buf2_dword_off; uint _7224 = 233u + buf2_dword_off; uint _7228 = 234u + buf2_dword_off; uint _7232 = 235u + buf2_dword_off; uint _7236 = 236u + buf2_dword_off; uint _7240 = 237u + buf2_dword_off; uint _7244 = 238u + buf2_dword_off; uint _7248 = 239u + buf2_dword_off; float _7253 = spvFMul(as_type(cbuf_52.data[194u + buf2_dword_off]), as_type(_2151)); float _7289 = fma(as_type(cbuf_52.data[_7156]), as_type(_1316), fma(as_type(cbuf_52.data[_7160]), as_type(_1317), fma(as_type(cbuf_52.data[_7164]), as_type(_1318), as_type(cbuf_52.data[_7168])))); float _7295 = fma(as_type(cbuf_52.data[_7188]), as_type(_1316), fma(as_type(cbuf_52.data[_7192]), as_type(_1317), fma(as_type(cbuf_52.data[_7196]), as_type(_1318), as_type(cbuf_52.data[_7200])))); float _7301 = fma(as_type(cbuf_52.data[_7172]), as_type(_1316), fma(as_type(cbuf_52.data[_7176]), as_type(_1317), fma(as_type(cbuf_52.data[_7180]), as_type(_1318), as_type(cbuf_52.data[_7184])))); float _7320 = 1.0 / fma(as_type(cbuf_52.data[_7204]), _7301, fma(as_type(cbuf_52.data[_7208]), _7295, fma(as_type(cbuf_52.data[_7212]), _7289, as_type(cbuf_52.data[_7216])))); uint _7321 = cbuf_52.data[176u + buf2_dword_off] + 4294967295u; uint _7322 = cbuf_52.data[177u + buf2_dword_off] + 4294967295u; float _7325 = float(int(_7321)); float _7326 = float(int(_7322)); uint _7357 = 5u + buf2_dword_off; uint _7360 = 6u + buf2_dword_off; uint _7363 = 7u + buf2_dword_off; uint _7425 = uint(int(spvFMul(_1581, float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint _7456 = as_type(half2(float2(as_type(_2536), 0.0))); uint _7473 = (_1400 >> 16u) << 16u; uint _7475 = as_type(half2(float2(fma(spvFMul(as_type(cbuf_52.data[_7023]), as_type(cbuf_52.data[12u + buf2_dword_off])), as_type(_2156), fma(as_type(cbuf_52.data[_1568]), _7075, float(as_type(ushort(_1377))))), 0.0))) | (as_type(half2(float2(fma(spvFMul(as_type(cbuf_52.data[_7023]), as_type(cbuf_52.data[13u + buf2_dword_off])), as_type(_2156), fma(as_type(cbuf_52.data[_1568]), _7078, float(as_type(ushort(_1377 >> 16u))))), 0.0))) << 16u); uint _7476 = as_type(half2(float2(_7075, 0.0))) | (as_type(half2(float2(_7078, 0.0))) << 16u); uint _7477 = as_type(half2(float2(fma(_7253, spvFSub(as_type(cbuf_52.data[16u + buf2_dword_off]), as_type(_7153)), as_type(_7153)), 0.0))) | (as_type(half2(float2(fma(_7253, spvFSub(as_type(cbuf_52.data[17u + buf2_dword_off]), as_type(_7154)), as_type(_7154)), 0.0))) << 16u); uint _7478 = as_type(half2(float2(fma(_7253, spvFSub(as_type(cbuf_52.data[18u + buf2_dword_off]), _7146), _7146), 0.0))) | (4294901760u & _1398.w); uint _7479 = as_type(half2(float2(_7090, 0.0))) | (as_type(half2(float2(_7093, 0.0))) << 16u); uint _7480 = as_type(half2(float2(_7096, 0.0))) | (4294901760u & _1415); uint _7481 = as_type(half2(float2(as_type(_2538), 0.0))) | (as_type(half2(float2(as_type(_2537), 0.0))) << 16u); uint _7482 = _7456 | (as_type(half2(float2(as_type(_2535), 0.0))) << 16u); uint _7483 = as_type(half2(float2(spvFSub(1.0, spvFSub(1.0, fast::clamp(spvFMul(fma(spvFMul(_1613, spvFMul(_1614, -_1614)), _1619, _1613), _1640), 0.0, 1.0))), 0.0))) | (as_type(half2(float2(as_type(_2539), 0.0))) << 16u); uint _7484 = as_type(half2(float2(_6856, 0.0))) | (as_type(half2(float2(_6858, 0.0))) << 16u); uint _7485 = as_type(half2(float2(_6860, 0.0))) | (4294901760u & _1494); uint _7486 = as_type(half2(float2(spvFMul(0.550000011920928955078125, as_type(_7153)), 0.0))) | (as_type(half2(float2(spvFMul(0.550000011920928955078125, as_type(_7154)), 0.0))) << 16u); uint _7487 = as_type(half2(float2(spvFMul(0.550000011920928955078125, _7146), 0.0))) | _7473; uint _7488 = gl_LocalInvocationID.x + ((_1276 + _1280) + _7425); float _7508 = 1.0 / fma(as_type(cbuf_52.data[_7360]), as_type(as_type(cs_img16.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_7321), int(uint(int(spvFMul(_7325, fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_7220]), _7301, fma(as_type(cbuf_52.data[_7224]), _7295, fma(as_type(cbuf_52.data[_7228]), _7289, as_type(cbuf_52.data[_7232])))), _7320), 0.5)))))))))), uint(max(int(0u), int(uint(min(int(_7322), int(uint(int(spvFMul(_7326, fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_7236]), _7301, fma(as_type(cbuf_52.data[_7240]), _7295, fma(as_type(cbuf_52.data[_7244]), _7289, as_type(cbuf_52.data[_7248])))), _7320), 0.5)))))))))))), 0u)).x), as_type(cbuf_52.data[_7357])); uint _7509 = cbuf_52.data[178u + buf2_dword_off] + 4294967295u; uint _7510 = cbuf_52.data[179u + buf2_dword_off] + 4294967295u; uint _7512 = 580u + buf3_dword_off; uint _7516 = 174u + buf2_dword_off; uint _7520 = 175u + buf2_dword_off; uint _7524 = 185u + buf2_dword_off; uint _7528 = 200u + buf2_dword_off; uint _7532 = 201u + buf2_dword_off; uint _7536 = 202u + buf2_dword_off; uint _7540 = 203u + buf2_dword_off; uint _7544 = 204u + buf2_dword_off; uint _7548 = 205u + buf2_dword_off; uint _7552 = 206u + buf2_dword_off; uint _7556 = 207u + buf2_dword_off; uint _7560 = 208u + buf2_dword_off; uint _7564 = 209u + buf2_dword_off; uint _7568 = 210u + buf2_dword_off; uint _7572 = 211u + buf2_dword_off; float _7577 = fma(as_type(cbuf_52.data[_7031]), spvFSub(as_type(cbuf_52.data[20u + buf2_dword_off]), as_type(_2155)), as_type(_2155)); float _7580 = fma(as_type(cbuf_52.data[_7031]), spvFSub(as_type(cbuf_52.data[21u + buf2_dword_off]), as_type(_2154)), as_type(_2154)); float _7583 = fma(as_type(cbuf_52.data[_7031]), spvFSub(as_type(cbuf_52.data[22u + buf2_dword_off]), as_type(_2153)), as_type(_2153)); float _7586 = fma(as_type(cbuf_52.data[_7031]), spvFSub(as_type(cbuf_52.data[23u + buf2_dword_off]), as_type(_2152)), as_type(_2152)); uint _7587 = as_type(half2(float2(fma(spvFMul(as_type(cbuf_52.data[_7023]), as_type(cbuf_52.data[14u + buf2_dword_off])), as_type(_2156), fma(as_type(cbuf_52.data[_1568]), _7081, float(as_type(ushort(_1378))))), 0.0))) | (4294901760u & _1378); uint _7588 = as_type(half2(float2(_7081, 0.0))) | (4294901760u & _1380); uint _7593 = (65535u & _2405) | ((~65535u) & _1513); uint _7594 = extract_bits(_1514, 0u, 16u) | (_2404 << 16u); float _7596 = spvFMul(as_type(cbuf_52.data[_7363]), _7508); float _7599 = spvFMul(as_type(cbuf_52.data[_7357]), 0.800000011920928955078125); float _7600 = float(int(_7509)); float _7601 = float(int(_7510)); uint _7602 = as_type(_1575); uint _7603 = as_type(_1564); bool _7628; bool _7627; uint _11135; uint _11136; uint _11137; uint _11138; uint _11139; uint _11140; uint _11141; uint _11142; uint _11143; uint _11144; uint _11145; uint _11146; uint _11147; uint _11148; uint _11149; uint _11150; uint _11151; uint _11152; uint _11153; uint _11154; uint _11155; uint _11156; uint _11157; uint _11158; uint _11159; uint _7604 = _7602; uint _7605 = _7603; uint _7606 = _1547; uint _7607 = _7004; uint _7608 = _7005; uint _7609 = _7006; uint _7610 = _1576; uint _7611 = _7456; uint _7612 = _1546; uint _7613 = _1520; uint _7614 = _6671; uint _7615 = _7132; uint _7616 = _7128; uint _7617 = _7124; bool _7618 = _1290; bool _7619 = _1290; uint _7620 = 0u; for (;;) { bool _7623 = _7619 && (!(int(cbuf_56.data[_7512]) > int(_7620))); if (_7623) { bool _7625 = _7618 && (!_7623); if (!_7625) { _11150 = _7615; _11151 = _7616; _11152 = _7617; _11153 = _7607; _11154 = _7608; _11155 = _7609; _11156 = _7620; _11157 = _7604; _11158 = _7605; _11159 = _7606; break; } else { _7627 = _7625; } } else { _7627 = _7618; } _7628 = _7619 && _7627; uint _7634 = ((0u + ((_7620 + 146u) * 16u)) + buf3_off) >> 2u; uint3 _7644 = uint3(cbuf_56.data[_7634 + 0u], cbuf_56.data[_7634 + 1u], cbuf_56.data[_7634 + 2u]); uint _7645 = _7644.x; bool _7647 = 0u == _7645; bool _7648 = _7628 && _7647; uint _7650; if (_7648) { _7650 = _7620 + 1u; } else { _7650 = _7620; } bool _7652 = _7628 && (!_7648); bool _7654; if (_7652) { _7654 = 1u == _7645; } else { _7654 = _7647; } if (_7652) { bool _7655 = _7652 && _7654; uint _7658; if (_7655) { _7658 = _7650 + 154u; } else { _7658 = _7645; } uint _7734; uint _7735; uint _7736; uint _7737; uint _7738; bool _7739; uint _7740; if (_7655) { uint _7662 = ((0u + (_7658 * 16u)) + buf3_off) >> 2u; uint3 _7672 = uint3(cbuf_56.data[_7662 + 0u], cbuf_56.data[_7662 + 1u], cbuf_56.data[_7662 + 2u]); uint _7673 = _7672.x; uint _7674 = _7672.y; uint _7675 = _7672.z; uint _7681 = ((0u + ((_7650 + 162u) * 16u)) + buf3_off) >> 2u; float _7686 = spvFSub(as_type(_7675), as_type(_7615)); float _7689 = spvFSub(as_type(_7674), as_type(_7616)); float _7693 = spvFSub(as_type(_7673), as_type(_7617)); float _7696 = sqrt(fma(_7693, _7693, fma(_7689, _7689, spvFMul(_7686, _7686)))); bool _7698 = as_type(cbuf_56.data[_7681]) > _7696; bool _7699 = _7655 && _7698; uint _7700; if (_7699) { _7700 = 1u; } else { _7700 = _7612; } uint _7727; uint _7728; uint _7729; uint _7730; if (_7699) { float _7710 = 1.0 / _7696; float _7711 = spvFMul(spvFSub(as_type(_7617), as_type(_7673)), _7710); _7727 = as_type(_7711); _7728 = as_type(fma(as_type(cbuf_56.data[_7681]), spvFMul(spvFSub(as_type(_7615), as_type(_7675)), _7710), as_type(_7675))); _7729 = as_type(fma(as_type(cbuf_56.data[_7681]), spvFMul(spvFSub(as_type(_7616), as_type(_7674)), _7710), as_type(_7674))); _7730 = as_type(fma(as_type(cbuf_56.data[_7681]), _7711, as_type(_7673))); } else { _7727 = _7610; _7728 = _7615; _7729 = _7616; _7730 = _7617; } uint _7733; if (_7655 && (!_7699)) { _7733 = 0u; } else { _7733 = _7700; } _7734 = _7727; _7735 = _7733; _7736 = _7728; _7737 = _7729; _7738 = _7730; _7739 = _7698; _7740 = cbuf_56.data[_7681]; } else { _7734 = _7610; _7735 = _7612; _7736 = _7615; _7737 = _7616; _7738 = _7617; _7739 = _7654; _7740 = _7658; } bool _7742 = _7652 && (!_7655); bool _7744; if (_7742) { _7744 = 3u == _7740; } else { _7744 = _7739; } uint _10745; uint _10746; uint _10747; uint _10748; uint _10749; uint _10750; uint _10751; uint _10752; uint _10753; uint _10754; uint _10755; if (_7742) { bool _7745 = _7742 && _7744; uint _7747; if (_7745) { _7747 = _7650 + 154u; } else { _7747 = _7740; } uint _10165; uint _10166; uint _10167; uint _10168; uint _10169; uint _10170; uint _10171; bool _10172; uint _10173; if (_7745) { uint _7750 = _7650 << 2u; uint _7759 = ((0u + (_7747 * 16u)) + buf3_off) >> 2u; uint3 _7769 = uint3(cbuf_56.data[_7759 + 0u], cbuf_56.data[_7759 + 1u], cbuf_56.data[_7759 + 2u]); uint _7770 = _7769.x; uint _7771 = _7769.y; uint _7772 = _7769.z; uint _7776 = ((0u + ((_7650 + 170u) * 16u)) + buf3_off) >> 2u; uint3 _7786 = uint3(cbuf_56.data[_7776 + 0u], cbuf_56.data[_7776 + 1u], cbuf_56.data[_7776 + 2u]); uint _7787 = _7786.x; uint _7788 = _7786.y; uint _7789 = _7786.z; uint _7793 = ((0u + ((_7750 + 186u) * 16u)) + buf3_off) >> 2u; uint3 _7803 = uint3(cbuf_56.data[_7793 + 0u], cbuf_56.data[_7793 + 1u], cbuf_56.data[_7793 + 2u]); uint _7804 = _7803.x; uint _7805 = _7803.y; uint _7806 = _7803.z; uint _7810 = ((0u + ((_7750 + 187u) * 16u)) + buf3_off) >> 2u; uint3 _7820 = uint3(cbuf_56.data[_7810 + 0u], cbuf_56.data[_7810 + 1u], cbuf_56.data[_7810 + 2u]); uint _7821 = _7820.x; uint _7822 = _7820.y; uint _7823 = _7820.z; uint _7827 = ((0u + ((_7750 + 188u) * 16u)) + buf3_off) >> 2u; uint3 _7837 = uint3(cbuf_56.data[_7827 + 0u], cbuf_56.data[_7827 + 1u], cbuf_56.data[_7827 + 2u]); uint _7838 = _7837.x; uint _7839 = _7837.y; uint _7840 = _7837.z; float _7843 = spvFSub(as_type(_7787), as_type(_7770)); float _7846 = spvFAdd(as_type(_7770), as_type(_7787)); float _7850 = spvFMul(fast::max(abs(_7843), abs(_7843)), 0.5); float _7854 = spvFAdd(as_type(_7771), as_type(_7788)); float _7857 = spvFAdd(as_type(_7772), as_type(_7789)); float _7863 = spvFSub(as_type(_7788), as_type(_7771)); float _7866 = spvFSub(as_type(_7789), as_type(_7772)); float _7868 = spvFMul(as_type(_7804), _7850); float _7870 = spvFMul(as_type(_7805), _7850); float _7878 = spvFMul(fast::max(abs(_7863), abs(_7863)), 0.5); float _7882 = spvFMul(fast::max(abs(_7866), abs(_7866)), 0.5); float _7884 = spvFMul(as_type(_7806), _7850); float _7885 = fma(_7846, 0.5, _7868); float _7886 = fma(_7854, 0.5, _7870); float _7889 = fma(-as_type(_7804), _7850, spvFMul(fast::max(_7846, _7846), 0.5)); float _7890 = fma(_7857, 0.5, _7884); float _7892 = fma(_7878, as_type(_7821), _7885); float _7894 = fma(_7878, as_type(_7822), _7886); float _7897 = fma(-as_type(_7805), _7850, spvFMul(fast::max(_7854, _7854), 0.5)); float _7900 = fma(-as_type(_7806), _7850, spvFMul(fast::max(_7857, _7857), 0.5)); float _7906 = fma(_7878, as_type(_7823), _7890); float _7908 = fma(_7882, as_type(_7838), _7892); float _7910 = fma(_7882, as_type(_7839), _7894); float _7915 = fma(-as_type(_7822), _7878, fma(_7882, as_type(_7839), _7886)); float _7922 = fma(-as_type(_7821), _7878, fma(_7882, as_type(_7838), _7889)); float _7924 = fma(_7882, as_type(_7840), _7906); float _7929 = fma(-as_type(_7821), _7878, fma(_7882, as_type(_7838), _7885)); float _7932 = fma(-as_type(_7822), _7878, fma(_7882, as_type(_7839), _7897)); float _7935 = fma(-as_type(_7823), _7878, fma(_7882, as_type(_7840), _7900)); float _7936 = spvFSub(_7915, _7910); uint _7937 = as_type(_7936); float _7938 = spvFSub(_7922, _7908); float _7942 = fma(-as_type(_7823), _7878, fma(_7882, as_type(_7840), _7890)); float _7943 = spvFSub(_7929, _7908); float _7945 = spvFSub(_7932, _7910); float _7947 = spvFSub(_7935, _7924); float _7949 = spvFSub(_7942, _7924); float _7952 = spvFSub(as_type(_7736), as_type(_1318)); float _7955 = fma(_7943, _7945, -spvFMul(_7936, _7938)); float _7958 = spvFSub(as_type(_7737), as_type(_1317)); float _7961 = fma(_7949, _7938, -spvFMul(_7943, _7947)); uint _7962 = as_type(_7961); float _7966 = spvFSub(as_type(_7738), as_type(_1316)); float _7968 = fma(_7936, _7947, -spvFMul(_7949, _7945)); float _7971 = fma(_7878, as_type(_7821), _7889); float _7974 = fma(_7878, as_type(_7822), _7897); float _7976 = fma(_7878, as_type(_7823), _7900); float _7977 = fma(_7966, _7968, fma(_7958, _7961, spvFMul(_7952, _7955))); float _7985 = fma(_7882, as_type(_7838), _7971); float _7987 = fma(_7882, as_type(_7839), _7974); float _7989 = fma(_7882, as_type(_7840), _7976); bool _7991 = _7745 && (0.0 >= _7977); uint _7992; uint _7993; uint _7994; uint _7995; if (_7991) { _7992 = 0u; _7993 = 0u; _7994 = 0u; _7995 = 0u; } else { _7992 = _7735; _7993 = _7613; _7994 = as_type(_7943); _7995 = as_type(_7945); } bool _7997 = _7745 && (!_7991); uint _8001; if (_7997) { _8001 = as_type(spvFSub(as_type(_7738), _7908)); } else { _8001 = _7614; } uint _8117; uint _8118; uint _8119; uint _8120; uint _8121; uint _8122; if (_7997) { float _8003 = spvFSub(as_type(_7737), _7910); float _8005 = spvFSub(as_type(_7736), _7924); float _8009 = fma(as_type(_8001), _7968, fma(_8003, _7961, spvFMul(_7955, _8005))); bool _8010 = 0.0 > _8009; bool _8011 = _7997 && _8010; uint _8012; uint _8013; uint _8014; uint _8015; if (_8011) { _8012 = 0u; _8013 = 0u; _8014 = 0u; _8015 = 0u; } else { _8012 = _7992; _8013 = _7993; _8014 = _7994; _8015 = _7995; } bool _8017 = _7997 && (!_8011); bool _8019; if (_8017) { _8019 = _8009 > _7977; } else { _8019 = _8010; } uint _8111; uint _8112; uint _8113; uint _8114; uint _8115; uint _8116; if (_8017) { bool _8020 = _8017 && _8019; uint _8021; uint _8022; uint _8023; uint _8024; if (_8020) { _8021 = 0u; _8022 = 0u; _8023 = 0u; _8024 = 0u; } else { _8021 = _8012; _8022 = _8013; _8023 = _8014; _8024 = _8015; } bool _8026 = _8017 && (!_8020); uint _8029; if (_8026) { _8029 = as_type(spvFMul(_7952, _8003)); } else { _8029 = _7962; } uint _8105; uint _8106; uint _8107; uint _8108; uint _8109; uint _8110; if (_8026) { float _8035 = fma(_7958, _8005, -as_type(_8029)); float _8039 = fma(_7952, as_type(_8001), -spvFMul(_7966, _8005)); float _8041 = fma(_7966, _8003, -spvFMul(_7958, as_type(_8001))); float _8045 = fma(_7938, _8035, fma(as_type(_8024), _8039, spvFMul(_7947, _8041))); bool _8049 = _8026 && ((_8045 > _7977) || (_8045 < 0.0)); uint _8050; uint _8051; uint _8052; uint _8053; if (_8049) { _8050 = 0u; _8051 = 0u; _8052 = 0u; _8053 = 0u; } else { _8050 = _8024; _8051 = _8021; _8052 = _8022; _8053 = _8023; } bool _8055 = _8026 && (!_8049); uint _8058; if (_8055) { _8058 = as_type(spvFMul(_7949, _8041)); } else { _8058 = as_type(_7938); } uint _8100; uint _8101; uint _8102; uint _8103; uint _8104; if (_8055) { float _8062 = fma(as_type(_8053), _8035, fma(_7936, _8039, as_type(_8058))); float _8063 = spvFSub(_8045, _8062); bool _8069 = _8055 && ((_8063 > _7977) || (0.0 > (-_8062))); uint _8070; uint _8071; uint _8072; uint _8073; if (_8069) { _8070 = 0u; _8071 = 0u; _8072 = 0u; _8073 = 0u; } else { _8070 = _8050; _8071 = _8053; _8072 = _8051; _8073 = _8052; } bool _8075 = _8055 && (!_8069); uint _8076; if (_8075) { _8076 = 1u; } else { _8076 = _8073; } uint _8097; uint _8098; uint _8099; if (_8075) { float _8078 = spvFMul(_8009, 1.0 / _7977); _8097 = as_type(fma(_8078, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _8098 = as_type(fma(_8078, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _8099 = as_type(fma(_8078, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _8097 = _8070; _8098 = _8071; _8099 = _8072; } _8100 = _8097; _8101 = _8098; _8102 = _8099; _8103 = as_type(_8063); _8104 = _8076; } else { _8100 = _8050; _8101 = _8053; _8102 = _8051; _8103 = _7937; _8104 = _8052; } _8105 = as_type(_8035); _8106 = _8100; _8107 = _8101; _8108 = _8102; _8109 = _8103; _8110 = _8104; } else { _8105 = _8029; _8106 = _8024; _8107 = _8023; _8108 = _8021; _8109 = _7937; _8110 = _8022; } _8111 = _8105; _8112 = _8106; _8113 = _8107; _8114 = _8108; _8115 = _8109; _8116 = _8110; } else { _8111 = _7962; _8112 = _8015; _8113 = _8014; _8114 = _8012; _8115 = _7937; _8116 = _8013; } _8117 = _8111; _8118 = _8112; _8119 = _8113; _8120 = _8114; _8121 = _8115; _8122 = _8116; } else { _8117 = _7962; _8118 = _7995; _8119 = _7994; _8120 = _7992; _8121 = _7937; _8122 = _7993; } bool _8126 = _7745 && (!(_7745 && (int(0u) < int(_8122)))); uint _8129; if (_8126) { _8129 = as_type(spvFSub(_7985, _7922)); } else { _8129 = _8121; } uint _8284; uint _8285; uint _8286; uint _8287; uint _8288; uint _8289; if (_8126) { float _8130 = spvFSub(_7987, _7932); float _8131 = spvFSub(_7989, _7935); float _8133 = spvFSub(_7908, _7922); float _8135 = spvFSub(_7910, _7932); float _8136 = spvFSub(_7924, _7935); float _8142 = fma(_8130, _8136, -spvFMul(_8131, _8135)); float _8145 = fma(_8131, _8133, -spvFMul(as_type(_8129), _8136)); uint _8146 = as_type(_8145); float _8149 = fma(as_type(_8129), _8135, -spvFMul(_8130, _8133)); float _8152 = fma(_7966, _8142, fma(_7958, _8145, spvFMul(_7952, _8149))); bool _8154 = _8126 && (0.0 >= _8152); uint _8155; uint _8156; uint _8157; uint _8158; if (_8154) { _8155 = 0u; _8156 = 0u; _8157 = 0u; _8158 = 0u; } else { _8155 = _8120; _8156 = _8122; _8157 = as_type(_8131); _8158 = as_type(_8133); } bool _8160 = _8126 && (!_8154); uint _8164; if (_8160) { _8164 = as_type(spvFSub(as_type(_7738), _7922)); } else { _8164 = _8001; } uint _8278; uint _8279; uint _8280; uint _8281; uint _8282; if (_8160) { float _8166 = spvFSub(as_type(_7737), _7932); float _8168 = spvFSub(as_type(_7736), _7935); float _8172 = fma(as_type(_8164), _8142, fma(_8166, _8145, spvFMul(_8149, _8168))); bool _8173 = 0.0 > _8172; bool _8174 = _8160 && _8173; uint _8175; uint _8176; uint _8177; uint _8178; if (_8174) { _8175 = 0u; _8176 = 0u; _8177 = 0u; _8178 = 0u; } else { _8175 = _8155; _8176 = _8156; _8177 = _8157; _8178 = _8158; } bool _8180 = _8160 && (!_8174); bool _8182; if (_8180) { _8182 = _8172 > _8152; } else { _8182 = _8173; } uint _8273; uint _8274; uint _8275; uint _8276; uint _8277; if (_8180) { bool _8183 = _8180 && _8182; uint _8184; uint _8185; uint _8186; uint _8187; if (_8183) { _8184 = 0u; _8185 = 0u; _8186 = 0u; _8187 = 0u; } else { _8184 = _8175; _8185 = _8176; _8186 = _8177; _8187 = _8178; } bool _8189 = _8180 && (!_8183); uint _8192; if (_8189) { _8192 = as_type(spvFMul(_7952, _8166)); } else { _8192 = as_type(_8142); } uint _8268; uint _8269; uint _8270; uint _8271; uint _8272; if (_8189) { float _8198 = fma(_7958, _8168, -as_type(_8192)); float _8201 = fma(_7952, as_type(_8164), -spvFMul(_7966, _8168)); float _8204 = fma(_7966, _8166, -spvFMul(_7958, as_type(_8164))); float _8208 = fma(as_type(_8187), _8198, fma(_8135, _8201, spvFMul(_8136, _8204))); bool _8212 = _8189 && ((_8208 > _8152) || (_8208 < 0.0)); uint _8213; uint _8214; uint _8215; uint _8216; if (_8212) { _8213 = 0u; _8214 = 0u; _8215 = 0u; _8216 = 0u; } else { _8213 = _8187; _8214 = _8184; _8215 = _8185; _8216 = _8186; } bool _8218 = _8189 && (!_8212); uint _8222; if (_8218) { _8222 = as_type(spvFMul(as_type(_8216), _8204)); } else { _8222 = _8216; } uint _8264; uint _8265; uint _8266; uint _8267; if (_8218) { float _8226 = fma(as_type(_8129), _8198, fma(_8130, _8201, as_type(_8222))); bool _8233 = _8218 && ((spvFSub(_8208, _8226) > _8152) || (0.0 > (-_8226))); uint _8234; uint _8235; uint _8236; uint _8237; if (_8233) { _8234 = 0u; _8235 = 0u; _8236 = 0u; _8237 = 0u; } else { _8234 = _8213; _8235 = as_type(_8226); _8236 = _8214; _8237 = _8215; } bool _8239 = _8218 && (!_8233); uint _8240; if (_8239) { _8240 = 1u; } else { _8240 = _8237; } uint _8261; uint _8262; uint _8263; if (_8239) { float _8242 = spvFMul(_8172, 1.0 / _8152); _8261 = as_type(fma(_8242, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _8262 = as_type(fma(_8242, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _8263 = as_type(fma(_8242, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _8261 = _8234; _8262 = _8235; _8263 = _8236; } _8264 = _8261; _8265 = _8262; _8266 = _8263; _8267 = _8240; } else { _8264 = _8213; _8265 = _8222; _8266 = _8214; _8267 = _8215; } _8268 = as_type(_8201); _8269 = _8264; _8270 = _8265; _8271 = _8266; _8272 = _8267; } else { _8268 = _8146; _8269 = _8187; _8270 = _8186; _8271 = _8184; _8272 = _8185; } _8273 = _8268; _8274 = _8269; _8275 = _8270; _8276 = _8271; _8277 = _8272; } else { _8273 = _8146; _8274 = _8178; _8275 = _8177; _8276 = _8175; _8277 = _8176; } _8278 = _8273; _8279 = _8274; _8280 = _8275; _8281 = _8276; _8282 = _8277; } else { _8278 = _8146; _8279 = _8158; _8280 = _8157; _8281 = _8155; _8282 = _8156; } _8284 = _8164; _8285 = _8278; _8286 = _8279; _8287 = _8280; _8288 = _8281; _8289 = uint(max(int(0u), int(_8282))); } else { _8284 = _8001; _8285 = _8117; _8286 = _8118; _8287 = _8119; _8288 = _8120; _8289 = _8122; } uint _8295 = as_type(fma(as_type(_7838), 0.00999999977648258209228515625, as_type(_8288))); float _8302 = fma(as_type(_7840), 0.00999999977648258209228515625, as_type(_8286)); bool _8305 = _7745 && (!(_7745 && (int(0u) < int(_8289)))); uint _8310; if (_8305) { _8310 = as_type(fma(-as_type(_7838), _7882, _7971)); } else { _8310 = as_type(_7971); } uint _10144; uint _10145; uint _10146; uint _10147; uint _10148; uint _10149; if (_8305) { float _8312 = fma(-_8302, _7882, _7974); float _8315 = fma(-as_type(_7840), _7882, _7976); float _8318 = fma(-as_type(_7838), _7882, _7892); float _8320 = fma(-_8302, _7882, _7894); float _8323 = fma(-as_type(_7840), _7882, _7906); float _8341 = fma(-as_type(_7838), _7882, fma(_7846, 0.5, fma(-as_type(_7821), _7878, -_7868))); float _8344 = fma(-_8302, _7882, fma(_7854, 0.5, fma(-as_type(_7822), _7878, -_7870))); float _8347 = fma(-as_type(_7840), _7882, fma(_7857, 0.5, fma(-as_type(_7823), _7878, -_7884))); float _8362 = fma(-as_type(_7838), _7882, fma(_7846, 0.5, fma(as_type(_7804), _7850, -spvFMul(as_type(_7821), _7878)))); uint _8363 = as_type(_8362); float _8365 = fma(-_8302, _7882, fma(_7854, 0.5, fma(as_type(_7805), _7850, -spvFMul(as_type(_7822), _7878)))); float _8368 = fma(-as_type(_7840), _7882, fma(_7857, 0.5, fma(as_type(_7806), _7850, -spvFMul(as_type(_7823), _7878)))); float _8370 = spvFSub(_8341, as_type(_8310)); uint _8371 = as_type(_8370); float _8372 = spvFSub(_8344, _8312); uint _8373 = as_type(_8372); float _8374 = spvFSub(_8347, _8315); float _8377 = spvFSub(_8362, as_type(_8310)); float _8379 = spvFSub(_8365, _8312); float _8380 = spvFSub(_8368, _8315); float _8385 = fma(_8372, _8380, -spvFMul(_8374, _8379)); float _8388 = fma(_8374, _8377, -spvFMul(_8370, _8380)); uint _8389 = as_type(_8388); float _8391 = fma(_8370, _8379, -spvFMul(_8372, _8377)); float _8394 = fma(_7966, _8385, fma(_7958, _8388, spvFMul(_7952, _8391))); bool _8396 = _8305 && (0.0 >= _8394); uint _8397; uint _8398; uint _8399; uint _8400; if (_8396) { _8397 = 0u; _8398 = 0u; _8399 = 0u; _8400 = 0u; } else { _8397 = _8295; _8398 = _8289; _8399 = as_type(_8374); _8400 = as_type(_8377); } bool _8402 = _8305 && (!_8396); uint _8407; if (_8402) { _8407 = as_type(spvFSub(as_type(_7738), as_type(_8310))); } else { _8407 = _8285; } uint _8529; uint _8530; uint _8531; uint _8532; uint _8533; uint _8534; uint _8535; if (_8402) { float _8409 = spvFSub(as_type(_7737), _8312); float _8411 = spvFSub(as_type(_7736), _8315); float _8415 = fma(as_type(_8407), _8385, fma(_8409, _8388, spvFMul(_8391, _8411))); bool _8416 = 0.0 > _8415; bool _8417 = _8402 && _8416; uint _8418; uint _8419; uint _8420; uint _8421; if (_8417) { _8418 = 0u; _8419 = 0u; _8420 = 0u; _8421 = 0u; } else { _8418 = _8397; _8419 = _8398; _8420 = _8399; _8421 = _8400; } bool _8423 = _8402 && (!_8417); bool _8425; if (_8423) { _8425 = _8415 > _8394; } else { _8425 = _8416; } uint _8522; uint _8523; uint _8524; uint _8525; uint _8526; uint _8527; uint _8528; if (_8423) { bool _8426 = _8423 && _8425; uint _8427; uint _8428; uint _8429; uint _8430; if (_8426) { _8427 = 0u; _8428 = 0u; _8429 = 0u; _8430 = 0u; } else { _8427 = _8418; _8428 = _8419; _8429 = _8420; _8430 = _8421; } bool _8432 = _8423 && (!_8426); uint _8435; if (_8432) { _8435 = as_type(spvFMul(_7952, _8409)); } else { _8435 = as_type(_8385); } uint _8515; uint _8516; uint _8517; uint _8518; uint _8519; uint _8520; uint _8521; if (_8432) { float _8441 = fma(_7958, _8411, -as_type(_8435)); float _8444 = fma(_7952, as_type(_8407), -spvFMul(_7966, _8411)); float _8447 = fma(_7966, _8409, -spvFMul(_7958, as_type(_8407))); float _8451 = fma(as_type(_8430), _8441, fma(_8379, _8444, spvFMul(_8380, _8447))); bool _8455 = _8432 && ((_8451 > _8394) || (_8451 < 0.0)); uint _8456; uint _8457; uint _8458; uint _8459; if (_8455) { _8456 = 0u; _8457 = 0u; _8458 = 0u; _8459 = 0u; } else { _8456 = _8430; _8457 = _8427; _8458 = _8428; _8459 = _8429; } bool _8461 = _8432 && (!_8455); uint _8465; if (_8461) { _8465 = as_type(spvFMul(as_type(_8459), _8447)); } else { _8465 = _8459; } uint _8509; uint _8510; uint _8511; uint _8512; uint _8513; uint _8514; if (_8461) { float _8468 = fma(_8370, _8441, fma(_8372, _8444, as_type(_8465))); float _8470 = spvFSub(_8451, _8468); bool _8476 = _8461 && ((_8470 > _8394) || (0.0 > (-_8468))); uint _8477; uint _8478; uint _8479; uint _8480; if (_8476) { _8477 = 0u; _8478 = 0u; _8479 = 0u; _8480 = 0u; } else { _8477 = _8456; _8478 = as_type(_8468); _8479 = _8457; _8480 = _8458; } bool _8482 = _8461 && (!_8476); uint _8483; if (_8482) { _8483 = 1u; } else { _8483 = _8480; } uint _8505; uint _8506; uint _8507; uint _8508; if (_8482) { float _8485 = spvFMul(_8415, 1.0 / _8394); _8505 = as_type(_8485); _8506 = as_type(fma(_8485, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _8507 = as_type(fma(_8485, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _8508 = as_type(fma(_8485, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _8505 = _8373; _8506 = _8477; _8507 = _8478; _8508 = _8479; } _8509 = _8505; _8510 = _8506; _8511 = _8507; _8512 = _8508; _8513 = as_type(_8470); _8514 = _8483; } else { _8509 = _8373; _8510 = _8456; _8511 = _8465; _8512 = _8457; _8513 = _8371; _8514 = _8458; } _8515 = _8509; _8516 = as_type(_8444); _8517 = _8510; _8518 = _8511; _8519 = _8512; _8520 = _8513; _8521 = _8514; } else { _8515 = _8373; _8516 = _8389; _8517 = _8430; _8518 = _8429; _8519 = _8427; _8520 = _8371; _8521 = _8428; } _8522 = _8515; _8523 = _8516; _8524 = _8517; _8525 = _8518; _8526 = _8519; _8527 = _8520; _8528 = _8521; } else { _8522 = _8373; _8523 = _8389; _8524 = _8421; _8525 = _8420; _8526 = _8418; _8527 = _8371; _8528 = _8419; } _8529 = _8522; _8530 = _8523; _8531 = _8524; _8532 = _8525; _8533 = _8526; _8534 = _8527; _8535 = _8528; } else { _8529 = _8373; _8530 = _8389; _8531 = _8400; _8532 = _8399; _8533 = _8397; _8534 = _8371; _8535 = _8398; } bool _8539 = _8305 && (!(_8305 && (int(0u) < int(_8535)))); uint _8542; if (_8539) { _8542 = as_type(spvFSub(_8318, _8362)); } else { _8542 = _8534; } uint _8705; uint _8706; uint _8707; uint _8708; uint _8709; uint _8710; if (_8539) { float _8543 = spvFSub(_8320, _8365); uint _8544 = as_type(_8543); float _8545 = spvFSub(_8323, _8368); float _8548 = spvFSub(as_type(_8310), _8362); float _8550 = spvFSub(_8312, _8365); float _8551 = spvFSub(_8315, _8368); float _8557 = fma(_8543, _8551, -spvFMul(_8545, _8550)); float _8560 = fma(_8545, _8548, -spvFMul(as_type(_8542), _8551)); uint _8561 = as_type(_8560); float _8564 = fma(as_type(_8542), _8550, -spvFMul(_8543, _8548)); float _8567 = fma(_7966, _8557, fma(_7958, _8560, spvFMul(_7952, _8564))); bool _8569 = _8539 && (0.0 >= _8567); uint _8570; uint _8571; uint _8572; uint _8573; if (_8569) { _8570 = 0u; _8571 = 0u; _8572 = 0u; _8573 = 0u; } else { _8570 = _8533; _8571 = _8535; _8572 = as_type(_8545); _8573 = as_type(_8548); } bool _8575 = _8539 && (!_8569); uint _8579; if (_8575) { _8579 = as_type(spvFSub(as_type(_7738), _8362)); } else { _8579 = _8407; } uint _8698; uint _8699; uint _8700; uint _8701; uint _8702; uint _8703; if (_8575) { float _8581 = spvFSub(as_type(_7737), _8365); float _8583 = spvFSub(as_type(_7736), _8368); float _8587 = fma(as_type(_8579), _8557, fma(_8581, _8560, spvFMul(_8564, _8583))); bool _8588 = 0.0 > _8587; bool _8589 = _8575 && _8588; uint _8590; uint _8591; uint _8592; uint _8593; if (_8589) { _8590 = 0u; _8591 = 0u; _8592 = 0u; _8593 = 0u; } else { _8590 = _8570; _8591 = _8571; _8592 = _8572; _8593 = _8573; } bool _8595 = _8575 && (!_8589); bool _8597; if (_8595) { _8597 = _8587 > _8567; } else { _8597 = _8588; } uint _8692; uint _8693; uint _8694; uint _8695; uint _8696; uint _8697; if (_8595) { bool _8598 = _8595 && _8597; uint _8599; uint _8600; uint _8601; uint _8602; if (_8598) { _8599 = 0u; _8600 = 0u; _8601 = 0u; _8602 = 0u; } else { _8599 = _8590; _8600 = _8591; _8601 = _8592; _8602 = _8593; } bool _8604 = _8595 && (!_8598); uint _8607; if (_8604) { _8607 = as_type(spvFMul(_7952, _8581)); } else { _8607 = as_type(_8557); } uint _8686; uint _8687; uint _8688; uint _8689; uint _8690; uint _8691; if (_8604) { float _8613 = fma(_7958, _8583, -as_type(_8607)); float _8616 = fma(_7952, as_type(_8579), -spvFMul(_7966, _8583)); float _8619 = fma(_7966, _8581, -spvFMul(_7958, as_type(_8579))); float _8623 = fma(as_type(_8602), _8613, fma(_8550, _8616, spvFMul(_8551, _8619))); bool _8627 = _8604 && ((_8623 > _8567) || (_8623 < 0.0)); uint _8628; uint _8629; uint _8630; uint _8631; if (_8627) { _8628 = 0u; _8629 = 0u; _8630 = 0u; _8631 = 0u; } else { _8628 = _8602; _8629 = _8599; _8630 = _8600; _8631 = _8601; } bool _8633 = _8604 && (!_8627); uint _8637; if (_8633) { _8637 = as_type(spvFMul(as_type(_8631), _8619)); } else { _8637 = _8631; } uint _8681; uint _8682; uint _8683; uint _8684; uint _8685; if (_8633) { float _8641 = fma(as_type(_8542), _8613, fma(_8543, _8616, as_type(_8637))); bool _8648 = _8633 && ((spvFSub(_8623, _8641) > _8567) || (0.0 > (-_8641))); uint _8649; uint _8650; uint _8651; uint _8652; if (_8648) { _8649 = 0u; _8650 = 0u; _8651 = 0u; _8652 = 0u; } else { _8649 = _8628; _8650 = as_type(_8641); _8651 = _8629; _8652 = _8630; } bool _8654 = _8633 && (!_8648); uint _8655; if (_8654) { _8655 = 1u; } else { _8655 = _8652; } uint _8677; uint _8678; uint _8679; uint _8680; if (_8654) { float _8657 = spvFMul(_8587, 1.0 / _8567); _8677 = as_type(_8657); _8678 = as_type(fma(_8657, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _8679 = as_type(fma(_8657, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _8680 = as_type(fma(_8657, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _8677 = _8544; _8678 = _8649; _8679 = _8650; _8680 = _8651; } _8681 = _8677; _8682 = _8678; _8683 = _8679; _8684 = _8680; _8685 = _8655; } else { _8681 = _8544; _8682 = _8628; _8683 = _8637; _8684 = _8629; _8685 = _8630; } _8686 = _8681; _8687 = as_type(_8616); _8688 = _8682; _8689 = _8683; _8690 = _8684; _8691 = _8685; } else { _8686 = _8544; _8687 = _8561; _8688 = _8602; _8689 = _8601; _8690 = _8599; _8691 = _8600; } _8692 = _8686; _8693 = _8687; _8694 = _8688; _8695 = _8689; _8696 = _8690; _8697 = _8691; } else { _8692 = _8544; _8693 = _8561; _8694 = _8593; _8695 = _8592; _8696 = _8590; _8697 = _8591; } _8698 = _8692; _8699 = _8693; _8700 = _8694; _8701 = _8695; _8702 = _8696; _8703 = _8697; } else { _8698 = _8544; _8699 = _8561; _8700 = _8573; _8701 = _8572; _8702 = _8570; _8703 = _8571; } _8705 = _8698; _8706 = _8699; _8707 = _8700; _8708 = _8701; _8709 = _8702; _8710 = uint(max(int(0u), int(_8703))); } else { _8705 = _8529; _8706 = _8530; _8707 = _8531; _8708 = _8532; _8709 = _8533; _8710 = _8535; } uint _8716 = as_type(fma(as_type(_7838), -0.00999999977648258209228515625, as_type(_8709))); bool _8725 = _8305 && (!(_8305 && (int(0u) < int(_8710)))); uint _8729; if (_8725) { _8729 = as_type(spvFSub(as_type(_8310), _7985)); } else { _8729 = _7838; } uint _10138; uint _10139; uint _10140; uint _10141; uint _10142; uint _10143; if (_8725) { float _8730 = spvFSub(_8312, _7987); float _8731 = spvFSub(_8315, _7989); float _8733 = spvFSub(_8318, _7985); float _8735 = spvFSub(_8320, _7987); uint _8736 = as_type(_8735); float _8737 = spvFSub(_8323, _7989); float _8743 = fma(_8730, _8737, -spvFMul(_8731, _8735)); float _8746 = fma(_8731, _8733, -spvFMul(as_type(_8729), _8737)); float _8749 = fma(as_type(_8729), _8735, -spvFMul(_8730, _8733)); float _8752 = fma(_7966, _8743, fma(_7958, _8746, spvFMul(_7952, _8749))); bool _8754 = _8725 && (0.0 >= _8752); uint _8755; uint _8756; uint _8757; uint _8758; if (_8754) { _8755 = 0u; _8756 = 0u; _8757 = 0u; _8758 = 0u; } else { _8755 = _8716; _8756 = _8710; _8757 = as_type(_8731); _8758 = as_type(_8733); } bool _8760 = _8725 && (!_8754); uint _8764; if (_8760) { _8764 = as_type(spvFSub(as_type(_7738), _7985)); } else { _8764 = _8706; } uint _8884; uint _8885; uint _8886; uint _8887; uint _8888; uint _8889; if (_8760) { float _8766 = spvFSub(as_type(_7737), _7987); float _8768 = spvFSub(as_type(_7736), _7989); float _8772 = fma(as_type(_8764), _8743, fma(_8766, _8746, spvFMul(_8749, _8768))); bool _8773 = 0.0 > _8772; bool _8774 = _8760 && _8773; uint _8775; uint _8776; uint _8777; uint _8778; if (_8774) { _8775 = 0u; _8776 = 0u; _8777 = 0u; _8778 = 0u; } else { _8775 = _8755; _8776 = _8756; _8777 = _8757; _8778 = _8758; } bool _8780 = _8760 && (!_8774); bool _8782; if (_8780) { _8782 = _8772 > _8752; } else { _8782 = _8773; } uint _8878; uint _8879; uint _8880; uint _8881; uint _8882; uint _8883; if (_8780) { bool _8783 = _8780 && _8782; uint _8784; uint _8785; uint _8786; uint _8787; if (_8783) { _8784 = 0u; _8785 = 0u; _8786 = 0u; _8787 = 0u; } else { _8784 = _8775; _8785 = _8776; _8786 = _8777; _8787 = _8778; } bool _8789 = _8780 && (!_8783); uint _8792; if (_8789) { _8792 = as_type(spvFMul(_7952, _8766)); } else { _8792 = as_type(_8743); } uint _8872; uint _8873; uint _8874; uint _8875; uint _8876; uint _8877; if (_8789) { float _8798 = fma(_7958, _8768, -as_type(_8792)); float _8801 = fma(_7952, as_type(_8764), -spvFMul(_7966, _8768)); float _8803 = fma(_7966, _8766, -spvFMul(_7958, as_type(_8764))); float _8807 = fma(as_type(_8787), _8798, fma(_8735, _8801, spvFMul(_8737, _8803))); bool _8811 = _8789 && ((_8807 > _8752) || (_8807 < 0.0)); uint _8812; uint _8813; uint _8814; uint _8815; if (_8811) { _8812 = 0u; _8813 = 0u; _8814 = 0u; _8815 = 0u; } else { _8812 = _8787; _8813 = _8784; _8814 = _8785; _8815 = _8786; } bool _8817 = _8789 && (!_8811); uint _8821; if (_8817) { _8821 = as_type(spvFMul(as_type(_8815), _8803)); } else { _8821 = _8815; } uint _8866; uint _8867; uint _8868; uint _8869; uint _8870; uint _8871; if (_8817) { float _8825 = fma(as_type(_8729), _8798, fma(_8730, _8801, as_type(_8821))); float _8827 = spvFSub(_8807, _8825); bool _8833 = _8817 && ((_8827 > _8752) || (0.0 > (-_8825))); uint _8834; uint _8835; uint _8836; uint _8837; if (_8833) { _8834 = 0u; _8835 = 0u; _8836 = 0u; _8837 = 0u; } else { _8834 = _8812; _8835 = as_type(_8825); _8836 = _8813; _8837 = _8814; } bool _8839 = _8817 && (!_8833); uint _8840; if (_8839) { _8840 = 1u; } else { _8840 = _8837; } uint _8862; uint _8863; uint _8864; uint _8865; if (_8839) { float _8842 = spvFMul(_8772, 1.0 / _8752); float _8851 = spvFSub(as_type(_1318), as_type(_7736)); _8862 = as_type(_8851); _8863 = as_type(fma(_8842, _8851, as_type(_7736))); _8864 = as_type(fma(_8842, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _8865 = as_type(fma(_8842, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _8862 = _8736; _8863 = _8834; _8864 = _8835; _8865 = _8836; } _8866 = _8862; _8867 = _8863; _8868 = _8864; _8869 = _8865; _8870 = as_type(_8827); _8871 = _8840; } else { _8866 = _8736; _8867 = _8812; _8868 = _8821; _8869 = _8813; _8870 = _8729; _8871 = _8814; } _8872 = _8866; _8873 = _8867; _8874 = _8868; _8875 = _8869; _8876 = _8870; _8877 = _8871; } else { _8872 = _8736; _8873 = _8787; _8874 = _8786; _8875 = _8784; _8876 = _8729; _8877 = _8785; } _8878 = _8872; _8879 = _8873; _8880 = _8874; _8881 = _8875; _8882 = _8876; _8883 = _8877; } else { _8878 = _8736; _8879 = _8778; _8880 = _8777; _8881 = _8775; _8882 = _8729; _8883 = _8776; } _8884 = _8878; _8885 = _8879; _8886 = _8880; _8887 = _8881; _8888 = _8882; _8889 = _8883; } else { _8884 = _8736; _8885 = _8758; _8886 = _8757; _8887 = _8755; _8888 = _8729; _8889 = _8756; } bool _8893 = _8725 && (!(_8725 && (int(0u) < int(_8889)))); uint _8896; if (_8893) { _8896 = as_type(spvFSub(_7908, _8318)); } else { _8896 = _8888; } uint _9058; uint _9059; uint _9060; uint _9061; uint _9062; uint _9063; uint _9064; if (_8893) { float _8897 = spvFSub(_7910, _8320); float _8898 = spvFSub(_7924, _8323); float _8900 = spvFSub(_7985, _8318); float _8902 = spvFSub(_7987, _8320); uint _8903 = as_type(_8902); float _8904 = spvFSub(_7989, _8323); float _8910 = fma(_8897, _8904, -spvFMul(_8898, _8902)); float _8913 = fma(_8898, _8900, -spvFMul(as_type(_8896), _8904)); float _8916 = fma(as_type(_8896), _8902, -spvFMul(_8897, _8900)); float _8919 = fma(_7966, _8910, fma(_7958, _8913, spvFMul(_7952, _8916))); bool _8921 = _8893 && (0.0 >= _8919); uint _8922; uint _8923; uint _8924; uint _8925; if (_8921) { _8922 = 0u; _8923 = 0u; _8924 = 0u; _8925 = 0u; } else { _8922 = _8887; _8923 = _8889; _8924 = as_type(_8898); _8925 = as_type(_8900); } bool _8927 = _8893 && (!_8921); uint _8931; if (_8927) { _8931 = as_type(spvFSub(as_type(_7738), _8318)); } else { _8931 = _8764; } uint _9051; uint _9052; uint _9053; uint _9054; uint _9055; uint _9056; if (_8927) { float _8933 = spvFSub(as_type(_7737), _8320); float _8935 = spvFSub(as_type(_7736), _8323); float _8939 = fma(as_type(_8931), _8910, fma(_8933, _8913, spvFMul(_8916, _8935))); bool _8940 = 0.0 > _8939; bool _8941 = _8927 && _8940; uint _8942; uint _8943; uint _8944; uint _8945; if (_8941) { _8942 = 0u; _8943 = 0u; _8944 = 0u; _8945 = 0u; } else { _8942 = _8922; _8943 = _8923; _8944 = _8924; _8945 = _8925; } bool _8947 = _8927 && (!_8941); bool _8949; if (_8947) { _8949 = _8939 > _8919; } else { _8949 = _8940; } uint _9045; uint _9046; uint _9047; uint _9048; uint _9049; uint _9050; if (_8947) { bool _8950 = _8947 && _8949; uint _8951; uint _8952; uint _8953; uint _8954; if (_8950) { _8951 = 0u; _8952 = 0u; _8953 = 0u; _8954 = 0u; } else { _8951 = _8942; _8952 = _8943; _8953 = _8944; _8954 = _8945; } bool _8956 = _8947 && (!_8950); uint _8959; if (_8956) { _8959 = as_type(spvFMul(_7952, _8933)); } else { _8959 = as_type(_8910); } uint _9039; uint _9040; uint _9041; uint _9042; uint _9043; uint _9044; if (_8956) { float _8965 = fma(_7958, _8935, -as_type(_8959)); float _8968 = fma(_7952, as_type(_8931), -spvFMul(_7966, _8935)); float _8970 = fma(_7966, _8933, -spvFMul(_7958, as_type(_8931))); float _8974 = fma(as_type(_8954), _8965, fma(_8902, _8968, spvFMul(_8904, _8970))); bool _8978 = _8956 && ((_8974 > _8919) || (_8974 < 0.0)); uint _8979; uint _8980; uint _8981; uint _8982; if (_8978) { _8979 = 0u; _8980 = 0u; _8981 = 0u; _8982 = 0u; } else { _8979 = _8954; _8980 = _8951; _8981 = _8952; _8982 = _8953; } bool _8984 = _8956 && (!_8978); uint _8988; if (_8984) { _8988 = as_type(spvFMul(as_type(_8982), _8970)); } else { _8988 = _8982; } uint _9033; uint _9034; uint _9035; uint _9036; uint _9037; uint _9038; if (_8984) { float _8992 = fma(as_type(_8896), _8965, fma(_8897, _8968, as_type(_8988))); float _8994 = spvFSub(_8974, _8992); bool _9000 = _8984 && ((_8994 > _8919) || (0.0 > (-_8992))); uint _9001; uint _9002; uint _9003; uint _9004; if (_9000) { _9001 = 0u; _9002 = 0u; _9003 = 0u; _9004 = 0u; } else { _9001 = _8979; _9002 = as_type(_8992); _9003 = _8980; _9004 = _8981; } bool _9006 = _8984 && (!_9000); uint _9007; if (_9006) { _9007 = 1u; } else { _9007 = _9004; } uint _9029; uint _9030; uint _9031; uint _9032; if (_9006) { float _9009 = spvFMul(_8939, 1.0 / _8919); float _9018 = spvFSub(as_type(_1318), as_type(_7736)); _9029 = as_type(_9018); _9030 = as_type(fma(_9009, _9018, as_type(_7736))); _9031 = as_type(fma(_9009, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _9032 = as_type(fma(_9009, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _9029 = _8903; _9030 = _9001; _9031 = _9002; _9032 = _9003; } _9033 = _9029; _9034 = as_type(_8994); _9035 = _9030; _9036 = _9031; _9037 = _9032; _9038 = _9007; } else { _9033 = _8903; _9034 = _8896; _9035 = _8979; _9036 = _8988; _9037 = _8980; _9038 = _8981; } _9039 = _9033; _9040 = _9034; _9041 = _9035; _9042 = _9036; _9043 = _9037; _9044 = _9038; } else { _9039 = _8903; _9040 = _8896; _9041 = _8954; _9042 = _8953; _9043 = _8951; _9044 = _8952; } _9045 = _9039; _9046 = _9040; _9047 = _9041; _9048 = _9042; _9049 = _9043; _9050 = _9044; } else { _9045 = _8903; _9046 = _8896; _9047 = _8945; _9048 = _8944; _9049 = _8942; _9050 = _8943; } _9051 = _9045; _9052 = _9046; _9053 = _9047; _9054 = _9048; _9055 = _9049; _9056 = _9050; } else { _9051 = _8903; _9052 = _8896; _9053 = _8925; _9054 = _8924; _9055 = _8922; _9056 = _8923; } _9058 = _9051; _9059 = _8931; _9060 = _9052; _9061 = _9053; _9062 = _9054; _9063 = _9055; _9064 = uint(max(int(0u), int(_9056))); } else { _9058 = _8884; _9059 = _8764; _9060 = _8896; _9061 = _8885; _9062 = _8886; _9063 = _8887; _9064 = _8889; } uint _9070 = as_type(fma(as_type(_7821), 0.00999999977648258209228515625, as_type(_9063))); bool _9080 = _8725 && (!(_8725 && (int(0u) < int(_9064)))); uint _9083; if (_9080) { _9083 = as_type(spvFSub(_7922, _8341)); } else { _9083 = _9060; } uint _10132; uint _10133; uint _10134; uint _10135; uint _10136; uint _10137; if (_9080) { float _9084 = spvFSub(_7932, _8344); float _9085 = spvFSub(_7935, _8347); float _9087 = spvFSub(_7929, _8341); float _9089 = spvFSub(_7915, _8344); uint _9090 = as_type(_9089); float _9091 = spvFSub(_7942, _8347); float _9097 = fma(_9084, _9091, -spvFMul(_9085, _9089)); float _9100 = fma(_9085, _9087, -spvFMul(as_type(_9083), _9091)); float _9103 = fma(as_type(_9083), _9089, -spvFMul(_9084, _9087)); float _9106 = fma(_7966, _9097, fma(_7958, _9100, spvFMul(_7952, _9103))); bool _9108 = _9080 && (0.0 >= _9106); uint _9109; uint _9110; uint _9111; uint _9112; if (_9108) { _9109 = 0u; _9110 = 0u; _9111 = 0u; _9112 = 0u; } else { _9109 = _9070; _9110 = _9064; _9111 = as_type(_9085); _9112 = as_type(_9087); } bool _9114 = _9080 && (!_9108); uint _9118; if (_9114) { _9118 = as_type(spvFSub(as_type(_7738), _8341)); } else { _9118 = _9059; } uint _9238; uint _9239; uint _9240; uint _9241; uint _9242; uint _9243; if (_9114) { float _9120 = spvFSub(as_type(_7737), _8344); float _9122 = spvFSub(as_type(_7736), _8347); float _9126 = fma(as_type(_9118), _9097, fma(_9120, _9100, spvFMul(_9103, _9122))); bool _9127 = 0.0 > _9126; bool _9128 = _9114 && _9127; uint _9129; uint _9130; uint _9131; uint _9132; if (_9128) { _9129 = 0u; _9130 = 0u; _9131 = 0u; _9132 = 0u; } else { _9129 = _9109; _9130 = _9110; _9131 = _9111; _9132 = _9112; } bool _9134 = _9114 && (!_9128); bool _9136; if (_9134) { _9136 = _9126 > _9106; } else { _9136 = _9127; } uint _9232; uint _9233; uint _9234; uint _9235; uint _9236; uint _9237; if (_9134) { bool _9137 = _9134 && _9136; uint _9138; uint _9139; uint _9140; uint _9141; if (_9137) { _9138 = 0u; _9139 = 0u; _9140 = 0u; _9141 = 0u; } else { _9138 = _9129; _9139 = _9130; _9140 = _9131; _9141 = _9132; } bool _9143 = _9134 && (!_9137); uint _9146; if (_9143) { _9146 = as_type(spvFMul(_7952, _9120)); } else { _9146 = as_type(_9097); } uint _9226; uint _9227; uint _9228; uint _9229; uint _9230; uint _9231; if (_9143) { float _9152 = fma(_7958, _9122, -as_type(_9146)); float _9155 = fma(_7952, as_type(_9118), -spvFMul(_7966, _9122)); float _9157 = fma(_7966, _9120, -spvFMul(_7958, as_type(_9118))); float _9161 = fma(as_type(_9141), _9152, fma(_9089, _9155, spvFMul(_9091, _9157))); bool _9165 = _9143 && ((_9161 > _9106) || (_9161 < 0.0)); uint _9166; uint _9167; uint _9168; uint _9169; if (_9165) { _9166 = 0u; _9167 = 0u; _9168 = 0u; _9169 = 0u; } else { _9166 = _9141; _9167 = _9138; _9168 = _9139; _9169 = _9140; } bool _9171 = _9143 && (!_9165); uint _9175; if (_9171) { _9175 = as_type(spvFMul(as_type(_9169), _9157)); } else { _9175 = _9169; } uint _9220; uint _9221; uint _9222; uint _9223; uint _9224; uint _9225; if (_9171) { float _9179 = fma(as_type(_9083), _9152, fma(_9084, _9155, as_type(_9175))); float _9181 = spvFSub(_9161, _9179); bool _9187 = _9171 && ((_9181 > _9106) || (0.0 > (-_9179))); uint _9188; uint _9189; uint _9190; uint _9191; if (_9187) { _9188 = 0u; _9189 = 0u; _9190 = 0u; _9191 = 0u; } else { _9188 = _9166; _9189 = as_type(_9179); _9190 = _9167; _9191 = _9168; } bool _9193 = _9171 && (!_9187); uint _9194; if (_9193) { _9194 = 1u; } else { _9194 = _9191; } uint _9216; uint _9217; uint _9218; uint _9219; if (_9193) { float _9196 = spvFMul(_9126, 1.0 / _9106); float _9205 = spvFSub(as_type(_1318), as_type(_7736)); _9216 = as_type(_9205); _9217 = as_type(fma(_9196, _9205, as_type(_7736))); _9218 = as_type(fma(_9196, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _9219 = as_type(fma(_9196, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _9216 = _9090; _9217 = _9188; _9218 = _9189; _9219 = _9190; } _9220 = _9216; _9221 = _9217; _9222 = _9218; _9223 = _9219; _9224 = as_type(_9181); _9225 = _9194; } else { _9220 = _9090; _9221 = _9166; _9222 = _9175; _9223 = _9167; _9224 = _9083; _9225 = _9168; } _9226 = _9220; _9227 = _9221; _9228 = _9222; _9229 = _9223; _9230 = _9224; _9231 = _9225; } else { _9226 = _9090; _9227 = _9141; _9228 = _9140; _9229 = _9138; _9230 = _9083; _9231 = _9139; } _9232 = _9226; _9233 = _9227; _9234 = _9228; _9235 = _9229; _9236 = _9230; _9237 = _9231; } else { _9232 = _9090; _9233 = _9132; _9234 = _9131; _9235 = _9129; _9236 = _9083; _9237 = _9130; } _9238 = _9232; _9239 = _9233; _9240 = _9234; _9241 = _9235; _9242 = _9236; _9243 = _9237; } else { _9238 = _9090; _9239 = _9112; _9240 = _9111; _9241 = _9109; _9242 = _9083; _9243 = _9110; } bool _9247 = _9080 && (!(_9080 && (int(0u) < int(_9243)))); uint _9250; if (_9247) { _9250 = as_type(spvFSub(_8362, _7929)); } else { _9250 = _9242; } uint _9407; uint _9408; uint _9409; uint _9410; uint _9411; if (_9247) { float _9251 = spvFSub(_8365, _7915); float _9252 = spvFSub(_8368, _7942); float _9254 = spvFSub(_8341, _7929); float _9256 = spvFSub(_8344, _7915); uint _9257 = as_type(_9256); float _9258 = spvFSub(_8347, _7942); float _9264 = fma(_9251, _9258, -spvFMul(_9252, _9256)); float _9267 = fma(_9252, _9254, -spvFMul(as_type(_9250), _9258)); float _9270 = fma(as_type(_9250), _9256, -spvFMul(_9251, _9254)); float _9273 = fma(_7966, _9264, fma(_7958, _9267, spvFMul(_7952, _9270))); bool _9275 = _9247 && (0.0 >= _9273); uint _9276; uint _9277; uint _9278; uint _9279; if (_9275) { _9276 = 0u; _9277 = 0u; _9278 = 0u; _9279 = 0u; } else { _9276 = _9241; _9277 = _9243; _9278 = as_type(_9252); _9279 = as_type(_9254); } bool _9281 = _9247 && (!_9275); uint _9285; if (_9281) { _9285 = as_type(spvFSub(as_type(_7738), _7929)); } else { _9285 = _9118; } uint _9401; uint _9402; uint _9403; uint _9404; uint _9405; if (_9281) { float _9287 = spvFSub(as_type(_7737), _7915); float _9289 = spvFSub(as_type(_7736), _7942); float _9293 = fma(as_type(_9285), _9264, fma(_9287, _9267, spvFMul(_9270, _9289))); bool _9294 = 0.0 > _9293; bool _9295 = _9281 && _9294; uint _9296; uint _9297; uint _9298; uint _9299; if (_9295) { _9296 = 0u; _9297 = 0u; _9298 = 0u; _9299 = 0u; } else { _9296 = _9276; _9297 = _9277; _9298 = _9278; _9299 = _9279; } bool _9301 = _9281 && (!_9295); bool _9303; if (_9301) { _9303 = _9293 > _9273; } else { _9303 = _9294; } uint _9396; uint _9397; uint _9398; uint _9399; uint _9400; if (_9301) { bool _9304 = _9301 && _9303; uint _9305; uint _9306; uint _9307; uint _9308; if (_9304) { _9305 = 0u; _9306 = 0u; _9307 = 0u; _9308 = 0u; } else { _9305 = _9296; _9306 = _9297; _9307 = _9298; _9308 = _9299; } bool _9310 = _9301 && (!_9304); uint _9313; if (_9310) { _9313 = as_type(spvFMul(_7952, _9287)); } else { _9313 = as_type(_9264); } uint _9391; uint _9392; uint _9393; uint _9394; uint _9395; if (_9310) { float _9319 = fma(_7958, _9289, -as_type(_9313)); float _9322 = fma(_7952, as_type(_9285), -spvFMul(_7966, _9289)); float _9324 = fma(_7966, _9287, -spvFMul(_7958, as_type(_9285))); float _9328 = fma(as_type(_9308), _9319, fma(_9256, _9322, spvFMul(_9258, _9324))); bool _9332 = _9310 && ((_9328 > _9273) || (_9328 < 0.0)); uint _9333; uint _9334; uint _9335; uint _9336; if (_9332) { _9333 = 0u; _9334 = 0u; _9335 = 0u; _9336 = 0u; } else { _9333 = _9308; _9334 = _9305; _9335 = _9306; _9336 = _9307; } bool _9338 = _9310 && (!_9332); uint _9342; if (_9338) { _9342 = as_type(spvFMul(as_type(_9336), _9324)); } else { _9342 = _9336; } uint _9386; uint _9387; uint _9388; uint _9389; uint _9390; if (_9338) { float _9346 = fma(as_type(_9250), _9319, fma(_9251, _9322, as_type(_9342))); bool _9353 = _9338 && ((spvFSub(_9328, _9346) > _9273) || (0.0 > (-_9346))); uint _9354; uint _9355; uint _9356; uint _9357; if (_9353) { _9354 = 0u; _9355 = 0u; _9356 = 0u; _9357 = 0u; } else { _9354 = _9333; _9355 = as_type(_9346); _9356 = _9334; _9357 = _9335; } bool _9359 = _9338 && (!_9353); uint _9360; if (_9359) { _9360 = 1u; } else { _9360 = _9357; } uint _9382; uint _9383; uint _9384; uint _9385; if (_9359) { float _9362 = spvFMul(_9293, 1.0 / _9273); float _9371 = spvFSub(as_type(_1318), as_type(_7736)); _9382 = as_type(_9371); _9383 = as_type(fma(_9362, _9371, as_type(_7736))); _9384 = as_type(fma(_9362, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _9385 = as_type(fma(_9362, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _9382 = _9257; _9383 = _9354; _9384 = _9355; _9385 = _9356; } _9386 = _9382; _9387 = _9383; _9388 = _9384; _9389 = _9385; _9390 = _9360; } else { _9386 = _9257; _9387 = _9333; _9388 = _9342; _9389 = _9334; _9390 = _9335; } _9391 = _9386; _9392 = _9387; _9393 = _9388; _9394 = _9389; _9395 = _9390; } else { _9391 = _9257; _9392 = _9308; _9393 = _9307; _9394 = _9305; _9395 = _9306; } _9396 = _9391; _9397 = _9392; _9398 = _9393; _9399 = _9394; _9400 = _9395; } else { _9396 = _9257; _9397 = _9299; _9398 = _9298; _9399 = _9296; _9400 = _9297; } _9401 = _9396; _9402 = _9397; _9403 = _9398; _9404 = _9399; _9405 = _9400; } else { _9401 = _9257; _9402 = _9279; _9403 = _9278; _9404 = _9276; _9405 = _9277; } _9407 = _9401; _9408 = _9402; _9409 = _9403; _9410 = _9404; _9411 = uint(max(int(0u), int(_9405))); } else { _9407 = _9238; _9408 = _9239; _9409 = _9240; _9410 = _9241; _9411 = _9243; } uint _9417 = as_type(fma(as_type(_7821), -0.00999999977648258209228515625, as_type(_9410))); bool _9427 = _9080 && (!(_9080 && (int(0u) < int(_9411)))); uint _9430; if (_9427) { _9430 = as_type(spvFSub(_8362, _8318)); } else { _9430 = _8363; } uint _10126; uint _10127; uint _10128; uint _10129; uint _10130; uint _10131; if (_9427) { float _9431 = spvFSub(_8365, _8320); float _9432 = spvFSub(_8368, _8323); float _9434 = spvFSub(_7929, _8318); float _9436 = spvFSub(_7915, _8320); float _9437 = spvFSub(_7942, _8323); float _9443 = fma(_9431, _9437, -spvFMul(_9432, _9436)); float _9446 = fma(_9432, _9434, -spvFMul(as_type(_9430), _9437)); uint _9447 = as_type(_9446); float _9450 = fma(as_type(_9430), _9436, -spvFMul(_9431, _9434)); float _9453 = fma(_7966, _9443, fma(_7958, _9446, spvFMul(_7952, _9450))); bool _9455 = _9427 && (0.0 >= _9453); uint _9456; uint _9457; uint _9458; uint _9459; if (_9455) { _9456 = 0u; _9457 = 0u; _9458 = 0u; _9459 = 0u; } else { _9456 = _9417; _9457 = _9411; _9458 = as_type(_9432); _9459 = as_type(_9434); } bool _9461 = _9427 && (!_9455); uint _9465; if (_9461) { _9465 = as_type(spvFSub(as_type(_7738), _8318)); } else { _9465 = _7823; } uint _9583; uint _9584; uint _9585; uint _9586; uint _9587; uint _9588; if (_9461) { float _9467 = spvFSub(as_type(_7737), _8320); float _9469 = spvFSub(as_type(_7736), _8323); float _9473 = fma(as_type(_9465), _9443, fma(_9467, _9446, spvFMul(_9469, _9450))); bool _9474 = 0.0 > _9473; bool _9475 = _9461 && _9474; uint _9476; uint _9477; uint _9478; uint _9479; if (_9475) { _9476 = 0u; _9477 = 0u; _9478 = 0u; _9479 = 0u; } else { _9476 = _9456; _9477 = _9457; _9478 = _9458; _9479 = _9459; } bool _9481 = _9461 && (!_9475); bool _9483; if (_9481) { _9483 = _9473 > _9453; } else { _9483 = _9474; } uint _9577; uint _9578; uint _9579; uint _9580; uint _9581; uint _9582; if (_9481) { bool _9484 = _9481 && _9483; uint _9485; uint _9486; uint _9487; uint _9488; if (_9484) { _9485 = 0u; _9486 = 0u; _9487 = 0u; _9488 = 0u; } else { _9485 = _9476; _9486 = _9477; _9487 = _9478; _9488 = _9479; } bool _9490 = _9481 && (!_9484); uint _9493; if (_9490) { _9493 = as_type(spvFMul(_7952, _9467)); } else { _9493 = as_type(_9443); } uint _9571; uint _9572; uint _9573; uint _9574; uint _9575; uint _9576; if (_9490) { float _9499 = fma(_7958, _9469, -as_type(_9493)); float _9502 = fma(_7952, as_type(_9465), -spvFMul(_7966, _9469)); float _9505 = fma(_7966, _9467, -spvFMul(_7958, as_type(_9465))); float _9509 = fma(as_type(_9488), _9499, fma(_9436, _9502, spvFMul(_9505, _9437))); bool _9513 = _9490 && ((_9509 > _9453) || (_9509 < 0.0)); uint _9514; uint _9515; uint _9516; uint _9517; if (_9513) { _9514 = 0u; _9515 = 0u; _9516 = 0u; _9517 = 0u; } else { _9514 = _9488; _9515 = _9485; _9516 = _9486; _9517 = _9487; } bool _9519 = _9490 && (!_9513); uint _9523; if (_9519) { _9523 = as_type(spvFMul(_9505, as_type(_9517))); } else { _9523 = _9517; } uint _9566; uint _9567; uint _9568; uint _9569; uint _9570; if (_9519) { float _9527 = fma(as_type(_9430), _9499, fma(_9431, _9502, as_type(_9523))); float _9529 = spvFSub(_9509, _9527); bool _9535 = _9519 && ((_9529 > _9453) || (0.0 > (-_9527))); uint _9536; uint _9537; uint _9538; uint _9539; if (_9535) { _9536 = 0u; _9537 = 0u; _9538 = 0u; _9539 = 0u; } else { _9536 = _9514; _9537 = as_type(_9527); _9538 = _9515; _9539 = _9516; } bool _9541 = _9519 && (!_9535); uint _9542; if (_9541) { _9542 = 1u; } else { _9542 = _9539; } uint _9563; uint _9564; uint _9565; if (_9541) { float _9544 = spvFMul(_9473, 1.0 / _9453); _9563 = as_type(fma(_9544, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _9564 = as_type(fma(_9544, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _9565 = as_type(fma(_9544, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _9563 = _9536; _9564 = _9537; _9565 = _9538; } _9566 = _9563; _9567 = _9564; _9568 = _9565; _9569 = as_type(_9529); _9570 = _9542; } else { _9566 = _9514; _9567 = _9523; _9568 = _9515; _9569 = _9430; _9570 = _9516; } _9571 = as_type(_9502); _9572 = _9566; _9573 = _9567; _9574 = _9568; _9575 = _9569; _9576 = _9570; } else { _9571 = _9447; _9572 = _9488; _9573 = _9487; _9574 = _9485; _9575 = _9430; _9576 = _9486; } _9577 = _9571; _9578 = _9572; _9579 = _9573; _9580 = _9574; _9581 = _9575; _9582 = _9576; } else { _9577 = _9447; _9578 = _9479; _9579 = _9478; _9580 = _9476; _9581 = _9430; _9582 = _9477; } _9583 = _9577; _9584 = _9578; _9585 = _9579; _9586 = _9580; _9587 = _9581; _9588 = _9582; } else { _9583 = _9447; _9584 = _9459; _9585 = _9458; _9586 = _9456; _9587 = _9430; _9588 = _9457; } bool _9592 = _9427 && (!(_9427 && (int(0u) < int(_9588)))); uint _9595; if (_9592) { _9595 = as_type(spvFSub(_7908, _7929)); } else { _9595 = _9587; } uint _9755; uint _9756; uint _9757; uint _9758; uint _9759; uint _9760; uint _9761; if (_9592) { float _9596 = spvFSub(_7910, _7915); float _9597 = spvFSub(_7924, _7942); float _9599 = spvFSub(_8318, _7929); float _9601 = spvFSub(_8320, _7915); float _9602 = spvFSub(_8323, _7942); float _9608 = fma(_9596, _9602, -spvFMul(_9597, _9601)); float _9611 = fma(_9597, _9599, -spvFMul(as_type(_9595), _9602)); uint _9612 = as_type(_9611); float _9615 = fma(as_type(_9595), _9601, -spvFMul(_9596, _9599)); float _9618 = fma(_7966, _9608, fma(_7958, _9611, spvFMul(_7952, _9615))); bool _9620 = _9592 && (0.0 >= _9618); uint _9621; uint _9622; uint _9623; uint _9624; if (_9620) { _9621 = 0u; _9622 = 0u; _9623 = 0u; _9624 = 0u; } else { _9621 = _9586; _9622 = _9588; _9623 = as_type(_9597); _9624 = as_type(_9599); } bool _9626 = _9592 && (!_9620); uint _9630; if (_9626) { _9630 = as_type(spvFSub(as_type(_7738), _7929)); } else { _9630 = _9465; } uint _9748; uint _9749; uint _9750; uint _9751; uint _9752; uint _9753; if (_9626) { float _9632 = spvFSub(as_type(_7737), _7915); float _9634 = spvFSub(as_type(_7736), _7942); float _9638 = fma(as_type(_9630), _9608, fma(_9632, _9611, spvFMul(_9634, _9615))); bool _9639 = 0.0 > _9638; bool _9640 = _9626 && _9639; uint _9641; uint _9642; uint _9643; uint _9644; if (_9640) { _9641 = 0u; _9642 = 0u; _9643 = 0u; _9644 = 0u; } else { _9641 = _9621; _9642 = _9622; _9643 = _9623; _9644 = _9624; } bool _9646 = _9626 && (!_9640); bool _9648; if (_9646) { _9648 = _9638 > _9618; } else { _9648 = _9639; } uint _9742; uint _9743; uint _9744; uint _9745; uint _9746; uint _9747; if (_9646) { bool _9649 = _9646 && _9648; uint _9650; uint _9651; uint _9652; uint _9653; if (_9649) { _9650 = 0u; _9651 = 0u; _9652 = 0u; _9653 = 0u; } else { _9650 = _9641; _9651 = _9642; _9652 = _9643; _9653 = _9644; } bool _9655 = _9646 && (!_9649); uint _9658; if (_9655) { _9658 = as_type(spvFMul(_7952, _9632)); } else { _9658 = as_type(_9608); } uint _9736; uint _9737; uint _9738; uint _9739; uint _9740; uint _9741; if (_9655) { float _9664 = fma(_7958, _9634, -as_type(_9658)); float _9667 = fma(_7952, as_type(_9630), -spvFMul(_7966, _9634)); float _9670 = fma(_7966, _9632, -spvFMul(_7958, as_type(_9630))); float _9674 = fma(as_type(_9653), _9664, fma(_9601, _9667, spvFMul(_9670, _9602))); bool _9678 = _9655 && ((_9674 > _9618) || (_9674 < 0.0)); uint _9679; uint _9680; uint _9681; uint _9682; if (_9678) { _9679 = 0u; _9680 = 0u; _9681 = 0u; _9682 = 0u; } else { _9679 = _9653; _9680 = _9650; _9681 = _9651; _9682 = _9652; } bool _9684 = _9655 && (!_9678); uint _9688; if (_9684) { _9688 = as_type(spvFMul(_9670, as_type(_9682))); } else { _9688 = _9682; } uint _9731; uint _9732; uint _9733; uint _9734; uint _9735; if (_9684) { float _9692 = fma(as_type(_9595), _9664, fma(_9596, _9667, as_type(_9688))); float _9694 = spvFSub(_9674, _9692); bool _9700 = _9684 && ((_9694 > _9618) || (0.0 > (-_9692))); uint _9701; uint _9702; uint _9703; uint _9704; if (_9700) { _9701 = 0u; _9702 = 0u; _9703 = 0u; _9704 = 0u; } else { _9701 = _9679; _9702 = as_type(_9692); _9703 = _9680; _9704 = _9681; } bool _9706 = _9684 && (!_9700); uint _9707; if (_9706) { _9707 = 1u; } else { _9707 = _9704; } uint _9728; uint _9729; uint _9730; if (_9706) { float _9709 = spvFMul(_9638, 1.0 / _9618); _9728 = as_type(fma(_9709, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _9729 = as_type(fma(_9709, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _9730 = as_type(fma(_9709, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _9728 = _9701; _9729 = _9702; _9730 = _9703; } _9731 = as_type(_9694); _9732 = _9728; _9733 = _9729; _9734 = _9730; _9735 = _9707; } else { _9731 = _9595; _9732 = _9679; _9733 = _9688; _9734 = _9680; _9735 = _9681; } _9736 = as_type(_9667); _9737 = _9731; _9738 = _9732; _9739 = _9733; _9740 = _9734; _9741 = _9735; } else { _9736 = _9612; _9737 = _9595; _9738 = _9653; _9739 = _9652; _9740 = _9650; _9741 = _9651; } _9742 = _9736; _9743 = _9737; _9744 = _9738; _9745 = _9739; _9746 = _9740; _9747 = _9741; } else { _9742 = _9612; _9743 = _9595; _9744 = _9644; _9745 = _9643; _9746 = _9641; _9747 = _9642; } _9748 = _9742; _9749 = _9743; _9750 = _9744; _9751 = _9745; _9752 = _9746; _9753 = _9747; } else { _9748 = _9612; _9749 = _9595; _9750 = _9624; _9751 = _9623; _9752 = _9621; _9753 = _9622; } _9755 = _9748; _9756 = _9630; _9757 = _9749; _9758 = _9750; _9759 = _9751; _9760 = _9752; _9761 = uint(max(int(0u), int(_9753))); } else { _9755 = _9583; _9756 = _9465; _9757 = _9595; _9758 = _9584; _9759 = _9585; _9760 = _9586; _9761 = _9588; } uint _9767 = as_type(fma(as_type(_7804), 0.00999999977648258209228515625, as_type(_9760))); uint _9771 = as_type(fma(as_type(_7805), 0.00999999977648258209228515625, as_type(_9759))); bool _9777 = _9427 && (!(_9427 && (int(0u) < int(_9761)))); uint _9780; if (_9777) { _9780 = as_type(spvFSub(_7922, _7985)); } else { _9780 = _9757; } uint _10120; uint _10121; uint _10122; uint _10123; uint _10124; uint _10125; if (_9777) { float _9781 = spvFSub(_7932, _7987); float _9782 = spvFSub(_7935, _7989); float _9784 = spvFSub(_8341, _7985); float _9786 = spvFSub(_8344, _7987); float _9787 = spvFSub(_8347, _7989); float _9793 = fma(_9781, _9787, -spvFMul(_9782, _9786)); float _9796 = fma(_9782, _9784, -spvFMul(as_type(_9780), _9787)); uint _9797 = as_type(_9796); float _9800 = fma(as_type(_9780), _9786, -spvFMul(_9781, _9784)); float _9803 = fma(_7966, _9793, fma(_7958, _9796, spvFMul(_7952, _9800))); bool _9805 = _9777 && (0.0 >= _9803); uint _9806; uint _9807; uint _9808; uint _9809; if (_9805) { _9806 = 0u; _9807 = 0u; _9808 = 0u; _9809 = 0u; } else { _9806 = _9771; _9807 = _9767; _9808 = _9761; _9809 = as_type(_9784); } bool _9811 = _9777 && (!_9805); uint _9815; if (_9811) { _9815 = as_type(spvFSub(as_type(_7738), _7985)); } else { _9815 = _9756; } uint _9931; uint _9932; uint _9933; uint _9934; uint _9935; uint _9936; if (_9811) { float _9817 = spvFSub(as_type(_7737), _7987); float _9819 = spvFSub(as_type(_7736), _7989); float _9823 = fma(as_type(_9815), _9793, fma(_9817, _9796, spvFMul(_9819, _9800))); bool _9824 = 0.0 > _9823; bool _9825 = _9811 && _9824; uint _9826; uint _9827; uint _9828; uint _9829; if (_9825) { _9826 = 0u; _9827 = 0u; _9828 = 0u; _9829 = 0u; } else { _9826 = _9806; _9827 = _9807; _9828 = _9808; _9829 = _9809; } bool _9831 = _9811 && (!_9825); bool _9833; if (_9831) { _9833 = _9823 > _9803; } else { _9833 = _9824; } uint _9925; uint _9926; uint _9927; uint _9928; uint _9929; uint _9930; if (_9831) { bool _9834 = _9831 && _9833; uint _9835; uint _9836; uint _9837; uint _9838; if (_9834) { _9835 = 0u; _9836 = 0u; _9837 = 0u; _9838 = 0u; } else { _9835 = _9826; _9836 = _9827; _9837 = _9828; _9838 = _9829; } bool _9840 = _9831 && (!_9834); uint _9843; if (_9840) { _9843 = as_type(spvFMul(_7952, _9817)); } else { _9843 = as_type(_9793); } uint _9919; uint _9920; uint _9921; uint _9922; uint _9923; uint _9924; if (_9840) { float _9849 = fma(_7958, _9819, -as_type(_9843)); float _9852 = fma(_7952, as_type(_9815), -spvFMul(_7966, _9819)); float _9855 = fma(_7966, _9817, -spvFMul(_7958, as_type(_9815))); float _9859 = fma(as_type(_9838), _9849, fma(_9786, _9852, spvFMul(_9855, _9787))); bool _9863 = _9840 && ((_9859 > _9803) || (_9859 < 0.0)); uint _9864; uint _9865; uint _9866; uint _9867; if (_9863) { _9864 = 0u; _9865 = 0u; _9866 = 0u; _9867 = 0u; } else { _9864 = _9838; _9865 = _9835; _9866 = _9836; _9867 = _9837; } bool _9869 = _9840 && (!_9863); uint _9872; if (_9869) { _9872 = as_type(spvFMul(_9855, _9782)); } else { _9872 = as_type(_9782); } uint _9914; uint _9915; uint _9916; uint _9917; uint _9918; if (_9869) { float _9876 = fma(as_type(_9780), _9849, fma(_9781, _9852, as_type(_9872))); float _9877 = spvFSub(_9859, _9876); bool _9883 = _9869 && ((_9877 > _9803) || (0.0 > (-_9876))); uint _9884; uint _9885; uint _9886; uint _9887; if (_9883) { _9884 = 0u; _9885 = 0u; _9886 = 0u; _9887 = 0u; } else { _9884 = _9864; _9885 = _9865; _9886 = _9866; _9887 = _9867; } bool _9889 = _9869 && (!_9883); uint _9890; if (_9889) { _9890 = 1u; } else { _9890 = _9887; } uint _9911; uint _9912; uint _9913; if (_9889) { float _9892 = spvFMul(_9823, 1.0 / _9803); _9911 = as_type(fma(_9892, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _9912 = as_type(fma(_9892, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _9913 = as_type(fma(_9892, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _9911 = _9884; _9912 = _9885; _9913 = _9886; } _9914 = _9911; _9915 = _9912; _9916 = _9913; _9917 = as_type(_9877); _9918 = _9890; } else { _9914 = _9864; _9915 = _9865; _9916 = _9866; _9917 = _9780; _9918 = _9867; } _9919 = as_type(_9852); _9920 = _9914; _9921 = _9915; _9922 = _9916; _9923 = _9917; _9924 = _9918; } else { _9919 = _9797; _9920 = _9838; _9921 = _9835; _9922 = _9836; _9923 = _9780; _9924 = _9837; } _9925 = _9919; _9926 = _9920; _9927 = _9921; _9928 = _9922; _9929 = _9923; _9930 = _9924; } else { _9925 = _9797; _9926 = _9829; _9927 = _9826; _9928 = _9827; _9929 = _9780; _9930 = _9828; } _9931 = _9925; _9932 = _9926; _9933 = _9927; _9934 = _9928; _9935 = _9929; _9936 = _9930; } else { _9931 = _9797; _9932 = _9809; _9933 = _9806; _9934 = _9807; _9935 = _9780; _9936 = _9808; } bool _9940 = _9777 && (!(_9777 && (int(0u) < int(_9936)))); uint _9944; if (_9940) { _9944 = as_type(spvFSub(as_type(_8310), _8341)); } else { _9944 = _9935; } uint _10102; uint _10103; uint _10104; uint _10105; uint _10106; uint _10107; if (_9940) { float _9945 = spvFSub(_8312, _8344); float _9946 = spvFSub(_8315, _8347); float _9948 = spvFSub(_7985, _8341); float _9950 = spvFSub(_7987, _8344); float _9951 = spvFSub(_7989, _8347); float _9957 = fma(_9945, _9951, -spvFMul(_9946, _9950)); float _9960 = fma(_9946, _9948, -spvFMul(as_type(_9944), _9951)); uint _9961 = as_type(_9960); float _9964 = fma(as_type(_9944), _9950, -spvFMul(_9945, _9948)); float _9967 = fma(_7966, _9957, fma(_7958, _9960, spvFMul(_7952, _9964))); bool _9969 = _9940 && (0.0 >= _9967); uint _9970; uint _9971; uint _9972; uint _9973; if (_9969) { _9970 = 0u; _9971 = 0u; _9972 = 0u; _9973 = 0u; } else { _9970 = _9933; _9971 = _9934; _9972 = _9936; _9973 = as_type(_9948); } bool _9975 = _9940 && (!_9969); uint _9979; if (_9975) { _9979 = as_type(spvFSub(as_type(_7738), _8341)); } else { _9979 = as_type(_8341); } uint _10095; uint _10096; uint _10097; uint _10098; uint _10099; uint _10100; if (_9975) { float _9981 = spvFSub(as_type(_7737), _8344); float _9983 = spvFSub(as_type(_7736), _8347); float _9987 = fma(as_type(_9979), _9957, fma(_9981, _9960, spvFMul(_9983, _9964))); bool _9988 = 0.0 > _9987; bool _9989 = _9975 && _9988; uint _9990; uint _9991; uint _9992; uint _9993; if (_9989) { _9990 = 0u; _9991 = 0u; _9992 = 0u; _9993 = 0u; } else { _9990 = _9970; _9991 = _9971; _9992 = _9972; _9993 = _9973; } bool _9995 = _9975 && (!_9989); bool _9997; if (_9995) { _9997 = _9987 > _9967; } else { _9997 = _9988; } uint _10089; uint _10090; uint _10091; uint _10092; uint _10093; uint _10094; if (_9995) { bool _9998 = _9995 && _9997; uint _9999; uint _10000; uint _10001; uint _10002; if (_9998) { _9999 = 0u; _10000 = 0u; _10001 = 0u; _10002 = 0u; } else { _9999 = _9990; _10000 = _9991; _10001 = _9992; _10002 = _9993; } bool _10004 = _9995 && (!_9998); uint _10007; if (_10004) { _10007 = as_type(spvFMul(_7952, _9981)); } else { _10007 = as_type(_9957); } uint _10083; uint _10084; uint _10085; uint _10086; uint _10087; uint _10088; if (_10004) { float _10013 = fma(_7958, _9983, -as_type(_10007)); float _10016 = fma(_7952, as_type(_9979), -spvFMul(_7966, _9983)); float _10019 = fma(_7966, _9981, -spvFMul(_7958, as_type(_9979))); float _10023 = fma(as_type(_10002), _10013, fma(_9950, _10016, spvFMul(_10019, _9951))); bool _10027 = _10004 && ((_10023 > _9967) || (_10023 < 0.0)); uint _10028; uint _10029; uint _10030; uint _10031; if (_10027) { _10028 = 0u; _10029 = 0u; _10030 = 0u; _10031 = 0u; } else { _10028 = _10002; _10029 = _9999; _10030 = _10000; _10031 = _10001; } bool _10033 = _10004 && (!_10027); uint _10036; if (_10033) { _10036 = as_type(spvFMul(_10019, _9946)); } else { _10036 = as_type(_9946); } uint _10078; uint _10079; uint _10080; uint _10081; uint _10082; if (_10033) { float _10040 = fma(as_type(_9944), _10013, fma(_9945, _10016, as_type(_10036))); float _10041 = spvFSub(_10023, _10040); bool _10047 = _10033 && ((_10041 > _9967) || (0.0 > (-_10040))); uint _10048; uint _10049; uint _10050; uint _10051; if (_10047) { _10048 = 0u; _10049 = 0u; _10050 = 0u; _10051 = 0u; } else { _10048 = _10028; _10049 = _10029; _10050 = _10030; _10051 = _10031; } bool _10053 = _10033 && (!_10047); uint _10054; if (_10053) { _10054 = 1u; } else { _10054 = _10051; } uint _10075; uint _10076; uint _10077; if (_10053) { float _10056 = spvFMul(_9987, 1.0 / _9967); _10075 = as_type(fma(_10056, spvFSub(as_type(_1318), as_type(_7736)), as_type(_7736))); _10076 = as_type(fma(_10056, spvFSub(as_type(_1317), as_type(_7737)), as_type(_7737))); _10077 = as_type(fma(_10056, spvFSub(as_type(_1316), as_type(_7738)), as_type(_7738))); } else { _10075 = _10048; _10076 = _10049; _10077 = _10050; } _10078 = as_type(_10041); _10079 = _10075; _10080 = _10076; _10081 = _10077; _10082 = _10054; } else { _10078 = _9944; _10079 = _10028; _10080 = _10029; _10081 = _10030; _10082 = _10031; } _10083 = as_type(_10016); _10084 = _10078; _10085 = _10079; _10086 = _10080; _10087 = _10081; _10088 = _10082; } else { _10083 = _9961; _10084 = _9944; _10085 = _10002; _10086 = _9999; _10087 = _10000; _10088 = _10001; } _10089 = _10083; _10090 = _10084; _10091 = _10085; _10092 = _10086; _10093 = _10087; _10094 = _10088; } else { _10089 = _9961; _10090 = _9944; _10091 = _9993; _10092 = _9990; _10093 = _9991; _10094 = _9992; } _10095 = _10089; _10096 = _10090; _10097 = _10091; _10098 = _10092; _10099 = _10093; _10100 = _10094; } else { _10095 = _9961; _10096 = _9944; _10097 = _9973; _10098 = _9970; _10099 = _9971; _10100 = _9972; } _10102 = _10095; _10103 = _10096; _10104 = _10097; _10105 = _10098; _10106 = _10099; _10107 = uint(max(int(0u), int(_10100))); } else { _10102 = _9931; _10103 = _9944; _10104 = _9932; _10105 = _9933; _10106 = _9934; _10107 = _9936; } _10120 = _10102; _10121 = _10103; _10122 = as_type(fma(as_type(_7806), -0.00999999977648258209228515625, as_type(_10104))); _10123 = as_type(fma(as_type(_7805), -0.00999999977648258209228515625, as_type(_10105))); _10124 = as_type(fma(as_type(_7804), -0.00999999977648258209228515625, as_type(_10106))); _10125 = _10107; } else { _10120 = _9755; _10121 = _9780; _10122 = as_type(fma(as_type(_7806), 0.00999999977648258209228515625, as_type(_9758))); _10123 = _9771; _10124 = _9767; _10125 = _9761; } _10126 = _10120; _10127 = _10121; _10128 = _10122; _10129 = _10123; _10130 = _10124; _10131 = _10125; } else { _10126 = _9407; _10127 = _9430; _10128 = as_type(fma(as_type(_7823), -0.00999999977648258209228515625, as_type(_9408))); _10129 = as_type(fma(as_type(_7822), -0.00999999977648258209228515625, as_type(_9409))); _10130 = _9417; _10131 = _9411; } _10132 = _10126; _10133 = _10127; _10134 = _10128; _10135 = _10129; _10136 = _10130; _10137 = _10131; } else { _10132 = _9058; _10133 = _8363; _10134 = as_type(fma(as_type(_7823), 0.00999999977648258209228515625, as_type(_9061))); _10135 = as_type(fma(as_type(_7822), 0.00999999977648258209228515625, as_type(_9062))); _10136 = _9070; _10137 = _9064; } _10138 = _10132; _10139 = _10133; _10140 = _10134; _10141 = _10135; _10142 = _10136; _10143 = _10137; } else { _10138 = _8705; _10139 = _8363; _10140 = as_type(fma(as_type(_7840), -0.00999999977648258209228515625, as_type(_8707))); _10141 = as_type(fma(_8302, -0.00999999977648258209228515625, as_type(_8708))); _10142 = _8716; _10143 = _8710; } _10144 = _10138; _10145 = _10139; _10146 = _10142; _10147 = _10141; _10148 = _10140; _10149 = _10143; } else { _10144 = as_type(_7857); _10145 = as_type(_7850); _10146 = _8295; _10147 = as_type(fma(as_type(_7839), 0.00999999977648258209228515625, as_type(_8287))); _10148 = as_type(_8302); _10149 = _8289; } bool _10150 = int(0u) < int(_10149); _10165 = _8284; _10166 = _10149; _10167 = as_type(_10150 ? 1.4012984643248170709237295832899e-45 : 0.0); _10168 = _10144; _10169 = as_type(_10150 ? as_type(_10148) : as_type(_7736)); _10170 = as_type(_10150 ? as_type(_10147) : as_type(_7737)); _10171 = as_type(_10150 ? as_type(_10146) : as_type(_7738)); _10172 = _10150; _10173 = _10145; } else { _10165 = _7614; _10166 = _7613; _10167 = _7735; _10168 = _7611; _10169 = _7736; _10170 = _7737; _10171 = _7738; _10172 = _7744; _10173 = _7747; } bool _10175 = _7742 && (!_7745); bool _10177; if (_10175) { _10177 = 4u == _10173; } else { _10177 = _10172; } uint _10736; uint _10737; uint _10738; uint _10739; uint _10740; uint _10741; uint _10742; uint _10743; uint _10744; if (_10175) { bool _10178 = _10175 && _10177; uint _10180; if (_10178) { _10180 = _7650 + 154u; } else { _10180 = _10173; } uint _10462; uint _10463; uint _10464; uint _10465; uint _10466; bool _10467; uint _10468; if (_10178) { uint _10182 = _7650 << 2u; uint _10189 = ((0u + (_10180 * 16u)) + buf3_off) >> 2u; uint3 _10199 = uint3(cbuf_56.data[_10189 + 0u], cbuf_56.data[_10189 + 1u], cbuf_56.data[_10189 + 2u]); uint _10200 = _10199.x; uint _10201 = _10199.y; uint _10202 = _10199.z; uint _10206 = ((0u + ((_7650 + 170u) * 16u)) + buf3_off) >> 2u; uint3 _10216 = uint3(cbuf_56.data[_10206 + 0u], cbuf_56.data[_10206 + 1u], cbuf_56.data[_10206 + 2u]); uint _10217 = _10216.x; uint _10218 = _10216.y; uint _10219 = _10216.z; uint _10223 = ((0u + ((_10182 + 188u) * 16u)) + buf3_off) >> 2u; uint4 _10236 = uint4(cbuf_56.data[_10223 + 0u], cbuf_56.data[_10223 + 1u], cbuf_56.data[_10223 + 2u], cbuf_56.data[_10223 + 3u]); uint _10237 = _10236.x; uint _10238 = _10236.y; uint _10239 = _10236.z; uint _10240 = _10236.w; uint _10244 = ((0u + ((_10182 + 187u) * 16u)) + buf3_off) >> 2u; uint4 _10257 = uint4(cbuf_56.data[_10244 + 0u], cbuf_56.data[_10244 + 1u], cbuf_56.data[_10244 + 2u], cbuf_56.data[_10244 + 3u]); uint _10258 = _10257.x; uint _10259 = _10257.y; uint _10260 = _10257.z; uint _10261 = _10257.w; uint _10265 = ((0u + ((_10182 + 186u) * 16u)) + buf3_off) >> 2u; uint4 _10278 = uint4(cbuf_56.data[_10265 + 0u], cbuf_56.data[_10265 + 1u], cbuf_56.data[_10265 + 2u], cbuf_56.data[_10265 + 3u]); uint _10279 = _10278.x; uint _10280 = _10278.y; uint _10281 = _10278.z; uint _10282 = _10278.w; float _10286 = spvFMul(spvFAdd(as_type(_10202), as_type(_10219)), 0.5); float _10290 = spvFMul(spvFAdd(as_type(_10201), as_type(_10218)), 0.5); float _10292 = spvFSub(as_type(_10202), _10286); float _10294 = spvFSub(as_type(_10219), _10286); float _10298 = spvFMul(spvFAdd(as_type(_10200), as_type(_10217)), 0.5); float _10300 = spvFSub(as_type(_10201), _10290); float _10302 = spvFSub(as_type(_10218), _10290); float _10310 = spvFSub(as_type(_10200), _10298); float _10312 = spvFSub(as_type(_10217), _10298); float _10345 = spvFAdd(_10286, fma(as_type(_10237), _10310, fma(as_type(_10238), _10300, fma(as_type(_10239), _10292, as_type(_10240))))); float _10346 = spvFAdd(_10286, fma(as_type(_10237), _10312, fma(as_type(_10238), _10302, fma(as_type(_10239), _10294, as_type(_10240))))); float _10351 = spvFAdd(_10290, fma(as_type(_10258), _10310, fma(as_type(_10259), _10300, fma(as_type(_10260), _10292, as_type(_10261))))); float _10352 = spvFAdd(_10290, fma(as_type(_10258), _10312, fma(as_type(_10259), _10302, fma(as_type(_10260), _10294, as_type(_10261))))); float _10353 = spvFSub(_10346, _10345); float _10354 = spvFAdd(_10298, fma(as_type(_10279), _10310, fma(as_type(_10280), _10300, fma(as_type(_10281), _10292, as_type(_10282))))); float _10355 = spvFAdd(_10298, fma(as_type(_10279), _10312, fma(as_type(_10280), _10302, fma(as_type(_10281), _10294, as_type(_10282))))); float _10356 = spvFSub(_10352, _10351); float _10358 = spvFSub(as_type(_10169), _10345); float _10361 = spvFSub(_10355, _10354); float _10363 = spvFSub(as_type(_10170), _10351); float _10367 = spvFSub(as_type(_10171), _10354); float _10369 = fma(_10361, _10361, fma(_10356, _10356, spvFMul(_10353, _10353))); float _10370 = fma(_10367, _10361, fma(_10363, _10356, spvFMul(_10353, _10358))); float _10371 = 1.0 / _10369; float _10373 = fast::clamp(spvFMul(_10370, _10371), 0.0, 1.0); float _10374 = fma(_10373, _10353, _10345); float _10375 = fma(_10373, _10356, _10351); float _10377 = spvFSub(as_type(_10169), _10374); float _10378 = fma(_10373, _10361, _10354); float _10380 = spvFSub(as_type(_10170), _10375); float _10383 = spvFSub(as_type(_10171), _10378); float _10387 = spvFSub(as_type(_10171), _10355); float _10389 = spvFSub(as_type(_10170), _10352); bool _10393 = 0.0 >= _10370; bool _10394 = _10178 && _10393; uint _10400; if (_10394) { _10400 = as_type(sqrt(fma(_10367, _10367, fma(_10363, _10363, spvFMul(_10358, _10358))))); } else { _10400 = as_type(spvFSub(as_type(_10169), _10346)); } bool _10402 = _10178 && (!_10394); bool _10404; if (_10402) { _10404 = _10370 >= _10369; } else { _10404 = _10393; } uint _10428; if (_10402) { bool _10405 = _10402 && _10404; uint _10413; if (_10405) { _10413 = as_type(sqrt(fma(_10387, _10387, fma(_10389, _10389, spvFMul(as_type(_10400), as_type(_10400)))))); } else { _10413 = _10400; } bool _10415 = _10402 && (!_10405); uint _10418; if (_10415) { _10418 = as_type(spvFMul(_10358, _10358)); } else { _10418 = _10413; } uint _10427; if (_10415) { _10427 = as_type(sqrt(fma(-spvFMul(_10370, _10370), _10371, fma(_10367, _10367, fma(_10363, _10363, as_type(_10418)))))); } else { _10427 = _10418; } _10428 = _10427; } else { _10428 = _10400; } uint _10433 = ((0u + ((_7650 + 162u) * 16u)) + buf3_off) >> 2u; bool _10438 = as_type(cbuf_56.data[_10433]) > as_type(_10428); bool _10439 = _10178 && _10438; uint _10455; uint _10456; uint _10457; uint _10458; if (_10439) { float _10441 = 1.0 / sqrt(fma(_10383, _10383, fma(_10380, _10380, spvFMul(_10377, _10377)))); float _10443 = spvFMul(_10380, _10441); _10455 = as_type(fma(spvFMul(_10377, _10441), as_type(cbuf_56.data[_10433]), _10374)); _10456 = as_type(fma(_10443, as_type(cbuf_56.data[_10433]), _10375)); _10457 = as_type(fma(spvFMul(_10383, _10441), as_type(cbuf_56.data[_10433]), _10378)); _10458 = as_type(_10443); } else { _10455 = _10169; _10456 = _10170; _10457 = _10171; _10458 = _10428; } uint _10461; if (_10178 && (!_10439)) { _10461 = 0u; } else { _10461 = 1u; } _10462 = _10461; _10463 = _10455; _10464 = _10456; _10465 = _10457; _10466 = as_type(_10358); _10467 = _10438; _10468 = _10458; } else { _10462 = _10167; _10463 = _10169; _10464 = _10170; _10465 = _10171; _10466 = _10168; _10467 = _10177; _10468 = _10180; } bool _10470 = _10175 && (!_10178); bool _10472; if (_10470) { _10472 = 6u == _10468; } else { _10472 = _10467; } uint _10727; uint _10728; uint _10729; uint _10730; uint _10731; uint _10732; uint _10733; uint _10734; uint _10735; if (_10470) { bool _10473 = _10470 && _10472; uint _10474; if (_10473) { _10474 = cbuf_52.data[_7168]; } else { _10474 = _10468; } uint _10719; uint _10720; uint _10721; uint _10722; uint _10723; uint _10724; uint _10725; uint _10726; if (_10473) { float _10495 = fma(as_type(cbuf_52.data[_7156]), as_type(_10465), fma(as_type(cbuf_52.data[_7160]), as_type(_10464), fma(as_type(cbuf_52.data[_7164]), as_type(_10463), as_type(_10474)))); float _10501 = fma(as_type(cbuf_52.data[_7188]), as_type(_10465), fma(as_type(cbuf_52.data[_7192]), as_type(_10464), fma(as_type(cbuf_52.data[_7196]), as_type(_10463), as_type(cbuf_52.data[_7200])))); float _10507 = fma(as_type(cbuf_52.data[_7172]), as_type(_10465), fma(as_type(cbuf_52.data[_7176]), as_type(_10464), fma(as_type(cbuf_52.data[_7180]), as_type(_10463), as_type(cbuf_52.data[_7184])))); float _10526 = 1.0 / fma(as_type(cbuf_52.data[_7204]), _10507, fma(as_type(cbuf_52.data[_7208]), _10501, fma(as_type(cbuf_52.data[_7212]), _10495, as_type(cbuf_52.data[_7216])))); float _10529 = fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_7220]), _10507, fma(as_type(cbuf_52.data[_7224]), _10501, fma(as_type(cbuf_52.data[_7228]), _10495, as_type(cbuf_52.data[_7232])))), _10526), 0.5); float _10530 = fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_7236]), _10507, fma(as_type(cbuf_52.data[_7240]), _10501, fma(as_type(cbuf_52.data[_7244]), _10495, as_type(cbuf_52.data[_7248])))), _10526), 0.5); float _10553 = 1.0 / fma(as_type(cbuf_52.data[_7360]), as_type(as_type(cs_img16.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_7321), int(uint(int(spvFMul(_7325, _10529))))))))), uint(max(int(0u), int(uint(min(int(_7322), int(uint(int(spvFMul(_7326, _10530))))))))))), 0u)).x), as_type(cbuf_52.data[_7357])); float _10557 = spvFMul(as_type(cbuf_52.data[_7363]), _10553); bool _10571 = _10473 && ((((spvFMul(5.0, fast::max(abs(spvFSub(_7289, _10495)), 0.5)) >= abs(fma(as_type(cbuf_52.data[_7363]), _10553, -_10495))) && (_7599 > _10557)) && (_10495 >= _10557)) && (_7596 >= _7289)); uint _10575; if (_10571) { _10575 = as_type(spvFMul(as_type(cbuf_52.data[_7520]), _10557)); } else { _10575 = _7734; } uint _10711; uint _10712; uint _10713; uint _10714; uint _10715; uint _10716; uint _10717; uint _10718; if (_10571) { float _10579 = spvFMul(fma(-2.0, _10530, 1.0), as_type(_10575)); float _10583 = spvFMul(fma(2.0, _10529, -1.0), spvFMul(as_type(cbuf_52.data[_7516]), _10557)); float _10602 = 1.0 / fma(as_type(cbuf_52.data[_7204]), _10583, fma(as_type(cbuf_52.data[_7208]), _10579, fma(as_type(cbuf_52.data[_7212]), _10557, as_type(cbuf_52.data[_7216])))); uint4 _10618 = as_type(cs_img24.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_7509), int(uint(int(spvFMul(_7600, fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_7220]), _10583, fma(as_type(cbuf_52.data[_7224]), _10579, fma(as_type(cbuf_52.data[_7228]), _10557, as_type(cbuf_52.data[_7232])))), _10602), 0.5)))))))))), uint(max(int(0u), int(uint(min(int(_7510), int(uint(int(spvFMul(_7601, fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_7236]), _10583, fma(as_type(cbuf_52.data[_7240]), _10579, fma(as_type(cbuf_52.data[_7244]), _10557, as_type(cbuf_52.data[_7248])))), _10602), 0.5)))))))))))), 0u)); float _10626 = fma(as_type(_2167), _6854, spvFMul(0.980000019073486328125, as_type(_7607))); float _10628 = fma(2.0, as_type(_10618.z), -1.0); float _10632 = fma(2.0, as_type(_10618.y), -1.0); float _10637 = fma(as_type(_2167), _6851, spvFMul(0.980000019073486328125, as_type(_7608))); float _10640 = fma(2.0, as_type(_10618.x), -1.0); float _10643 = fma(as_type(_2167), _6848, spvFMul(0.980000019073486328125, as_type(_7609))); float _10647 = rsqrt(fma(_10640, _10640, fma(_10632, _10632, spvFMul(_10628, _10628)))); float _10648 = rsqrt(fma(_10643, _10643, fma(_10637, _10637, spvFMul(_10626, _10626)))); float _10649 = spvFMul(_10628, _10647); float _10651 = spvFMul(_10632, _10647); float _10654 = spvFMul(_10640, _10647); float _10660 = spvFMul(fma(spvFMul(_10643, _10648), _10654, fma(spvFMul(_10637, _10648), _10651, spvFMul(_10649, spvFMul(_10626, _10648)))), 2.0); float _10680 = sqrt(fma(_10643, _10643, fma(_10637, _10637, spvFMul(_10626, _10626)))); float _10691 = fma(as_type(cbuf_52.data[_7544]), _10583, fma(as_type(cbuf_52.data[_7548]), _10579, fma(as_type(cbuf_52.data[_7552]), _10557, as_type(cbuf_52.data[_7556])))); _10711 = as_type(_10691); _10712 = as_type(_10680); _10713 = as_type(fma(_10649, 0.0199999995529651641845703125, fma(as_type(cbuf_52.data[_7560]), _10583, fma(as_type(cbuf_52.data[_7564]), _10579, fma(as_type(cbuf_52.data[_7568]), _10557, as_type(cbuf_52.data[_7572])))))); _10714 = as_type(fma(_10651, 0.0199999995529651641845703125, _10691)); _10715 = as_type(fma(_10654, 0.0199999995529651641845703125, fma(as_type(cbuf_52.data[_7528]), _10583, fma(as_type(cbuf_52.data[_7532]), _10579, fma(as_type(cbuf_52.data[_7536]), _10557, as_type(cbuf_52.data[_7540])))))); _10716 = as_type(spvFMul(_1531, spvFMul(_10680, fma(_10626, _10648, -spvFMul(_10649, _10660))))); _10717 = as_type(spvFMul(_1531, spvFMul(_10680, fma(_10637, _10648, -spvFMul(_10651, _10660))))); _10718 = as_type(spvFMul(_1531, spvFMul(_10680, fma(_10643, _10648, -spvFMul(_10654, _10660))))); } else { _10711 = _10466; _10712 = _10575; _10713 = _10463; _10714 = _10464; _10715 = _10465; _10716 = _7607; _10717 = _7608; _10718 = _7609; } _10719 = _10711; _10720 = _10712; _10721 = _10713; _10722 = _10714; _10723 = _10715; _10724 = _10716; _10725 = _10717; _10726 = _10718; } else { _10719 = _10466; _10720 = _7734; _10721 = _10463; _10722 = _10464; _10723 = _10465; _10724 = _7607; _10725 = _7608; _10726 = _7609; } _10727 = _10719; _10728 = _10720; _10729 = _10721; _10730 = _10722; _10731 = _10723; _10732 = _10724; _10733 = _10725; _10734 = _10726; _10735 = 0u; } else { _10727 = _10466; _10728 = _7734; _10729 = _10463; _10730 = _10464; _10731 = _10465; _10732 = _7607; _10733 = _7608; _10734 = _7609; _10735 = _10462; } _10736 = _10727; _10737 = _10728; _10738 = _10729; _10739 = _10730; _10740 = _10731; _10741 = _10732; _10742 = _10733; _10743 = _10734; _10744 = _10735; } else { _10736 = _10168; _10737 = _7734; _10738 = _10169; _10739 = _10170; _10740 = _10171; _10741 = _7607; _10742 = _7608; _10743 = _7609; _10744 = _10167; } _10745 = _10165; _10746 = _10736; _10747 = _10737; _10748 = _10166; _10749 = _10738; _10750 = _10739; _10751 = _10740; _10752 = _10741; _10753 = _10742; _10754 = _10743; _10755 = _10744; } else { _10745 = _7614; _10746 = _7611; _10747 = _7734; _10748 = _7613; _10749 = _7736; _10750 = _7737; _10751 = _7738; _10752 = _7607; _10753 = _7608; _10754 = _7609; _10755 = _7735; } bool _10757 = _7652 && (int(0u) < int(_10755)); uint _10758 = extract_bits(_1436, 0u, 16u); uint _11129; uint _11130; uint _11131; uint _11132; uint _11133; if (_10757) { uint _10760 = extract_bits(_1435, 0u, 16u); bool _10763 = _10757 && ((int(_10758) > int(_7606)) && (int(_10760) > int(0u))); uint _10765; if (_10763) { _10765 = _7606 + 1u; } else { _10765 = _10760; } uint _11118; uint _11119; if (_10763) { uint _10777 = uint(int(fma(as_type(cbuf_52.data[_1571]), 1000.0, float(((_7606 * 100u) + _7488) + 100u)))); uint _10780 = 1048575u & ((_10777 * 6389u) + 7381u); uint _10782 = uint(max(int(_10780), int(0u - _10780))); uint _10789 = _10782 - (((spvMulExtended(_10782, 1041204193u))._m1 >> 4u) * 66u); bool _10791 = int(_10780) < int(0u); float _10800 = spvFMul(0.01745329238474369049072265625, float(int(as_type(_10791 ? as_type(0u - _10789) : as_type(_10789)) + 4294967231u))); uint _10806 = 1048575u & (((_7425 + (gl_LocalInvocationID.x + _10777)) * 6389u) + 7381u); uint _10808 = uint(max(int(_10806), int(0u - _10806))); uint _10814 = _10808 - (((spvMulExtended(_10808, 3037324939u))._m1 >> 7u) * 181u); float _10824 = spvFMul(0.01745329238474369049072265625, float(int(as_type((int(0u) > int(_10806)) ? as_type(0u - _10814) : as_type(_10814)) + 4294967116u))); uint _10831 = (2147483648u & as_type(_10800)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _10800)))); float _10834 = sin(6.283185482025146484375 * as_type(_10831)); float _10837 = cos(6.283185482025146484375 * as_type(_10831)); uint _10843 = (2147483648u & as_type(_10824)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _10824)))); float _10846 = sin(6.283185482025146484375 * as_type(_10843)); float _10849 = cos(6.283185482025146484375 * as_type(_10843)); float _10850 = spvFMul(_10834, _10846); float _10887 = 1.0 / fma(float(int(_10765)), 1.5, 1.0); uint _10908 = _10782 - (((spvMulExtended(_10782, 274877907u))._m1 >> 6u) * 1000u); float _10916 = fma(0.0199999995529651641845703125, spvFMul(0.001000000047497451305389404296875, float(int(as_type(_10791 ? as_type(0u - _10908) : as_type(_10908))))), -0.00999999977648258209228515625); uint _10927 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[9u], 1, memory_order_relaxed); uint4 _10928 = uint4(as_type(spvFAdd(as_type(_10751), _10916)), as_type(spvFAdd(as_type(_10750), _10916)), as_type(spvFAdd(as_type(_10749), _10916)), _1319); uint _10932 = ((0u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10932 + 0u] = _10928.x; ssbo_48.data[_10932 + 1u] = _10928.y; ssbo_48.data[_10932 + 2u] = _10928.z; ssbo_48.data[_10932 + 3u] = _10928.w; uint4 _10945 = uint4(_1316, _1317, _1318, _1319); uint _10949 = ((16u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10949 + 0u] = _10945.x; ssbo_48.data[_10949 + 1u] = _10945.y; ssbo_48.data[_10949 + 2u] = _10945.z; ssbo_48.data[_10949 + 3u] = _10945.w; uint4 _10962 = uint4(_1355, _1356, as_type(half2(float2(fma(_10849, as_type(_10754), fma(_10850, as_type(_10753), spvFMul(as_type(_10752), _10850))), 0.0))) | (as_type(half2(float2(fma(as_type(_10754), 0.0, fma(_10837, as_type(_10753), spvFMul(as_type(_10752), -_10834))), 0.0))) << 16u), as_type(half2(float2(fma(-_10846, as_type(_10754), fma(spvFMul(_10834, _10849), as_type(_10753), spvFMul(as_type(_10752), spvFMul(_10837, _10849)))), 0.0))) | ((_1358 >> 16u) << 16u)); uint _10966 = ((32u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10966 + 0u] = _10962.x; ssbo_48.data[_10966 + 1u] = _10962.y; ssbo_48.data[_10966 + 2u] = _10962.z; ssbo_48.data[_10966 + 3u] = _10962.w; uint4 _10979 = uint4(_7475, _7587, _7476, _7588); uint _10983 = ((48u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10983 + 0u] = _10979.x; ssbo_48.data[_10983 + 1u] = _10979.y; ssbo_48.data[_10983 + 2u] = _10979.z; ssbo_48.data[_10983 + 3u] = _10979.w; uint4 _10996 = uint4(_7486, _7487, _7477, _7478); uint _11000 = ((64u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11000 + 0u] = _10996.x; ssbo_48.data[_11000 + 1u] = _10996.y; ssbo_48.data[_11000 + 2u] = _10996.z; ssbo_48.data[_11000 + 3u] = _10996.w; uint4 _11013 = uint4(_7479, _7480, as_type(half2(float2(spvFMul(_7577, _10887), 0.0))) | (as_type(half2(float2(spvFMul(_7580, _10887), 0.0))) << 16u), as_type(half2(float2(spvFMul(_7583, _10887), 0.0))) | (as_type(half2(float2(spvFMul(_7586, _10887), 0.0))) << 16u)); uint _11017 = ((80u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11017 + 0u] = _11013.x; ssbo_48.data[_11017 + 1u] = _11013.y; ssbo_48.data[_11017 + 2u] = _11013.z; ssbo_48.data[_11017 + 3u] = _11013.w; uint4 _11030 = uint4(_7481, _7482, _7483, cbuf_44.data[_1420]); uint _11035 = ((96u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11035 + 0u] = _11030.x; ssbo_48.data[_11035 + 1u] = _11030.y; ssbo_48.data[_11035 + 2u] = _11030.z; ssbo_48.data[_11035 + 3u] = _11030.w; uint4 _11048 = uint4((_7606 << 16u) + 65536u, _1436, _1455, _1456); uint _11052 = ((112u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11052 + 0u] = _11048.x; ssbo_48.data[_11052 + 1u] = _11048.y; ssbo_48.data[_11052 + 2u] = _11048.z; ssbo_48.data[_11052 + 3u] = _11048.w; uint4 _11065 = uint4(_1457, _1458, _1477, _1478); uint _11070 = ((128u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11070 + 0u] = _11065.x; ssbo_48.data[_11070 + 1u] = _11065.y; ssbo_48.data[_11070 + 2u] = _11065.z; ssbo_48.data[_11070 + 3u] = _11065.w; uint4 _11083 = uint4(_1479, _1480, _7484, _7485); uint _11088 = ((144u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11088 + 0u] = _11083.x; ssbo_48.data[_11088 + 1u] = _11083.y; ssbo_48.data[_11088 + 2u] = _11083.z; ssbo_48.data[_11088 + 3u] = _11083.w; uint4 _11101 = uint4(_7593, _7594, _1515, _1512.w); uint _11105 = ((160u + (_10927 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11105 + 0u] = _11101.x; ssbo_48.data[_11105 + 1u] = _11101.y; ssbo_48.data[_11105 + 2u] = _11101.z; ssbo_48.data[_11105 + 3u] = _11101.w; _11118 = _10927; _11119 = _10765; } else { _11118 = _10746; _11119 = _7606; } uint _11121 = 1u & (cbuf_52.data[_7524] & _7644.z); bool _11122 = 0u != _11121; _11129 = as_type(_11122 ? 1.0 : as_type(_7604)); _11130 = _11118; _11131 = _11121; _11132 = _11119; _11133 = as_type(_11122 ? 0.0 : as_type(_7605)); } else { _11129 = _7604; _11130 = _10746; _11131 = _10758; _11132 = _7606; _11133 = _7605; } _11135 = _10749; _11136 = _10750; _11137 = _10751; _11138 = _11129; _11139 = _10752; _11140 = _10753; _11141 = _10754; _11142 = _10745; _11143 = _11130; _11144 = _10747; _11145 = _11131; _11146 = _11132; _11147 = _7650 + 1u; _11148 = _11133; _11149 = _10748; } else { _11135 = _7615; _11136 = _7616; _11137 = _7617; _11138 = _7604; _11139 = _7607; _11140 = _7608; _11141 = _7609; _11142 = _7614; _11143 = _7611; _11144 = _7610; _11145 = _7612; _11146 = _7606; _11147 = _7650; _11148 = _7605; _11149 = _7613; } if (true) { _7604 = _11138; _7605 = _11148; _7606 = _11146; _7607 = _11139; _7608 = _11140; _7609 = _11141; _7610 = _11144; _7611 = _11143; _7612 = _11145; _7613 = _11149; _7614 = _11142; _7615 = _11135; _7616 = _11136; _7617 = _11137; _7618 = _7627; _7619 = _7628; _7620 = _11147; continue; } else { _11150 = _11135; _11151 = _11136; _11152 = _11137; _11153 = _11139; _11154 = _11140; _11155 = _11141; _11156 = _11147; _11157 = _11138; _11158 = _11148; _11159 = _11146; break; } } uint _11160 = extract_bits(_1435, 0u, 16u); bool _11162 = _1290 && (0u == _11160); uint _11165; if (_11162) { _11165 = as_type(float(int(_11159))); } else { _11165 = _11160; } uint _11172; uint _11173; if (_11162) { float _11168 = 1.0 / fma(as_type(_11165), 1.5, 1.0); _11172 = as_type(spvFMul(_7586, _11168)); _11173 = as_type(_11168); } else { _11172 = _11156; _11173 = _11165; } bool _11175 = _1290 && (!_11162); uint _11177; if (_11175) { _11177 = _11159 << 1u; } else { _11177 = _11173; } uint _11189; uint _11190; if (_11175) { _11189 = as_type(spvFMul(_7586, 1.0 / float(int(_11177 + 1u)))); _11190 = as_type((int(_11159) >= int(extract_bits(_1436, 0u, 16u))) ? as_type(_11158) : as_type(_11157)); } else { _11189 = _11172; _11190 = _11157; } if (_1290 && (as_type(_11158) > as_type(_11190))) { uint _11248 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[9u], 1, memory_order_relaxed); uint4 _11249 = uint4(_11152, _11151, _11150, _1319); uint _11253 = ((0u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11253 + 0u] = _11249.x; ssbo_48.data[_11253 + 1u] = _11249.y; ssbo_48.data[_11253 + 2u] = _11249.z; ssbo_48.data[_11253 + 3u] = _11249.w; uint4 _11266 = uint4(_1316, _1317, _1318, _1319); uint _11270 = ((16u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11270 + 0u] = _11266.x; ssbo_48.data[_11270 + 1u] = _11266.y; ssbo_48.data[_11270 + 2u] = _11266.z; ssbo_48.data[_11270 + 3u] = _11266.w; uint4 _11283 = uint4(extract_bits(_1355, 0u, 16u) | (as_type(half2(float2(as_type(_11158), 0.0))) << 16u), as_type(half2(float2(as_type(_11190), 0.0))) | (4294901760u & _1356), as_type(half2(float2(as_type(_11155), 0.0))) | (as_type(half2(float2(as_type(_11154), 0.0))) << 16u), ((_1358 >> 16u) << 16u) | as_type(half2(float2(as_type(_11153), 0.0)))); uint _11287 = ((32u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11287 + 0u] = _11283.x; ssbo_48.data[_11287 + 1u] = _11283.y; ssbo_48.data[_11287 + 2u] = _11283.z; ssbo_48.data[_11287 + 3u] = _11283.w; uint4 _11300 = uint4(_7475, _7587, _7476, _7588); uint _11304 = ((48u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11304 + 0u] = _11300.x; ssbo_48.data[_11304 + 1u] = _11300.y; ssbo_48.data[_11304 + 2u] = _11300.z; ssbo_48.data[_11304 + 3u] = _11300.w; uint4 _11317 = uint4(as_type(half2(float2(as_type(_7153), 0.0))) | (as_type(half2(float2(as_type(_7154), 0.0))) << 16u), _7473 | as_type(half2(float2(_7146, 0.0))), _7477, _7478); uint _11321 = ((64u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11321 + 0u] = _11317.x; ssbo_48.data[_11321 + 1u] = _11317.y; ssbo_48.data[_11321 + 2u] = _11317.z; ssbo_48.data[_11321 + 3u] = _11317.w; uint4 _11334 = uint4(_7479, _7480, as_type(half2(float2(_7577, 0.0))) | (as_type(half2(float2(_7580, 0.0))) << 16u), as_type(half2(float2(_7583, 0.0))) | (as_type(half2(float2(as_type(_11189), 0.0))) << 16u)); uint _11338 = ((80u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11338 + 0u] = _11334.x; ssbo_48.data[_11338 + 1u] = _11334.y; ssbo_48.data[_11338 + 2u] = _11334.z; ssbo_48.data[_11338 + 3u] = _11334.w; uint4 _11351 = uint4(_7481, _7482, _7483, cbuf_44.data[_1420]); uint _11355 = ((96u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11355 + 0u] = _11351.x; ssbo_48.data[_11355 + 1u] = _11351.y; ssbo_48.data[_11355 + 2u] = _11351.z; ssbo_48.data[_11355 + 3u] = _11351.w; uint4 _11368 = uint4(extract_bits(_1435, 0u, 16u) | (_11159 << 16u), _1436, _1455, _1456); uint _11372 = ((112u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11372 + 0u] = _11368.x; ssbo_48.data[_11372 + 1u] = _11368.y; ssbo_48.data[_11372 + 2u] = _11368.z; ssbo_48.data[_11372 + 3u] = _11368.w; uint4 _11385 = uint4(_1457, _1458, _1477, _1478); uint _11389 = ((128u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11389 + 0u] = _11385.x; ssbo_48.data[_11389 + 1u] = _11385.y; ssbo_48.data[_11389 + 2u] = _11385.z; ssbo_48.data[_11389 + 3u] = _11385.w; uint4 _11402 = uint4(_1479, _1480, _7484, _7485); uint _11406 = ((144u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11406 + 0u] = _11402.x; ssbo_48.data[_11406 + 1u] = _11402.y; ssbo_48.data[_11406 + 2u] = _11402.z; ssbo_48.data[_11406 + 3u] = _11402.w; uint4 _11419 = uint4(_7593, _7594, _1515, _1512.w); uint _11423 = ((160u + (_11248 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11423 + 0u] = _11419.x; ssbo_48.data[_11423 + 1u] = _11419.y; ssbo_48.data[_11423 + 2u] = _11419.z; ssbo_48.data[_11423 + 3u] = _11419.w; } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xa040875f (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[12]; }; constant uint _61 = {}; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_12 [[buffer(9)]], texture2d cs_img4 [[texture(0)]], texture2d cs_img16 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _80 = (gl_WorkGroupID.x << 3u) + gl_LocalInvocationID.x; uint _81 = (gl_WorkGroupID.y << 3u) + gl_LocalInvocationID.y; uint _103 = cbuf_12.data[4u + buf0_dword_off] + _80; uint _104 = cbuf_12.data[5u + buf0_dword_off] + _81; bool _109 = (cbuf_12.data[9u + buf0_dword_off] > _104) && (cbuf_12.data[8u + buf0_dword_off] > _103); uint _110; if (_109) { _110 = 0u; } else { _110 = _61; } if (_109) { uint4 _114 = as_type(cs_img4.read(uint2(uint2(cbuf_12.data[0u + buf0_dword_off] + _80, cbuf_12.data[1u + buf0_dword_off] + _81)), _110)); cs_img16.write((float4(float4(as_type(_114.x), as_type(_114.y), as_type(_114.z), as_type(_114.w)))), uint2(uint2(_103, _104))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x150b093 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x65dd13b5 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[100]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float _161 = fma(as_type(cbuf_8.data[48u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[49u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[50u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[51u + buf1_dword_off])))); float _163 = fma(as_type(cbuf_8.data[52u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[53u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[54u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[55u + buf1_dword_off])))); float _167 = fma(as_type(cbuf_8.data[60u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[61u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[62u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[63u + buf1_dword_off])))); out.gl_Position.x = _161; out.gl_Position.y = _163; out.gl_Position.z = fma(as_type(cbuf_8.data[56u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[57u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[58u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[59u + buf1_dword_off])))); out.gl_Position.w = _167; uint _174 = 88u + buf1_dword_off; uint _178 = 89u + buf1_dword_off; bool _206 = (-0.100000001490116119384765625) > in.vs_in_attr0.z; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = fma(as_type(cbuf_8.data[_174]), _161, spvFMul(as_type(cbuf_8.data[_178]), spvFAdd(-1.0, spvFMul(fast::max(in.vs_in_attr1.x, in.vs_in_attr1.x), 2.0)))); out.out_attr0.w = fma(as_type(cbuf_8.data[_174]), -_163, spvFMul(as_type(cbuf_8.data[_178]), spvFAdd(-1.0, spvFMul(fast::max(in.vs_in_attr1.y, in.vs_in_attr1.y), 2.0)))); out.out_attr1.x = fma(as_type(cbuf_8.data[_174]), _167, as_type(cbuf_8.data[_178])); out.out_attr1.y = _206 ? (-1.0) : 1.0; out.out_attr1.z = _206 ? 3.1415927410125732421875 : 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFSub(as_type(cbuf_8.data[84u + buf1_dword_off]), in.vs_in_attr0.x); out.out_attr2.y = spvFSub(as_type(cbuf_8.data[85u + buf1_dword_off]), in.vs_in_attr0.y); out.out_attr2.z = spvFSub(as_type(cbuf_8.data[86u + buf1_dword_off]), in.vs_in_attr0.z); out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img24 [[texture(1)]], texture2d fs_img4 [[texture(2)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _77 = 20u + buf0_dword_off; uint _85 = 22u + buf0_dword_off; float4 _112 = fs_img16.sample(fs_samp12, float2(fma(as_type(cbuf_32.data[24u + buf0_dword_off]), as_type(cbuf_32.data[_77]), in.fs_in_attr0.x), fma(-as_type(cbuf_32.data[25u + buf0_dword_off]), as_type(cbuf_32.data[_77]), in.fs_in_attr0.y))); float _116 = spvFAdd(-0.5, in.fs_in_attr0.x); float _117 = spvFAdd(-0.5, in.fs_in_attr0.y); float _122 = spvFMul(fast::max(abs(_116), abs(_116)), 2.0); float _126 = spvFMul(fast::max(abs(_117), abs(_117)), 2.0); float _142 = 1.0 / in.fs_in_attr1.x; float _144 = spvFMul(0.00999999977648258209228515625, fast::max(0.0, fma(-sqrt(fma(_126, _126, spvFMul(_122, _122))), as_type(cbuf_32.data[21u + buf0_dword_off]), 1.0))); float _148 = fma(0.5, spvFMul(in.fs_in_attr0.z, _142), 0.5); float _149 = fma(0.5, spvFMul(in.fs_in_attr0.w, _142), 0.5); float _156 = fma(as_type(cbuf_32.data[_85]), spvFMul(_144, fma(2.0, _112.x, -1.0)), _148); float _158 = fma(as_type(cbuf_32.data[_85]), spvFMul(_144, fma(2.0, _112.y, -1.0)), _149); float4 _163 = fs_img24.sample(fs_samp12, float2(_148, _149)); float4 _175 = fs_img4.sample(fs_samp12, float2(_156, _158)); float _176 = _175.x; float _177 = _175.y; float _178 = _175.z; float4 _183 = fs_img4.sample(fs_samp12, float2(_148, _149)); uint _188 = 16u + buf0_dword_off; uint _192 = 17u + buf0_dword_off; uint _196 = 18u + buf0_dword_off; float _216 = float(spvFMul(-as_type(cbuf_32.data[_188]), 1.0 / fma(as_type(cbuf_32.data[_192]), _163.x, -as_type(cbuf_32.data[_196]))) >= spvFMul(-as_type(cbuf_32.data[_188]), 1.0 / fma(as_type(cbuf_32.data[_192]), fs_img24.sample(fs_samp12, float2(_156, _158)).x, -as_type(cbuf_32.data[_196])))); float _218 = spvFSub(_183.x, _176); float _220 = spvFSub(_183.y, _177); float _222 = spvFSub(_183.z, _178); float _228 = fma(_216, _218, _176); float _230 = fma(_216, _220, _177); float _232 = fma(_216, _222, _178); bool _234 = cbuf_32.data[95u + buf0_dword_off] == 2u; uint _329; uint _330; uint _331; uint _332; uint _333; uint _334; uint _335; if (_234) { uint _237 = 36u + buf0_dword_off; uint _241 = 37u + buf0_dword_off; uint _245 = 38u + buf0_dword_off; uint _252 = 0u + buf0_dword_off; uint _255 = 1u + buf0_dword_off; uint _258 = 2u + buf0_dword_off; float _267 = fma(-as_type(cbuf_32.data[_252]), as_type(cbuf_32.data[_237]), 1.0); float _271 = fma(-as_type(cbuf_32.data[_255]), as_type(cbuf_32.data[_241]), 1.0); float _275 = fma(-as_type(cbuf_32.data[_258]), as_type(cbuf_32.data[_245]), 1.0); float _297 = spvFMul(1.0, _228); float _299 = spvFMul(1.0, _230); float _301 = spvFMul(1.0, _232); _329 = as_type(spvFMul(1.0, spvFMul(as_type(cbuf_32.data[3u + buf0_dword_off]), as_type(cbuf_32.data[39u + buf0_dword_off])))); _330 = as_type((0.5 > _301) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_32.data[_258]), as_type(cbuf_32.data[_245])), _301), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_275, _275), 2.0), spvFMul(spvFMul(_232, _275), 2.0)))); _331 = as_type((_299 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_32.data[_255]), as_type(cbuf_32.data[_241])), _299), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_271, _271), 2.0), spvFMul(spvFMul(_230, _271), 2.0)))); _332 = as_type((_297 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_32.data[_252]), as_type(cbuf_32.data[_237])), _297), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_267, _267), 2.0), spvFMul(spvFMul(_228, _267), 2.0)))); _333 = as_type(_301); _334 = as_type(_299); _335 = as_type(_297); } else { _329 = as_type(_222); _330 = as_type(_220); _331 = as_type(_218); _332 = as_type(_216); _333 = as_type(_232); _334 = as_type(_230); _335 = as_type(_228); } uint _382; uint _383; uint _384; uint _385; if (!_234) { _382 = as_type(spvFMul(as_type(cbuf_32.data[38u + buf0_dword_off]), spvFMul(as_type(cbuf_32.data[2u + buf0_dword_off]), as_type(_333)))); _383 = as_type(spvFMul(as_type(cbuf_32.data[37u + buf0_dword_off]), spvFMul(as_type(cbuf_32.data[1u + buf0_dword_off]), as_type(_334)))); _384 = as_type(spvFMul(as_type(cbuf_32.data[36u + buf0_dword_off]), spvFMul(as_type(cbuf_32.data[0u + buf0_dword_off]), as_type(_335)))); _385 = as_type(spvFMul(as_type(cbuf_32.data[3u + buf0_dword_off]), as_type(cbuf_32.data[39u + buf0_dword_off]))); } else { _382 = _330; _383 = _331; _384 = _332; _385 = _329; } float _391 = fast::clamp(fast::max(_156, _156), 0.0, 1.0); float _393 = fast::clamp(spvFAdd(_158, spvFMul(0.0, _156)), 0.0, 1.0); float _395 = fast::clamp(spvFAdd(spvFAdd(0.0, _158), spvFMul(0.0, spvFAdd(-1.0, _156))), 0.0, 1.0); float _396 = spvFSub(_156, _391); float _398 = fma(_393, -0.0, _156); float _401 = fast::clamp(spvFAdd(_156, 0.0), 0.0, 1.0); float _402 = fma(_391, -0.0, _158); float _404 = spvFSub(_158, _393); float _407 = spvFSub(_156, fma(0.0, _395, 1.0)); float _411 = spvFSub(_158, spvFAdd(0.0, _395)); float _414 = spvFSub(_156, spvFAdd(0.0, _401)); float _418 = spvFSub(_158, fma(0.0, _401, 1.0)); if (false) { discard_fragment(); } out.frag_color0.x = fast::max(0.0, as_type(_384)); out.frag_color0.y = fast::max(0.0, as_type(_383)); out.frag_color0.z = fast::max(0.0, as_type(_382)); out.frag_color0.w = fast::max(0.0, ((((_158 > 1.0) || (_158 < 0.0)) || (_156 > 1.0)) || (_156 < 0.0)) ? 0.0 : spvFMul(as_type(_385), spvFMul(20.0, fast::max(0.0, fast::min(0.0500000007450580596923828125, fast::min(fast::min(fast::min(sqrt(fma(_402, _402, spvFMul(_396, _396))), sqrt(fma(_404, _404, spvFMul(_398, _398)))), sqrt(fma(_411, _411, spvFMul(_407, _407)))), sqrt(fma(_418, _418, spvFMul(_414, _414))))))))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c9010.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c8040.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001211.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001211.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001212.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001212.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001213.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001213.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001214.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001215.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001215.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001300.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001300.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001311.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001311.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001312.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001312.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001313.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001313.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001320.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001320.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001102.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c8040.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001104.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001321.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001321.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001322.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001322.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001323.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001323.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c9020.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001140.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001131.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001400.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001400.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001401.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001401.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001402.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001402.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001141.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_002000.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_002000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_002030.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_002030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009001.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009001.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001201.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9020.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o212000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o212002.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9020.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001212.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001211.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009002.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001213.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001300.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001311.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001312.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009003.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009003.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001313.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001215.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001320.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009011.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009030.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001321.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001322.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001400.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001401.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001402.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_002000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_002030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009001.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001323.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009003.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009570.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009570.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009570.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111210.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111211.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111211.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111212.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111212.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111213.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111213.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111214.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121210.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121211.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121211.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121212.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121212.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121214.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_131214.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_131214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_141214.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_141214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111211.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111212.flver.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4b8827a6 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = in.vs_in_attr1.z; out.out_attr0.w = in.vs_in_attr1.w; out.gl_Position.x = spvFAdd(as_type(cbuf_8.data[12u + buf1_dword_off]), fma(as_type(cbuf_8.data[8u + buf1_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[4u + buf1_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[0u + buf1_dword_off]), in.vs_in_attr0.x)))); out.gl_Position.y = spvFAdd(as_type(cbuf_8.data[13u + buf1_dword_off]), fma(as_type(cbuf_8.data[9u + buf1_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[5u + buf1_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[1u + buf1_dword_off]), in.vs_in_attr0.x)))); out.gl_Position.z = spvFAdd(as_type(cbuf_8.data[14u + buf1_dword_off]), fma(as_type(cbuf_8.data[10u + buf1_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[6u + buf1_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[2u + buf1_dword_off]), in.vs_in_attr0.x)))); out.gl_Position.w = spvFAdd(as_type(cbuf_8.data[15u + buf1_dword_off]), fma(as_type(cbuf_8.data[11u + buf1_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[7u + buf1_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[3u + buf1_dword_off]), in.vs_in_attr0.x)))); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111213.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_111214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121212.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121211.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_121214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_131214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_141214.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001021.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001021.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001022.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001022.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001023.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001023.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001024.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001024.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001025.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001025.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001027.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001027.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001022.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001021.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001024.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001023.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001025.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001027.flver.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x370174f7 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[36]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _101 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _102 = _101.x; float4 _107 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _115 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _117 = _115.y; float4 _123 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _124 = _123.x; float _125 = _123.y; float _126 = _123.z; uint _196 = 3u + buf1_dword_off; float _225 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _102, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _227 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _102, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _231 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _102, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _234 = fma(-_225, _227, as_type(cbuf_56.data[2u + buf1_dword_off])); float _237 = fma(2.0, _107.z, -1.0); float _239 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _102, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _240 = spvFMul(_225, _227); float _243 = fma(-_231, _227, as_type(cbuf_56.data[1u + buf1_dword_off])); float _257 = fma(2.0, _107.y, -1.0); float _259 = spvFMul(_231, _227); float _265 = fma(-_239, _227, as_type(cbuf_56.data[0u + buf1_dword_off])); float _279 = fma(2.0, _107.x, -1.0); float _281 = spvFMul(_239, _227); float _302 = rsqrt(fma(_265, _265, fma(_243, _243, spvFMul(_234, _234)))); float _303 = rsqrt(fma(_279, _279, fma(_257, _257, spvFMul(_237, _237)))); float _305 = rsqrt(fma(-_281, -_281, fma(-_259, -_259, spvFMul(-_240, -_240)))); float _306 = spvFMul(_234, _302); float _307 = spvFMul(_237, _303); float _309 = spvFMul(_243, _302); float _311 = fma(-_240, _305, _306); uint _312 = 4u + buf1_dword_off; uint _315 = 5u + buf1_dword_off; uint _318 = 6u + buf1_dword_off; uint _321 = 7u + buf1_dword_off; float _324 = spvFMul(_257, _303); float _328 = spvFMul(_265, _302); float _331 = fma(-_259, _305, _309); float _333 = spvFMul(_279, _303); float _338 = rsqrt(fma(_281, _281, fma(_259, _259, spvFMul(_240, _240)))); float _340 = fma(-_281, _305, _328); float _347 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _333, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _324, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _307))); float _348 = spvFMul(_240, _338); float _354 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _333, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _324, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _307))); float _357 = spvFMul(_259, _338); float _361 = rsqrt(fma(_340, _340, fma(_331, _331, spvFMul(_311, _311)))); float _363 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _333, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _324, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _307))); float _364 = exp2(spvFMul(13.0, _115.x)); float _365 = spvFMul(_281, _338); float _381 = fma(_265, _265, fma(_243, _243, spvFMul(_234, _234))); float _394 = spvFMul(10.0, _117); float _396 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_365, _363, fma(-_357, _354, spvFMul(_347, -_348)))))); float _397 = fma(_363, _328, fma(_354, _309, spvFMul(_347, _306))); float _403 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_321]), _364), 1.0 / fma(_364, 0.01000213623046875, as_type(cbuf_56.data[_321])))); float4 _409 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _410 = _409.x; float _411 = spvFMul(_124, _124); float _412 = spvFMul(_125, _125); float _413 = spvFMul(_126, _126); bool _414 = 0.0 == _394; float _418 = fast::clamp(fast::max(_397, _397), 0.0, 1.0); float _419 = fast::max(0.0, spvFSub(1.0 / _381, as_type(cbuf_56.data[_196]))); float _420 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_196]), _381), 0.0, 1.0)); uint _425; if (_414) { _425 = as_type(spvFMul(as_type(cbuf_56.data[_312]), _418)); } else { _425 = as_type(_348); } uint _437; uint _438; uint _439; if (_414) { _437 = as_type(spvFMul(_419, as_type(_425))); _438 = as_type(spvFMul(_419, spvFMul(as_type(cbuf_56.data[_318]), _418))); _439 = as_type(spvFMul(_419, spvFMul(as_type(cbuf_56.data[_315]), _418))); } else { _437 = as_type(_328); _438 = as_type(_365); _439 = as_type(_357); } uint _443; if (!_414) { _443 = as_type(fma(_117, 10.0, _397)); } else { _443 = as_type(_117); } uint _484; uint _485; uint _486; if (!_414) { float _474 = fma(_419, spvFMul(fast::max(0.0, as_type(_443)), 1.0 / fma(2.0, _394, 1.0)), spvFMul(_394, spvFMul(_419, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_437), as_type(_438), fma(_309, as_type(_439), spvFMul(as_type(_425), _306))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), spvFMul(_396, _396)))))); _484 = as_type(spvFMul(as_type(cbuf_56.data[_318]), _474)); _485 = as_type(spvFMul(as_type(cbuf_56.data[_315]), _474)); _486 = as_type(spvFMul(as_type(cbuf_56.data[_312]), _474)); } else { _484 = _438; _485 = _439; _486 = _437; } float _497 = exp2(spvFMul(_403, log2(fast::clamp(fma(spvFMul(_340, _361), _363, fma(spvFMul(_331, _361), _354, spvFMul(_347, spvFMul(_311, _361)))), 0.0, 1.0)))); float _500 = exp2(spvFMul(0.0999755859375, log2(_418))); float _512 = fma(0.125, _403, 0.25); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_411, spvFMul(_410, spvFMul(_512, spvFMul(_420, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _497), _500))))); out.frag_color1.y = spvFMul(_412, spvFMul(_410, spvFMul(_512, spvFMul(_420, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _497), _500))))); out.frag_color1.z = spvFMul(_413, spvFMul(_410, spvFMul(_512, spvFMul(_420, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _497), _500))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_410, spvFSub(as_type(_486), spvFMul(spvFMul(_411, as_type(_486)), 0.5))); out.frag_color0.y = spvFMul(_410, spvFSub(as_type(_485), spvFMul(spvFMul(_412, as_type(_485)), 0.5))); out.frag_color0.z = spvFMul(_410, spvFSub(as_type(_484), spvFMul(spvFMul(_413, as_type(_484)), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x600f86b0 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[72]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _109 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _110 = _109.x; float4 _115 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _123 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _125 = _123.y; float4 _130 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _131 = _130.x; float _132 = _130.y; float _133 = _130.z; uint _203 = 3u + buf1_dword_off; float _232 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _110, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _234 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _110, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _238 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _110, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _241 = fma(-_232, _234, as_type(cbuf_56.data[2u + buf1_dword_off])); float _244 = fma(2.0, _115.z, -1.0); float _246 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _110, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _247 = spvFMul(_232, _234); float _250 = fma(-_238, _234, as_type(cbuf_56.data[1u + buf1_dword_off])); float _264 = fma(2.0, _115.y, -1.0); float _266 = spvFMul(_238, _234); float _272 = fma(-_246, _234, as_type(cbuf_56.data[0u + buf1_dword_off])); float _286 = fma(2.0, _115.x, -1.0); float _288 = spvFMul(_246, _234); float _309 = rsqrt(fma(_272, _272, fma(_250, _250, spvFMul(_241, _241)))); float _310 = rsqrt(fma(_286, _286, fma(_264, _264, spvFMul(_244, _244)))); float _312 = rsqrt(fma(-_288, -_288, fma(-_266, -_266, spvFMul(-_247, -_247)))); float _313 = spvFMul(_241, _309); float _315 = spvFMul(_244, _310); float _317 = spvFMul(_250, _309); float _320 = fma(-_247, _312, _313); uint _321 = 4u + buf1_dword_off; uint _324 = 5u + buf1_dword_off; uint _327 = 6u + buf1_dword_off; uint _330 = 7u + buf1_dword_off; float _333 = spvFMul(_264, _310); float _337 = spvFMul(_272, _309); float _340 = fma(-_266, _312, _317); float _342 = spvFMul(_286, _310); float _347 = rsqrt(fma(_288, _288, fma(_266, _266, spvFMul(_247, _247)))); float _349 = fma(-_288, _312, _337); float _357 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _342, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _333, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _315))); float _358 = spvFMul(_247, _347); float _363 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _342, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _333, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _315))); float _366 = spvFMul(_266, _347); float _370 = rsqrt(fma(_349, _349, fma(_340, _340, spvFMul(_320, _320)))); float _372 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _342, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _333, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _315))); float _373 = exp2(spvFMul(13.0, _123.x)); float _374 = spvFMul(_288, _347); float _390 = fma(_272, _272, fma(_250, _250, spvFMul(_241, _241))); float _403 = spvFMul(10.0, _125); float _405 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_374, _372, fma(-_366, _363, spvFMul(_357, -_358)))))); float _406 = fma(_372, _337, fma(_363, _317, spvFMul(_357, _313))); float _412 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_330]), _373), 1.0 / fma(_373, 0.01000213623046875, as_type(cbuf_56.data[_330])))); float4 _418 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _419 = _418.x; float _420 = spvFMul(_131, _131); float _421 = spvFMul(_132, _132); float _422 = spvFMul(_133, _133); bool _423 = _403 == 0.0; float _424 = fma(2.0, _403, 1.0); float _426 = spvFMul(_405, _405); float _428 = fast::clamp(fast::max(_406, _406), 0.0, 1.0); float _429 = fast::max(0.0, spvFSub(1.0 / _390, as_type(cbuf_56.data[_203]))); float _430 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_203]), _390), 0.0, 1.0)); uint _435; if (_423) { _435 = as_type(spvFMul(as_type(cbuf_56.data[_321]), _428)); } else { _435 = as_type(_337); } uint _447; uint _448; uint _449; if (_423) { _447 = as_type(spvFMul(_429, spvFMul(as_type(cbuf_56.data[_327]), _428))); _448 = as_type(spvFMul(_429, spvFMul(as_type(cbuf_56.data[_324]), _428))); _449 = as_type(spvFMul(_429, as_type(_435))); } else { _447 = as_type(_317); _448 = as_type(_313); _449 = _435; } uint _453; if (!_423) { _453 = as_type(fma(_125, 10.0, _406)); } else { _453 = as_type(_349); } uint _493; uint _494; uint _495; if (!_423) { float _483 = fma(_429, spvFMul(fast::max(0.0, as_type(_453)), 1.0 / _424), spvFMul(_403, spvFMul(_429, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_449), _374, fma(as_type(_447), _366, spvFMul(_358, as_type(_448)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _426))))); _493 = as_type(spvFMul(as_type(cbuf_56.data[_327]), _483)); _494 = as_type(spvFMul(as_type(cbuf_56.data[_324]), _483)); _495 = as_type(spvFMul(as_type(cbuf_56.data[_321]), _483)); } else { _493 = _447; _494 = _448; _495 = _449; } uint _506 = 19u + buf1_dword_off; float _510 = exp2(spvFMul(_412, log2(fast::clamp(fma(spvFMul(_349, _370), _372, fma(spvFMul(_340, _370), _363, spvFMul(_357, spvFMul(_320, _370)))), 0.0, 1.0)))); float _513 = exp2(spvFMul(0.0999755859375, log2(_428))); float _516 = fma(-_232, _234, as_type(cbuf_56.data[18u + buf1_dword_off])); float _519 = fma(-_238, _234, as_type(cbuf_56.data[17u + buf1_dword_off])); float _523 = fma(-_246, _234, as_type(cbuf_56.data[16u + buf1_dword_off])); float _526 = rsqrt(fma(_523, _523, fma(_519, _519, spvFMul(_516, _516)))); float _527 = spvFMul(_516, _526); float _528 = spvFMul(_519, _526); float _530 = fma(-_247, _312, _527); uint _531 = 20u + buf1_dword_off; uint _534 = 21u + buf1_dword_off; uint _537 = 22u + buf1_dword_off; uint _541 = 23u + buf1_dword_off; float _544 = spvFMul(_523, _526); float _546 = fma(-_266, _312, _528); float _549 = fma(-_288, _312, _544); float _561 = rsqrt(fma(_549, _549, fma(_546, _546, spvFMul(_530, _530)))); float _571 = fma(_372, _544, fma(_363, _528, spvFMul(_357, _527))); float _572 = fma(_523, _523, fma(_519, _519, spvFMul(_516, _516))); float _585 = fast::clamp(fast::max(_571, _571), 0.0, 1.0); float _598 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_541]), _373), 1.0 / fma(_373, 0.01000213623046875, as_type(cbuf_56.data[_541])))); float _604 = fma(_412, 0.125, 0.25); float _608 = fast::max(0.0, spvFSub(1.0 / _572, as_type(cbuf_56.data[_506]))); float _609 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_506]), _572), 0.0, 1.0)); float _612 = fma(0.125, _598, 0.25); uint _616; if (_423) { _616 = as_type(spvFMul(as_type(cbuf_56.data[_531]), _585)); } else { _616 = as_type(_598); } uint _629; uint _630; uint _631; uint _632; if (_423) { float _618 = spvFMul(as_type(cbuf_56.data[_534]), _585); _629 = as_type(spvFMul(_608, _618)); _630 = as_type(spvFMul(_608, spvFMul(as_type(cbuf_56.data[_537]), _585))); _631 = as_type(_618); _632 = as_type(spvFMul(_608, as_type(_616))); } else { _629 = as_type(_424); _630 = as_type(_366); _631 = as_type(_374); _632 = _616; } uint _636; if (!_423) { _636 = as_type(fma(_125, 10.0, _571)); } else { _636 = _632; } uint _677; uint _678; uint _679; if (!_423) { float _667 = fma(_608, spvFMul(fast::max(0.0, as_type(_636)), 1.0 / as_type(_629)), spvFMul(_403, spvFMul(_608, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_544, as_type(_631), fma(_528, as_type(_630), spvFMul(_358, _527))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _426))))); _677 = as_type(spvFMul(as_type(cbuf_56.data[_537]), _667)); _678 = as_type(spvFMul(as_type(cbuf_56.data[_534]), _667)); _679 = as_type(spvFMul(as_type(cbuf_56.data[_531]), _667)); } else { _677 = _630; _678 = _629; _679 = _636; } float _689 = exp2(spvFMul(_598, log2(fast::clamp(fma(spvFMul(_549, _561), _372, fma(spvFMul(_546, _561), _363, spvFMul(_357, spvFMul(_530, _561)))), 0.0, 1.0)))); float _690 = exp2(spvFMul(0.0999755859375, log2(_585))); float _693 = spvFAdd(as_type(_495), as_type(_679)); float _696 = spvFAdd(as_type(_494), as_type(_678)); float _711 = spvFAdd(as_type(_493), as_type(_677)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_420, spvFMul(_419, fma(spvFMul(_430, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _510), _513)), _604, spvFMul(_612, spvFMul(_609, spvFMul(_690, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _689))))))); out.frag_color1.y = spvFMul(_421, spvFMul(_419, fma(spvFMul(_430, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _510), _513)), _604, spvFMul(_612, spvFMul(_609, spvFMul(_690, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _689))))))); out.frag_color1.z = spvFMul(_422, spvFMul(_419, fma(spvFMul(_430, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _510), _513)), _604, spvFMul(_612, spvFMul(_609, spvFMul(_690, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _689))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_419, spvFSub(_693, spvFMul(spvFMul(_420, _693), 0.5))); out.frag_color0.y = spvFMul(_419, spvFSub(_696, spvFMul(spvFMul(_421, _696), 0.5))); out.frag_color0.z = spvFMul(_419, spvFSub(_711, spvFMul(spvFMul(_422, _711), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x89f9ee3e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[108]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _117 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _118 = _117.x; float4 _123 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _131 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _133 = _131.y; float4 _138 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _139 = _138.x; float _140 = _138.y; float _141 = _138.z; uint _211 = 3u + buf1_dword_off; float _240 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _118, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _242 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _118, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _246 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _118, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _249 = fma(-_240, _242, as_type(cbuf_56.data[2u + buf1_dword_off])); float _252 = fma(2.0, _123.z, -1.0); float _254 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _118, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _255 = spvFMul(_240, _242); float _258 = fma(-_246, _242, as_type(cbuf_56.data[1u + buf1_dword_off])); float _272 = fma(2.0, _123.y, -1.0); float _274 = spvFMul(_246, _242); float _280 = fma(-_254, _242, as_type(cbuf_56.data[0u + buf1_dword_off])); float _294 = fma(2.0, _123.x, -1.0); float _296 = spvFMul(_254, _242); float _317 = rsqrt(fma(_280, _280, fma(_258, _258, spvFMul(_249, _249)))); float _318 = rsqrt(fma(_294, _294, fma(_272, _272, spvFMul(_252, _252)))); float _320 = rsqrt(fma(-_296, -_296, fma(-_274, -_274, spvFMul(-_255, -_255)))); float _321 = spvFMul(_249, _317); float _323 = spvFMul(_252, _318); float _325 = spvFMul(_258, _317); float _328 = fma(-_255, _320, _321); uint _329 = 4u + buf1_dword_off; uint _332 = 5u + buf1_dword_off; uint _335 = 6u + buf1_dword_off; uint _338 = 7u + buf1_dword_off; float _341 = spvFMul(_272, _318); float _345 = spvFMul(_280, _317); float _348 = fma(-_274, _320, _325); float _350 = spvFMul(_294, _318); float _355 = rsqrt(fma(_296, _296, fma(_274, _274, spvFMul(_255, _255)))); float _357 = fma(-_296, _320, _345); float _365 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _350, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _341, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _323))); float _366 = spvFMul(_255, _355); float _371 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _350, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _341, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _323))); float _374 = spvFMul(_274, _355); float _378 = rsqrt(fma(_357, _357, fma(_348, _348, spvFMul(_328, _328)))); float _380 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _350, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _341, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _323))); float _381 = exp2(spvFMul(13.0, _131.x)); float _382 = spvFMul(_296, _355); float _398 = fma(_280, _280, fma(_258, _258, spvFMul(_249, _249))); float _411 = spvFMul(10.0, _133); float _413 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_382, _380, fma(-_374, _371, spvFMul(_365, -_366)))))); float _414 = fma(_380, _345, fma(_371, _325, spvFMul(_365, _321))); float _420 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_338]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_338])))); float4 _426 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _427 = _426.x; float _428 = spvFMul(_139, _139); float _429 = spvFMul(_140, _140); float _430 = spvFMul(_141, _141); bool _431 = _411 == 0.0; float _432 = fma(2.0, _411, 1.0); float _434 = spvFMul(_413, _413); float _436 = fast::clamp(fast::max(_414, _414), 0.0, 1.0); float _437 = fast::max(0.0, spvFSub(1.0 / _398, as_type(cbuf_56.data[_211]))); float _438 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_211]), _398), 0.0, 1.0)); uint _443; if (_431) { _443 = as_type(spvFMul(as_type(cbuf_56.data[_329]), _436)); } else { _443 = as_type(_345); } uint _455; uint _456; uint _457; if (_431) { _455 = as_type(spvFMul(_437, spvFMul(as_type(cbuf_56.data[_335]), _436))); _456 = as_type(spvFMul(_437, spvFMul(as_type(cbuf_56.data[_332]), _436))); _457 = as_type(spvFMul(_437, as_type(_443))); } else { _455 = as_type(_325); _456 = as_type(_321); _457 = _443; } uint _461; if (!_431) { _461 = as_type(fma(_133, 10.0, _414)); } else { _461 = as_type(_357); } uint _501; uint _502; uint _503; if (!_431) { float _491 = fma(_437, spvFMul(fast::max(0.0, as_type(_461)), 1.0 / _432), spvFMul(_411, spvFMul(_437, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_457), _382, fma(as_type(_455), _374, spvFMul(_366, as_type(_456)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _434))))); _501 = as_type(spvFMul(as_type(cbuf_56.data[_335]), _491)); _502 = as_type(spvFMul(as_type(cbuf_56.data[_332]), _491)); _503 = as_type(spvFMul(as_type(cbuf_56.data[_329]), _491)); } else { _501 = _455; _502 = _456; _503 = _457; } uint _514 = 19u + buf1_dword_off; float _518 = exp2(spvFMul(_420, log2(fast::clamp(fma(spvFMul(_357, _378), _380, fma(spvFMul(_348, _378), _371, spvFMul(_365, spvFMul(_328, _378)))), 0.0, 1.0)))); float _521 = exp2(spvFMul(0.0999755859375, log2(_436))); float _524 = fma(-_240, _242, as_type(cbuf_56.data[18u + buf1_dword_off])); float _527 = fma(-_246, _242, as_type(cbuf_56.data[17u + buf1_dword_off])); float _531 = fma(-_254, _242, as_type(cbuf_56.data[16u + buf1_dword_off])); float _534 = rsqrt(fma(_531, _531, fma(_527, _527, spvFMul(_524, _524)))); float _535 = spvFMul(_524, _534); float _537 = spvFMul(_527, _534); float _540 = fma(-_255, _320, _535); uint _541 = 20u + buf1_dword_off; uint _544 = 21u + buf1_dword_off; uint _547 = 22u + buf1_dword_off; uint _551 = 23u + buf1_dword_off; float _554 = spvFMul(_531, _534); float _557 = fma(-_274, _320, _537); float _560 = fma(-_296, _320, _554); float _572 = rsqrt(fma(_560, _560, fma(_557, _557, spvFMul(_540, _540)))); float _582 = fma(_380, _554, fma(_371, _537, spvFMul(_365, _535))); float _583 = fma(_531, _531, fma(_527, _527, spvFMul(_524, _524))); float _596 = fast::clamp(fast::max(_582, _582), 0.0, 1.0); float _609 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_551]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_551])))); float _612 = log2(_596); float _616 = fma(_420, 0.125, 0.25); float _620 = fast::max(0.0, spvFSub(1.0 / _583, as_type(cbuf_56.data[_514]))); float _621 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_514]), _583), 0.0, 1.0)); float _624 = fma(0.125, _609, 0.25); uint _628; if (_431) { _628 = as_type(spvFMul(as_type(cbuf_56.data[_541]), _596)); } else { _628 = as_type(_554); } uint _641; uint _642; uint _643; uint _644; if (_431) { float _632 = spvFMul(as_type(cbuf_56.data[_547]), _596); _641 = as_type(spvFMul(_620, spvFMul(as_type(cbuf_56.data[_544]), _596))); _642 = as_type(spvFMul(_620, as_type(_628))); _643 = as_type(_632); _644 = as_type(spvFMul(_620, _632)); } else { _641 = as_type(_612); _642 = as_type(_609); _643 = as_type(_537); _644 = as_type(_535); } uint _648; if (!_431) { _648 = as_type(fma(_133, 10.0, _582)); } else { _648 = _642; } uint _689; uint _690; uint _691; if (!_431) { float _679 = fma(_620, spvFMul(fast::max(0.0, as_type(_648)), 1.0 / _432), spvFMul(_411, spvFMul(_620, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_628), _382, fma(as_type(_643), _374, spvFMul(_366, as_type(_644)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _434))))); _689 = as_type(spvFMul(as_type(cbuf_56.data[_547]), _679)); _690 = as_type(spvFMul(as_type(cbuf_56.data[_544]), _679)); _691 = as_type(spvFMul(as_type(cbuf_56.data[_541]), _679)); } else { _689 = _644; _690 = _641; _691 = _648; } uint _705 = 35u + buf1_dword_off; float _708 = exp2(spvFMul(_609, log2(fast::clamp(fma(spvFMul(_560, _572), _380, fma(spvFMul(_557, _572), _371, spvFMul(_365, spvFMul(_540, _572)))), 0.0, 1.0)))); float _709 = exp2(spvFMul(0.0999755859375, _612)); float _718 = fma(-_240, _242, as_type(cbuf_56.data[34u + buf1_dword_off])); float _721 = fma(-_246, _242, as_type(cbuf_56.data[33u + buf1_dword_off])); float _725 = fma(-_254, _242, as_type(cbuf_56.data[32u + buf1_dword_off])); float _728 = rsqrt(fma(_725, _725, fma(_721, _721, spvFMul(_718, _718)))); float _729 = spvFMul(_718, _728); float _730 = spvFMul(_721, _728); float _732 = fma(-_255, _320, _729); uint _743 = 36u + buf1_dword_off; uint _747 = 37u + buf1_dword_off; uint _751 = 38u + buf1_dword_off; uint _755 = 39u + buf1_dword_off; float _758 = spvFMul(_725, _728); float _760 = fma(-_274, _320, _730); float _763 = fma(-_296, _320, _758); float _766 = rsqrt(fma(_763, _763, fma(_760, _760, spvFMul(_732, _732)))); float _785 = fma(_380, _758, fma(_371, _730, spvFMul(_365, _729))); float _786 = fma(_725, _725, fma(_721, _721, spvFMul(_718, _718))); float _796 = fast::clamp(fast::max(_785, _785), 0.0, 1.0); float _809 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_755]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_755])))); float _819 = fast::max(0.0, spvFSub(1.0 / _786, as_type(cbuf_56.data[_705]))); float _820 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_705]), _786), 0.0, 1.0)); float _823 = fma(0.125, _809, 0.25); uint _827; if (_431) { _827 = as_type(spvFMul(as_type(cbuf_56.data[_743]), _796)); } else { _827 = as_type(_809); } uint _840; uint _841; uint _842; uint _843; if (_431) { float _829 = spvFMul(as_type(cbuf_56.data[_747]), _796); _840 = as_type(spvFMul(_819, _829)); _841 = as_type(spvFMul(_819, spvFMul(as_type(cbuf_56.data[_751]), _796))); _842 = as_type(_829); _843 = as_type(spvFMul(_819, as_type(_827))); } else { _840 = as_type(_432); _841 = as_type(_374); _842 = as_type(_382); _843 = _827; } uint _847; if (!_431) { _847 = as_type(fma(_133, 10.0, _785)); } else { _847 = _843; } uint _888; uint _889; uint _890; if (!_431) { float _878 = fma(_819, spvFMul(fast::max(0.0, as_type(_847)), 1.0 / as_type(_840)), spvFMul(_411, spvFMul(_819, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_758, as_type(_842), fma(_730, as_type(_841), spvFMul(_366, _729))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _434))))); _888 = as_type(spvFMul(as_type(cbuf_56.data[_751]), _878)); _889 = as_type(spvFMul(as_type(cbuf_56.data[_747]), _878)); _890 = as_type(spvFMul(as_type(cbuf_56.data[_743]), _878)); } else { _888 = _841; _889 = _840; _890 = _847; } float _903 = exp2(spvFMul(_809, log2(fast::clamp(fma(spvFMul(_763, _766), _380, fma(spvFMul(_760, _766), _371, spvFMul(_365, spvFMul(_732, _766)))), 0.0, 1.0)))); float _904 = exp2(spvFMul(0.0999755859375, log2(_796))); float _906 = spvFAdd(spvFAdd(as_type(_503), as_type(_691)), as_type(_890)); float _908 = spvFAdd(spvFAdd(as_type(_502), as_type(_690)), as_type(_889)); float _919 = spvFAdd(spvFAdd(as_type(_501), as_type(_689)), as_type(_888)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_428, spvFMul(_427, fma(spvFMul(_820, spvFMul(_904, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _903))), _823, fma(spvFMul(_438, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _518), _521)), _616, spvFMul(_624, spvFMul(_621, spvFMul(_709, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _708)))))))); out.frag_color1.y = spvFMul(_429, spvFMul(_427, fma(spvFMul(_820, spvFMul(_904, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _903))), _823, fma(spvFMul(_438, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _518), _521)), _616, spvFMul(_624, spvFMul(_621, spvFMul(_709, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _708)))))))); out.frag_color1.z = spvFMul(_430, spvFMul(_427, fma(spvFMul(_820, spvFMul(_904, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _903))), _823, fma(spvFMul(_438, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _518), _521)), _616, spvFMul(_624, spvFMul(_621, spvFMul(_709, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _708)))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_427, spvFSub(_906, spvFMul(spvFMul(_428, _906), 0.5))); out.frag_color0.y = spvFMul(_427, spvFSub(_908, spvFMul(spvFMul(_429, _908), 0.5))); out.frag_color0.z = spvFMul(_427, spvFSub(_919, spvFMul(spvFMul(_430, _919), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x5e224cb6 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x41ae600f [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[100]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _135 = 83u + buf2_dword_off; float _173 = fma(as_type(cbuf_8.data[12u + buf2_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf2_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf2_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf2_dword_off])))); float _177 = spvFSub(_173, spvFMul(fast::max(in.vs_in_attr3.x, in.vs_in_attr3.x), 0.5)); float _180 = 1.0 / as_type(cbuf_8.data[81u + buf2_dword_off]); float _204 = fma(as_type(cbuf_8.data[0u + buf2_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf2_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf2_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf2_dword_off])))); float _206 = fma(as_type(cbuf_8.data[4u + buf2_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf2_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf2_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf2_dword_off])))); bool _209 = (_173 > as_type(cbuf_8.data[_135])) && (as_type(cbuf_8.data[_135]) > _177); uint _210; if (_209) { _210 = 0u; } else { _210 = as_type(spvFMul(spvFMul(_173, 1.0 / _177), spvFSub(spvFMul(_177, spvFMul(as_type(cbuf_8.data[82u + buf2_dword_off]), _180)), spvFMul(as_type(cbuf_8.data[80u + buf2_dword_off]), _180)))); } uint _227; if (_209) { float _216 = fast::clamp(spvFMul(spvFSub(as_type(cbuf_8.data[_135]), _177), 1.0 / spvFSub(_173, _177)), 0.0, 1.0); float _217 = spvFMul(_216, _216); _227 = as_type(spvFMul(in.vs_in_attr1.w, spvFSub(1.0, fma(_217, 3.0, -spvFMul(spvFMul(_216, _217), 2.0))))); } else { _227 = 0u; } uint _230; if (!_209) { _230 = as_type(in.vs_in_attr1.w); } else { _230 = _227; } out.gl_Position.x = _204; out.gl_Position.y = _206; out.gl_Position.z = as_type(_210); out.gl_Position.w = _173; uint _241 = 27u + buf2_dword_off; uint _245 = 23u + buf2_dword_off; uint _249 = 19u + buf2_dword_off; out.out_attr2.x = _204; out.out_attr2.y = _206; out.out_attr2.z = as_type(_210); out.out_attr2.w = _173; float _258 = spvFSub(1.0, as_type(cbuf_8.data[31u + buf2_dword_off])); uint _260 = 96u + buf2_dword_off; uint _268 = 98u + buf2_dword_off; float _276 = spvFSub(in.vs_in_attr0.z, as_type(cbuf_8.data[_241])); float _279 = spvFSub(in.vs_in_attr0.y, as_type(cbuf_8.data[_245])); float _282 = spvFSub(in.vs_in_attr0.x, as_type(cbuf_8.data[_249])); float _293 = sqrt(fma(_282, _282, fma(_279, _279, fma(_276, _276, spvFMul(_258, _258))))); float _307 = 1.0 / _173; out.out_attr0.x = in.vs_in_attr1.z; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = in.vs_in_attr1.x; out.out_attr0.w = spvFMul(spvFMul(as_type(_230), 1.0 / in.vs_in_attr3.x), spvFMul(fma(-spvFSub(fast::max(as_type(cbuf_8.data[_268]), _293), as_type(cbuf_8.data[_268])), 1.0 / as_type(cbuf_8.data[99u + buf2_dword_off]), 1.0), fma(-spvFSub(as_type(cbuf_8.data[_260]), fast::min(as_type(cbuf_8.data[_260]), _293)), 1.0 / as_type(cbuf_8.data[97u + buf2_dword_off]), 1.0))); out.out_attr1.x = fma(0.5, spvFMul(_204, _307), 0.5); out.out_attr1.y = fma(-0.5, spvFMul(_206, _307), 0.5); out.out_attr1.z = _177; out.out_attr1.w = in.vs_in_attr3.x; out.out_attr3.x = spvFSub(as_type(cbuf_8.data[_249]), in.vs_in_attr0.x); out.out_attr3.y = spvFSub(as_type(cbuf_8.data[_245]), in.vs_in_attr0.y); out.out_attr3.z = spvFSub(as_type(cbuf_8.data[_241]), in.vs_in_attr0.z); out.out_attr3.w = 0.0; out.out_attr4.x = in.vs_in_attr2.x; out.out_attr4.y = in.vs_in_attr2.y; out.out_attr4.z = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf2_dword_off]), spvFSub(_173, as_type(cbuf_8.data[72u + buf2_dword_off]))), 0.0, 1.0); out.out_attr4.w = in.vs_in_attr5.x; out.out_attr5.x = in.vs_in_attr4.x; out.out_attr5.y = in.vs_in_attr4.y; out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct fs_cbuf_block_f32_1 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_24 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _102 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float _103 = _102.x; float _104 = _102.y; float _105 = _102.z; float4 _111 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y)); float _112 = _111.x; float _113 = _111.y; float _115 = _111.z; float _116 = _111.w; float _125 = 1.0 / in.fs_in_attr2.w; float _147 = spvFSub(_102.w, _116); float _153 = fma(in.fs_in_attr4.w, fma(-_112, _112, spvFMul(_103, _103)), spvFMul(_112, _112)); float _154 = fma(in.fs_in_attr4.w, fma(-_113, _113, spvFMul(_104, _104)), spvFMul(_113, _113)); float _156 = fma(in.fs_in_attr4.w, fma(-_115, _115, spvFMul(_105, _105)), spvFMul(_115, _115)); float _157 = fma(in.fs_in_attr4.w, _147, _116); bool _159 = cbuf_24.data[95u + buf0_dword_off] == 2u; uint _244; uint _245; uint _246; uint _247; if (_159) { uint _162 = 36u + buf0_dword_off; uint _166 = 37u + buf0_dword_off; uint _170 = 38u + buf0_dword_off; float _193 = spvFMul(_153, _157); float _194 = spvFMul(_154, _157); float _195 = spvFMul(_156, _157); float _205 = fma(-as_type(cbuf_24.data[_162]), in.fs_in_attr0.x, 1.0); float _208 = fma(-as_type(cbuf_24.data[_166]), in.fs_in_attr0.y, 1.0); float _211 = fma(-as_type(cbuf_24.data[_170]), in.fs_in_attr0.z, 1.0); _244 = as_type((_194 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_166]), in.fs_in_attr0.y), _194), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_208, _208), 2.0), spvFMul(spvFMul(_157, spvFMul(_154, _208)), 2.0)))); _245 = as_type((0.5 > _195) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_170]), in.fs_in_attr0.z), _195), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_211, _211), 2.0), spvFMul(spvFMul(_157, spvFMul(_156, _211)), 2.0)))); _246 = as_type((_193 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_162]), in.fs_in_attr0.x), _193), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_205, _205), 2.0), spvFMul(spvFMul(_157, spvFMul(_153, _205)), 2.0)))); _247 = as_type(spvFMul(_157, spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), in.fs_in_attr0.w))); } else { _244 = as_type(_113); _245 = as_type(_147); _246 = as_type(_154); _247 = as_type(_157); } uint _286; uint _287; uint _288; uint _289; if (!_159) { _286 = as_type(spvFMul(as_type(cbuf_24.data[36u + buf0_dword_off]), spvFMul(_153, in.fs_in_attr0.x))); _287 = as_type(spvFMul(as_type(cbuf_24.data[37u + buf0_dword_off]), spvFMul(as_type(_246), in.fs_in_attr0.y))); _288 = as_type(spvFMul(as_type(cbuf_24.data[38u + buf0_dword_off]), spvFMul(_156, in.fs_in_attr0.z))); _289 = as_type(spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), spvFMul(as_type(_247), in.fs_in_attr0.w))); } else { _286 = _246; _287 = _244; _288 = _245; _289 = _247; } float4 _294 = fs_img16.sample(fs_samp12, float2(fma(0.5, spvFMul(in.fs_in_attr2.x, _125), 0.5), fma(-0.5, spvFMul(in.fs_in_attr2.y, _125), 0.5))); float _324 = spvFMul(as_type(_289), fast::max(0.0, fast::min(in.fs_in_attr1.w, fma(-as_type(cbuf_24.data[16u + buf0_dword_off]), 1.0 / fma(as_type(cbuf_24.data[17u + buf0_dword_off]), _294.x, -as_type(cbuf_24.data[18u + buf0_dword_off])), -in.fs_in_attr1.z)))); uint _491; uint _492; uint _493; if (0.0 < _324) { uint _327 = 47u + buf0_dword_off; uint _331 = 43u + buf0_dword_off; uint _335 = 51u + buf0_dword_off; uint _338 = 8u + buf1_dword_off; uint _346 = 10u + buf1_dword_off; float _367 = spvFMul(as_type(cbuf_24.data[_327]), as_type(_287)); uint _379 = 14u + buf1_dword_off; float _388 = spvFMul(as_type(cbuf_24.data[_331]), as_type(_286)); float _398 = spvFMul(as_type(cbuf_24.data[_335]), as_type(_288)); float _427 = spvFAdd(-1.0, fma(_398, 0.11448000371456146240234375, fma(_388, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _367)))); float _433 = fma(as_type(cbuf_28.data[7u + buf1_dword_off]), _427, 1.0); float _452 = fast::clamp(spvFAdd(as_type(cbuf_28.data[_338]), spvFMul(as_type(cbuf_28.data[_338]), -exp2(-fma(as_type(cbuf_28.data[_346]), sqrt(fma(-in.fs_in_attr3.x, -in.fs_in_attr3.x, spvFMul(-in.fs_in_attr3.z, -in.fs_in_attr3.z))), -spvFMul(as_type(cbuf_28.data[9u + buf1_dword_off]), as_type(cbuf_28.data[_346])))))), 0.0, 1.0); float _469 = fma(as_type(cbuf_28.data[19u + buf1_dword_off]), _427, 1.0); float _470 = fma(_452, fma(-as_type(_286), as_type(cbuf_24.data[_331]), spvFMul(as_type(cbuf_28.data[4u + buf1_dword_off]), _433)), _388); float _471 = fma(_452, fma(-as_type(_287), as_type(cbuf_24.data[_327]), spvFMul(as_type(cbuf_28.data[5u + buf1_dword_off]), _433)), _367); float _472 = fma(_452, fma(-as_type(_288), as_type(cbuf_24.data[_335]), spvFMul(as_type(cbuf_28.data[6u + buf1_dword_off]), _433)), _398); float _475 = fast::clamp(spvFMul(as_type(cbuf_28.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_28.data[_379]), spvFSub(as_type(cbuf_28.data[15u + buf1_dword_off]), in.fs_in_attr3.y)), -spvFMul(as_type(cbuf_28.data[13u + buf1_dword_off]), as_type(cbuf_28.data[_379]))), 0.0, 1.0)), 0.0, 1.0); _491 = as_type(fma(_475, fma(as_type(cbuf_28.data[18u + buf1_dword_off]), _469, -_472), _472)); _492 = as_type(fma(_475, fma(as_type(cbuf_28.data[17u + buf1_dword_off]), _469, -_471), _471)); _493 = as_type(fma(_475, fma(as_type(cbuf_28.data[16u + buf1_dword_off]), _469, -_470), _470)); } else { _491 = _288; _492 = _287; _493 = _286; } if (false) { discard_fragment(); } out.frag_color0.x = fast::max(0.0, as_type(_493)); out.frag_color0.y = fast::max(0.0, as_type(_492)); out.frag_color0.z = fast::max(0.0, as_type(_491)); out.frag_color0.w = fast::max(0.0, _324); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001080.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001080.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001080.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001310.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001310.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001310.flver.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x898dabb3 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[100]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _135 = 83u + buf2_dword_off; float _173 = fma(as_type(cbuf_8.data[12u + buf2_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf2_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf2_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf2_dword_off])))); float _177 = spvFSub(_173, spvFMul(fast::max(in.vs_in_attr3.x, in.vs_in_attr3.x), 0.5)); float _180 = 1.0 / as_type(cbuf_8.data[81u + buf2_dword_off]); float _204 = fma(as_type(cbuf_8.data[0u + buf2_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf2_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf2_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf2_dword_off])))); float _206 = fma(as_type(cbuf_8.data[4u + buf2_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf2_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf2_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf2_dword_off])))); bool _209 = (_173 > as_type(cbuf_8.data[_135])) && (as_type(cbuf_8.data[_135]) > _177); uint _210; if (_209) { _210 = 0u; } else { _210 = as_type(spvFMul(spvFMul(_173, 1.0 / _177), spvFSub(spvFMul(_177, spvFMul(as_type(cbuf_8.data[82u + buf2_dword_off]), _180)), spvFMul(as_type(cbuf_8.data[80u + buf2_dword_off]), _180)))); } uint _227; if (_209) { float _216 = fast::clamp(spvFMul(spvFSub(as_type(cbuf_8.data[_135]), _177), 1.0 / spvFSub(_173, _177)), 0.0, 1.0); float _217 = spvFMul(_216, _216); _227 = as_type(spvFMul(in.vs_in_attr1.w, spvFSub(1.0, fma(_217, 3.0, -spvFMul(spvFMul(_216, _217), 2.0))))); } else { _227 = 0u; } uint _230; if (!_209) { _230 = as_type(in.vs_in_attr1.w); } else { _230 = _227; } out.gl_Position.x = _204; out.gl_Position.y = _206; out.gl_Position.z = as_type(_210); out.gl_Position.w = _173; uint _241 = 27u + buf2_dword_off; uint _245 = 23u + buf2_dword_off; uint _249 = 19u + buf2_dword_off; out.out_attr2.x = _204; out.out_attr2.y = _206; out.out_attr2.z = as_type(_210); out.out_attr2.w = _173; float _258 = spvFSub(1.0, as_type(cbuf_8.data[31u + buf2_dword_off])); uint _260 = 96u + buf2_dword_off; uint _268 = 98u + buf2_dword_off; float _276 = spvFSub(in.vs_in_attr0.z, as_type(cbuf_8.data[_241])); float _279 = spvFSub(in.vs_in_attr0.y, as_type(cbuf_8.data[_245])); float _282 = spvFSub(in.vs_in_attr0.x, as_type(cbuf_8.data[_249])); float _293 = sqrt(fma(_282, _282, fma(_279, _279, fma(_276, _276, spvFMul(_258, _258))))); float _307 = 1.0 / _173; out.out_attr0.x = in.vs_in_attr1.z; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = in.vs_in_attr1.x; out.out_attr0.w = spvFMul(spvFMul(as_type(_230), 1.0 / in.vs_in_attr3.x), spvFMul(fma(-spvFSub(fast::max(as_type(cbuf_8.data[_268]), _293), as_type(cbuf_8.data[_268])), 1.0 / as_type(cbuf_8.data[99u + buf2_dword_off]), 1.0), fma(-spvFSub(as_type(cbuf_8.data[_260]), fast::min(as_type(cbuf_8.data[_260]), _293)), 1.0 / as_type(cbuf_8.data[97u + buf2_dword_off]), 1.0))); out.out_attr1.x = fma(0.5, spvFMul(_204, _307), 0.5); out.out_attr1.y = fma(-0.5, spvFMul(_206, _307), 0.5); out.out_attr1.z = _177; out.out_attr1.w = in.vs_in_attr3.x; out.out_attr3.x = spvFSub(as_type(cbuf_8.data[_249]), in.vs_in_attr0.x); out.out_attr3.y = spvFSub(as_type(cbuf_8.data[_245]), in.vs_in_attr0.y); out.out_attr3.z = spvFSub(as_type(cbuf_8.data[_241]), in.vs_in_attr0.z); out.out_attr3.w = 0.0; out.out_attr4.x = in.vs_in_attr2.x; out.out_attr4.y = in.vs_in_attr2.y; out.out_attr4.z = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf2_dword_off]), spvFSub(_173, as_type(cbuf_8.data[72u + buf2_dword_off]))), 0.0, 1.0); out.out_attr4.w = in.vs_in_attr5.x; out.out_attr5.x = in.vs_in_attr4.x; out.out_attr5.y = in.vs_in_attr4.y; out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct fs_cbuf_block_f32_1 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_24 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _103 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float _104 = _103.x; float _105 = _103.y; float _106 = _103.z; float4 _112 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y)); float _113 = _112.x; float _114 = _112.y; float _116 = _112.z; float _117 = _112.w; float _126 = 1.0 / in.fs_in_attr2.w; float _148 = spvFSub(_103.w, _117); float _154 = fma(in.fs_in_attr4.w, fma(-_113, _113, spvFMul(_104, _104)), spvFMul(_113, _113)); float _155 = fma(in.fs_in_attr4.w, fma(-_114, _114, spvFMul(_105, _105)), spvFMul(_114, _114)); float _157 = fma(in.fs_in_attr4.w, fma(-_116, _116, spvFMul(_106, _106)), spvFMul(_116, _116)); float _158 = fma(in.fs_in_attr4.w, _148, _117); bool _160 = cbuf_24.data[95u + buf0_dword_off] == 2u; uint _245; uint _246; uint _247; uint _248; if (_160) { uint _163 = 36u + buf0_dword_off; uint _167 = 37u + buf0_dword_off; uint _171 = 38u + buf0_dword_off; float _194 = spvFMul(_154, _158); float _195 = spvFMul(_155, _158); float _196 = spvFMul(_157, _158); float _206 = fma(-as_type(cbuf_24.data[_163]), in.fs_in_attr0.x, 1.0); float _209 = fma(-as_type(cbuf_24.data[_167]), in.fs_in_attr0.y, 1.0); float _212 = fma(-as_type(cbuf_24.data[_171]), in.fs_in_attr0.z, 1.0); _245 = as_type((_195 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_167]), in.fs_in_attr0.y), _195), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_209, _209), 2.0), spvFMul(spvFMul(_158, spvFMul(_155, _209)), 2.0)))); _246 = as_type((0.5 > _196) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_171]), in.fs_in_attr0.z), _196), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_212, _212), 2.0), spvFMul(spvFMul(_158, spvFMul(_157, _212)), 2.0)))); _247 = as_type((_194 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_163]), in.fs_in_attr0.x), _194), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_206, _206), 2.0), spvFMul(spvFMul(_158, spvFMul(_154, _206)), 2.0)))); _248 = as_type(spvFMul(_158, spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), in.fs_in_attr0.w))); } else { _245 = as_type(_114); _246 = as_type(_148); _247 = as_type(_155); _248 = as_type(_158); } uint _287; uint _288; uint _289; uint _290; if (!_160) { _287 = as_type(spvFMul(as_type(cbuf_24.data[36u + buf0_dword_off]), spvFMul(_154, in.fs_in_attr0.x))); _288 = as_type(spvFMul(as_type(cbuf_24.data[37u + buf0_dword_off]), spvFMul(as_type(_247), in.fs_in_attr0.y))); _289 = as_type(spvFMul(as_type(cbuf_24.data[38u + buf0_dword_off]), spvFMul(_157, in.fs_in_attr0.z))); _290 = as_type(spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), spvFMul(as_type(_248), in.fs_in_attr0.w))); } else { _287 = _247; _288 = _245; _289 = _246; _290 = _248; } float4 _295 = fs_img16.sample(fs_samp12, float2(fma(0.5, spvFMul(in.fs_in_attr2.x, _126), 0.5), fma(-0.5, spvFMul(in.fs_in_attr2.y, _126), 0.5))); float _325 = spvFMul(as_type(_290), fast::max(0.0, fast::min(in.fs_in_attr1.w, fma(-as_type(cbuf_24.data[16u + buf0_dword_off]), 1.0 / fma(as_type(cbuf_24.data[17u + buf0_dword_off]), _295.x, -as_type(cbuf_24.data[18u + buf0_dword_off])), -in.fs_in_attr1.z)))); uint _492; uint _493; uint _494; if (0.0 < _325) { uint _328 = 47u + buf0_dword_off; uint _332 = 43u + buf0_dword_off; uint _336 = 51u + buf0_dword_off; uint _339 = 8u + buf1_dword_off; uint _347 = 10u + buf1_dword_off; float _368 = spvFMul(as_type(cbuf_24.data[_328]), as_type(_288)); uint _380 = 14u + buf1_dword_off; float _389 = spvFMul(as_type(cbuf_24.data[_332]), as_type(_287)); float _399 = spvFMul(as_type(cbuf_24.data[_336]), as_type(_289)); float _428 = spvFAdd(-1.0, fma(_399, 0.11448000371456146240234375, fma(_389, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _368)))); float _434 = fma(as_type(cbuf_28.data[7u + buf1_dword_off]), _428, 1.0); float _453 = fast::clamp(spvFAdd(as_type(cbuf_28.data[_339]), spvFMul(as_type(cbuf_28.data[_339]), -exp2(-fma(as_type(cbuf_28.data[_347]), sqrt(fma(-in.fs_in_attr3.x, -in.fs_in_attr3.x, spvFMul(-in.fs_in_attr3.z, -in.fs_in_attr3.z))), -spvFMul(as_type(cbuf_28.data[9u + buf1_dword_off]), as_type(cbuf_28.data[_347])))))), 0.0, 1.0); float _470 = fma(as_type(cbuf_28.data[19u + buf1_dword_off]), _428, 1.0); float _471 = fma(_453, fma(-as_type(_287), as_type(cbuf_24.data[_332]), spvFMul(as_type(cbuf_28.data[4u + buf1_dword_off]), _434)), _389); float _472 = fma(_453, fma(-as_type(_288), as_type(cbuf_24.data[_328]), spvFMul(as_type(cbuf_28.data[5u + buf1_dword_off]), _434)), _368); float _473 = fma(_453, fma(-as_type(_289), as_type(cbuf_24.data[_336]), spvFMul(as_type(cbuf_28.data[6u + buf1_dword_off]), _434)), _399); float _476 = fast::clamp(spvFMul(as_type(cbuf_28.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_28.data[_380]), spvFSub(as_type(cbuf_28.data[15u + buf1_dword_off]), in.fs_in_attr3.y)), -spvFMul(as_type(cbuf_28.data[13u + buf1_dword_off]), as_type(cbuf_28.data[_380]))), 0.0, 1.0)), 0.0, 1.0); _492 = as_type(fma(_476, fma(as_type(cbuf_28.data[18u + buf1_dword_off]), _470, -_473), _473)); _493 = as_type(fma(_476, fma(as_type(cbuf_28.data[17u + buf1_dword_off]), _470, -_472), _472)); _494 = as_type(fma(_476, fma(as_type(cbuf_28.data[16u + buf1_dword_off]), _470, -_471), _471)); } else { _492 = _289; _493 = _288; _494 = _287; } float _512 = fast::max(0.0, as_type(_494)); float _514 = fast::max(0.0, as_type(_493)); float _516 = fast::max(0.0, as_type(_492)); float _517 = fast::max(0.0, _325); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(as_type(cbuf_24.data[88u + buf0_dword_off]), _512); out.frag_color1.y = spvFMul(as_type(cbuf_24.data[89u + buf0_dword_off]), _514); out.frag_color1.z = spvFMul(as_type(cbuf_24.data[90u + buf0_dword_off]), _516); out.frag_color1.w = spvFMul(as_type(cbuf_24.data[91u + buf0_dword_off]), _517); if (false) { discard_fragment(); } out.frag_color0.x = _512; out.frag_color0.y = _514; out.frag_color0.z = _516; out.frag_color0.w = _517; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009012.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009012.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_009012.flver.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xe2c27f0c (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[8]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant cs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture_buffer texbuf_4 [[texture(0)]], texture2d cs_img8 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _75 = (gl_WorkGroupID.x << 6u) + gl_LocalInvocationID.x; uint _82 = 2u + buf0_dword_off; if (cbuf_16.data[0u + buf0_dword_off] > _75) { uint _105 = uint(spvFMul(4294967296.0, 1.0 / float(cbuf_16.data[_82]))); uint _106 = cbuf_16.data[_82] * _105; bool _110 = 0u != (spvMulExtended(cbuf_16.data[_82], _105))._m1; uint _116 = (spvMulExtended(as_type(_110 ? as_type(_106) : as_type(0u - _106)), _105))._m1; uint _119 = cbuf_16.data[1u + buf0_dword_off] + _75; uint _125 = (spvMulExtended(as_type(_110 ? as_type(_105 - _116) : as_type(_105 + _116)), _119))._m1; uint _126 = _125 * cbuf_16.data[_82]; bool _128 = _119 >= _126; uint _150 = as_type((0u != cbuf_16.data[_82]) ? (_128 ? ((_128 && ((_119 - _126) >= cbuf_16.data[_82])) ? as_type(_125 + 1u) : as_type(_125)) : as_type(_125 + 4294967295u)) : as_type(0xffffffffu /* nan */)); cs_img8.write(as_type(float4(float4(float4(as_type(texbuf_4.read(uint(((_75 << extract_bits(push_data.buf_offsets0[0u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 8u, 6u))))))))), uint2(uint2((cbuf_16.data[4u + buf0_dword_off] + _119) + ((0u - cbuf_16.data[_82]) * _150), cbuf_16.data[5u + buf0_dword_off] + _150))); } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x6320bb24 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4f23790e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = in.vs_in_attr1.z; out.out_attr0.w = in.vs_in_attr1.w; out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_20 [[buffer(9)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _85 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _86 = _85.x; float _88 = _85.y; float _90 = _85.z; uint _112; uint _113; uint _114; if (!(cbuf_20.data[0u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u)] == 0u)) { _112 = as_type(exp2(spvFMul(0.454545438289642333984375, log2(_90)))); _113 = as_type(exp2(spvFMul(0.454545438289642333984375, log2(_88)))); _114 = as_type(exp2(spvFMul(0.454545438289642333984375, log2(_86)))); } else { _112 = as_type(_90); _113 = as_type(_88); _114 = as_type(_86); } if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(as_type(_114), spvFMul(as_type(cbuf_16.data[0u + buf1_dword_off]), in.fs_in_attr0.x)); out.frag_color0.y = spvFMul(as_type(_113), spvFMul(as_type(cbuf_16.data[1u + buf1_dword_off]), in.fs_in_attr0.y)); out.frag_color0.z = spvFMul(as_type(_112), spvFMul(as_type(cbuf_16.data[2u + buf1_dword_off]), in.fs_in_attr0.z)); out.frag_color0.w = spvFMul(_85.w, spvFMul(as_type(cbuf_16.data[3u + buf1_dword_off]), in.fs_in_attr0.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x89e9d10c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = in.vs_in_attr1.z; out.out_attr0.w = in.vs_in_attr1.w; out.gl_Position.x = spvFAdd(as_type(cbuf_8.data[12u + buf2_dword_off]), fma(as_type(cbuf_8.data[8u + buf2_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[4u + buf2_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[0u + buf2_dword_off]), in.vs_in_attr0.x)))); out.gl_Position.y = spvFAdd(as_type(cbuf_8.data[13u + buf2_dword_off]), fma(as_type(cbuf_8.data[9u + buf2_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[5u + buf2_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[1u + buf2_dword_off]), in.vs_in_attr0.x)))); out.gl_Position.z = spvFAdd(as_type(cbuf_8.data[14u + buf2_dword_off]), fma(as_type(cbuf_8.data[10u + buf2_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[6u + buf2_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[2u + buf2_dword_off]), in.vs_in_attr0.x)))); out.gl_Position.w = spvFAdd(as_type(cbuf_8.data[15u + buf2_dword_off]), fma(as_type(cbuf_8.data[11u + buf2_dword_off]), in.vs_in_attr0.z, fma(as_type(cbuf_8.data[7u + buf2_dword_off]), in.vs_in_attr0.y, spvFMul(as_type(cbuf_8.data[3u + buf2_dword_off]), in.vs_in_attr0.x)))); out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm21.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_xm21.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm21.fsb [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 2 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 34 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xc45c51cb [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[68]; }; struct fs_cbuf_block_f32_1 { uint data[12]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint _89 = 18u + buf0_dword_off; uint _93 = 19u + buf0_dword_off; float _105 = spvFMul(fast::max(as_type(cbuf_32.data[_89]), as_type(cbuf_32.data[_89])), 0.5); float _109 = spvFMul(fast::max(as_type(cbuf_32.data[_93]), as_type(cbuf_32.data[_93])), 0.5); float _110 = spvFSub(in.fs_in_attr0.y, _109); float _112 = spvFSub(in.fs_in_attr0.x, _105); float4 _117 = fs_img16.sample(fs_samp12, float2(spvFAdd(in.fs_in_attr0.x, _105), _110), level(0.0)); float4 _133 = fs_img16.sample(fs_samp12, float2(_112, _110), level(0.0)); float4 _146 = fs_img16.sample(fs_samp12, float2(_112, spvFAdd(in.fs_in_attr0.y, _109)), level(0.0)); float4 _155 = fs_img16.sample(fs_samp12, float2(fma(as_type(cbuf_32.data[_89]), 0.5, in.fs_in_attr0.x), fma(as_type(cbuf_32.data[_93]), 0.5, in.fs_in_attr0.y)), level(0.0)); float _170 = fract(spvFMul(as_type(cbuf_32.data[17u + buf0_dword_off]), in.fs_in_attr0.y)); float _171 = fract(spvFMul(as_type(cbuf_32.data[16u + buf0_dword_off]), in.fs_in_attr0.x)); float _184 = spvFSub(1.0, _170); float _185 = spvFMul(spvFSub(as_type(cbuf_28.data[0u + buf1_dword_off]), fs_img4.sample(fs_samp24, float2(in.fs_in_attr0.x, in.fs_in_attr0.y)).x), 1.0 / (-as_type(cbuf_28.data[1u + buf1_dword_off]))); float _188 = spvFSub(1.0, _171); float _215 = 1.0 / spvFAdd(abs(fma(_185, fma(_133.w, 1.0, fma(_133.y, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _133.z))), -1.0)), 0.00999999977648258209228515625); float _216 = 1.0 / sqrt(fma(_184, _184, spvFMul(_188, _188))); float _217 = spvFMul(1.0 / spvFAdd(abs(fma(_185, fma(_117.w, 1.0, fma(_117.y, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _117.z))), -1.0)), 0.00999999977648258209228515625), 1.0 / sqrt(fma(_171, _171, spvFMul(_184, _184)))); float _225 = 1.0 / spvFAdd(abs(fma(_185, fma(_146.w, 1.0, fma(_146.y, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _146.z))), -1.0)), 0.00999999977648258209228515625); float _226 = 1.0 / sqrt(fma(_188, _188, spvFMul(_170, _170))); float _232 = 1.0 / spvFAdd(abs(fma(_185, fma(_155.w, 1.0, fma(_155.y, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _155.z))), -1.0)), 0.00999999977648258209228515625); float _233 = 1.0 / sqrt(fma(_170, _170, spvFMul(_171, _171))); float _241 = spvFMul(fma(_155.x, spvFMul(_232, _233), fma(_146.x, spvFMul(_225, _226), fma(_133.x, spvFMul(_215, _216), spvFMul(_117.x, _217)))), 1.0 / fma(_232, _233, fma(_225, _226, fma(_215, _216, _217)))); out.frag_color0.x = _241; out.frag_color0.y = _241; out.frag_color0.z = _241; out.frag_color0.w = _241; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 3 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 35 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x3105494c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[144]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _125 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _126 = _125.x; float4 _131 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _139 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _141 = _139.y; float4 _146 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _147 = _146.x; float _148 = _146.y; float _149 = _146.z; float _220 = fma(2.0, _131.z, -1.0); float _238 = fma(2.0, _131.y, -1.0); float _259 = fma(2.0, _131.x, -1.0); float _267 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _126, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _269 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _126, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _298 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _126, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _299 = spvFMul(_267, _269); float _300 = rsqrt(fma(_259, _259, fma(_238, _238, spvFMul(_220, _220)))); float _302 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _126, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _303 = spvFMul(_298, _269); float _305 = spvFMul(_220, _300); float _306 = spvFMul(_302, _269); float _308 = spvFMul(_238, _300); float _312 = spvFMul(_259, _300); float _317 = rsqrt(fma(_306, _306, fma(_303, _303, spvFMul(_299, _299)))); uint _318 = 4u + buf1_dword_off; uint _321 = 5u + buf1_dword_off; uint _324 = 6u + buf1_dword_off; uint _327 = 7u + buf1_dword_off; float _335 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _312, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _308, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _305))); float _336 = spvFMul(_299, _317); float _339 = fma(-_267, _269, as_type(cbuf_56.data[2u + buf1_dword_off])); float _343 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _312, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _308, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _305))); float _344 = spvFMul(_303, _317); float _349 = fma(-_298, _269, as_type(cbuf_56.data[1u + buf1_dword_off])); float _352 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _312, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _308, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _305))); float _353 = spvFMul(_306, _317); float _358 = fma(-_302, _269, as_type(cbuf_56.data[0u + buf1_dword_off])); float _363 = spvFMul(fma(_352, _353, fma(_343, _344, spvFMul(_335, _336))), 2.0); float _365 = exp2(spvFMul(13.0, _139.x)); float _367 = rsqrt(fma(_358, _358, fma(_349, _349, spvFMul(_339, _339)))); float _370 = fma(_299, _317, -spvFMul(_335, _363)); float _371 = spvFMul(_339, _367); float _378 = fma(_303, _317, -spvFMul(_343, _363)); float _381 = spvFMul(_349, _367); float _388 = fma(_306, _317, -spvFMul(_352, _363)); float _391 = spvFMul(_358, _367); float _399 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_327]), _365), 1.0 / fma(_365, 0.01000213623046875, as_type(cbuf_56.data[_327])))); float _414 = spvFMul(10.0, _141); float _416 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_353, _352, fma(-_344, _343, spvFMul(_335, -_336)))))); float _418 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_358, _358, fma(_349, _349, spvFMul(_339, _339)))), 0.0, 1.0))); float _419 = exp2(spvFMul(spvFMul(0.25, _399), log2(fast::clamp(fma(_388, _391, fma(_378, _381, spvFMul(_370, _371))), 0.0, 1.0)))); float4 _427 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _428 = _427.x; float _429 = spvFMul(_147, _147); float _430 = spvFMul(_148, _148); float _431 = spvFMul(_149, _149); bool _432 = _414 == 0.0; float _433 = fma(2.0, _414, 1.0); float _434 = spvFMul(_416, _416); float _436 = fma(_352, _391, fma(_343, _381, spvFMul(_335, _371))); float _437 = spvFMul(_418, _418); float _438 = spvFMul(_419, fma(0.125, _399, 0.25)); uint _442; if (_432) { _442 = as_type(fast::clamp(fast::max(_436, _436), 0.0, 1.0)); } else { _442 = as_type(_371); } uint _454; uint _455; uint _456; if (_432) { float _444 = spvFMul(_437, as_type(_442)); _454 = as_type(spvFMul(as_type(cbuf_56.data[_324]), _444)); _455 = as_type(spvFMul(as_type(cbuf_56.data[_321]), _444)); _456 = as_type(spvFMul(as_type(cbuf_56.data[_318]), _444)); } else { _454 = as_type(_419); _455 = as_type(_391); _456 = _442; } uint _460; if (!_432) { _460 = as_type(fma(_141, 10.0, _436)); } else { _460 = _454; } uint _499; uint _500; uint _501; if (!_432) { float _489 = fma(_437, spvFMul(fast::max(0.0, as_type(_460)), 1.0 / _433), spvFMul(_414, spvFMul(_437, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_455), _353, fma(_381, _344, spvFMul(_336, as_type(_456)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _434))))); _499 = as_type(spvFMul(as_type(cbuf_56.data[_324]), _489)); _500 = as_type(spvFMul(as_type(cbuf_56.data[_321]), _489)); _501 = as_type(spvFMul(as_type(cbuf_56.data[_318]), _489)); } else { _499 = _460; _500 = _455; _501 = _456; } uint _524 = 20u + buf1_dword_off; uint _527 = 21u + buf1_dword_off; uint _530 = 22u + buf1_dword_off; uint _534 = 23u + buf1_dword_off; float _545 = fma(-_302, _269, as_type(cbuf_56.data[16u + buf1_dword_off])); float _548 = fma(-_298, _269, as_type(cbuf_56.data[17u + buf1_dword_off])); float _551 = fma(-_267, _269, as_type(cbuf_56.data[18u + buf1_dword_off])); float _555 = rsqrt(fma(_545, _545, fma(_548, _548, spvFMul(_551, _551)))); float _556 = spvFMul(_545, _555); float _558 = spvFMul(_548, _555); float _560 = spvFMul(_551, _555); float _563 = fma(_352, _556, fma(_343, _558, spvFMul(_335, _560))); float _572 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_545, _545, fma(_548, _548, spvFMul(_551, _551)))), 0.0, 1.0))); float _573 = spvFMul(_572, _572); float _580 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_534]), _365), 1.0 / fma(_365, 0.01000213623046875, as_type(cbuf_56.data[_534])))); float _588 = exp2(spvFMul(spvFMul(0.25, _580), log2(fast::clamp(fma(_388, _556, fma(_378, _558, spvFMul(_370, _560))), 0.0, 1.0)))); float _591 = spvFMul(_588, fma(0.125, _580, 0.25)); uint _595; if (_432) { _595 = as_type(fast::clamp(fast::max(_563, _563), 0.0, 1.0)); } else { _595 = as_type(_588); } uint _608; uint _609; uint _610; uint _611; if (_432) { float _597 = spvFMul(_573, as_type(_595)); _608 = as_type(spvFMul(as_type(cbuf_56.data[_524]), _597)); _609 = as_type(spvFMul(as_type(cbuf_56.data[_530]), _597)); _610 = as_type(_597); _611 = as_type(spvFMul(as_type(cbuf_56.data[_527]), _597)); } else { _608 = as_type(_558); _609 = as_type(_556); _610 = _595; _611 = as_type(_563); } uint _616; if (!_432) { _616 = as_type(fma(_141, 10.0, as_type(_611))); } else { _616 = _610; } uint _656; uint _657; uint _658; if (!_432) { float _646 = fma(_573, spvFMul(fast::max(0.0, as_type(_616)), 1.0 / _433), spvFMul(_414, spvFMul(_573, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_609), _353, fma(as_type(_608), _344, spvFMul(_336, _560))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _434))))); _656 = as_type(spvFMul(as_type(cbuf_56.data[_530]), _646)); _657 = as_type(spvFMul(as_type(cbuf_56.data[_527]), _646)); _658 = as_type(spvFMul(as_type(cbuf_56.data[_524]), _646)); } else { _656 = _609; _657 = _611; _658 = _608; } uint _685 = 36u + buf1_dword_off; uint _689 = 37u + buf1_dword_off; uint _693 = 38u + buf1_dword_off; uint _697 = 39u + buf1_dword_off; float _723 = fma(-_302, _269, as_type(cbuf_56.data[32u + buf1_dword_off])); float _726 = fma(-_298, _269, as_type(cbuf_56.data[33u + buf1_dword_off])); float _729 = fma(-_267, _269, as_type(cbuf_56.data[34u + buf1_dword_off])); float _733 = rsqrt(fma(_723, _723, fma(_726, _726, spvFMul(_729, _729)))); float _734 = spvFMul(_723, _733); float _736 = spvFMul(_726, _733); float _738 = spvFMul(_729, _733); float _741 = fma(_352, _734, fma(_343, _736, spvFMul(_335, _738))); float _750 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_723, _723, fma(_726, _726, spvFMul(_729, _729)))), 0.0, 1.0))); float _751 = spvFMul(_750, _750); float _758 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_697]), _365), 1.0 / fma(_365, 0.01000213623046875, as_type(cbuf_56.data[_697])))); float _766 = exp2(spvFMul(spvFMul(0.25, _758), log2(fast::clamp(fma(_388, _734, fma(_378, _736, spvFMul(_370, _738))), 0.0, 1.0)))); float _769 = spvFMul(_766, fma(0.125, _758, 0.25)); uint _773; if (_432) { _773 = as_type(fast::clamp(fast::max(_741, _741), 0.0, 1.0)); } else { _773 = as_type(_766); } uint _786; uint _787; uint _788; uint _789; if (_432) { float _775 = spvFMul(_751, as_type(_773)); _786 = as_type(spvFMul(as_type(cbuf_56.data[_685]), _775)); _787 = as_type(spvFMul(as_type(cbuf_56.data[_693]), _775)); _788 = as_type(_775); _789 = as_type(spvFMul(as_type(cbuf_56.data[_689]), _775)); } else { _786 = as_type(_736); _787 = as_type(_734); _788 = _773; _789 = as_type(_741); } uint _794; if (!_432) { _794 = as_type(fma(_141, 10.0, as_type(_789))); } else { _794 = _788; } uint _834; uint _835; uint _836; if (!_432) { float _824 = fma(_751, spvFMul(fast::max(0.0, as_type(_794)), 1.0 / _433), spvFMul(_414, spvFMul(_751, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_787), _353, fma(as_type(_786), _344, spvFMul(_336, _738))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _434))))); _834 = as_type(spvFMul(as_type(cbuf_56.data[_693]), _824)); _835 = as_type(spvFMul(as_type(cbuf_56.data[_689]), _824)); _836 = as_type(spvFMul(as_type(cbuf_56.data[_685]), _824)); } else { _834 = _787; _835 = _789; _836 = _786; } uint _853 = 52u + buf1_dword_off; uint _857 = 53u + buf1_dword_off; uint _861 = 54u + buf1_dword_off; uint _865 = 55u + buf1_dword_off; float _876 = fma(-_267, _269, as_type(cbuf_56.data[50u + buf1_dword_off])); float _879 = fma(-_298, _269, as_type(cbuf_56.data[49u + buf1_dword_off])); float _883 = fma(-_302, _269, as_type(cbuf_56.data[48u + buf1_dword_off])); float _886 = rsqrt(fma(_883, _883, fma(_879, _879, spvFMul(_876, _876)))); float _887 = spvFMul(_876, _886); float _902 = spvFMul(_879, _886); float _908 = spvFMul(_883, _886); float _913 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_865]), _365), 1.0 / fma(_365, 0.01000213623046875, as_type(cbuf_56.data[_865])))); float _931 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_883, _883, fma(_879, _879, spvFMul(_876, _876)))), 0.0, 1.0))); float _938 = fma(_352, _908, fma(_343, _902, spvFMul(_335, _887))); float _939 = spvFMul(_931, _931); float _940 = spvFMul(exp2(spvFMul(spvFMul(0.25, _913), log2(fast::clamp(fma(_388, _908, fma(_378, _902, spvFMul(_370, _887))), 0.0, 1.0)))), fma(0.125, _913, 0.25)); uint _944; if (_432) { _944 = as_type(fast::clamp(fast::max(_938, _938), 0.0, 1.0)); } else { _944 = as_type(_434); } uint _957; uint _958; uint _959; uint _960; if (_432) { float _946 = spvFMul(_939, as_type(_944)); _957 = as_type(spvFMul(as_type(cbuf_56.data[_853]), _946)); _958 = as_type(spvFMul(as_type(cbuf_56.data[_861]), _946)); _959 = as_type(spvFMul(as_type(cbuf_56.data[_857]), _946)); _960 = as_type(_946); } else { _957 = as_type(_931); _958 = as_type(_344); _959 = as_type(_353); _960 = _944; } uint _964; if (!_432) { _964 = as_type(fma(_141, 10.0, _938)); } else { _964 = _957; } uint _1005; uint _1006; uint _1007; if (!_432) { float _995 = fma(_939, spvFMul(fast::max(0.0, as_type(_964)), 1.0 / _433), spvFMul(_414, spvFMul(_939, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_908, as_type(_959), fma(_902, as_type(_958), spvFMul(_336, _887))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), as_type(_960)))))); _1005 = as_type(spvFMul(as_type(cbuf_56.data[_861]), _995)); _1006 = as_type(spvFMul(as_type(cbuf_56.data[_857]), _995)); _1007 = as_type(spvFMul(as_type(cbuf_56.data[_853]), _995)); } else { _1005 = _958; _1006 = _959; _1007 = _964; } float _1021 = spvFAdd(spvFAdd(spvFAdd(as_type(_501), as_type(_658)), as_type(_836)), as_type(_1007)); float _1023 = spvFAdd(spvFAdd(spvFAdd(as_type(_500), as_type(_657)), as_type(_835)), as_type(_1006)); float _1025 = spvFAdd(spvFAdd(spvFAdd(as_type(_499), as_type(_656)), as_type(_834)), as_type(_1005)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_429, spvFMul(_428, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _940), _939, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _769), _751, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _438), _437, spvFMul(_573, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _591))))))); out.frag_color1.y = spvFMul(_430, spvFMul(_428, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _940), _939, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _769), _751, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _438), _437, spvFMul(_573, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _591))))))); out.frag_color1.z = spvFMul(_431, spvFMul(_428, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _940), _939, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _769), _751, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _438), _437, spvFMul(_573, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _591))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_428, spvFSub(_1021, spvFMul(spvFMul(_429, _1021), 0.5))); out.frag_color0.y = spvFMul(_428, spvFSub(_1023, spvFMul(spvFMul(_430, _1023), 0.5))); out.frag_color0.z = spvFMul(_428, spvFSub(_1025, spvFMul(spvFMul(_431, _1025), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xd75fe2ff [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0010 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 4 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 36 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[180]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _133 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _134 = _133.x; float4 _139 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _147 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _149 = _147.y; float4 _154 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _155 = _154.x; float _156 = _154.y; float _157 = _154.z; float _228 = fma(2.0, _139.z, -1.0); float _246 = fma(2.0, _139.y, -1.0); float _267 = fma(2.0, _139.x, -1.0); float _275 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _134, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _277 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _134, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _306 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _134, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _307 = spvFMul(_275, _277); float _308 = rsqrt(fma(_267, _267, fma(_246, _246, spvFMul(_228, _228)))); float _310 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _134, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _311 = spvFMul(_306, _277); float _313 = spvFMul(_228, _308); float _314 = spvFMul(_310, _277); float _316 = spvFMul(_246, _308); float _320 = spvFMul(_267, _308); float _325 = rsqrt(fma(_314, _314, fma(_311, _311, spvFMul(_307, _307)))); uint _326 = 4u + buf1_dword_off; uint _329 = 5u + buf1_dword_off; uint _332 = 6u + buf1_dword_off; uint _335 = 7u + buf1_dword_off; float _343 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _320, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _316, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _313))); float _344 = spvFMul(_307, _325); float _347 = fma(-_275, _277, as_type(cbuf_56.data[2u + buf1_dword_off])); float _351 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _320, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _316, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _313))); float _352 = spvFMul(_311, _325); float _357 = fma(-_306, _277, as_type(cbuf_56.data[1u + buf1_dword_off])); float _360 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _320, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _316, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _313))); float _361 = spvFMul(_314, _325); float _366 = fma(-_310, _277, as_type(cbuf_56.data[0u + buf1_dword_off])); float _371 = spvFMul(fma(_360, _361, fma(_351, _352, spvFMul(_343, _344))), 2.0); float _373 = exp2(spvFMul(13.0, _147.x)); float _375 = rsqrt(fma(_366, _366, fma(_357, _357, spvFMul(_347, _347)))); float _378 = fma(_307, _325, -spvFMul(_343, _371)); float _379 = spvFMul(_347, _375); float _386 = fma(_311, _325, -spvFMul(_351, _371)); float _389 = spvFMul(_357, _375); float _396 = fma(_314, _325, -spvFMul(_360, _371)); float _399 = spvFMul(_366, _375); float _407 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_335]), _373), 1.0 / fma(_373, 0.01000213623046875, as_type(cbuf_56.data[_335])))); float _422 = spvFMul(10.0, _149); float _424 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_361, _360, fma(-_352, _351, spvFMul(_343, -_344)))))); float _426 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_366, _366, fma(_357, _357, spvFMul(_347, _347)))), 0.0, 1.0))); float _427 = exp2(spvFMul(spvFMul(0.25, _407), log2(fast::clamp(fma(_396, _399, fma(_386, _389, spvFMul(_378, _379))), 0.0, 1.0)))); float4 _435 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _436 = _435.x; float _437 = spvFMul(_155, _155); float _438 = spvFMul(_156, _156); float _439 = spvFMul(_157, _157); bool _440 = _422 == 0.0; float _441 = fma(2.0, _422, 1.0); float _442 = spvFMul(_424, _424); float _444 = fma(_360, _399, fma(_351, _389, spvFMul(_343, _379))); float _445 = spvFMul(_426, _426); float _446 = spvFMul(_427, fma(0.125, _407, 0.25)); uint _450; if (_440) { _450 = as_type(fast::clamp(fast::max(_444, _444), 0.0, 1.0)); } else { _450 = as_type(_379); } uint _462; uint _463; uint _464; if (_440) { float _452 = spvFMul(_445, as_type(_450)); _462 = as_type(spvFMul(as_type(cbuf_56.data[_332]), _452)); _463 = as_type(spvFMul(as_type(cbuf_56.data[_329]), _452)); _464 = as_type(spvFMul(as_type(cbuf_56.data[_326]), _452)); } else { _462 = as_type(_427); _463 = as_type(_399); _464 = _450; } uint _468; if (!_440) { _468 = as_type(fma(_149, 10.0, _444)); } else { _468 = _462; } uint _507; uint _508; uint _509; if (!_440) { float _497 = fma(_445, spvFMul(fast::max(0.0, as_type(_468)), 1.0 / _441), spvFMul(_422, spvFMul(_445, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_463), _361, fma(_389, _352, spvFMul(_344, as_type(_464)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _442))))); _507 = as_type(spvFMul(as_type(cbuf_56.data[_332]), _497)); _508 = as_type(spvFMul(as_type(cbuf_56.data[_329]), _497)); _509 = as_type(spvFMul(as_type(cbuf_56.data[_326]), _497)); } else { _507 = _468; _508 = _463; _509 = _464; } uint _532 = 20u + buf1_dword_off; uint _535 = 21u + buf1_dword_off; uint _538 = 22u + buf1_dword_off; uint _542 = 23u + buf1_dword_off; float _553 = fma(-_310, _277, as_type(cbuf_56.data[16u + buf1_dword_off])); float _556 = fma(-_306, _277, as_type(cbuf_56.data[17u + buf1_dword_off])); float _559 = fma(-_275, _277, as_type(cbuf_56.data[18u + buf1_dword_off])); float _563 = rsqrt(fma(_553, _553, fma(_556, _556, spvFMul(_559, _559)))); float _564 = spvFMul(_553, _563); float _566 = spvFMul(_556, _563); float _568 = spvFMul(_559, _563); float _571 = fma(_360, _564, fma(_351, _566, spvFMul(_343, _568))); float _580 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_553, _553, fma(_556, _556, spvFMul(_559, _559)))), 0.0, 1.0))); float _581 = spvFMul(_580, _580); float _588 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_542]), _373), 1.0 / fma(_373, 0.01000213623046875, as_type(cbuf_56.data[_542])))); float _596 = exp2(spvFMul(spvFMul(0.25, _588), log2(fast::clamp(fma(_396, _564, fma(_386, _566, spvFMul(_378, _568))), 0.0, 1.0)))); float _599 = spvFMul(_596, fma(0.125, _588, 0.25)); uint _603; if (_440) { _603 = as_type(fast::clamp(fast::max(_571, _571), 0.0, 1.0)); } else { _603 = as_type(_596); } uint _616; uint _617; uint _618; uint _619; if (_440) { float _605 = spvFMul(_581, as_type(_603)); _616 = as_type(spvFMul(as_type(cbuf_56.data[_532]), _605)); _617 = as_type(spvFMul(as_type(cbuf_56.data[_538]), _605)); _618 = as_type(_605); _619 = as_type(spvFMul(as_type(cbuf_56.data[_535]), _605)); } else { _616 = as_type(_566); _617 = as_type(_564); _618 = _603; _619 = as_type(_571); } uint _624; if (!_440) { _624 = as_type(fma(_149, 10.0, as_type(_619))); } else { _624 = _618; } uint _664; uint _665; uint _666; if (!_440) { float _654 = fma(_581, spvFMul(fast::max(0.0, as_type(_624)), 1.0 / _441), spvFMul(_422, spvFMul(_581, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_617), _361, fma(as_type(_616), _352, spvFMul(_344, _568))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _442))))); _664 = as_type(spvFMul(as_type(cbuf_56.data[_538]), _654)); _665 = as_type(spvFMul(as_type(cbuf_56.data[_535]), _654)); _666 = as_type(spvFMul(as_type(cbuf_56.data[_532]), _654)); } else { _664 = _617; _665 = _619; _666 = _616; } uint _693 = 36u + buf1_dword_off; uint _697 = 37u + buf1_dword_off; uint _701 = 38u + buf1_dword_off; uint _705 = 39u + buf1_dword_off; float _731 = fma(-_310, _277, as_type(cbuf_56.data[32u + buf1_dword_off])); float _734 = fma(-_306, _277, as_type(cbuf_56.data[33u + buf1_dword_off])); float _737 = fma(-_275, _277, as_type(cbuf_56.data[34u + buf1_dword_off])); float _741 = rsqrt(fma(_731, _731, fma(_734, _734, spvFMul(_737, _737)))); float _742 = spvFMul(_731, _741); float _744 = spvFMul(_734, _741); float _746 = spvFMul(_737, _741); float _749 = fma(_360, _742, fma(_351, _744, spvFMul(_343, _746))); float _758 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_731, _731, fma(_734, _734, spvFMul(_737, _737)))), 0.0, 1.0))); float _759 = spvFMul(_758, _758); float _766 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_705]), _373), 1.0 / fma(_373, 0.01000213623046875, as_type(cbuf_56.data[_705])))); float _774 = exp2(spvFMul(spvFMul(0.25, _766), log2(fast::clamp(fma(_396, _742, fma(_386, _744, spvFMul(_378, _746))), 0.0, 1.0)))); float _777 = spvFMul(_774, fma(0.125, _766, 0.25)); uint _781; if (_440) { _781 = as_type(fast::clamp(fast::max(_749, _749), 0.0, 1.0)); } else { _781 = as_type(_774); } uint _794; uint _795; uint _796; uint _797; if (_440) { float _783 = spvFMul(_759, as_type(_781)); _794 = as_type(spvFMul(as_type(cbuf_56.data[_693]), _783)); _795 = as_type(spvFMul(as_type(cbuf_56.data[_701]), _783)); _796 = as_type(_783); _797 = as_type(spvFMul(as_type(cbuf_56.data[_697]), _783)); } else { _794 = as_type(_744); _795 = as_type(_742); _796 = _781; _797 = as_type(_749); } uint _802; if (!_440) { _802 = as_type(fma(_149, 10.0, as_type(_797))); } else { _802 = _796; } uint _842; uint _843; uint _844; if (!_440) { float _832 = fma(_759, spvFMul(fast::max(0.0, as_type(_802)), 1.0 / _441), spvFMul(_422, spvFMul(_759, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_795), _361, fma(as_type(_794), _352, spvFMul(_344, _746))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _442))))); _842 = as_type(spvFMul(as_type(cbuf_56.data[_701]), _832)); _843 = as_type(spvFMul(as_type(cbuf_56.data[_697]), _832)); _844 = as_type(spvFMul(as_type(cbuf_56.data[_693]), _832)); } else { _842 = _795; _843 = _797; _844 = _794; } uint _873 = 52u + buf1_dword_off; uint _877 = 53u + buf1_dword_off; uint _881 = 54u + buf1_dword_off; uint _885 = 55u + buf1_dword_off; float _905 = fma(-_310, _277, as_type(cbuf_56.data[48u + buf1_dword_off])); float _908 = fma(-_306, _277, as_type(cbuf_56.data[49u + buf1_dword_off])); float _911 = fma(-_275, _277, as_type(cbuf_56.data[50u + buf1_dword_off])); float _915 = rsqrt(fma(_905, _905, fma(_908, _908, spvFMul(_911, _911)))); float _916 = spvFMul(_905, _915); float _918 = spvFMul(_908, _915); float _920 = spvFMul(_911, _915); float _923 = fma(_360, _916, fma(_351, _918, spvFMul(_343, _920))); float _932 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_905, _905, fma(_908, _908, spvFMul(_911, _911)))), 0.0, 1.0))); float _933 = spvFMul(_932, _932); float _940 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_885]), _373), 1.0 / fma(_373, 0.01000213623046875, as_type(cbuf_56.data[_885])))); float _948 = exp2(spvFMul(spvFMul(0.25, _940), log2(fast::clamp(fma(_396, _916, fma(_386, _918, spvFMul(_378, _920))), 0.0, 1.0)))); float _951 = spvFMul(_948, fma(0.125, _940, 0.25)); uint _955; if (_440) { _955 = as_type(fast::clamp(fast::max(_923, _923), 0.0, 1.0)); } else { _955 = as_type(_948); } uint _968; uint _969; uint _970; uint _971; if (_440) { float _957 = spvFMul(_933, as_type(_955)); _968 = as_type(spvFMul(as_type(cbuf_56.data[_873]), _957)); _969 = as_type(spvFMul(as_type(cbuf_56.data[_881]), _957)); _970 = as_type(_957); _971 = as_type(spvFMul(as_type(cbuf_56.data[_877]), _957)); } else { _968 = as_type(_918); _969 = as_type(_916); _970 = _955; _971 = as_type(_923); } uint _976; if (!_440) { _976 = as_type(fma(_149, 10.0, as_type(_971))); } else { _976 = _970; } uint _1016; uint _1017; uint _1018; if (!_440) { float _1006 = fma(_933, spvFMul(fast::max(0.0, as_type(_976)), 1.0 / _441), spvFMul(_422, spvFMul(_933, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_969), _361, fma(as_type(_968), _352, spvFMul(_344, _920))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _442))))); _1016 = as_type(spvFMul(as_type(cbuf_56.data[_881]), _1006)); _1017 = as_type(spvFMul(as_type(cbuf_56.data[_877]), _1006)); _1018 = as_type(spvFMul(as_type(cbuf_56.data[_873]), _1006)); } else { _1016 = _969; _1017 = _971; _1018 = _968; } uint _1036 = 68u + buf1_dword_off; uint _1040 = 69u + buf1_dword_off; uint _1044 = 70u + buf1_dword_off; uint _1048 = 71u + buf1_dword_off; float _1059 = fma(-_275, _277, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1062 = fma(-_306, _277, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1066 = fma(-_310, _277, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1069 = rsqrt(fma(_1066, _1066, fma(_1062, _1062, spvFMul(_1059, _1059)))); float _1070 = spvFMul(_1059, _1069); float _1085 = spvFMul(_1062, _1069); float _1091 = spvFMul(_1066, _1069); float _1096 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1048]), _373), 1.0 / fma(_373, 0.01000213623046875, as_type(cbuf_56.data[_1048])))); float _1114 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1066, _1066, fma(_1062, _1062, spvFMul(_1059, _1059)))), 0.0, 1.0))); float _1121 = fma(_360, _1091, fma(_351, _1085, spvFMul(_343, _1070))); float _1122 = spvFMul(_1114, _1114); float _1123 = spvFMul(exp2(spvFMul(spvFMul(0.25, _1096), log2(fast::clamp(fma(_396, _1091, fma(_386, _1085, spvFMul(_378, _1070))), 0.0, 1.0)))), fma(0.125, _1096, 0.25)); uint _1127; if (_440) { _1127 = as_type(fast::clamp(fast::max(_1121, _1121), 0.0, 1.0)); } else { _1127 = as_type(_442); } uint _1140; uint _1141; uint _1142; uint _1143; if (_440) { float _1129 = spvFMul(_1122, as_type(_1127)); _1140 = as_type(spvFMul(as_type(cbuf_56.data[_1036]), _1129)); _1141 = as_type(spvFMul(as_type(cbuf_56.data[_1044]), _1129)); _1142 = as_type(spvFMul(as_type(cbuf_56.data[_1040]), _1129)); _1143 = as_type(_1129); } else { _1140 = as_type(_1114); _1141 = as_type(_352); _1142 = as_type(_361); _1143 = _1127; } uint _1147; if (!_440) { _1147 = as_type(fma(_149, 10.0, _1121)); } else { _1147 = _1140; } uint _1188; uint _1189; uint _1190; if (!_440) { float _1178 = fma(_1122, spvFMul(fast::max(0.0, as_type(_1147)), 1.0 / _441), spvFMul(_422, spvFMul(_1122, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1091, as_type(_1142), fma(_1085, as_type(_1141), spvFMul(_344, _1070))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), as_type(_1143)))))); _1188 = as_type(spvFMul(as_type(cbuf_56.data[_1044]), _1178)); _1189 = as_type(spvFMul(as_type(cbuf_56.data[_1040]), _1178)); _1190 = as_type(spvFMul(as_type(cbuf_56.data[_1036]), _1178)); } else { _1188 = _1141; _1189 = _1142; _1190 = _1147; } float _1204 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_509), as_type(_666)), as_type(_844)), as_type(_1018)), as_type(_1190)); float _1206 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_508), as_type(_665)), as_type(_843)), as_type(_1017)), as_type(_1189)); float _1208 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_507), as_type(_664)), as_type(_842)), as_type(_1016)), as_type(_1188)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_437, spvFMul(_436, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1123), _1122, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _951), _933, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _777), _759, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _446), _445, spvFMul(_581, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _599)))))))); out.frag_color1.y = spvFMul(_438, spvFMul(_436, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1123), _1122, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _951), _933, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _777), _759, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _446), _445, spvFMul(_581, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _599)))))))); out.frag_color1.z = spvFMul(_439, spvFMul(_436, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1123), _1122, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _951), _933, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _777), _759, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _446), _445, spvFMul(_581, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _599)))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_436, spvFSub(_1204, spvFMul(spvFMul(_437, _1204), 0.5))); out.frag_color0.y = spvFMul(_436, spvFSub(_1206, spvFMul(spvFMul(_438, _1206), 0.5))); out.frag_color0.z = spvFMul(_436, spvFSub(_1208, spvFMul(spvFMul(_439, _1208), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x7d07cf3 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 5 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 37 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _141 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _142 = _141.x; float4 _147 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _155 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _157 = _155.y; float4 _162 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _163 = _162.x; float _164 = _162.y; float _165 = _162.z; float _236 = fma(2.0, _147.z, -1.0); float _254 = fma(2.0, _147.y, -1.0); float _275 = fma(2.0, _147.x, -1.0); float _283 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _142, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _285 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _142, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _314 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _142, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _315 = spvFMul(_283, _285); float _316 = rsqrt(fma(_275, _275, fma(_254, _254, spvFMul(_236, _236)))); float _318 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _142, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _319 = spvFMul(_314, _285); float _321 = spvFMul(_236, _316); float _322 = spvFMul(_318, _285); float _324 = spvFMul(_254, _316); float _328 = spvFMul(_275, _316); float _333 = rsqrt(fma(_322, _322, fma(_319, _319, spvFMul(_315, _315)))); uint _334 = 4u + buf1_dword_off; uint _337 = 5u + buf1_dword_off; uint _340 = 6u + buf1_dword_off; uint _343 = 7u + buf1_dword_off; float _351 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _328, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _324, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _321))); float _352 = spvFMul(_315, _333); float _355 = fma(-_283, _285, as_type(cbuf_56.data[2u + buf1_dword_off])); float _359 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _328, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _324, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _321))); float _360 = spvFMul(_319, _333); float _365 = fma(-_314, _285, as_type(cbuf_56.data[1u + buf1_dword_off])); float _368 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _328, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _324, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _321))); float _369 = spvFMul(_322, _333); float _374 = fma(-_318, _285, as_type(cbuf_56.data[0u + buf1_dword_off])); float _379 = spvFMul(fma(_368, _369, fma(_359, _360, spvFMul(_351, _352))), 2.0); float _381 = exp2(spvFMul(13.0, _155.x)); float _383 = rsqrt(fma(_374, _374, fma(_365, _365, spvFMul(_355, _355)))); float _386 = fma(_315, _333, -spvFMul(_351, _379)); float _387 = spvFMul(_355, _383); float _394 = fma(_319, _333, -spvFMul(_359, _379)); float _397 = spvFMul(_365, _383); float _404 = fma(_322, _333, -spvFMul(_368, _379)); float _407 = spvFMul(_374, _383); float _415 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_343]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_343])))); float _430 = spvFMul(10.0, _157); float _432 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_369, _368, fma(-_360, _359, spvFMul(_351, -_352)))))); float _434 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_374, _374, fma(_365, _365, spvFMul(_355, _355)))), 0.0, 1.0))); float _435 = exp2(spvFMul(spvFMul(0.25, _415), log2(fast::clamp(fma(_404, _407, fma(_394, _397, spvFMul(_386, _387))), 0.0, 1.0)))); float4 _443 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _444 = _443.x; float _445 = spvFMul(_163, _163); float _446 = spvFMul(_164, _164); float _447 = spvFMul(_165, _165); bool _448 = _430 == 0.0; float _449 = fma(2.0, _430, 1.0); float _450 = spvFMul(_432, _432); float _452 = fma(_368, _407, fma(_359, _397, spvFMul(_351, _387))); float _453 = spvFMul(_434, _434); float _454 = spvFMul(_435, fma(0.125, _415, 0.25)); uint _458; if (_448) { _458 = as_type(fast::clamp(fast::max(_452, _452), 0.0, 1.0)); } else { _458 = as_type(_387); } uint _470; uint _471; uint _472; if (_448) { float _460 = spvFMul(_453, as_type(_458)); _470 = as_type(spvFMul(as_type(cbuf_56.data[_340]), _460)); _471 = as_type(spvFMul(as_type(cbuf_56.data[_337]), _460)); _472 = as_type(spvFMul(as_type(cbuf_56.data[_334]), _460)); } else { _470 = as_type(_435); _471 = as_type(_407); _472 = _458; } uint _476; if (!_448) { _476 = as_type(fma(_157, 10.0, _452)); } else { _476 = _470; } uint _515; uint _516; uint _517; if (!_448) { float _505 = fma(_453, spvFMul(fast::max(0.0, as_type(_476)), 1.0 / _449), spvFMul(_430, spvFMul(_453, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_471), _369, fma(_397, _360, spvFMul(_352, as_type(_472)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _450))))); _515 = as_type(spvFMul(as_type(cbuf_56.data[_340]), _505)); _516 = as_type(spvFMul(as_type(cbuf_56.data[_337]), _505)); _517 = as_type(spvFMul(as_type(cbuf_56.data[_334]), _505)); } else { _515 = _476; _516 = _471; _517 = _472; } uint _540 = 20u + buf1_dword_off; uint _543 = 21u + buf1_dword_off; uint _546 = 22u + buf1_dword_off; uint _550 = 23u + buf1_dword_off; float _561 = fma(-_318, _285, as_type(cbuf_56.data[16u + buf1_dword_off])); float _564 = fma(-_314, _285, as_type(cbuf_56.data[17u + buf1_dword_off])); float _567 = fma(-_283, _285, as_type(cbuf_56.data[18u + buf1_dword_off])); float _571 = rsqrt(fma(_561, _561, fma(_564, _564, spvFMul(_567, _567)))); float _572 = spvFMul(_561, _571); float _574 = spvFMul(_564, _571); float _576 = spvFMul(_567, _571); float _579 = fma(_368, _572, fma(_359, _574, spvFMul(_351, _576))); float _588 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_561, _561, fma(_564, _564, spvFMul(_567, _567)))), 0.0, 1.0))); float _589 = spvFMul(_588, _588); float _596 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_550]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_550])))); float _604 = exp2(spvFMul(spvFMul(0.25, _596), log2(fast::clamp(fma(_404, _572, fma(_394, _574, spvFMul(_386, _576))), 0.0, 1.0)))); float _607 = spvFMul(_604, fma(0.125, _596, 0.25)); uint _611; if (_448) { _611 = as_type(fast::clamp(fast::max(_579, _579), 0.0, 1.0)); } else { _611 = as_type(_604); } uint _624; uint _625; uint _626; uint _627; if (_448) { float _613 = spvFMul(_589, as_type(_611)); _624 = as_type(spvFMul(as_type(cbuf_56.data[_540]), _613)); _625 = as_type(spvFMul(as_type(cbuf_56.data[_546]), _613)); _626 = as_type(_613); _627 = as_type(spvFMul(as_type(cbuf_56.data[_543]), _613)); } else { _624 = as_type(_574); _625 = as_type(_572); _626 = _611; _627 = as_type(_579); } uint _632; if (!_448) { _632 = as_type(fma(_157, 10.0, as_type(_627))); } else { _632 = _626; } uint _672; uint _673; uint _674; if (!_448) { float _662 = fma(_589, spvFMul(fast::max(0.0, as_type(_632)), 1.0 / _449), spvFMul(_430, spvFMul(_589, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_625), _369, fma(as_type(_624), _360, spvFMul(_352, _576))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _450))))); _672 = as_type(spvFMul(as_type(cbuf_56.data[_546]), _662)); _673 = as_type(spvFMul(as_type(cbuf_56.data[_543]), _662)); _674 = as_type(spvFMul(as_type(cbuf_56.data[_540]), _662)); } else { _672 = _625; _673 = _627; _674 = _624; } uint _701 = 36u + buf1_dword_off; uint _705 = 37u + buf1_dword_off; uint _709 = 38u + buf1_dword_off; uint _713 = 39u + buf1_dword_off; float _739 = fma(-_318, _285, as_type(cbuf_56.data[32u + buf1_dword_off])); float _742 = fma(-_314, _285, as_type(cbuf_56.data[33u + buf1_dword_off])); float _745 = fma(-_283, _285, as_type(cbuf_56.data[34u + buf1_dword_off])); float _749 = rsqrt(fma(_739, _739, fma(_742, _742, spvFMul(_745, _745)))); float _750 = spvFMul(_739, _749); float _752 = spvFMul(_742, _749); float _754 = spvFMul(_745, _749); float _757 = fma(_368, _750, fma(_359, _752, spvFMul(_351, _754))); float _766 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_739, _739, fma(_742, _742, spvFMul(_745, _745)))), 0.0, 1.0))); float _767 = spvFMul(_766, _766); float _774 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_713]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_713])))); float _782 = exp2(spvFMul(spvFMul(0.25, _774), log2(fast::clamp(fma(_404, _750, fma(_394, _752, spvFMul(_386, _754))), 0.0, 1.0)))); float _785 = spvFMul(_782, fma(0.125, _774, 0.25)); uint _789; if (_448) { _789 = as_type(fast::clamp(fast::max(_757, _757), 0.0, 1.0)); } else { _789 = as_type(_782); } uint _802; uint _803; uint _804; uint _805; if (_448) { float _791 = spvFMul(_767, as_type(_789)); _802 = as_type(spvFMul(as_type(cbuf_56.data[_701]), _791)); _803 = as_type(spvFMul(as_type(cbuf_56.data[_709]), _791)); _804 = as_type(_791); _805 = as_type(spvFMul(as_type(cbuf_56.data[_705]), _791)); } else { _802 = as_type(_752); _803 = as_type(_750); _804 = _789; _805 = as_type(_757); } uint _810; if (!_448) { _810 = as_type(fma(_157, 10.0, as_type(_805))); } else { _810 = _804; } uint _850; uint _851; uint _852; if (!_448) { float _840 = fma(_767, spvFMul(fast::max(0.0, as_type(_810)), 1.0 / _449), spvFMul(_430, spvFMul(_767, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_803), _369, fma(as_type(_802), _360, spvFMul(_352, _754))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _450))))); _850 = as_type(spvFMul(as_type(cbuf_56.data[_709]), _840)); _851 = as_type(spvFMul(as_type(cbuf_56.data[_705]), _840)); _852 = as_type(spvFMul(as_type(cbuf_56.data[_701]), _840)); } else { _850 = _803; _851 = _805; _852 = _802; } uint _881 = 52u + buf1_dword_off; uint _885 = 53u + buf1_dword_off; uint _889 = 54u + buf1_dword_off; uint _893 = 55u + buf1_dword_off; float _913 = fma(-_318, _285, as_type(cbuf_56.data[48u + buf1_dword_off])); float _916 = fma(-_314, _285, as_type(cbuf_56.data[49u + buf1_dword_off])); float _919 = fma(-_283, _285, as_type(cbuf_56.data[50u + buf1_dword_off])); float _923 = rsqrt(fma(_913, _913, fma(_916, _916, spvFMul(_919, _919)))); float _924 = spvFMul(_913, _923); float _926 = spvFMul(_916, _923); float _928 = spvFMul(_919, _923); float _931 = fma(_368, _924, fma(_359, _926, spvFMul(_351, _928))); float _940 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_913, _913, fma(_916, _916, spvFMul(_919, _919)))), 0.0, 1.0))); float _941 = spvFMul(_940, _940); float _948 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_893]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_893])))); float _956 = exp2(spvFMul(spvFMul(0.25, _948), log2(fast::clamp(fma(_404, _924, fma(_394, _926, spvFMul(_386, _928))), 0.0, 1.0)))); float _959 = spvFMul(_956, fma(0.125, _948, 0.25)); uint _963; if (_448) { _963 = as_type(fast::clamp(fast::max(_931, _931), 0.0, 1.0)); } else { _963 = as_type(_956); } uint _976; uint _977; uint _978; uint _979; if (_448) { float _965 = spvFMul(_941, as_type(_963)); _976 = as_type(spvFMul(as_type(cbuf_56.data[_881]), _965)); _977 = as_type(spvFMul(as_type(cbuf_56.data[_889]), _965)); _978 = as_type(_965); _979 = as_type(spvFMul(as_type(cbuf_56.data[_885]), _965)); } else { _976 = as_type(_926); _977 = as_type(_924); _978 = _963; _979 = as_type(_931); } uint _984; if (!_448) { _984 = as_type(fma(_157, 10.0, as_type(_979))); } else { _984 = _978; } uint _1024; uint _1025; uint _1026; if (!_448) { float _1014 = fma(_941, spvFMul(fast::max(0.0, as_type(_984)), 1.0 / _449), spvFMul(_430, spvFMul(_941, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_977), _369, fma(as_type(_976), _360, spvFMul(_352, _928))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _450))))); _1024 = as_type(spvFMul(as_type(cbuf_56.data[_889]), _1014)); _1025 = as_type(spvFMul(as_type(cbuf_56.data[_885]), _1014)); _1026 = as_type(spvFMul(as_type(cbuf_56.data[_881]), _1014)); } else { _1024 = _977; _1025 = _979; _1026 = _976; } uint _1056 = 68u + buf1_dword_off; uint _1060 = 69u + buf1_dword_off; uint _1064 = 70u + buf1_dword_off; uint _1068 = 71u + buf1_dword_off; float _1088 = fma(-_318, _285, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1091 = fma(-_314, _285, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1094 = fma(-_283, _285, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1098 = rsqrt(fma(_1088, _1088, fma(_1091, _1091, spvFMul(_1094, _1094)))); float _1099 = spvFMul(_1088, _1098); float _1101 = spvFMul(_1091, _1098); float _1103 = spvFMul(_1094, _1098); float _1106 = fma(_368, _1099, fma(_359, _1101, spvFMul(_351, _1103))); float _1115 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1088, _1088, fma(_1091, _1091, spvFMul(_1094, _1094)))), 0.0, 1.0))); float _1116 = spvFMul(_1115, _1115); float _1123 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1068]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_1068])))); float _1131 = exp2(spvFMul(spvFMul(0.25, _1123), log2(fast::clamp(fma(_404, _1099, fma(_394, _1101, spvFMul(_386, _1103))), 0.0, 1.0)))); float _1134 = spvFMul(_1131, fma(0.125, _1123, 0.25)); uint _1138; if (_448) { _1138 = as_type(fast::clamp(fast::max(_1106, _1106), 0.0, 1.0)); } else { _1138 = as_type(_1131); } uint _1151; uint _1152; uint _1153; uint _1154; if (_448) { float _1140 = spvFMul(_1116, as_type(_1138)); _1151 = as_type(spvFMul(as_type(cbuf_56.data[_1056]), _1140)); _1152 = as_type(spvFMul(as_type(cbuf_56.data[_1064]), _1140)); _1153 = as_type(_1140); _1154 = as_type(spvFMul(as_type(cbuf_56.data[_1060]), _1140)); } else { _1151 = as_type(_1101); _1152 = as_type(_1099); _1153 = _1138; _1154 = as_type(_1106); } uint _1159; if (!_448) { _1159 = as_type(fma(_157, 10.0, as_type(_1154))); } else { _1159 = _1153; } uint _1199; uint _1200; uint _1201; if (!_448) { float _1189 = fma(_1116, spvFMul(fast::max(0.0, as_type(_1159)), 1.0 / _449), spvFMul(_430, spvFMul(_1116, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1152), _369, fma(as_type(_1151), _360, spvFMul(_352, _1103))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _450))))); _1199 = as_type(spvFMul(as_type(cbuf_56.data[_1064]), _1189)); _1200 = as_type(spvFMul(as_type(cbuf_56.data[_1060]), _1189)); _1201 = as_type(spvFMul(as_type(cbuf_56.data[_1056]), _1189)); } else { _1199 = _1152; _1200 = _1154; _1201 = _1151; } uint _1219 = 84u + buf1_dword_off; uint _1223 = 85u + buf1_dword_off; uint _1227 = 86u + buf1_dword_off; uint _1231 = 87u + buf1_dword_off; float _1242 = fma(-_283, _285, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1245 = fma(-_314, _285, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1249 = fma(-_318, _285, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1252 = rsqrt(fma(_1249, _1249, fma(_1245, _1245, spvFMul(_1242, _1242)))); float _1253 = spvFMul(_1242, _1252); float _1268 = spvFMul(_1245, _1252); float _1274 = spvFMul(_1249, _1252); float _1279 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1231]), _381), 1.0 / fma(_381, 0.01000213623046875, as_type(cbuf_56.data[_1231])))); float _1297 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[83u + buf1_dword_off]), fma(_1249, _1249, fma(_1245, _1245, spvFMul(_1242, _1242)))), 0.0, 1.0))); float _1304 = fma(_368, _1274, fma(_359, _1268, spvFMul(_351, _1253))); float _1305 = spvFMul(_1297, _1297); float _1306 = spvFMul(exp2(spvFMul(spvFMul(0.25, _1279), log2(fast::clamp(fma(_404, _1274, fma(_394, _1268, spvFMul(_386, _1253))), 0.0, 1.0)))), fma(0.125, _1279, 0.25)); uint _1310; if (_448) { _1310 = as_type(fast::clamp(fast::max(_1304, _1304), 0.0, 1.0)); } else { _1310 = as_type(_450); } uint _1323; uint _1324; uint _1325; uint _1326; if (_448) { float _1312 = spvFMul(_1305, as_type(_1310)); _1323 = as_type(spvFMul(as_type(cbuf_56.data[_1219]), _1312)); _1324 = as_type(spvFMul(as_type(cbuf_56.data[_1227]), _1312)); _1325 = as_type(spvFMul(as_type(cbuf_56.data[_1223]), _1312)); _1326 = as_type(_1312); } else { _1323 = as_type(_1297); _1324 = as_type(_360); _1325 = as_type(_369); _1326 = _1310; } uint _1330; if (!_448) { _1330 = as_type(fma(_157, 10.0, _1304)); } else { _1330 = _1323; } uint _1371; uint _1372; uint _1373; if (!_448) { float _1361 = fma(_1305, spvFMul(fast::max(0.0, as_type(_1330)), 1.0 / _449), spvFMul(_430, spvFMul(_1305, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1274, as_type(_1325), fma(_1268, as_type(_1324), spvFMul(_352, _1253))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), as_type(_1326)))))); _1371 = as_type(spvFMul(as_type(cbuf_56.data[_1227]), _1361)); _1372 = as_type(spvFMul(as_type(cbuf_56.data[_1223]), _1361)); _1373 = as_type(spvFMul(as_type(cbuf_56.data[_1219]), _1361)); } else { _1371 = _1324; _1372 = _1325; _1373 = _1330; } float _1387 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_517), as_type(_674)), as_type(_852)), as_type(_1026)), as_type(_1201)), as_type(_1373)); float _1389 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_516), as_type(_673)), as_type(_851)), as_type(_1025)), as_type(_1200)), as_type(_1372)); float _1391 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_515), as_type(_672)), as_type(_850)), as_type(_1024)), as_type(_1199)), as_type(_1371)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_445, spvFMul(_444, fma(spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1306), _1305, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1134), _1116, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _959), _941, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _785), _767, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _454), _453, spvFMul(_589, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _607))))))))); out.frag_color1.y = spvFMul(_446, spvFMul(_444, fma(spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1306), _1305, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1134), _1116, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _959), _941, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _785), _767, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _454), _453, spvFMul(_589, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _607))))))))); out.frag_color1.z = spvFMul(_447, spvFMul(_444, fma(spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1306), _1305, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1134), _1116, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _959), _941, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _785), _767, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _454), _453, spvFMul(_589, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _607))))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_444, spvFSub(_1387, spvFMul(spvFMul(_445, _1387), 0.5))); out.frag_color0.y = spvFMul(_444, spvFSub(_1389, spvFMul(spvFMul(_446, _1389), 0.5))); out.frag_color0.z = spvFMul(_444, spvFSub(_1391, spvFMul(spvFMul(_447, _1391), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xf2531727 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[252]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _149 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _150 = _149.x; float4 _155 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _163 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _165 = _163.y; float4 _170 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _171 = _170.x; float _172 = _170.y; float _173 = _170.z; float _244 = fma(2.0, _155.z, -1.0); float _262 = fma(2.0, _155.y, -1.0); float _283 = fma(2.0, _155.x, -1.0); float _291 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _150, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _293 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _150, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _322 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _150, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _323 = spvFMul(_291, _293); float _324 = rsqrt(fma(_283, _283, fma(_262, _262, spvFMul(_244, _244)))); float _326 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _150, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _327 = spvFMul(_322, _293); float _329 = spvFMul(_244, _324); float _330 = spvFMul(_326, _293); float _332 = spvFMul(_262, _324); float _336 = spvFMul(_283, _324); float _341 = rsqrt(fma(_330, _330, fma(_327, _327, spvFMul(_323, _323)))); uint _342 = 4u + buf1_dword_off; uint _345 = 5u + buf1_dword_off; uint _348 = 6u + buf1_dword_off; uint _351 = 7u + buf1_dword_off; float _359 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _336, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _332, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _329))); float _360 = spvFMul(_323, _341); float _363 = fma(-_291, _293, as_type(cbuf_56.data[2u + buf1_dword_off])); float _367 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _336, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _332, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _329))); float _368 = spvFMul(_327, _341); float _373 = fma(-_322, _293, as_type(cbuf_56.data[1u + buf1_dword_off])); float _376 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _336, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _332, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _329))); float _377 = spvFMul(_330, _341); float _382 = fma(-_326, _293, as_type(cbuf_56.data[0u + buf1_dword_off])); float _387 = spvFMul(fma(_376, _377, fma(_367, _368, spvFMul(_359, _360))), 2.0); float _389 = exp2(spvFMul(13.0, _163.x)); float _391 = rsqrt(fma(_382, _382, fma(_373, _373, spvFMul(_363, _363)))); float _394 = fma(_323, _341, -spvFMul(_359, _387)); float _395 = spvFMul(_363, _391); float _402 = fma(_327, _341, -spvFMul(_367, _387)); float _405 = spvFMul(_373, _391); float _412 = fma(_330, _341, -spvFMul(_376, _387)); float _415 = spvFMul(_382, _391); float _423 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_351]), _389), 1.0 / fma(_389, 0.01000213623046875, as_type(cbuf_56.data[_351])))); float _438 = spvFMul(10.0, _165); float _440 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_377, _376, fma(-_368, _367, spvFMul(_359, -_360)))))); float _442 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_382, _382, fma(_373, _373, spvFMul(_363, _363)))), 0.0, 1.0))); float _443 = exp2(spvFMul(spvFMul(0.25, _423), log2(fast::clamp(fma(_412, _415, fma(_402, _405, spvFMul(_394, _395))), 0.0, 1.0)))); float4 _451 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _452 = _451.x; float _453 = spvFMul(_171, _171); float _454 = spvFMul(_172, _172); float _455 = spvFMul(_173, _173); bool _456 = _438 == 0.0; float _457 = fma(2.0, _438, 1.0); float _458 = spvFMul(_440, _440); float _460 = fma(_376, _415, fma(_367, _405, spvFMul(_359, _395))); float _461 = spvFMul(_442, _442); float _462 = spvFMul(_443, fma(0.125, _423, 0.25)); uint _466; if (_456) { _466 = as_type(fast::clamp(fast::max(_460, _460), 0.0, 1.0)); } else { _466 = as_type(_395); } uint _478; uint _479; uint _480; if (_456) { float _468 = spvFMul(_461, as_type(_466)); _478 = as_type(spvFMul(as_type(cbuf_56.data[_348]), _468)); _479 = as_type(spvFMul(as_type(cbuf_56.data[_345]), _468)); _480 = as_type(spvFMul(as_type(cbuf_56.data[_342]), _468)); } else { _478 = as_type(_443); _479 = as_type(_415); _480 = _466; } uint _484; if (!_456) { _484 = as_type(fma(_165, 10.0, _460)); } else { _484 = _478; } uint _523; uint _524; uint _525; if (!_456) { float _513 = fma(_461, spvFMul(fast::max(0.0, as_type(_484)), 1.0 / _457), spvFMul(_438, spvFMul(_461, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_479), _377, fma(_405, _368, spvFMul(_360, as_type(_480)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _458))))); _523 = as_type(spvFMul(as_type(cbuf_56.data[_348]), _513)); _524 = as_type(spvFMul(as_type(cbuf_56.data[_345]), _513)); _525 = as_type(spvFMul(as_type(cbuf_56.data[_342]), _513)); } else { _523 = _484; _524 = _479; _525 = _480; } uint _548 = 20u + buf1_dword_off; uint _551 = 21u + buf1_dword_off; uint _554 = 22u + buf1_dword_off; uint _558 = 23u + buf1_dword_off; float _569 = fma(-_326, _293, as_type(cbuf_56.data[16u + buf1_dword_off])); float _572 = fma(-_322, _293, as_type(cbuf_56.data[17u + buf1_dword_off])); float _575 = fma(-_291, _293, as_type(cbuf_56.data[18u + buf1_dword_off])); float _579 = rsqrt(fma(_569, _569, fma(_572, _572, spvFMul(_575, _575)))); float _580 = spvFMul(_569, _579); float _582 = spvFMul(_572, _579); float _584 = spvFMul(_575, _579); float _587 = fma(_376, _580, fma(_367, _582, spvFMul(_359, _584))); float _596 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_569, _569, fma(_572, _572, spvFMul(_575, _575)))), 0.0, 1.0))); float _597 = spvFMul(_596, _596); float _604 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_558]), _389), 1.0 / fma(_389, 0.01000213623046875, as_type(cbuf_56.data[_558])))); float _612 = exp2(spvFMul(spvFMul(0.25, _604), log2(fast::clamp(fma(_412, _580, fma(_402, _582, spvFMul(_394, _584))), 0.0, 1.0)))); float _615 = spvFMul(_612, fma(0.125, _604, 0.25)); uint _619; if (_456) { _619 = as_type(fast::clamp(fast::max(_587, _587), 0.0, 1.0)); } else { _619 = as_type(_612); } uint _632; uint _633; uint _634; uint _635; if (_456) { float _621 = spvFMul(_597, as_type(_619)); _632 = as_type(spvFMul(as_type(cbuf_56.data[_548]), _621)); _633 = as_type(spvFMul(as_type(cbuf_56.data[_554]), _621)); _634 = as_type(_621); _635 = as_type(spvFMul(as_type(cbuf_56.data[_551]), _621)); } else { _632 = as_type(_582); _633 = as_type(_580); _634 = _619; _635 = as_type(_587); } uint _640; if (!_456) { _640 = as_type(fma(_165, 10.0, as_type(_635))); } else { _640 = _634; } uint _680; uint _681; uint _682; if (!_456) { float _670 = fma(_597, spvFMul(fast::max(0.0, as_type(_640)), 1.0 / _457), spvFMul(_438, spvFMul(_597, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_633), _377, fma(as_type(_632), _368, spvFMul(_360, _584))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _458))))); _680 = as_type(spvFMul(as_type(cbuf_56.data[_554]), _670)); _681 = as_type(spvFMul(as_type(cbuf_56.data[_551]), _670)); _682 = as_type(spvFMul(as_type(cbuf_56.data[_548]), _670)); } else { _680 = _633; _681 = _635; _682 = _632; } uint _709 = 36u + buf1_dword_off; uint _713 = 37u + buf1_dword_off; uint _717 = 38u + buf1_dword_off; uint _721 = 39u + buf1_dword_off; float _747 = fma(-_326, _293, as_type(cbuf_56.data[32u + buf1_dword_off])); float _750 = fma(-_322, _293, as_type(cbuf_56.data[33u + buf1_dword_off])); float _753 = fma(-_291, _293, as_type(cbuf_56.data[34u + buf1_dword_off])); float _757 = rsqrt(fma(_747, _747, fma(_750, _750, spvFMul(_753, _753)))); float _758 = spvFMul(_747, _757); float _760 = spvFMul(_750, _757); float _762 = spvFMul(_753, _757); float _765 = fma(_376, _758, fma(_367, _760, spvFMul(_359, _762))); float _774 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_747, _747, fma(_750, _750, spvFMul(_753, _753)))), 0.0, 1.0))); float _775 = spvFMul(_774, _774); float _782 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_721]), _389), 1.0 / fma(_389, 0.01000213623046875, as_type(cbuf_56.data[_721])))); float _790 = exp2(spvFMul(spvFMul(0.25, _782), log2(fast::clamp(fma(_412, _758, fma(_402, _760, spvFMul(_394, _762))), 0.0, 1.0)))); float _793 = spvFMul(_790, fma(0.125, _782, 0.25)); uint _797; if (_456) { _797 = as_type(fast::clamp(fast::max(_765, _765), 0.0, 1.0)); } else { _797 = as_type(_790); } uint _810; uint _811; uint _812; uint _813; if (_456) { float _799 = spvFMul(_775, as_type(_797)); _810 = as_type(spvFMul(as_type(cbuf_56.data[_709]), _799)); _811 = as_type(spvFMul(as_type(cbuf_56.data[_717]), _799)); _812 = as_type(_799); _813 = as_type(spvFMul(as_type(cbuf_56.data[_713]), _799)); } else { _810 = as_type(_760); _811 = as_type(_758); _812 = _797; _813 = as_type(_765); } uint _818; if (!_456) { _818 = as_type(fma(_165, 10.0, as_type(_813))); } else { _818 = _812; } uint _858; uint _859; uint _860; if (!_456) { float _848 = fma(_775, spvFMul(fast::max(0.0, as_type(_818)), 1.0 / _457), spvFMul(_438, spvFMul(_775, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_811), _377, fma(as_type(_810), _368, spvFMul(_360, _762))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _458))))); _858 = as_type(spvFMul(as_type(cbuf_56.data[_717]), _848)); _859 = as_type(spvFMul(as_type(cbuf_56.data[_713]), _848)); _860 = as_type(spvFMul(as_type(cbuf_56.data[_709]), _848)); } else { _858 = _811; _859 = _813; _860 = _810; } uint _889 = 52u + buf1_dword_off; uint _893 = 53u + buf1_dword_off; uint _897 = 54u + buf1_dword_off; uint _901 = 55u + buf1_dword_off; float _921 = fma(-_326, _293, as_type(cbuf_56.data[48u + buf1_dword_off])); float _924 = fma(-_322, _293, as_type(cbuf_56.data[49u + buf1_dword_off])); float _927 = fma(-_291, _293, as_type(cbuf_56.data[50u + buf1_dword_off])); float _931 = rsqrt(fma(_921, _921, fma(_924, _924, spvFMul(_927, _927)))); float _932 = spvFMul(_921, _931); float _934 = spvFMul(_924, _931); float _936 = spvFMul(_927, _931); float _939 = fma(_376, _932, fma(_367, _934, spvFMul(_359, _936))); float _948 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_921, _921, fma(_924, _924, spvFMul(_927, _927)))), 0.0, 1.0))); float _949 = spvFMul(_948, _948); float _956 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_901]), _389), 1.0 / fma(_389, 0.01000213623046875, as_type(cbuf_56.data[_901])))); float _964 = exp2(spvFMul(spvFMul(0.25, _956), log2(fast::clamp(fma(_412, _932, fma(_402, _934, spvFMul(_394, _936))), 0.0, 1.0)))); float _967 = spvFMul(_964, fma(0.125, _956, 0.25)); uint _971; if (_456) { _971 = as_type(fast::clamp(fast::max(_939, _939), 0.0, 1.0)); } else { _971 = as_type(_964); } uint _984; uint _985; uint _986; uint _987; if (_456) { float _973 = spvFMul(_949, as_type(_971)); _984 = as_type(spvFMul(as_type(cbuf_56.data[_889]), _973)); _985 = as_type(spvFMul(as_type(cbuf_56.data[_897]), _973)); _986 = as_type(_973); _987 = as_type(spvFMul(as_type(cbuf_56.data[_893]), _973)); } else { _984 = as_type(_934); _985 = as_type(_932); _986 = _971; _987 = as_type(_939); } uint _992; if (!_456) { _992 = as_type(fma(_165, 10.0, as_type(_987))); } else { _992 = _986; } uint _1032; uint _1033; uint _1034; if (!_456) { float _1022 = fma(_949, spvFMul(fast::max(0.0, as_type(_992)), 1.0 / _457), spvFMul(_438, spvFMul(_949, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_985), _377, fma(as_type(_984), _368, spvFMul(_360, _936))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _458))))); _1032 = as_type(spvFMul(as_type(cbuf_56.data[_897]), _1022)); _1033 = as_type(spvFMul(as_type(cbuf_56.data[_893]), _1022)); _1034 = as_type(spvFMul(as_type(cbuf_56.data[_889]), _1022)); } else { _1032 = _985; _1033 = _987; _1034 = _984; } uint _1064 = 68u + buf1_dword_off; uint _1068 = 69u + buf1_dword_off; uint _1072 = 70u + buf1_dword_off; uint _1076 = 71u + buf1_dword_off; float _1096 = fma(-_326, _293, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1099 = fma(-_322, _293, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1102 = fma(-_291, _293, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1106 = rsqrt(fma(_1096, _1096, fma(_1099, _1099, spvFMul(_1102, _1102)))); float _1107 = spvFMul(_1096, _1106); float _1109 = spvFMul(_1099, _1106); float _1111 = spvFMul(_1102, _1106); float _1114 = fma(_376, _1107, fma(_367, _1109, spvFMul(_359, _1111))); float _1123 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1096, _1096, fma(_1099, _1099, spvFMul(_1102, _1102)))), 0.0, 1.0))); float _1124 = spvFMul(_1123, _1123); float _1131 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1076]), _389), 1.0 / fma(_389, 0.01000213623046875, as_type(cbuf_56.data[_1076])))); float _1139 = exp2(spvFMul(spvFMul(0.25, _1131), log2(fast::clamp(fma(_412, _1107, fma(_402, _1109, spvFMul(_394, _1111))), 0.0, 1.0)))); float _1142 = spvFMul(_1139, fma(0.125, _1131, 0.25)); uint _1146; if (_456) { _1146 = as_type(fast::clamp(fast::max(_1114, _1114), 0.0, 1.0)); } else { _1146 = as_type(_1139); } uint _1159; uint _1160; uint _1161; uint _1162; if (_456) { float _1148 = spvFMul(_1124, as_type(_1146)); _1159 = as_type(spvFMul(as_type(cbuf_56.data[_1064]), _1148)); _1160 = as_type(spvFMul(as_type(cbuf_56.data[_1072]), _1148)); _1161 = as_type(_1148); _1162 = as_type(spvFMul(as_type(cbuf_56.data[_1068]), _1148)); } else { _1159 = as_type(_1109); _1160 = as_type(_1107); _1161 = _1146; _1162 = as_type(_1114); } uint _1167; if (!_456) { _1167 = as_type(fma(_165, 10.0, as_type(_1162))); } else { _1167 = _1161; } uint _1207; uint _1208; uint _1209; if (!_456) { float _1197 = fma(_1124, spvFMul(fast::max(0.0, as_type(_1167)), 1.0 / _457), spvFMul(_438, spvFMul(_1124, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1160), _377, fma(as_type(_1159), _368, spvFMul(_360, _1111))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _458))))); _1207 = as_type(spvFMul(as_type(cbuf_56.data[_1072]), _1197)); _1208 = as_type(spvFMul(as_type(cbuf_56.data[_1068]), _1197)); _1209 = as_type(spvFMul(as_type(cbuf_56.data[_1064]), _1197)); } else { _1207 = _1160; _1208 = _1162; _1209 = _1159; } uint _1239 = 84u + buf1_dword_off; uint _1243 = 85u + buf1_dword_off; uint _1247 = 86u + buf1_dword_off; uint _1251 = 87u + buf1_dword_off; float _1271 = fma(-_326, _293, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1274 = fma(-_322, _293, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1277 = fma(-_291, _293, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1281 = rsqrt(fma(_1271, _1271, fma(_1274, _1274, spvFMul(_1277, _1277)))); float _1282 = spvFMul(_1271, _1281); float _1284 = spvFMul(_1274, _1281); float _1286 = spvFMul(_1277, _1281); float _1289 = fma(_376, _1282, fma(_367, _1284, spvFMul(_359, _1286))); float _1298 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[83u + buf1_dword_off]), fma(_1271, _1271, fma(_1274, _1274, spvFMul(_1277, _1277)))), 0.0, 1.0))); float _1299 = spvFMul(_1298, _1298); float _1306 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1251]), _389), 1.0 / fma(_389, 0.01000213623046875, as_type(cbuf_56.data[_1251])))); float _1314 = exp2(spvFMul(spvFMul(0.25, _1306), log2(fast::clamp(fma(_412, _1282, fma(_402, _1284, spvFMul(_394, _1286))), 0.0, 1.0)))); float _1317 = spvFMul(_1314, fma(0.125, _1306, 0.25)); uint _1321; if (_456) { _1321 = as_type(fast::clamp(fast::max(_1289, _1289), 0.0, 1.0)); } else { _1321 = as_type(_1314); } uint _1334; uint _1335; uint _1336; uint _1337; if (_456) { float _1323 = spvFMul(_1299, as_type(_1321)); _1334 = as_type(spvFMul(as_type(cbuf_56.data[_1239]), _1323)); _1335 = as_type(spvFMul(as_type(cbuf_56.data[_1247]), _1323)); _1336 = as_type(_1323); _1337 = as_type(spvFMul(as_type(cbuf_56.data[_1243]), _1323)); } else { _1334 = as_type(_1284); _1335 = as_type(_1282); _1336 = _1321; _1337 = as_type(_1289); } uint _1342; if (!_456) { _1342 = as_type(fma(_165, 10.0, as_type(_1337))); } else { _1342 = _1336; } uint _1382; uint _1383; uint _1384; if (!_456) { float _1372 = fma(_1299, spvFMul(fast::max(0.0, as_type(_1342)), 1.0 / _457), spvFMul(_438, spvFMul(_1299, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1335), _377, fma(as_type(_1334), _368, spvFMul(_360, _1286))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _458))))); _1382 = as_type(spvFMul(as_type(cbuf_56.data[_1247]), _1372)); _1383 = as_type(spvFMul(as_type(cbuf_56.data[_1243]), _1372)); _1384 = as_type(spvFMul(as_type(cbuf_56.data[_1239]), _1372)); } else { _1382 = _1335; _1383 = _1337; _1384 = _1334; } uint _1402 = 100u + buf1_dword_off; uint _1406 = 101u + buf1_dword_off; uint _1410 = 102u + buf1_dword_off; uint _1414 = 103u + buf1_dword_off; float _1425 = fma(-_291, _293, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1428 = fma(-_322, _293, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1432 = fma(-_326, _293, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1435 = rsqrt(fma(_1432, _1432, fma(_1428, _1428, spvFMul(_1425, _1425)))); float _1436 = spvFMul(_1425, _1435); float _1451 = spvFMul(_1428, _1435); float _1457 = spvFMul(_1432, _1435); float _1462 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1414]), _389), 1.0 / fma(_389, 0.01000213623046875, as_type(cbuf_56.data[_1414])))); float _1480 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[99u + buf1_dword_off]), fma(_1432, _1432, fma(_1428, _1428, spvFMul(_1425, _1425)))), 0.0, 1.0))); float _1487 = fma(_376, _1457, fma(_367, _1451, spvFMul(_359, _1436))); float _1488 = spvFMul(_1480, _1480); float _1489 = spvFMul(exp2(spvFMul(spvFMul(0.25, _1462), log2(fast::clamp(fma(_412, _1457, fma(_402, _1451, spvFMul(_394, _1436))), 0.0, 1.0)))), fma(0.125, _1462, 0.25)); uint _1493; if (_456) { _1493 = as_type(fast::clamp(fast::max(_1487, _1487), 0.0, 1.0)); } else { _1493 = as_type(_458); } uint _1506; uint _1507; uint _1508; uint _1509; if (_456) { float _1495 = spvFMul(_1488, as_type(_1493)); _1506 = as_type(spvFMul(as_type(cbuf_56.data[_1402]), _1495)); _1507 = as_type(spvFMul(as_type(cbuf_56.data[_1410]), _1495)); _1508 = as_type(spvFMul(as_type(cbuf_56.data[_1406]), _1495)); _1509 = as_type(_1495); } else { _1506 = as_type(_1480); _1507 = as_type(_368); _1508 = as_type(_377); _1509 = _1493; } uint _1513; if (!_456) { _1513 = as_type(fma(_165, 10.0, _1487)); } else { _1513 = _1506; } uint _1554; uint _1555; uint _1556; if (!_456) { float _1544 = fma(_1488, spvFMul(fast::max(0.0, as_type(_1513)), 1.0 / _457), spvFMul(_438, spvFMul(_1488, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1457, as_type(_1508), fma(_1451, as_type(_1507), spvFMul(_360, _1436))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), as_type(_1509)))))); _1554 = as_type(spvFMul(as_type(cbuf_56.data[_1410]), _1544)); _1555 = as_type(spvFMul(as_type(cbuf_56.data[_1406]), _1544)); _1556 = as_type(spvFMul(as_type(cbuf_56.data[_1402]), _1544)); } else { _1554 = _1507; _1555 = _1508; _1556 = _1513; } float _1570 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_525), as_type(_682)), as_type(_860)), as_type(_1034)), as_type(_1209)), as_type(_1384)), as_type(_1556)); float _1572 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_524), as_type(_681)), as_type(_859)), as_type(_1033)), as_type(_1208)), as_type(_1383)), as_type(_1555)); float _1574 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_523), as_type(_680)), as_type(_858)), as_type(_1032)), as_type(_1207)), as_type(_1382)), as_type(_1554)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_453, spvFMul(_452, fma(spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1489), _1488, fma(spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1317), _1299, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1142), _1124, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _967), _949, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _793), _775, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _462), _461, spvFMul(_597, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _615)))))))))); out.frag_color1.y = spvFMul(_454, spvFMul(_452, fma(spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1489), _1488, fma(spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1317), _1299, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1142), _1124, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _967), _949, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _793), _775, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _462), _461, spvFMul(_597, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _615)))))))))); out.frag_color1.z = spvFMul(_455, spvFMul(_452, fma(spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1489), _1488, fma(spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1317), _1299, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1142), _1124, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _967), _949, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _793), _775, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _462), _461, spvFMul(_597, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _615)))))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_452, spvFSub(_1570, spvFMul(spvFMul(_453, _1570), 0.5))); out.frag_color0.y = spvFMul(_452, spvFSub(_1572, spvFMul(spvFMul(_454, _1572), 0.5))); out.frag_color0.z = spvFMul(_452, spvFSub(_1574, spvFMul(spvFMul(_455, _1574), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xc6edb19a [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[288]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _157 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _158 = _157.x; float4 _163 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _171 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _173 = _171.y; float4 _178 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _179 = _178.x; float _180 = _178.y; float _181 = _178.z; float _252 = fma(2.0, _163.z, -1.0); float _270 = fma(2.0, _163.y, -1.0); float _291 = fma(2.0, _163.x, -1.0); float _299 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _158, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _301 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _158, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _330 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _158, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _331 = spvFMul(_299, _301); float _332 = rsqrt(fma(_291, _291, fma(_270, _270, spvFMul(_252, _252)))); float _334 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _158, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _335 = spvFMul(_330, _301); float _337 = spvFMul(_252, _332); float _338 = spvFMul(_334, _301); float _340 = spvFMul(_270, _332); float _344 = spvFMul(_291, _332); float _349 = rsqrt(fma(_338, _338, fma(_335, _335, spvFMul(_331, _331)))); uint _350 = 4u + buf1_dword_off; uint _353 = 5u + buf1_dword_off; uint _356 = 6u + buf1_dword_off; uint _359 = 7u + buf1_dword_off; float _367 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _344, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _340, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _337))); float _368 = spvFMul(_331, _349); float _371 = fma(-_299, _301, as_type(cbuf_56.data[2u + buf1_dword_off])); float _375 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _344, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _340, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _337))); float _376 = spvFMul(_335, _349); float _381 = fma(-_330, _301, as_type(cbuf_56.data[1u + buf1_dword_off])); float _384 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _344, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _340, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _337))); float _385 = spvFMul(_338, _349); float _390 = fma(-_334, _301, as_type(cbuf_56.data[0u + buf1_dword_off])); float _395 = spvFMul(fma(_384, _385, fma(_375, _376, spvFMul(_367, _368))), 2.0); float _397 = exp2(spvFMul(13.0, _171.x)); float _399 = rsqrt(fma(_390, _390, fma(_381, _381, spvFMul(_371, _371)))); float _402 = fma(_331, _349, -spvFMul(_367, _395)); float _403 = spvFMul(_371, _399); float _410 = fma(_335, _349, -spvFMul(_375, _395)); float _413 = spvFMul(_381, _399); float _420 = fma(_338, _349, -spvFMul(_384, _395)); float _423 = spvFMul(_390, _399); float _431 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_359]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_359])))); float _446 = spvFMul(10.0, _173); float _448 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_385, _384, fma(-_376, _375, spvFMul(_367, -_368)))))); float _450 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_390, _390, fma(_381, _381, spvFMul(_371, _371)))), 0.0, 1.0))); float _451 = exp2(spvFMul(spvFMul(0.25, _431), log2(fast::clamp(fma(_420, _423, fma(_410, _413, spvFMul(_402, _403))), 0.0, 1.0)))); float4 _459 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _460 = _459.x; float _461 = spvFMul(_179, _179); float _462 = spvFMul(_180, _180); float _463 = spvFMul(_181, _181); bool _464 = _446 == 0.0; float _465 = fma(2.0, _446, 1.0); float _466 = spvFMul(_448, _448); float _468 = fma(_384, _423, fma(_375, _413, spvFMul(_367, _403))); float _469 = spvFMul(_450, _450); float _470 = spvFMul(_451, fma(0.125, _431, 0.25)); uint _474; if (_464) { _474 = as_type(fast::clamp(fast::max(_468, _468), 0.0, 1.0)); } else { _474 = as_type(_403); } uint _486; uint _487; uint _488; if (_464) { float _476 = spvFMul(_469, as_type(_474)); _486 = as_type(spvFMul(as_type(cbuf_56.data[_356]), _476)); _487 = as_type(spvFMul(as_type(cbuf_56.data[_353]), _476)); _488 = as_type(spvFMul(as_type(cbuf_56.data[_350]), _476)); } else { _486 = as_type(_451); _487 = as_type(_423); _488 = _474; } uint _492; if (!_464) { _492 = as_type(fma(_173, 10.0, _468)); } else { _492 = _486; } uint _531; uint _532; uint _533; if (!_464) { float _521 = fma(_469, spvFMul(fast::max(0.0, as_type(_492)), 1.0 / _465), spvFMul(_446, spvFMul(_469, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_487), _385, fma(_413, _376, spvFMul(_368, as_type(_488)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _466))))); _531 = as_type(spvFMul(as_type(cbuf_56.data[_356]), _521)); _532 = as_type(spvFMul(as_type(cbuf_56.data[_353]), _521)); _533 = as_type(spvFMul(as_type(cbuf_56.data[_350]), _521)); } else { _531 = _492; _532 = _487; _533 = _488; } uint _556 = 20u + buf1_dword_off; uint _559 = 21u + buf1_dword_off; uint _562 = 22u + buf1_dword_off; uint _566 = 23u + buf1_dword_off; float _577 = fma(-_334, _301, as_type(cbuf_56.data[16u + buf1_dword_off])); float _580 = fma(-_330, _301, as_type(cbuf_56.data[17u + buf1_dword_off])); float _583 = fma(-_299, _301, as_type(cbuf_56.data[18u + buf1_dword_off])); float _587 = rsqrt(fma(_577, _577, fma(_580, _580, spvFMul(_583, _583)))); float _588 = spvFMul(_577, _587); float _590 = spvFMul(_580, _587); float _592 = spvFMul(_583, _587); float _595 = fma(_384, _588, fma(_375, _590, spvFMul(_367, _592))); float _604 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_577, _577, fma(_580, _580, spvFMul(_583, _583)))), 0.0, 1.0))); float _605 = spvFMul(_604, _604); float _612 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_566]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_566])))); float _620 = exp2(spvFMul(spvFMul(0.25, _612), log2(fast::clamp(fma(_420, _588, fma(_410, _590, spvFMul(_402, _592))), 0.0, 1.0)))); float _623 = spvFMul(_620, fma(0.125, _612, 0.25)); uint _627; if (_464) { _627 = as_type(fast::clamp(fast::max(_595, _595), 0.0, 1.0)); } else { _627 = as_type(_620); } uint _640; uint _641; uint _642; uint _643; if (_464) { float _629 = spvFMul(_605, as_type(_627)); _640 = as_type(spvFMul(as_type(cbuf_56.data[_556]), _629)); _641 = as_type(spvFMul(as_type(cbuf_56.data[_562]), _629)); _642 = as_type(_629); _643 = as_type(spvFMul(as_type(cbuf_56.data[_559]), _629)); } else { _640 = as_type(_590); _641 = as_type(_588); _642 = _627; _643 = as_type(_595); } uint _648; if (!_464) { _648 = as_type(fma(_173, 10.0, as_type(_643))); } else { _648 = _642; } uint _688; uint _689; uint _690; if (!_464) { float _678 = fma(_605, spvFMul(fast::max(0.0, as_type(_648)), 1.0 / _465), spvFMul(_446, spvFMul(_605, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_641), _385, fma(as_type(_640), _376, spvFMul(_368, _592))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _466))))); _688 = as_type(spvFMul(as_type(cbuf_56.data[_562]), _678)); _689 = as_type(spvFMul(as_type(cbuf_56.data[_559]), _678)); _690 = as_type(spvFMul(as_type(cbuf_56.data[_556]), _678)); } else { _688 = _641; _689 = _643; _690 = _640; } uint _717 = 36u + buf1_dword_off; uint _721 = 37u + buf1_dword_off; uint _725 = 38u + buf1_dword_off; uint _729 = 39u + buf1_dword_off; float _755 = fma(-_334, _301, as_type(cbuf_56.data[32u + buf1_dword_off])); float _758 = fma(-_330, _301, as_type(cbuf_56.data[33u + buf1_dword_off])); float _761 = fma(-_299, _301, as_type(cbuf_56.data[34u + buf1_dword_off])); float _765 = rsqrt(fma(_755, _755, fma(_758, _758, spvFMul(_761, _761)))); float _766 = spvFMul(_755, _765); float _768 = spvFMul(_758, _765); float _770 = spvFMul(_761, _765); float _773 = fma(_384, _766, fma(_375, _768, spvFMul(_367, _770))); float _782 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_755, _755, fma(_758, _758, spvFMul(_761, _761)))), 0.0, 1.0))); float _783 = spvFMul(_782, _782); float _790 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_729]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_729])))); float _798 = exp2(spvFMul(spvFMul(0.25, _790), log2(fast::clamp(fma(_420, _766, fma(_410, _768, spvFMul(_402, _770))), 0.0, 1.0)))); float _801 = spvFMul(_798, fma(0.125, _790, 0.25)); uint _805; if (_464) { _805 = as_type(fast::clamp(fast::max(_773, _773), 0.0, 1.0)); } else { _805 = as_type(_798); } uint _818; uint _819; uint _820; uint _821; if (_464) { float _807 = spvFMul(_783, as_type(_805)); _818 = as_type(spvFMul(as_type(cbuf_56.data[_717]), _807)); _819 = as_type(spvFMul(as_type(cbuf_56.data[_725]), _807)); _820 = as_type(_807); _821 = as_type(spvFMul(as_type(cbuf_56.data[_721]), _807)); } else { _818 = as_type(_768); _819 = as_type(_766); _820 = _805; _821 = as_type(_773); } uint _826; if (!_464) { _826 = as_type(fma(_173, 10.0, as_type(_821))); } else { _826 = _820; } uint _866; uint _867; uint _868; if (!_464) { float _856 = fma(_783, spvFMul(fast::max(0.0, as_type(_826)), 1.0 / _465), spvFMul(_446, spvFMul(_783, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_819), _385, fma(as_type(_818), _376, spvFMul(_368, _770))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _466))))); _866 = as_type(spvFMul(as_type(cbuf_56.data[_725]), _856)); _867 = as_type(spvFMul(as_type(cbuf_56.data[_721]), _856)); _868 = as_type(spvFMul(as_type(cbuf_56.data[_717]), _856)); } else { _866 = _819; _867 = _821; _868 = _818; } uint _897 = 52u + buf1_dword_off; uint _901 = 53u + buf1_dword_off; uint _905 = 54u + buf1_dword_off; uint _909 = 55u + buf1_dword_off; float _929 = fma(-_334, _301, as_type(cbuf_56.data[48u + buf1_dword_off])); float _932 = fma(-_330, _301, as_type(cbuf_56.data[49u + buf1_dword_off])); float _935 = fma(-_299, _301, as_type(cbuf_56.data[50u + buf1_dword_off])); float _939 = rsqrt(fma(_929, _929, fma(_932, _932, spvFMul(_935, _935)))); float _940 = spvFMul(_929, _939); float _942 = spvFMul(_932, _939); float _944 = spvFMul(_935, _939); float _947 = fma(_384, _940, fma(_375, _942, spvFMul(_367, _944))); float _956 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_929, _929, fma(_932, _932, spvFMul(_935, _935)))), 0.0, 1.0))); float _957 = spvFMul(_956, _956); float _964 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_909]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_909])))); float _972 = exp2(spvFMul(spvFMul(0.25, _964), log2(fast::clamp(fma(_420, _940, fma(_410, _942, spvFMul(_402, _944))), 0.0, 1.0)))); float _975 = spvFMul(_972, fma(0.125, _964, 0.25)); uint _979; if (_464) { _979 = as_type(fast::clamp(fast::max(_947, _947), 0.0, 1.0)); } else { _979 = as_type(_972); } uint _992; uint _993; uint _994; uint _995; if (_464) { float _981 = spvFMul(_957, as_type(_979)); _992 = as_type(spvFMul(as_type(cbuf_56.data[_897]), _981)); _993 = as_type(spvFMul(as_type(cbuf_56.data[_905]), _981)); _994 = as_type(_981); _995 = as_type(spvFMul(as_type(cbuf_56.data[_901]), _981)); } else { _992 = as_type(_942); _993 = as_type(_940); _994 = _979; _995 = as_type(_947); } uint _1000; if (!_464) { _1000 = as_type(fma(_173, 10.0, as_type(_995))); } else { _1000 = _994; } uint _1040; uint _1041; uint _1042; if (!_464) { float _1030 = fma(_957, spvFMul(fast::max(0.0, as_type(_1000)), 1.0 / _465), spvFMul(_446, spvFMul(_957, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_993), _385, fma(as_type(_992), _376, spvFMul(_368, _944))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _466))))); _1040 = as_type(spvFMul(as_type(cbuf_56.data[_905]), _1030)); _1041 = as_type(spvFMul(as_type(cbuf_56.data[_901]), _1030)); _1042 = as_type(spvFMul(as_type(cbuf_56.data[_897]), _1030)); } else { _1040 = _993; _1041 = _995; _1042 = _992; } uint _1072 = 68u + buf1_dword_off; uint _1076 = 69u + buf1_dword_off; uint _1080 = 70u + buf1_dword_off; uint _1084 = 71u + buf1_dword_off; float _1104 = fma(-_334, _301, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1107 = fma(-_330, _301, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1110 = fma(-_299, _301, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1114 = rsqrt(fma(_1104, _1104, fma(_1107, _1107, spvFMul(_1110, _1110)))); float _1115 = spvFMul(_1104, _1114); float _1117 = spvFMul(_1107, _1114); float _1119 = spvFMul(_1110, _1114); float _1122 = fma(_384, _1115, fma(_375, _1117, spvFMul(_367, _1119))); float _1131 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1104, _1104, fma(_1107, _1107, spvFMul(_1110, _1110)))), 0.0, 1.0))); float _1132 = spvFMul(_1131, _1131); float _1139 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1084]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_1084])))); float _1147 = exp2(spvFMul(spvFMul(0.25, _1139), log2(fast::clamp(fma(_420, _1115, fma(_410, _1117, spvFMul(_402, _1119))), 0.0, 1.0)))); float _1150 = spvFMul(_1147, fma(0.125, _1139, 0.25)); uint _1154; if (_464) { _1154 = as_type(fast::clamp(fast::max(_1122, _1122), 0.0, 1.0)); } else { _1154 = as_type(_1147); } uint _1167; uint _1168; uint _1169; uint _1170; if (_464) { float _1156 = spvFMul(_1132, as_type(_1154)); _1167 = as_type(spvFMul(as_type(cbuf_56.data[_1072]), _1156)); _1168 = as_type(spvFMul(as_type(cbuf_56.data[_1080]), _1156)); _1169 = as_type(_1156); _1170 = as_type(spvFMul(as_type(cbuf_56.data[_1076]), _1156)); } else { _1167 = as_type(_1117); _1168 = as_type(_1115); _1169 = _1154; _1170 = as_type(_1122); } uint _1175; if (!_464) { _1175 = as_type(fma(_173, 10.0, as_type(_1170))); } else { _1175 = _1169; } uint _1215; uint _1216; uint _1217; if (!_464) { float _1205 = fma(_1132, spvFMul(fast::max(0.0, as_type(_1175)), 1.0 / _465), spvFMul(_446, spvFMul(_1132, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1168), _385, fma(as_type(_1167), _376, spvFMul(_368, _1119))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _466))))); _1215 = as_type(spvFMul(as_type(cbuf_56.data[_1080]), _1205)); _1216 = as_type(spvFMul(as_type(cbuf_56.data[_1076]), _1205)); _1217 = as_type(spvFMul(as_type(cbuf_56.data[_1072]), _1205)); } else { _1215 = _1168; _1216 = _1170; _1217 = _1167; } uint _1247 = 84u + buf1_dword_off; uint _1251 = 85u + buf1_dword_off; uint _1255 = 86u + buf1_dword_off; uint _1259 = 87u + buf1_dword_off; float _1279 = fma(-_334, _301, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1282 = fma(-_330, _301, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1285 = fma(-_299, _301, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1289 = rsqrt(fma(_1279, _1279, fma(_1282, _1282, spvFMul(_1285, _1285)))); float _1290 = spvFMul(_1279, _1289); float _1292 = spvFMul(_1282, _1289); float _1294 = spvFMul(_1285, _1289); float _1297 = fma(_384, _1290, fma(_375, _1292, spvFMul(_367, _1294))); float _1306 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[83u + buf1_dword_off]), fma(_1279, _1279, fma(_1282, _1282, spvFMul(_1285, _1285)))), 0.0, 1.0))); float _1307 = spvFMul(_1306, _1306); float _1314 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1259]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_1259])))); float _1322 = exp2(spvFMul(spvFMul(0.25, _1314), log2(fast::clamp(fma(_420, _1290, fma(_410, _1292, spvFMul(_402, _1294))), 0.0, 1.0)))); float _1325 = spvFMul(_1322, fma(0.125, _1314, 0.25)); uint _1329; if (_464) { _1329 = as_type(fast::clamp(fast::max(_1297, _1297), 0.0, 1.0)); } else { _1329 = as_type(_1322); } uint _1342; uint _1343; uint _1344; uint _1345; if (_464) { float _1331 = spvFMul(_1307, as_type(_1329)); _1342 = as_type(spvFMul(as_type(cbuf_56.data[_1247]), _1331)); _1343 = as_type(spvFMul(as_type(cbuf_56.data[_1255]), _1331)); _1344 = as_type(_1331); _1345 = as_type(spvFMul(as_type(cbuf_56.data[_1251]), _1331)); } else { _1342 = as_type(_1292); _1343 = as_type(_1290); _1344 = _1329; _1345 = as_type(_1297); } uint _1350; if (!_464) { _1350 = as_type(fma(_173, 10.0, as_type(_1345))); } else { _1350 = _1344; } uint _1390; uint _1391; uint _1392; if (!_464) { float _1380 = fma(_1307, spvFMul(fast::max(0.0, as_type(_1350)), 1.0 / _465), spvFMul(_446, spvFMul(_1307, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1343), _385, fma(as_type(_1342), _376, spvFMul(_368, _1294))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _466))))); _1390 = as_type(spvFMul(as_type(cbuf_56.data[_1255]), _1380)); _1391 = as_type(spvFMul(as_type(cbuf_56.data[_1251]), _1380)); _1392 = as_type(spvFMul(as_type(cbuf_56.data[_1247]), _1380)); } else { _1390 = _1343; _1391 = _1345; _1392 = _1342; } uint _1422 = 100u + buf1_dword_off; uint _1426 = 101u + buf1_dword_off; uint _1430 = 102u + buf1_dword_off; uint _1434 = 103u + buf1_dword_off; float _1454 = fma(-_334, _301, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1457 = fma(-_330, _301, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1460 = fma(-_299, _301, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1464 = rsqrt(fma(_1454, _1454, fma(_1457, _1457, spvFMul(_1460, _1460)))); float _1465 = spvFMul(_1454, _1464); float _1467 = spvFMul(_1457, _1464); float _1469 = spvFMul(_1460, _1464); float _1472 = fma(_384, _1465, fma(_375, _1467, spvFMul(_367, _1469))); float _1481 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[99u + buf1_dword_off]), fma(_1454, _1454, fma(_1457, _1457, spvFMul(_1460, _1460)))), 0.0, 1.0))); float _1482 = spvFMul(_1481, _1481); float _1489 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1434]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_1434])))); float _1497 = exp2(spvFMul(spvFMul(0.25, _1489), log2(fast::clamp(fma(_420, _1465, fma(_410, _1467, spvFMul(_402, _1469))), 0.0, 1.0)))); float _1500 = spvFMul(_1497, fma(0.125, _1489, 0.25)); uint _1504; if (_464) { _1504 = as_type(fast::clamp(fast::max(_1472, _1472), 0.0, 1.0)); } else { _1504 = as_type(_1497); } uint _1517; uint _1518; uint _1519; uint _1520; if (_464) { float _1506 = spvFMul(_1482, as_type(_1504)); _1517 = as_type(spvFMul(as_type(cbuf_56.data[_1422]), _1506)); _1518 = as_type(spvFMul(as_type(cbuf_56.data[_1430]), _1506)); _1519 = as_type(_1506); _1520 = as_type(spvFMul(as_type(cbuf_56.data[_1426]), _1506)); } else { _1517 = as_type(_1467); _1518 = as_type(_1465); _1519 = _1504; _1520 = as_type(_1472); } uint _1525; if (!_464) { _1525 = as_type(fma(_173, 10.0, as_type(_1520))); } else { _1525 = _1519; } uint _1565; uint _1566; uint _1567; if (!_464) { float _1555 = fma(_1482, spvFMul(fast::max(0.0, as_type(_1525)), 1.0 / _465), spvFMul(_446, spvFMul(_1482, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1518), _385, fma(as_type(_1517), _376, spvFMul(_368, _1469))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _466))))); _1565 = as_type(spvFMul(as_type(cbuf_56.data[_1430]), _1555)); _1566 = as_type(spvFMul(as_type(cbuf_56.data[_1426]), _1555)); _1567 = as_type(spvFMul(as_type(cbuf_56.data[_1422]), _1555)); } else { _1565 = _1518; _1566 = _1520; _1567 = _1517; } uint _1585 = 116u + buf1_dword_off; uint _1589 = 117u + buf1_dword_off; uint _1593 = 118u + buf1_dword_off; uint _1597 = 119u + buf1_dword_off; float _1608 = fma(-_299, _301, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1611 = fma(-_330, _301, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1615 = fma(-_334, _301, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1618 = rsqrt(fma(_1615, _1615, fma(_1611, _1611, spvFMul(_1608, _1608)))); float _1619 = spvFMul(_1608, _1618); float _1634 = spvFMul(_1611, _1618); float _1640 = spvFMul(_1615, _1618); float _1645 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1597]), _397), 1.0 / fma(_397, 0.01000213623046875, as_type(cbuf_56.data[_1597])))); float _1663 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[115u + buf1_dword_off]), fma(_1615, _1615, fma(_1611, _1611, spvFMul(_1608, _1608)))), 0.0, 1.0))); float _1670 = fma(_384, _1640, fma(_375, _1634, spvFMul(_367, _1619))); float _1671 = spvFMul(_1663, _1663); float _1672 = spvFMul(exp2(spvFMul(spvFMul(0.25, _1645), log2(fast::clamp(fma(_420, _1640, fma(_410, _1634, spvFMul(_402, _1619))), 0.0, 1.0)))), fma(0.125, _1645, 0.25)); uint _1676; if (_464) { _1676 = as_type(fast::clamp(fast::max(_1670, _1670), 0.0, 1.0)); } else { _1676 = as_type(_466); } uint _1689; uint _1690; uint _1691; uint _1692; if (_464) { float _1678 = spvFMul(_1671, as_type(_1676)); _1689 = as_type(spvFMul(as_type(cbuf_56.data[_1585]), _1678)); _1690 = as_type(spvFMul(as_type(cbuf_56.data[_1593]), _1678)); _1691 = as_type(spvFMul(as_type(cbuf_56.data[_1589]), _1678)); _1692 = as_type(_1678); } else { _1689 = as_type(_1663); _1690 = as_type(_376); _1691 = as_type(_385); _1692 = _1676; } uint _1696; if (!_464) { _1696 = as_type(fma(_173, 10.0, _1670)); } else { _1696 = _1689; } uint _1737; uint _1738; uint _1739; if (!_464) { float _1727 = fma(_1671, spvFMul(fast::max(0.0, as_type(_1696)), 1.0 / _465), spvFMul(_446, spvFMul(_1671, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1640, as_type(_1691), fma(_1634, as_type(_1690), spvFMul(_368, _1619))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), as_type(_1692)))))); _1737 = as_type(spvFMul(as_type(cbuf_56.data[_1593]), _1727)); _1738 = as_type(spvFMul(as_type(cbuf_56.data[_1589]), _1727)); _1739 = as_type(spvFMul(as_type(cbuf_56.data[_1585]), _1727)); } else { _1737 = _1690; _1738 = _1691; _1739 = _1696; } float _1753 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_533), as_type(_690)), as_type(_868)), as_type(_1042)), as_type(_1217)), as_type(_1392)), as_type(_1567)), as_type(_1739)); float _1755 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_532), as_type(_689)), as_type(_867)), as_type(_1041)), as_type(_1216)), as_type(_1391)), as_type(_1566)), as_type(_1738)); float _1757 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_531), as_type(_688)), as_type(_866)), as_type(_1040)), as_type(_1215)), as_type(_1390)), as_type(_1565)), as_type(_1737)); float _1776 = spvFMul(_460, fma(spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1672), _1671, fma(spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1500), _1482, fma(spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1325), _1307, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1150), _1132, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _975), _957, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _801), _783, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _470), _469, spvFMul(_605, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _623)))))))))); float _1777 = spvFMul(_460, fma(spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1672), _1671, fma(spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1500), _1482, fma(spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1325), _1307, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1150), _1132, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _975), _957, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _801), _783, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _470), _469, spvFMul(_605, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _623)))))))))); float _1778 = spvFMul(_460, fma(spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1672), _1671, fma(spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1500), _1482, fma(spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1325), _1307, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1150), _1132, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _975), _957, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _801), _783, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _470), _469, spvFMul(_605, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _623)))))))))); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_461, _1776); out.frag_color1.y = spvFMul(_462, _1777); out.frag_color1.z = spvFMul(_463, _1778); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_460, spvFSub(_1753, spvFMul(spvFMul(_461, _1753), 0.5))); out.frag_color0.y = spvFMul(_460, spvFSub(_1755, spvFMul(spvFMul(_462, _1755), 0.5))); out.frag_color0.z = spvFMul(_460, spvFSub(_1757, spvFMul(spvFMul(_463, _1757), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x6c079b [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xce7e5857 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(14)]]) { main0_out out = {}; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr2.x; out.out_attr0.y = in.vs_in_attr2.y; out.out_attr0.z = in.vs_in_attr2.z; out.out_attr0.w = in.vs_in_attr2.w; uint _133 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _139 = ((0u + ((_133 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _152 = uint4(cbuf_16.data[_139 + 0u], cbuf_16.data[_139 + 1u], cbuf_16.data[_139 + 2u], cbuf_16.data[_139 + 3u]); uint _160 = ((0u + ((_133 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _173 = uint4(cbuf_16.data[_160 + 0u], cbuf_16.data[_160 + 1u], cbuf_16.data[_160 + 2u], cbuf_16.data[_160 + 3u]); uint _181 = ((0u + (_133 * 16u)) + buf3_off) >> 2u; uint4 _194 = uint4(cbuf_16.data[_181 + 0u], cbuf_16.data[_181 + 1u], cbuf_16.data[_181 + 2u], cbuf_16.data[_181 + 3u]); float _296 = spvFSub(fma(as_type(_152.x), in.vs_in_attr0.x, fma(as_type(_152.y), in.vs_in_attr0.y, fma(as_type(_152.z), in.vs_in_attr0.z, as_type(_152.w)))), as_type(cbuf_20.data[191u + buf4_dword_off])); float _300 = spvFSub(fma(as_type(_173.x), in.vs_in_attr0.x, fma(as_type(_173.y), in.vs_in_attr0.y, fma(as_type(_173.z), in.vs_in_attr0.z, as_type(_173.w)))), as_type(cbuf_20.data[187u + buf4_dword_off])); float _314 = spvFSub(fma(as_type(_194.x), in.vs_in_attr0.x, fma(as_type(_194.y), in.vs_in_attr0.y, fma(as_type(_194.z), in.vs_in_attr0.z, as_type(_194.w)))), as_type(cbuf_20.data[183u + buf4_dword_off])); float _328 = fma(as_type(cbuf_20.data[208u + buf4_dword_off]), _314, fma(as_type(cbuf_20.data[209u + buf4_dword_off]), _300, fma(as_type(cbuf_20.data[210u + buf4_dword_off]), _296, as_type(cbuf_20.data[211u + buf4_dword_off])))); float _330 = fma(as_type(cbuf_20.data[212u + buf4_dword_off]), _314, fma(as_type(cbuf_20.data[213u + buf4_dword_off]), _300, fma(as_type(cbuf_20.data[214u + buf4_dword_off]), _296, as_type(cbuf_20.data[215u + buf4_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf4_dword_off]), _314, fma(as_type(cbuf_20.data[201u + buf4_dword_off]), _300, fma(as_type(cbuf_20.data[202u + buf4_dword_off]), _296, as_type(cbuf_20.data[203u + buf4_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf4_dword_off]), _314, fma(as_type(cbuf_20.data[205u + buf4_dword_off]), _300, fma(as_type(cbuf_20.data[206u + buf4_dword_off]), _296, as_type(cbuf_20.data[207u + buf4_dword_off])))); out.gl_Position.z = _328; out.gl_Position.w = _330; out.out_attr1.x = _328; out.out_attr1.y = _330; out.out_attr1.z = fma(as_type(cbuf_8.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf5_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf5_dword_off])); out.out_attr2.x = 0.0; out.out_attr2.y = 0.0; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[24]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _109 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.z, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.w, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _121 = spvFMul(_109.w, in.fs_in_attr0.w); float _134 = spvFMul(in.fs_in_attr1.x, 1.0 / in.fs_in_attr1.y); float _139 = fract(spvFMul(255.0, _134)); bool _141 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _121)) || (_121 == 0.0); float _142 = fract(spvFMul(65025.0, _134)); float _144 = spvFMul(0.0039215688593685626983642578125, _139); uint _153; uint _154; if (!_141) { _153 = as_type(fma(_134, 1.0, -_144)); _154 = as_type(fma(_142, -0.0039215688593685626983642578125, _139)); } else { _153 = as_type(_144); _154 = as_type(_139); } if (_141) { discard_fragment(); } frag_color0.x = _142; frag_color0.y = as_type(_154); frag_color0.z = as_type(_153); frag_color0.w = _121; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x3c8079f [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4aaa195a [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[192]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; int4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(14)]]) { main0_out out = {}; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _120 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _126 = ((0u + ((_120 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _139 = uint4(cbuf_16.data[_126 + 0u], cbuf_16.data[_126 + 1u], cbuf_16.data[_126 + 2u], cbuf_16.data[_126 + 3u]); uint _147 = ((0u + ((_120 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _160 = uint4(cbuf_16.data[_147 + 0u], cbuf_16.data[_147 + 1u], cbuf_16.data[_147 + 2u], cbuf_16.data[_147 + 3u]); uint _168 = ((0u + (_120 * 16u)) + buf3_off) >> 2u; uint4 _181 = uint4(cbuf_16.data[_168 + 0u], cbuf_16.data[_168 + 1u], cbuf_16.data[_168 + 2u], cbuf_16.data[_168 + 3u]); float _283 = spvFSub(fma(as_type(_139.x), in.vs_in_attr0.x, fma(as_type(_139.y), in.vs_in_attr0.y, fma(as_type(_139.z), in.vs_in_attr0.z, as_type(_139.w)))), as_type(cbuf_20.data[191u + buf4_dword_off])); float _287 = spvFSub(fma(as_type(_160.x), in.vs_in_attr0.x, fma(as_type(_160.y), in.vs_in_attr0.y, fma(as_type(_160.z), in.vs_in_attr0.z, as_type(_160.w)))), as_type(cbuf_20.data[187u + buf4_dword_off])); float _301 = spvFSub(fma(as_type(_181.x), in.vs_in_attr0.x, fma(as_type(_181.y), in.vs_in_attr0.y, fma(as_type(_181.z), in.vs_in_attr0.z, as_type(_181.w)))), as_type(cbuf_20.data[183u + buf4_dword_off])); float _315 = fma(as_type(cbuf_20.data[208u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[209u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[210u + buf4_dword_off]), _283, as_type(cbuf_20.data[211u + buf4_dword_off])))); float _317 = fma(as_type(cbuf_20.data[212u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[213u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[214u + buf4_dword_off]), _283, as_type(cbuf_20.data[215u + buf4_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[201u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[202u + buf4_dword_off]), _283, as_type(cbuf_20.data[203u + buf4_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[205u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[206u + buf4_dword_off]), _283, as_type(cbuf_20.data[207u + buf4_dword_off])))); out.gl_Position.z = _315; out.gl_Position.w = _317; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _315; out.out_attr1.y = _317; out.out_attr1.z = fma(as_type(cbuf_8.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr2.x))))), as_type(cbuf_8.data[2u + buf5_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr2.y))))), as_type(cbuf_8.data[3u + buf5_dword_off])); out.out_attr2.x = 0.0; out.out_attr2.y = 0.0; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _109 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.z, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.w, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _121 = spvFMul(_109.w, in.fs_in_attr0.w); float _134 = spvFMul(in.fs_in_attr1.x, 1.0 / in.fs_in_attr1.y); float _139 = fract(spvFMul(255.0, _134)); bool _141 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _121)) || (_121 == 0.0); float _142 = fract(spvFMul(65025.0, _134)); float _144 = spvFMul(0.0039215688593685626983642578125, _139); uint _153; uint _154; if (!_141) { _153 = as_type(fma(_134, 1.0, -_144)); _154 = as_type(fma(_142, -0.0039215688593685626983642578125, _139)); } else { _153 = as_type(_144); _154 = as_type(_139); } if (_141) { discard_fragment(); } frag_color0.x = _142; frag_color0.y = as_type(_154); frag_color0.z = as_type(_153); frag_color0.w = _121; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x7cde8e5f [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4c804f1d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(11)]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _116 = 20u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u); uint _121 = (cbuf_8.data[_116] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _122 = (cbuf_8.data[_116] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _127 = (cbuf_8.data[_116] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _131 = (cbuf_8.data[_116] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _138 = ((0u + ((_121 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _151 = uint4(cbuf_12.data[_138 + 0u], cbuf_12.data[_138 + 1u], cbuf_12.data[_138 + 2u], cbuf_12.data[_138 + 3u]); uint _159 = ((0u + ((_122 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _172 = uint4(cbuf_12.data[_159 + 0u], cbuf_12.data[_159 + 1u], cbuf_12.data[_159 + 2u], cbuf_12.data[_159 + 3u]); uint _180 = ((0u + ((_121 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _193 = uint4(cbuf_12.data[_180 + 0u], cbuf_12.data[_180 + 1u], cbuf_12.data[_180 + 2u], cbuf_12.data[_180 + 3u]); uint _201 = ((0u + ((_122 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _214 = uint4(cbuf_12.data[_201 + 0u], cbuf_12.data[_201 + 1u], cbuf_12.data[_201 + 2u], cbuf_12.data[_201 + 3u]); uint _222 = ((0u + (_121 * 16u)) + buf1_off) >> 2u; uint4 _235 = uint4(cbuf_12.data[_222 + 0u], cbuf_12.data[_222 + 1u], cbuf_12.data[_222 + 2u], cbuf_12.data[_222 + 3u]); uint _243 = ((0u + ((_127 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _256 = uint4(cbuf_12.data[_243 + 0u], cbuf_12.data[_243 + 1u], cbuf_12.data[_243 + 2u], cbuf_12.data[_243 + 3u]); uint _264 = ((0u + (_122 * 16u)) + buf1_off) >> 2u; uint4 _277 = uint4(cbuf_12.data[_264 + 0u], cbuf_12.data[_264 + 1u], cbuf_12.data[_264 + 2u], cbuf_12.data[_264 + 3u]); uint _285 = ((0u + ((_127 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _298 = uint4(cbuf_12.data[_285 + 0u], cbuf_12.data[_285 + 1u], cbuf_12.data[_285 + 2u], cbuf_12.data[_285 + 3u]); uint _306 = ((0u + ((_131 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _319 = uint4(cbuf_12.data[_306 + 0u], cbuf_12.data[_306 + 1u], cbuf_12.data[_306 + 2u], cbuf_12.data[_306 + 3u]); uint _327 = ((0u + (_127 * 16u)) + buf1_off) >> 2u; uint4 _340 = uint4(cbuf_12.data[_327 + 0u], cbuf_12.data[_327 + 1u], cbuf_12.data[_327 + 2u], cbuf_12.data[_327 + 3u]); uint _348 = ((0u + ((_131 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _361 = uint4(cbuf_12.data[_348 + 0u], cbuf_12.data[_348 + 1u], cbuf_12.data[_348 + 2u], cbuf_12.data[_348 + 3u]); uint _369 = ((0u + (_131 * 16u)) + buf1_off) >> 2u; uint4 _382 = uint4(cbuf_12.data[_369 + 0u], cbuf_12.data[_369 + 1u], cbuf_12.data[_369 + 2u], cbuf_12.data[_369 + 3u]); float _394 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _395 = spvFMul(in.vs_in_attr2.y, _394); float _396 = spvFMul(in.vs_in_attr2.x, _394); float _401 = spvFMul(in.vs_in_attr2.z, _394); float _480 = spvFMul(in.vs_in_attr2.w, _394); float _580 = spvFSub(fma(fma(as_type(_319.x), _480, fma(as_type(_256.x), _401, fma(as_type(_172.x), _396, spvFMul(_395, as_type(_151.x))))), in.vs_in_attr0.x, fma(fma(as_type(_319.y), _480, fma(as_type(_256.y), _401, fma(as_type(_172.y), _396, spvFMul(_395, as_type(_151.y))))), in.vs_in_attr0.y, fma(fma(as_type(_319.z), _480, fma(as_type(_256.z), _401, fma(as_type(_172.z), _396, spvFMul(_395, as_type(_151.z))))), in.vs_in_attr0.z, fma(as_type(_319.w), _480, fma(as_type(_256.w), _401, fma(as_type(_172.w), _396, spvFMul(_395, as_type(_151.w)))))))), as_type(cbuf_16.data[191u + buf2_dword_off])); float _583 = spvFSub(fma(fma(as_type(_361.x), _480, fma(as_type(_298.x), _401, fma(as_type(_214.x), _396, spvFMul(_395, as_type(_193.x))))), in.vs_in_attr0.x, fma(fma(as_type(_361.y), _480, fma(as_type(_298.y), _401, fma(as_type(_214.y), _396, spvFMul(_395, as_type(_193.y))))), in.vs_in_attr0.y, fma(fma(as_type(_361.z), _480, fma(as_type(_298.z), _401, fma(as_type(_214.z), _396, spvFMul(_395, as_type(_193.z))))), in.vs_in_attr0.z, fma(as_type(_361.w), _480, fma(as_type(_298.w), _401, fma(as_type(_214.w), _396, spvFMul(_395, as_type(_193.w)))))))), as_type(cbuf_16.data[187u + buf2_dword_off])); float _597 = spvFSub(fma(fma(as_type(_382.x), _480, fma(as_type(_340.x), _401, fma(as_type(_277.x), _396, spvFMul(_395, as_type(_235.x))))), in.vs_in_attr0.x, fma(fma(as_type(_382.y), _480, fma(as_type(_340.y), _401, fma(as_type(_277.y), _396, spvFMul(_395, as_type(_235.y))))), in.vs_in_attr0.y, fma(fma(as_type(_382.z), _480, fma(as_type(_340.z), _401, fma(as_type(_277.z), _396, spvFMul(_395, as_type(_235.z))))), in.vs_in_attr0.z, fma(as_type(_382.w), _480, fma(as_type(_340.w), _401, fma(as_type(_277.w), _396, spvFMul(_395, as_type(_235.w)))))))), as_type(cbuf_16.data[183u + buf2_dword_off])); float _611 = fma(as_type(cbuf_16.data[208u + buf2_dword_off]), _597, fma(as_type(cbuf_16.data[209u + buf2_dword_off]), _583, fma(as_type(cbuf_16.data[210u + buf2_dword_off]), _580, as_type(cbuf_16.data[211u + buf2_dword_off])))); float _613 = fma(as_type(cbuf_16.data[212u + buf2_dword_off]), _597, fma(as_type(cbuf_16.data[213u + buf2_dword_off]), _583, fma(as_type(cbuf_16.data[214u + buf2_dword_off]), _580, as_type(cbuf_16.data[215u + buf2_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_16.data[200u + buf2_dword_off]), _597, fma(as_type(cbuf_16.data[201u + buf2_dword_off]), _583, fma(as_type(cbuf_16.data[202u + buf2_dword_off]), _580, as_type(cbuf_16.data[203u + buf2_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_16.data[204u + buf2_dword_off]), _597, fma(as_type(cbuf_16.data[205u + buf2_dword_off]), _583, fma(as_type(cbuf_16.data[206u + buf2_dword_off]), _580, as_type(cbuf_16.data[207u + buf2_dword_off])))); out.gl_Position.z = _611; out.gl_Position.w = _613; out.out_attr0.x = _611; out.out_attr0.y = _613; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment void main0(main0_in in [[stage_in]]) { float4 frag_color0; float _55 = spvFMul(in.fs_in_attr0.x, 1.0 / in.fs_in_attr0.y); float _61 = fract(spvFMul(65025.0, _55)); float _62 = fract(spvFMul(255.0, _55)); frag_color0.x = _61; frag_color0.y = fma(_61, -0.0039215688593685626983642578125, _62); frag_color0.z = fma(_55, 1.0, -spvFMul(0.0039215688593685626983642578125, _62)); frag_color0.w = 0.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x92852ef3 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x6db4522d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(14)]]) { main0_out out = {}; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _145 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); uint _150 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _151 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _156 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _160 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _167 = ((0u + ((_150 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _180 = uint4(cbuf_16.data[_167 + 0u], cbuf_16.data[_167 + 1u], cbuf_16.data[_167 + 2u], cbuf_16.data[_167 + 3u]); uint _188 = ((0u + ((_151 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _201 = uint4(cbuf_16.data[_188 + 0u], cbuf_16.data[_188 + 1u], cbuf_16.data[_188 + 2u], cbuf_16.data[_188 + 3u]); uint _209 = ((0u + ((_150 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _222 = uint4(cbuf_16.data[_209 + 0u], cbuf_16.data[_209 + 1u], cbuf_16.data[_209 + 2u], cbuf_16.data[_209 + 3u]); uint _230 = ((0u + ((_151 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _243 = uint4(cbuf_16.data[_230 + 0u], cbuf_16.data[_230 + 1u], cbuf_16.data[_230 + 2u], cbuf_16.data[_230 + 3u]); uint _251 = ((0u + (_150 * 16u)) + buf3_off) >> 2u; uint4 _264 = uint4(cbuf_16.data[_251 + 0u], cbuf_16.data[_251 + 1u], cbuf_16.data[_251 + 2u], cbuf_16.data[_251 + 3u]); uint _272 = ((0u + ((_156 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _285 = uint4(cbuf_16.data[_272 + 0u], cbuf_16.data[_272 + 1u], cbuf_16.data[_272 + 2u], cbuf_16.data[_272 + 3u]); uint _293 = ((0u + (_151 * 16u)) + buf3_off) >> 2u; uint4 _306 = uint4(cbuf_16.data[_293 + 0u], cbuf_16.data[_293 + 1u], cbuf_16.data[_293 + 2u], cbuf_16.data[_293 + 3u]); uint _314 = ((0u + ((_156 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _327 = uint4(cbuf_16.data[_314 + 0u], cbuf_16.data[_314 + 1u], cbuf_16.data[_314 + 2u], cbuf_16.data[_314 + 3u]); uint _335 = ((0u + ((_160 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _348 = uint4(cbuf_16.data[_335 + 0u], cbuf_16.data[_335 + 1u], cbuf_16.data[_335 + 2u], cbuf_16.data[_335 + 3u]); uint _356 = ((0u + (_156 * 16u)) + buf3_off) >> 2u; uint4 _369 = uint4(cbuf_16.data[_356 + 0u], cbuf_16.data[_356 + 1u], cbuf_16.data[_356 + 2u], cbuf_16.data[_356 + 3u]); uint _377 = ((0u + ((_160 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _390 = uint4(cbuf_16.data[_377 + 0u], cbuf_16.data[_377 + 1u], cbuf_16.data[_377 + 2u], cbuf_16.data[_377 + 3u]); uint _398 = ((0u + (_160 * 16u)) + buf3_off) >> 2u; uint4 _411 = uint4(cbuf_16.data[_398 + 0u], cbuf_16.data[_398 + 1u], cbuf_16.data[_398 + 2u], cbuf_16.data[_398 + 3u]); float _423 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _424 = spvFMul(in.vs_in_attr2.y, _423); float _425 = spvFMul(in.vs_in_attr2.x, _423); float _430 = spvFMul(in.vs_in_attr2.z, _423); float _509 = spvFMul(in.vs_in_attr2.w, _423); float _609 = spvFSub(fma(fma(as_type(_348.x), _509, fma(as_type(_285.x), _430, fma(as_type(_201.x), _425, spvFMul(_424, as_type(_180.x))))), in.vs_in_attr0.x, fma(fma(as_type(_348.y), _509, fma(as_type(_285.y), _430, fma(as_type(_201.y), _425, spvFMul(_424, as_type(_180.y))))), in.vs_in_attr0.y, fma(fma(as_type(_348.z), _509, fma(as_type(_285.z), _430, fma(as_type(_201.z), _425, spvFMul(_424, as_type(_180.z))))), in.vs_in_attr0.z, fma(as_type(_348.w), _509, fma(as_type(_285.w), _430, fma(as_type(_201.w), _425, spvFMul(_424, as_type(_180.w)))))))), as_type(cbuf_20.data[191u + buf4_dword_off])); float _612 = spvFSub(fma(fma(as_type(_390.x), _509, fma(as_type(_327.x), _430, fma(as_type(_243.x), _425, spvFMul(_424, as_type(_222.x))))), in.vs_in_attr0.x, fma(fma(as_type(_390.y), _509, fma(as_type(_327.y), _430, fma(as_type(_243.y), _425, spvFMul(_424, as_type(_222.y))))), in.vs_in_attr0.y, fma(fma(as_type(_390.z), _509, fma(as_type(_327.z), _430, fma(as_type(_243.z), _425, spvFMul(_424, as_type(_222.z))))), in.vs_in_attr0.z, fma(as_type(_390.w), _509, fma(as_type(_327.w), _430, fma(as_type(_243.w), _425, spvFMul(_424, as_type(_222.w)))))))), as_type(cbuf_20.data[187u + buf4_dword_off])); float _626 = spvFSub(fma(fma(as_type(_411.x), _509, fma(as_type(_369.x), _430, fma(as_type(_306.x), _425, spvFMul(_424, as_type(_264.x))))), in.vs_in_attr0.x, fma(fma(as_type(_411.y), _509, fma(as_type(_369.y), _430, fma(as_type(_306.y), _425, spvFMul(_424, as_type(_264.y))))), in.vs_in_attr0.y, fma(fma(as_type(_411.z), _509, fma(as_type(_369.z), _430, fma(as_type(_306.z), _425, spvFMul(_424, as_type(_264.z))))), in.vs_in_attr0.z, fma(as_type(_411.w), _509, fma(as_type(_369.w), _430, fma(as_type(_306.w), _425, spvFMul(_424, as_type(_264.w)))))))), as_type(cbuf_20.data[183u + buf4_dword_off])); float _640 = fma(as_type(cbuf_20.data[208u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[209u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[210u + buf4_dword_off]), _609, as_type(cbuf_20.data[211u + buf4_dword_off])))); float _642 = fma(as_type(cbuf_20.data[212u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[213u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[214u + buf4_dword_off]), _609, as_type(cbuf_20.data[215u + buf4_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[201u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[202u + buf4_dword_off]), _609, as_type(cbuf_20.data[203u + buf4_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[205u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[206u + buf4_dword_off]), _609, as_type(cbuf_20.data[207u + buf4_dword_off])))); out.gl_Position.z = _640; out.gl_Position.w = _642; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf5_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf5_dword_off])); out.out_attr1.z = fma(as_type(cbuf_8.data[4u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.z))))), as_type(cbuf_8.data[6u + buf5_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[5u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.w))))), as_type(cbuf_8.data[7u + buf5_dword_off])); out.out_attr2.x = _640; out.out_attr2.y = _642; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _110 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.x, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.y, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _122 = spvFMul(_110.w, in.fs_in_attr0.w); float _135 = spvFMul(in.fs_in_attr2.x, 1.0 / in.fs_in_attr2.y); float _140 = fract(spvFMul(255.0, _135)); bool _142 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _122)) || (_122 == 0.0); float _143 = fract(spvFMul(65025.0, _135)); float _145 = spvFMul(0.0039215688593685626983642578125, _140); uint _154; uint _155; if (!_142) { _154 = as_type(fma(_135, 1.0, -_145)); _155 = as_type(fma(_143, -0.0039215688593685626983642578125, _140)); } else { _154 = as_type(_145); _155 = as_type(_140); } if (_142) { discard_fragment(); } frag_color0.x = _143; frag_color0.y = as_type(_155); frag_color0.z = as_type(_154); frag_color0.w = _122; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xa2108f5e [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7aeaa7a7 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(11)]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _117 = 20u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u); uint _122 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _123 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _128 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _132 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _139 = ((0u + ((_122 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _152 = uint4(cbuf_12.data[_139 + 0u], cbuf_12.data[_139 + 1u], cbuf_12.data[_139 + 2u], cbuf_12.data[_139 + 3u]); uint _160 = ((0u + ((_123 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _173 = uint4(cbuf_12.data[_160 + 0u], cbuf_12.data[_160 + 1u], cbuf_12.data[_160 + 2u], cbuf_12.data[_160 + 3u]); uint _181 = ((0u + ((_122 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _194 = uint4(cbuf_12.data[_181 + 0u], cbuf_12.data[_181 + 1u], cbuf_12.data[_181 + 2u], cbuf_12.data[_181 + 3u]); uint _202 = ((0u + ((_123 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _215 = uint4(cbuf_12.data[_202 + 0u], cbuf_12.data[_202 + 1u], cbuf_12.data[_202 + 2u], cbuf_12.data[_202 + 3u]); uint _223 = ((0u + (_122 * 16u)) + buf1_off) >> 2u; uint4 _236 = uint4(cbuf_12.data[_223 + 0u], cbuf_12.data[_223 + 1u], cbuf_12.data[_223 + 2u], cbuf_12.data[_223 + 3u]); uint _244 = ((0u + ((_128 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _257 = uint4(cbuf_12.data[_244 + 0u], cbuf_12.data[_244 + 1u], cbuf_12.data[_244 + 2u], cbuf_12.data[_244 + 3u]); uint _265 = ((0u + (_123 * 16u)) + buf1_off) >> 2u; uint4 _278 = uint4(cbuf_12.data[_265 + 0u], cbuf_12.data[_265 + 1u], cbuf_12.data[_265 + 2u], cbuf_12.data[_265 + 3u]); uint _286 = ((0u + ((_128 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _299 = uint4(cbuf_12.data[_286 + 0u], cbuf_12.data[_286 + 1u], cbuf_12.data[_286 + 2u], cbuf_12.data[_286 + 3u]); uint _307 = ((0u + ((_132 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _320 = uint4(cbuf_12.data[_307 + 0u], cbuf_12.data[_307 + 1u], cbuf_12.data[_307 + 2u], cbuf_12.data[_307 + 3u]); uint _328 = ((0u + (_128 * 16u)) + buf1_off) >> 2u; uint4 _341 = uint4(cbuf_12.data[_328 + 0u], cbuf_12.data[_328 + 1u], cbuf_12.data[_328 + 2u], cbuf_12.data[_328 + 3u]); uint _349 = ((0u + ((_132 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _362 = uint4(cbuf_12.data[_349 + 0u], cbuf_12.data[_349 + 1u], cbuf_12.data[_349 + 2u], cbuf_12.data[_349 + 3u]); uint _370 = ((0u + (_132 * 16u)) + buf1_off) >> 2u; uint4 _383 = uint4(cbuf_12.data[_370 + 0u], cbuf_12.data[_370 + 1u], cbuf_12.data[_370 + 2u], cbuf_12.data[_370 + 3u]); float _395 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _396 = spvFMul(in.vs_in_attr2.y, _395); float _397 = spvFMul(in.vs_in_attr2.x, _395); float _402 = spvFMul(in.vs_in_attr2.z, _395); float _481 = spvFMul(in.vs_in_attr2.w, _395); float _581 = spvFSub(fma(fma(as_type(_320.x), _481, fma(as_type(_257.x), _402, fma(as_type(_173.x), _397, spvFMul(_396, as_type(_152.x))))), in.vs_in_attr0.x, fma(fma(as_type(_320.y), _481, fma(as_type(_257.y), _402, fma(as_type(_173.y), _397, spvFMul(_396, as_type(_152.y))))), in.vs_in_attr0.y, fma(fma(as_type(_320.z), _481, fma(as_type(_257.z), _402, fma(as_type(_173.z), _397, spvFMul(_396, as_type(_152.z))))), in.vs_in_attr0.z, fma(as_type(_320.w), _481, fma(as_type(_257.w), _402, fma(as_type(_173.w), _397, spvFMul(_396, as_type(_152.w)))))))), as_type(cbuf_16.data[191u + buf2_dword_off])); float _584 = spvFSub(fma(fma(as_type(_362.x), _481, fma(as_type(_299.x), _402, fma(as_type(_215.x), _397, spvFMul(_396, as_type(_194.x))))), in.vs_in_attr0.x, fma(fma(as_type(_362.y), _481, fma(as_type(_299.y), _402, fma(as_type(_215.y), _397, spvFMul(_396, as_type(_194.y))))), in.vs_in_attr0.y, fma(fma(as_type(_362.z), _481, fma(as_type(_299.z), _402, fma(as_type(_215.z), _397, spvFMul(_396, as_type(_194.z))))), in.vs_in_attr0.z, fma(as_type(_362.w), _481, fma(as_type(_299.w), _402, fma(as_type(_215.w), _397, spvFMul(_396, as_type(_194.w)))))))), as_type(cbuf_16.data[187u + buf2_dword_off])); float _598 = spvFSub(fma(fma(as_type(_383.x), _481, fma(as_type(_341.x), _402, fma(as_type(_278.x), _397, spvFMul(_396, as_type(_236.x))))), in.vs_in_attr0.x, fma(fma(as_type(_383.y), _481, fma(as_type(_341.y), _402, fma(as_type(_278.y), _397, spvFMul(_396, as_type(_236.y))))), in.vs_in_attr0.y, fma(fma(as_type(_383.z), _481, fma(as_type(_341.z), _402, fma(as_type(_278.z), _397, spvFMul(_396, as_type(_236.z))))), in.vs_in_attr0.z, fma(as_type(_383.w), _481, fma(as_type(_341.w), _402, fma(as_type(_278.w), _397, spvFMul(_396, as_type(_236.w)))))))), as_type(cbuf_16.data[183u + buf2_dword_off])); float _612 = fma(as_type(cbuf_16.data[208u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[209u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[210u + buf2_dword_off]), _581, as_type(cbuf_16.data[211u + buf2_dword_off])))); float _614 = fma(as_type(cbuf_16.data[212u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[213u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[214u + buf2_dword_off]), _581, as_type(cbuf_16.data[215u + buf2_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_16.data[200u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[201u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[202u + buf2_dword_off]), _581, as_type(cbuf_16.data[203u + buf2_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_16.data[204u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[205u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[206u + buf2_dword_off]), _581, as_type(cbuf_16.data[207u + buf2_dword_off])))); out.gl_Position.z = _612; out.gl_Position.w = _614; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _612; out.out_attr1.y = _614; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; }; fragment void main0(main0_in in [[stage_in]]) { float4 frag_color0; float _55 = spvFMul(in.fs_in_attr1.x, 1.0 / in.fs_in_attr1.y); float _61 = fract(spvFMul(65025.0, _55)); float _62 = fract(spvFMul(255.0, _55)); frag_color0.x = _61; frag_color0.y = fma(_61, -0.0039215688593685626983642578125, _62); frag_color0.z = fma(_55, 1.0, -spvFMul(0.0039215688593685626983642578125, _62)); frag_color0.w = 0.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xa0e88f56 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x6c62a79f [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[1008]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(11)]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _117 = 20u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u); uint _122 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _123 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _128 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _132 = (cbuf_8.data[_117] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _139 = ((0u + ((_122 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _152 = uint4(cbuf_12.data[_139 + 0u], cbuf_12.data[_139 + 1u], cbuf_12.data[_139 + 2u], cbuf_12.data[_139 + 3u]); uint _160 = ((0u + ((_123 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _173 = uint4(cbuf_12.data[_160 + 0u], cbuf_12.data[_160 + 1u], cbuf_12.data[_160 + 2u], cbuf_12.data[_160 + 3u]); uint _181 = ((0u + ((_122 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _194 = uint4(cbuf_12.data[_181 + 0u], cbuf_12.data[_181 + 1u], cbuf_12.data[_181 + 2u], cbuf_12.data[_181 + 3u]); uint _202 = ((0u + ((_123 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _215 = uint4(cbuf_12.data[_202 + 0u], cbuf_12.data[_202 + 1u], cbuf_12.data[_202 + 2u], cbuf_12.data[_202 + 3u]); uint _223 = ((0u + (_122 * 16u)) + buf1_off) >> 2u; uint4 _236 = uint4(cbuf_12.data[_223 + 0u], cbuf_12.data[_223 + 1u], cbuf_12.data[_223 + 2u], cbuf_12.data[_223 + 3u]); uint _244 = ((0u + ((_128 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _257 = uint4(cbuf_12.data[_244 + 0u], cbuf_12.data[_244 + 1u], cbuf_12.data[_244 + 2u], cbuf_12.data[_244 + 3u]); uint _265 = ((0u + (_123 * 16u)) + buf1_off) >> 2u; uint4 _278 = uint4(cbuf_12.data[_265 + 0u], cbuf_12.data[_265 + 1u], cbuf_12.data[_265 + 2u], cbuf_12.data[_265 + 3u]); uint _286 = ((0u + ((_128 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _299 = uint4(cbuf_12.data[_286 + 0u], cbuf_12.data[_286 + 1u], cbuf_12.data[_286 + 2u], cbuf_12.data[_286 + 3u]); uint _307 = ((0u + ((_132 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _320 = uint4(cbuf_12.data[_307 + 0u], cbuf_12.data[_307 + 1u], cbuf_12.data[_307 + 2u], cbuf_12.data[_307 + 3u]); uint _328 = ((0u + (_128 * 16u)) + buf1_off) >> 2u; uint4 _341 = uint4(cbuf_12.data[_328 + 0u], cbuf_12.data[_328 + 1u], cbuf_12.data[_328 + 2u], cbuf_12.data[_328 + 3u]); uint _349 = ((0u + ((_132 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _362 = uint4(cbuf_12.data[_349 + 0u], cbuf_12.data[_349 + 1u], cbuf_12.data[_349 + 2u], cbuf_12.data[_349 + 3u]); uint _370 = ((0u + (_132 * 16u)) + buf1_off) >> 2u; uint4 _383 = uint4(cbuf_12.data[_370 + 0u], cbuf_12.data[_370 + 1u], cbuf_12.data[_370 + 2u], cbuf_12.data[_370 + 3u]); float _395 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _396 = spvFMul(in.vs_in_attr2.y, _395); float _397 = spvFMul(in.vs_in_attr2.x, _395); float _402 = spvFMul(in.vs_in_attr2.z, _395); float _481 = spvFMul(in.vs_in_attr2.w, _395); float _581 = spvFSub(fma(fma(as_type(_320.x), _481, fma(as_type(_257.x), _402, fma(as_type(_173.x), _397, spvFMul(_396, as_type(_152.x))))), in.vs_in_attr0.x, fma(fma(as_type(_320.y), _481, fma(as_type(_257.y), _402, fma(as_type(_173.y), _397, spvFMul(_396, as_type(_152.y))))), in.vs_in_attr0.y, fma(fma(as_type(_320.z), _481, fma(as_type(_257.z), _402, fma(as_type(_173.z), _397, spvFMul(_396, as_type(_152.z))))), in.vs_in_attr0.z, fma(as_type(_320.w), _481, fma(as_type(_257.w), _402, fma(as_type(_173.w), _397, spvFMul(_396, as_type(_152.w)))))))), as_type(cbuf_16.data[191u + buf2_dword_off])); float _584 = spvFSub(fma(fma(as_type(_362.x), _481, fma(as_type(_299.x), _402, fma(as_type(_215.x), _397, spvFMul(_396, as_type(_194.x))))), in.vs_in_attr0.x, fma(fma(as_type(_362.y), _481, fma(as_type(_299.y), _402, fma(as_type(_215.y), _397, spvFMul(_396, as_type(_194.y))))), in.vs_in_attr0.y, fma(fma(as_type(_362.z), _481, fma(as_type(_299.z), _402, fma(as_type(_215.z), _397, spvFMul(_396, as_type(_194.z))))), in.vs_in_attr0.z, fma(as_type(_362.w), _481, fma(as_type(_299.w), _402, fma(as_type(_215.w), _397, spvFMul(_396, as_type(_194.w)))))))), as_type(cbuf_16.data[187u + buf2_dword_off])); float _598 = spvFSub(fma(fma(as_type(_383.x), _481, fma(as_type(_341.x), _402, fma(as_type(_278.x), _397, spvFMul(_396, as_type(_236.x))))), in.vs_in_attr0.x, fma(fma(as_type(_383.y), _481, fma(as_type(_341.y), _402, fma(as_type(_278.y), _397, spvFMul(_396, as_type(_236.y))))), in.vs_in_attr0.y, fma(fma(as_type(_383.z), _481, fma(as_type(_341.z), _402, fma(as_type(_278.z), _397, spvFMul(_396, as_type(_236.z))))), in.vs_in_attr0.z, fma(as_type(_383.w), _481, fma(as_type(_341.w), _402, fma(as_type(_278.w), _397, spvFMul(_396, as_type(_236.w)))))))), as_type(cbuf_16.data[183u + buf2_dword_off])); float _612 = fma(as_type(cbuf_16.data[208u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[209u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[210u + buf2_dword_off]), _581, as_type(cbuf_16.data[211u + buf2_dword_off])))); float _614 = fma(as_type(cbuf_16.data[212u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[213u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[214u + buf2_dword_off]), _581, as_type(cbuf_16.data[215u + buf2_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_16.data[200u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[201u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[202u + buf2_dword_off]), _581, as_type(cbuf_16.data[203u + buf2_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_16.data[204u + buf2_dword_off]), _598, fma(as_type(cbuf_16.data[205u + buf2_dword_off]), _584, fma(as_type(cbuf_16.data[206u + buf2_dword_off]), _581, as_type(cbuf_16.data[207u + buf2_dword_off])))); out.gl_Position.z = _612; out.gl_Position.w = _614; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _612; out.out_attr1.y = _614; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x9ce84451 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x354a5593 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 7 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 39 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[576]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(13)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(14)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(15)]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _111 = as_type(as_type(in.vs_in_attr1.x)); uint _115 = as_type(as_type(in.vs_in_attr1.y)); uint _119 = as_type(as_type(in.vs_in_attr1.z)); uint _124 = as_type(as_type(in.vs_in_attr1.w)); uint _150 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); float _236 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _237 = spvFMul(in.vs_in_attr2.x, _236); float _238 = spvFMul(in.vs_in_attr2.y, _236); float _239 = spvFMul(in.vs_in_attr2.z, _236); float _240 = spvFMul(in.vs_in_attr2.w, _236); uint _241 = _111 * 3u; uint _244 = _115 * 3u; uint _247 = _119 * 3u; uint _252 = ((0u + (_241 * 16u)) + buf4_off) >> 2u; uint4 _265 = uint4(cbuf_24.data[_252 + 0u], cbuf_24.data[_252 + 1u], cbuf_24.data[_252 + 2u], cbuf_24.data[_252 + 3u]); uint _273 = ((0u + ((_241 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _286 = uint4(cbuf_24.data[_273 + 0u], cbuf_24.data[_273 + 1u], cbuf_24.data[_273 + 2u], cbuf_24.data[_273 + 3u]); uint _294 = ((0u + ((_241 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _307 = uint4(cbuf_24.data[_294 + 0u], cbuf_24.data[_294 + 1u], cbuf_24.data[_294 + 2u], cbuf_24.data[_294 + 3u]); uint _315 = ((0u + (_244 * 16u)) + buf4_off) >> 2u; uint4 _328 = uint4(cbuf_24.data[_315 + 0u], cbuf_24.data[_315 + 1u], cbuf_24.data[_315 + 2u], cbuf_24.data[_315 + 3u]); uint _336 = ((0u + ((_244 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _349 = uint4(cbuf_24.data[_336 + 0u], cbuf_24.data[_336 + 1u], cbuf_24.data[_336 + 2u], cbuf_24.data[_336 + 3u]); uint _357 = ((0u + ((_244 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _370 = uint4(cbuf_24.data[_357 + 0u], cbuf_24.data[_357 + 1u], cbuf_24.data[_357 + 2u], cbuf_24.data[_357 + 3u]); uint _378 = ((0u + (_247 * 16u)) + buf4_off) >> 2u; uint4 _391 = uint4(cbuf_24.data[_378 + 0u], cbuf_24.data[_378 + 1u], cbuf_24.data[_378 + 2u], cbuf_24.data[_378 + 3u]); uint _399 = ((0u + ((_247 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _412 = uint4(cbuf_24.data[_399 + 0u], cbuf_24.data[_399 + 1u], cbuf_24.data[_399 + 2u], cbuf_24.data[_399 + 3u]); uint _482 = _124 * 3u; uint _486 = (cbuf_12.data[_150] + _111) * 3u; uint _490 = (cbuf_12.data[_150] + _115) * 3u; uint _494 = ((0u + ((_247 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _507 = uint4(cbuf_24.data[_494 + 0u], cbuf_24.data[_494 + 1u], cbuf_24.data[_494 + 2u], cbuf_24.data[_494 + 3u]); uint _515 = ((0u + (_482 * 16u)) + buf4_off) >> 2u; uint4 _528 = uint4(cbuf_24.data[_515 + 0u], cbuf_24.data[_515 + 1u], cbuf_24.data[_515 + 2u], cbuf_24.data[_515 + 3u]); uint _536 = ((0u + ((_482 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _549 = uint4(cbuf_24.data[_536 + 0u], cbuf_24.data[_536 + 1u], cbuf_24.data[_536 + 2u], cbuf_24.data[_536 + 3u]); uint _557 = ((0u + ((_482 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _570 = uint4(cbuf_24.data[_557 + 0u], cbuf_24.data[_557 + 1u], cbuf_24.data[_557 + 2u], cbuf_24.data[_557 + 3u]); uint _578 = ((0u + (_486 * 16u)) + buf5_off) >> 2u; uint4 _591 = uint4(cbuf_16.data[_578 + 0u], cbuf_16.data[_578 + 1u], cbuf_16.data[_578 + 2u], cbuf_16.data[_578 + 3u]); uint _599 = ((0u + ((_486 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _612 = uint4(cbuf_16.data[_599 + 0u], cbuf_16.data[_599 + 1u], cbuf_16.data[_599 + 2u], cbuf_16.data[_599 + 3u]); uint _620 = ((0u + ((_486 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _633 = uint4(cbuf_16.data[_620 + 0u], cbuf_16.data[_620 + 1u], cbuf_16.data[_620 + 2u], cbuf_16.data[_620 + 3u]); uint _641 = ((0u + (_490 * 16u)) + buf5_off) >> 2u; uint4 _654 = uint4(cbuf_16.data[_641 + 0u], cbuf_16.data[_641 + 1u], cbuf_16.data[_641 + 2u], cbuf_16.data[_641 + 3u]); float _697 = fma(fma(as_type(_528.x), _240, fma(as_type(_391.x), _239, fma(as_type(_265.x), _237, spvFMul(_238, as_type(_328.x))))), in.vs_in_attr0.x, fma(fma(as_type(_528.y), _240, fma(as_type(_391.y), _239, fma(as_type(_265.y), _237, spvFMul(_238, as_type(_328.y))))), in.vs_in_attr0.y, fma(fma(as_type(_528.z), _240, fma(as_type(_391.z), _239, fma(as_type(_265.z), _237, spvFMul(_238, as_type(_328.z))))), in.vs_in_attr0.z, fma(as_type(_528.w), _240, fma(as_type(_391.w), _239, fma(as_type(_265.w), _237, spvFMul(_238, as_type(_328.w)))))))); float _698 = fma(fma(as_type(_549.x), _240, fma(as_type(_412.x), _239, fma(as_type(_286.x), _237, spvFMul(_238, as_type(_349.x))))), in.vs_in_attr0.x, fma(fma(as_type(_549.y), _240, fma(as_type(_412.y), _239, fma(as_type(_286.y), _237, spvFMul(_238, as_type(_349.y))))), in.vs_in_attr0.y, fma(fma(as_type(_549.z), _240, fma(as_type(_412.z), _239, fma(as_type(_286.z), _237, spvFMul(_238, as_type(_349.z))))), in.vs_in_attr0.z, fma(as_type(_549.w), _240, fma(as_type(_412.w), _239, fma(as_type(_286.w), _237, spvFMul(_238, as_type(_349.w)))))))); float _699 = fma(fma(as_type(_570.x), _240, fma(as_type(_507.x), _239, fma(as_type(_307.x), _237, spvFMul(_238, as_type(_370.x))))), in.vs_in_attr0.x, fma(fma(as_type(_570.y), _240, fma(as_type(_507.y), _239, fma(as_type(_307.y), _237, spvFMul(_238, as_type(_370.y))))), in.vs_in_attr0.y, fma(fma(as_type(_570.z), _240, fma(as_type(_507.z), _239, fma(as_type(_307.z), _237, spvFMul(_238, as_type(_370.z))))), in.vs_in_attr0.z, fma(as_type(_570.w), _240, fma(as_type(_507.w), _239, fma(as_type(_307.w), _237, spvFMul(_238, as_type(_370.w)))))))); uint _719 = (cbuf_12.data[_150] + _119) * 3u; uint _723 = (cbuf_12.data[_150] + _124) * 3u; uint _729 = ((0u + ((_490 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _742 = uint4(cbuf_16.data[_729 + 0u], cbuf_16.data[_729 + 1u], cbuf_16.data[_729 + 2u], cbuf_16.data[_729 + 3u]); uint _750 = ((0u + ((_490 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _763 = uint4(cbuf_16.data[_750 + 0u], cbuf_16.data[_750 + 1u], cbuf_16.data[_750 + 2u], cbuf_16.data[_750 + 3u]); uint _771 = ((0u + (_719 * 16u)) + buf5_off) >> 2u; uint4 _784 = uint4(cbuf_16.data[_771 + 0u], cbuf_16.data[_771 + 1u], cbuf_16.data[_771 + 2u], cbuf_16.data[_771 + 3u]); uint _792 = ((0u + ((_719 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _805 = uint4(cbuf_16.data[_792 + 0u], cbuf_16.data[_792 + 1u], cbuf_16.data[_792 + 2u], cbuf_16.data[_792 + 3u]); uint _813 = ((0u + ((_719 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _826 = uint4(cbuf_16.data[_813 + 0u], cbuf_16.data[_813 + 1u], cbuf_16.data[_813 + 2u], cbuf_16.data[_813 + 3u]); uint _834 = ((0u + (_723 * 16u)) + buf5_off) >> 2u; uint4 _847 = uint4(cbuf_16.data[_834 + 0u], cbuf_16.data[_834 + 1u], cbuf_16.data[_834 + 2u], cbuf_16.data[_834 + 3u]); float _920 = spvFSub(fma(fma(as_type(_847.x), _240, fma(as_type(_784.x), _239, fma(as_type(_591.x), _237, spvFMul(_238, as_type(_654.x))))), _697, fma(fma(as_type(_847.y), _240, fma(as_type(_784.y), _239, fma(as_type(_591.y), _237, spvFMul(_238, as_type(_654.y))))), _698, fma(fma(as_type(_847.z), _240, fma(as_type(_784.z), _239, fma(as_type(_591.z), _237, spvFMul(_238, as_type(_654.z))))), _699, fma(as_type(_847.w), _240, fma(as_type(_784.w), _239, fma(as_type(_591.w), _237, spvFMul(_238, as_type(_654.w)))))))), as_type(cbuf_20.data[183u + buf3_dword_off])); out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; uint _937 = ((0u + ((_723 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _950 = uint4(cbuf_16.data[_937 + 0u], cbuf_16.data[_937 + 1u], cbuf_16.data[_937 + 2u], cbuf_16.data[_937 + 3u]); uint _958 = ((0u + ((_723 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _971 = uint4(cbuf_16.data[_958 + 0u], cbuf_16.data[_958 + 1u], cbuf_16.data[_958 + 2u], cbuf_16.data[_958 + 3u]); float _999 = spvFSub(fma(fma(as_type(_950.x), _240, fma(as_type(_805.x), _239, fma(as_type(_612.x), _237, spvFMul(_238, as_type(_742.x))))), _697, fma(fma(as_type(_950.y), _240, fma(as_type(_805.y), _239, fma(as_type(_612.y), _237, spvFMul(_238, as_type(_742.y))))), _698, fma(fma(as_type(_950.z), _240, fma(as_type(_805.z), _239, fma(as_type(_612.z), _237, spvFMul(_238, as_type(_742.z))))), _699, fma(as_type(_950.w), _240, fma(as_type(_805.w), _239, fma(as_type(_612.w), _237, spvFMul(_238, as_type(_742.w)))))))), as_type(cbuf_20.data[187u + buf3_dword_off])); float _1001 = spvFSub(fma(fma(as_type(_971.x), _240, fma(as_type(_826.x), _239, fma(as_type(_633.x), _237, spvFMul(_238, as_type(_763.x))))), _697, fma(fma(as_type(_971.y), _240, fma(as_type(_826.y), _239, fma(as_type(_633.y), _237, spvFMul(_238, as_type(_763.y))))), _698, fma(fma(as_type(_971.z), _240, fma(as_type(_826.z), _239, fma(as_type(_633.z), _237, spvFMul(_238, as_type(_763.z))))), _699, fma(as_type(_971.w), _240, fma(as_type(_826.w), _239, fma(as_type(_633.w), _237, spvFMul(_238, as_type(_763.w)))))))), as_type(cbuf_20.data[191u + buf3_dword_off])); float _1027 = fma(as_type(cbuf_20.data[208u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[209u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[210u + buf3_dword_off]), _1001, as_type(cbuf_20.data[211u + buf3_dword_off])))); float _1029 = fma(as_type(cbuf_20.data[212u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[213u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[214u + buf3_dword_off]), _1001, as_type(cbuf_20.data[215u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[201u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[202u + buf3_dword_off]), _1001, as_type(cbuf_20.data[203u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[205u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[206u + buf3_dword_off]), _1001, as_type(cbuf_20.data[207u + buf3_dword_off])))); out.gl_Position.z = _1027; out.gl_Position.w = _1029; out.out_attr2.x = _1027; out.out_attr2.y = _1029; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf6_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf6_dword_off])); out.out_attr1.z = fma(as_type(cbuf_8.data[4u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.z))))), as_type(cbuf_8.data[6u + buf6_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[5u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.w))))), as_type(cbuf_8.data[7u + buf6_dword_off])); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _109 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.x, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.y, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _110 = _109.w; float _131 = spvFMul(in.fs_in_attr2.x, 1.0 / in.fs_in_attr2.y); float _136 = fract(spvFMul(255.0, _131)); bool _138 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _110)) || (_110 == 0.0); float _139 = fract(spvFMul(65025.0, _131)); float _141 = spvFMul(0.0039215688593685626983642578125, _136); uint _150; uint _151; if (!_138) { _150 = as_type(fma(_131, 1.0, -_141)); _151 = as_type(fma(_139, -0.0039215688593685626983642578125, _136)); } else { _150 = as_type(_141); _151 = as_type(_136); } if (_138) { discard_fragment(); } frag_color0.x = _139; frag_color0.y = as_type(_151); frag_color0.z = as_type(_150); frag_color0.w = _110; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4519e09d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[576]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(12)]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _100 = as_type(as_type(in.vs_in_attr1.x)); uint _104 = as_type(as_type(in.vs_in_attr1.y)); uint _108 = as_type(as_type(in.vs_in_attr1.z)); uint _113 = as_type(as_type(in.vs_in_attr1.w)); uint _123 = 20u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u); uint _126 = _104 * 3u; uint _127 = _100 * 3u; uint _131 = _108 * 3u; uint _135 = _113 * 3u; uint _137 = (cbuf_8.data[_123] + _104) * 3u; uint _140 = (cbuf_8.data[_123] + _100) * 3u; uint _146 = (cbuf_8.data[_123] + _108) * 3u; uint _151 = ((0u + ((_126 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _164 = uint4(cbuf_20.data[_151 + 0u], cbuf_20.data[_151 + 1u], cbuf_20.data[_151 + 2u], cbuf_20.data[_151 + 3u]); uint _171 = (cbuf_8.data[_123] + _113) * 3u; uint _175 = ((0u + ((_127 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _188 = uint4(cbuf_20.data[_175 + 0u], cbuf_20.data[_175 + 1u], cbuf_20.data[_175 + 2u], cbuf_20.data[_175 + 3u]); uint _196 = ((0u + ((_126 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _209 = uint4(cbuf_20.data[_196 + 0u], cbuf_20.data[_196 + 1u], cbuf_20.data[_196 + 2u], cbuf_20.data[_196 + 3u]); uint _219 = ((0u + ((_127 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _232 = uint4(cbuf_20.data[_219 + 0u], cbuf_20.data[_219 + 1u], cbuf_20.data[_219 + 2u], cbuf_20.data[_219 + 3u]); uint _240 = ((0u + (_126 * 16u)) + buf1_off) >> 2u; uint4 _253 = uint4(cbuf_20.data[_240 + 0u], cbuf_20.data[_240 + 1u], cbuf_20.data[_240 + 2u], cbuf_20.data[_240 + 3u]); uint _261 = ((0u + ((_131 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _274 = uint4(cbuf_20.data[_261 + 0u], cbuf_20.data[_261 + 1u], cbuf_20.data[_261 + 2u], cbuf_20.data[_261 + 3u]); uint _283 = ((0u + (_127 * 16u)) + buf1_off) >> 2u; uint4 _296 = uint4(cbuf_20.data[_283 + 0u], cbuf_20.data[_283 + 1u], cbuf_20.data[_283 + 2u], cbuf_20.data[_283 + 3u]); uint _304 = ((0u + ((_131 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _317 = uint4(cbuf_20.data[_304 + 0u], cbuf_20.data[_304 + 1u], cbuf_20.data[_304 + 2u], cbuf_20.data[_304 + 3u]); uint _325 = ((0u + ((_135 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _338 = uint4(cbuf_20.data[_325 + 0u], cbuf_20.data[_325 + 1u], cbuf_20.data[_325 + 2u], cbuf_20.data[_325 + 3u]); uint _346 = ((0u + ((_137 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _359 = uint4(cbuf_12.data[_346 + 0u], cbuf_12.data[_346 + 1u], cbuf_12.data[_346 + 2u], cbuf_12.data[_346 + 3u]); uint _367 = ((0u + (_131 * 16u)) + buf1_off) >> 2u; uint4 _380 = uint4(cbuf_20.data[_367 + 0u], cbuf_20.data[_367 + 1u], cbuf_20.data[_367 + 2u], cbuf_20.data[_367 + 3u]); uint _388 = ((0u + ((_135 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _401 = uint4(cbuf_20.data[_388 + 0u], cbuf_20.data[_388 + 1u], cbuf_20.data[_388 + 2u], cbuf_20.data[_388 + 3u]); uint _409 = ((0u + ((_140 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _422 = uint4(cbuf_12.data[_409 + 0u], cbuf_12.data[_409 + 1u], cbuf_12.data[_409 + 2u], cbuf_12.data[_409 + 3u]); uint _430 = ((0u + ((_137 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _443 = uint4(cbuf_12.data[_430 + 0u], cbuf_12.data[_430 + 1u], cbuf_12.data[_430 + 2u], cbuf_12.data[_430 + 3u]); uint _451 = ((0u + (_135 * 16u)) + buf1_off) >> 2u; uint4 _464 = uint4(cbuf_20.data[_451 + 0u], cbuf_20.data[_451 + 1u], cbuf_20.data[_451 + 2u], cbuf_20.data[_451 + 3u]); uint _472 = ((0u + ((_140 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _485 = uint4(cbuf_12.data[_472 + 0u], cbuf_12.data[_472 + 1u], cbuf_12.data[_472 + 2u], cbuf_12.data[_472 + 3u]); uint _493 = ((0u + (_137 * 16u)) + buf2_off) >> 2u; uint4 _506 = uint4(cbuf_12.data[_493 + 0u], cbuf_12.data[_493 + 1u], cbuf_12.data[_493 + 2u], cbuf_12.data[_493 + 3u]); uint _514 = ((0u + ((_146 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _527 = uint4(cbuf_12.data[_514 + 0u], cbuf_12.data[_514 + 1u], cbuf_12.data[_514 + 2u], cbuf_12.data[_514 + 3u]); uint _535 = ((0u + (_140 * 16u)) + buf2_off) >> 2u; uint4 _548 = uint4(cbuf_12.data[_535 + 0u], cbuf_12.data[_535 + 1u], cbuf_12.data[_535 + 2u], cbuf_12.data[_535 + 3u]); uint _556 = ((0u + ((_146 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _569 = uint4(cbuf_12.data[_556 + 0u], cbuf_12.data[_556 + 1u], cbuf_12.data[_556 + 2u], cbuf_12.data[_556 + 3u]); uint _577 = ((0u + ((_171 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _590 = uint4(cbuf_12.data[_577 + 0u], cbuf_12.data[_577 + 1u], cbuf_12.data[_577 + 2u], cbuf_12.data[_577 + 3u]); uint _598 = ((0u + (_146 * 16u)) + buf2_off) >> 2u; uint4 _611 = uint4(cbuf_12.data[_598 + 0u], cbuf_12.data[_598 + 1u], cbuf_12.data[_598 + 2u], cbuf_12.data[_598 + 3u]); uint _619 = ((0u + ((_171 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _632 = uint4(cbuf_12.data[_619 + 0u], cbuf_12.data[_619 + 1u], cbuf_12.data[_619 + 2u], cbuf_12.data[_619 + 3u]); uint _640 = ((0u + (_171 * 16u)) + buf2_off) >> 2u; uint4 _653 = uint4(cbuf_12.data[_640 + 0u], cbuf_12.data[_640 + 1u], cbuf_12.data[_640 + 2u], cbuf_12.data[_640 + 3u]); float _665 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _666 = spvFMul(in.vs_in_attr2.y, _665); float _667 = spvFMul(in.vs_in_attr2.x, _665); float _672 = spvFMul(in.vs_in_attr2.z, _665); float _673 = spvFMul(in.vs_in_attr2.w, _665); float _873 = fma(fma(as_type(_338.x), _673, fma(as_type(_274.x), _672, fma(as_type(_188.x), _667, spvFMul(_666, as_type(_164.x))))), in.vs_in_attr0.x, fma(fma(as_type(_338.y), _673, fma(as_type(_274.y), _672, fma(as_type(_188.y), _667, spvFMul(_666, as_type(_164.y))))), in.vs_in_attr0.y, fma(fma(as_type(_338.z), _673, fma(as_type(_274.z), _672, fma(as_type(_188.z), _667, spvFMul(_666, as_type(_164.z))))), in.vs_in_attr0.z, fma(as_type(_338.w), _673, fma(as_type(_274.w), _672, fma(as_type(_188.w), _667, spvFMul(_666, as_type(_164.w)))))))); float _903 = fma(fma(as_type(_401.x), _673, fma(as_type(_317.x), _672, fma(as_type(_232.x), _667, spvFMul(_666, as_type(_209.x))))), in.vs_in_attr0.x, fma(fma(as_type(_401.y), _673, fma(as_type(_317.y), _672, fma(as_type(_232.y), _667, spvFMul(_666, as_type(_209.y))))), in.vs_in_attr0.y, fma(fma(as_type(_401.z), _673, fma(as_type(_317.z), _672, fma(as_type(_232.z), _667, spvFMul(_666, as_type(_209.z))))), in.vs_in_attr0.z, fma(as_type(_401.w), _673, fma(as_type(_317.w), _672, fma(as_type(_232.w), _667, spvFMul(_666, as_type(_209.w)))))))); float _925 = fma(fma(as_type(_464.x), _673, fma(as_type(_380.x), _672, fma(as_type(_296.x), _667, spvFMul(_666, as_type(_253.x))))), in.vs_in_attr0.x, fma(fma(as_type(_464.y), _673, fma(as_type(_380.y), _672, fma(as_type(_296.y), _667, spvFMul(_666, as_type(_253.y))))), in.vs_in_attr0.y, fma(fma(as_type(_464.z), _673, fma(as_type(_380.z), _672, fma(as_type(_296.z), _667, spvFMul(_666, as_type(_253.z))))), in.vs_in_attr0.z, fma(as_type(_464.w), _673, fma(as_type(_380.w), _672, fma(as_type(_296.w), _667, spvFMul(_666, as_type(_253.w)))))))); float _956 = spvFSub(fma(fma(as_type(_590.x), _673, fma(as_type(_527.x), _672, fma(as_type(_422.x), _667, spvFMul(_666, as_type(_359.x))))), _925, fma(fma(as_type(_590.y), _673, fma(as_type(_527.y), _672, fma(as_type(_422.y), _667, spvFMul(_666, as_type(_359.y))))), _903, fma(fma(as_type(_590.z), _673, fma(as_type(_527.z), _672, fma(as_type(_422.z), _667, spvFMul(_666, as_type(_359.z))))), _873, fma(as_type(_590.w), _673, fma(as_type(_527.w), _672, fma(as_type(_422.w), _667, spvFMul(_666, as_type(_359.w)))))))), as_type(cbuf_16.data[191u + buf3_dword_off])); float _959 = spvFSub(fma(fma(as_type(_632.x), _673, fma(as_type(_569.x), _672, fma(as_type(_485.x), _667, spvFMul(_666, as_type(_443.x))))), _925, fma(fma(as_type(_632.y), _673, fma(as_type(_569.y), _672, fma(as_type(_485.y), _667, spvFMul(_666, as_type(_443.y))))), _903, fma(fma(as_type(_632.z), _673, fma(as_type(_569.z), _672, fma(as_type(_485.z), _667, spvFMul(_666, as_type(_443.z))))), _873, fma(as_type(_632.w), _673, fma(as_type(_569.w), _672, fma(as_type(_485.w), _667, spvFMul(_666, as_type(_443.w)))))))), as_type(cbuf_16.data[187u + buf3_dword_off])); float _973 = spvFSub(fma(fma(as_type(_653.x), _673, fma(as_type(_611.x), _672, fma(as_type(_548.x), _667, spvFMul(_666, as_type(_506.x))))), _925, fma(fma(as_type(_653.y), _673, fma(as_type(_611.y), _672, fma(as_type(_548.y), _667, spvFMul(_666, as_type(_506.y))))), _903, fma(fma(as_type(_653.z), _673, fma(as_type(_611.z), _672, fma(as_type(_548.z), _667, spvFMul(_666, as_type(_506.z))))), _873, fma(as_type(_653.w), _673, fma(as_type(_611.w), _672, fma(as_type(_548.w), _667, spvFMul(_666, as_type(_506.w)))))))), as_type(cbuf_16.data[183u + buf3_dword_off])); float _987 = fma(as_type(cbuf_16.data[208u + buf3_dword_off]), _973, fma(as_type(cbuf_16.data[209u + buf3_dword_off]), _959, fma(as_type(cbuf_16.data[210u + buf3_dword_off]), _956, as_type(cbuf_16.data[211u + buf3_dword_off])))); float _989 = fma(as_type(cbuf_16.data[212u + buf3_dword_off]), _973, fma(as_type(cbuf_16.data[213u + buf3_dword_off]), _959, fma(as_type(cbuf_16.data[214u + buf3_dword_off]), _956, as_type(cbuf_16.data[215u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_16.data[200u + buf3_dword_off]), _973, fma(as_type(cbuf_16.data[201u + buf3_dword_off]), _959, fma(as_type(cbuf_16.data[202u + buf3_dword_off]), _956, as_type(cbuf_16.data[203u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_16.data[204u + buf3_dword_off]), _973, fma(as_type(cbuf_16.data[205u + buf3_dword_off]), _959, fma(as_type(cbuf_16.data[206u + buf3_dword_off]), _956, as_type(cbuf_16.data[207u + buf3_dword_off])))); out.gl_Position.z = _987; out.gl_Position.w = _989; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _987; out.out_attr1.y = _989; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x1403cd3e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[576]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; constant uint _91 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(14)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(15)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(16)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; bool _179 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u)] == 0u; uint _224; uint _225; uint _226; uint _227; uint _228; uint _229; uint _230; uint _231; uint _232; uint _233; uint _234; uint _235; if (!_179) { _224 = cbuf_24.data[2u + buf3_dword_off]; _225 = cbuf_24.data[4u + buf3_dword_off]; _226 = cbuf_24.data[11u + buf3_dword_off]; _227 = cbuf_24.data[10u + buf3_dword_off]; _228 = cbuf_24.data[9u + buf3_dword_off]; _229 = cbuf_24.data[8u + buf3_dword_off]; _230 = cbuf_24.data[3u + buf3_dword_off]; _231 = cbuf_24.data[1u + buf3_dword_off]; _232 = cbuf_24.data[0u + buf3_dword_off]; _233 = cbuf_24.data[7u + buf3_dword_off]; _234 = cbuf_24.data[6u + buf3_dword_off]; _235 = cbuf_24.data[5u + buf3_dword_off]; } else { _224 = _91; _225 = 1065353216u; _226 = gl_InstanceIndex; _227 = push_data.sr1; _228 = push_data.sr0; _229 = as_type(in.vs_in_attr2.w); _230 = as_type(in.vs_in_attr2.z); _231 = as_type(in.vs_in_attr2.x); _232 = as_type(as_type(in.vs_in_attr1.w)); _233 = as_type(as_type(in.vs_in_attr1.z)); _234 = as_type(as_type(in.vs_in_attr1.y)); _235 = as_type(as_type(in.vs_in_attr1.x)); } uint _634; uint _635; uint _636; uint _637; uint _638; uint _639; uint _640; uint _641; uint _642; uint _643; uint _644; uint _645; if (_179) { uint _237 = 20u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); uint _242 = (cbuf_16.data[_237] + _234) * 3u; uint _243 = (cbuf_16.data[_237] + _235) * 3u; uint _249 = (cbuf_16.data[_237] + _233) * 3u; uint _253 = (cbuf_16.data[_237] + _232) * 3u; uint _259 = ((0u + (_242 * 16u)) + buf5_off) >> 2u; uint4 _272 = uint4(cbuf_20.data[_259 + 0u], cbuf_20.data[_259 + 1u], cbuf_20.data[_259 + 2u], cbuf_20.data[_259 + 3u]); uint _280 = ((0u + ((_242 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _293 = uint4(cbuf_20.data[_280 + 0u], cbuf_20.data[_280 + 1u], cbuf_20.data[_280 + 2u], cbuf_20.data[_280 + 3u]); uint _301 = ((0u + ((_242 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _314 = uint4(cbuf_20.data[_301 + 0u], cbuf_20.data[_301 + 1u], cbuf_20.data[_301 + 2u], cbuf_20.data[_301 + 3u]); uint _322 = ((0u + (_243 * 16u)) + buf5_off) >> 2u; uint4 _335 = uint4(cbuf_20.data[_322 + 0u], cbuf_20.data[_322 + 1u], cbuf_20.data[_322 + 2u], cbuf_20.data[_322 + 3u]); uint _343 = ((0u + ((_243 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _356 = uint4(cbuf_20.data[_343 + 0u], cbuf_20.data[_343 + 1u], cbuf_20.data[_343 + 2u], cbuf_20.data[_343 + 3u]); uint _364 = ((0u + ((_243 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _377 = uint4(cbuf_20.data[_364 + 0u], cbuf_20.data[_364 + 1u], cbuf_20.data[_364 + 2u], cbuf_20.data[_364 + 3u]); uint _385 = ((0u + (_249 * 16u)) + buf5_off) >> 2u; uint4 _398 = uint4(cbuf_20.data[_385 + 0u], cbuf_20.data[_385 + 1u], cbuf_20.data[_385 + 2u], cbuf_20.data[_385 + 3u]); uint _406 = ((0u + ((_249 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _419 = uint4(cbuf_20.data[_406 + 0u], cbuf_20.data[_406 + 1u], cbuf_20.data[_406 + 2u], cbuf_20.data[_406 + 3u]); uint _427 = ((0u + ((_249 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _440 = uint4(cbuf_20.data[_427 + 0u], cbuf_20.data[_427 + 1u], cbuf_20.data[_427 + 2u], cbuf_20.data[_427 + 3u]); uint _448 = ((0u + (_253 * 16u)) + buf5_off) >> 2u; uint4 _461 = uint4(cbuf_20.data[_448 + 0u], cbuf_20.data[_448 + 1u], cbuf_20.data[_448 + 2u], cbuf_20.data[_448 + 3u]); uint _469 = ((0u + ((_253 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _482 = uint4(cbuf_20.data[_469 + 0u], cbuf_20.data[_469 + 1u], cbuf_20.data[_469 + 2u], cbuf_20.data[_469 + 3u]); uint _490 = ((0u + ((_253 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _503 = uint4(cbuf_20.data[_490 + 0u], cbuf_20.data[_490 + 1u], cbuf_20.data[_490 + 2u], cbuf_20.data[_490 + 3u]); float _518 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(as_type(_229), spvFAdd(as_type(_230), spvFAdd(as_type(_231), in.vs_in_attr2.y)))); float _519 = spvFMul(in.vs_in_attr2.y, _518); float _521 = spvFMul(as_type(_231), _518); float _547 = spvFMul(as_type(_230), _518); float _573 = spvFMul(as_type(_229), _518); _634 = as_type(fma(as_type(_461.x), _573, fma(as_type(_398.x), _547, fma(as_type(_335.x), _521, spvFMul(_519, as_type(_272.x)))))); _635 = as_type(fma(as_type(_482.x), _573, fma(as_type(_419.x), _547, fma(as_type(_356.x), _521, spvFMul(_519, as_type(_293.x)))))); _636 = as_type(fma(as_type(_461.y), _573, fma(as_type(_398.y), _547, fma(as_type(_335.y), _521, spvFMul(_519, as_type(_272.y)))))); _637 = as_type(fma(as_type(_503.x), _573, fma(as_type(_440.x), _547, fma(as_type(_377.x), _521, spvFMul(_519, as_type(_314.x)))))); _638 = as_type(fma(as_type(_482.y), _573, fma(as_type(_419.y), _547, fma(as_type(_356.y), _521, spvFMul(_519, as_type(_293.y)))))); _639 = as_type(fma(as_type(_461.w), _573, fma(as_type(_398.w), _547, fma(as_type(_335.w), _521, spvFMul(_519, as_type(_272.w)))))); _640 = as_type(fma(as_type(_461.z), _573, fma(as_type(_398.z), _547, fma(as_type(_335.z), _521, spvFMul(_519, as_type(_272.z)))))); _641 = as_type(fma(as_type(_503.y), _573, fma(as_type(_440.y), _547, fma(as_type(_377.y), _521, spvFMul(_519, as_type(_314.y)))))); _642 = as_type(fma(as_type(_482.w), _573, fma(as_type(_419.w), _547, fma(as_type(_356.w), _521, spvFMul(_519, as_type(_293.w)))))); _643 = as_type(fma(as_type(_482.z), _573, fma(as_type(_419.z), _547, fma(as_type(_356.z), _521, spvFMul(_519, as_type(_293.z)))))); _644 = as_type(fma(as_type(_503.w), _573, fma(as_type(_440.w), _547, fma(as_type(_377.w), _521, spvFMul(_519, as_type(_314.w)))))); _645 = as_type(fma(as_type(_503.z), _573, fma(as_type(_440.z), _547, fma(as_type(_377.z), _521, spvFMul(_519, as_type(_314.z)))))); } else { _634 = _232; _635 = _225; _636 = _231; _637 = _229; _638 = _235; _639 = _230; _640 = _224; _641 = _228; _642 = _233; _643 = _234; _644 = _226; _645 = _227; } float _742 = spvFSub(fma(as_type(_637), in.vs_in_attr0.x, fma(as_type(_641), in.vs_in_attr0.y, fma(as_type(_645), in.vs_in_attr0.z, as_type(_644)))), as_type(cbuf_28.data[191u + buf6_dword_off])); float _746 = spvFSub(fma(as_type(_635), in.vs_in_attr0.x, fma(as_type(_638), in.vs_in_attr0.y, fma(as_type(_643), in.vs_in_attr0.z, as_type(_642)))), as_type(cbuf_28.data[187u + buf6_dword_off])); float _760 = spvFSub(fma(as_type(_634), in.vs_in_attr0.x, fma(as_type(_636), in.vs_in_attr0.y, fma(as_type(_640), in.vs_in_attr0.z, as_type(_639)))), as_type(cbuf_28.data[183u + buf6_dword_off])); float _774 = fma(as_type(cbuf_28.data[208u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[209u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[210u + buf6_dword_off]), _742, as_type(cbuf_28.data[211u + buf6_dword_off])))); float _776 = fma(as_type(cbuf_28.data[212u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[213u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[214u + buf6_dword_off]), _742, as_type(cbuf_28.data[215u + buf6_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_28.data[200u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[201u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[202u + buf6_dword_off]), _742, as_type(cbuf_28.data[203u + buf6_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_28.data[204u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[205u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[206u + buf6_dword_off]), _742, as_type(cbuf_28.data[207u + buf6_dword_off])))); out.gl_Position.z = _774; out.gl_Position.w = _776; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf7_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf7_dword_off])); out.out_attr1.z = fma(as_type(cbuf_8.data[4u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.z))))), as_type(cbuf_8.data[6u + buf7_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[5u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.w))))), as_type(cbuf_8.data[7u + buf7_dword_off])); out.out_attr2.x = _774; out.out_attr2.y = _776; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xa48adba4 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[576]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; constant uint _83 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], constant vs_cbuf_block_f32_2& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_3& cbuf_16 [[buffer(12)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(13)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; bool _152 = cbuf_8.data[32u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u)] == 0u; uint _197; uint _198; uint _199; uint _200; uint _201; uint _202; uint _203; uint _204; uint _205; uint _206; uint _207; uint _208; if (!_152) { _197 = cbuf_20.data[2u + buf1_dword_off]; _198 = cbuf_20.data[4u + buf1_dword_off]; _199 = cbuf_20.data[11u + buf1_dword_off]; _200 = cbuf_20.data[10u + buf1_dword_off]; _201 = cbuf_20.data[9u + buf1_dword_off]; _202 = cbuf_20.data[8u + buf1_dword_off]; _203 = cbuf_20.data[3u + buf1_dword_off]; _204 = cbuf_20.data[1u + buf1_dword_off]; _205 = cbuf_20.data[0u + buf1_dword_off]; _206 = cbuf_20.data[7u + buf1_dword_off]; _207 = cbuf_20.data[6u + buf1_dword_off]; _208 = cbuf_20.data[5u + buf1_dword_off]; } else { _197 = _83; _198 = 1065353216u; _199 = gl_InstanceIndex; _200 = push_data.sr1; _201 = push_data.sr0; _202 = as_type(in.vs_in_attr2.w); _203 = as_type(in.vs_in_attr2.z); _204 = as_type(in.vs_in_attr2.x); _205 = as_type(as_type(in.vs_in_attr1.w)); _206 = as_type(as_type(in.vs_in_attr1.z)); _207 = as_type(as_type(in.vs_in_attr1.y)); _208 = as_type(as_type(in.vs_in_attr1.x)); } uint _607; uint _608; uint _609; uint _610; uint _611; uint _612; uint _613; uint _614; uint _615; uint _616; uint _617; uint _618; if (_152) { uint _210 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); uint _215 = (cbuf_12.data[_210] + _207) * 3u; uint _216 = (cbuf_12.data[_210] + _208) * 3u; uint _222 = (cbuf_12.data[_210] + _206) * 3u; uint _226 = (cbuf_12.data[_210] + _205) * 3u; uint _232 = ((0u + (_215 * 16u)) + buf3_off) >> 2u; uint4 _245 = uint4(cbuf_16.data[_232 + 0u], cbuf_16.data[_232 + 1u], cbuf_16.data[_232 + 2u], cbuf_16.data[_232 + 3u]); uint _253 = ((0u + ((_215 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _266 = uint4(cbuf_16.data[_253 + 0u], cbuf_16.data[_253 + 1u], cbuf_16.data[_253 + 2u], cbuf_16.data[_253 + 3u]); uint _274 = ((0u + ((_215 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _287 = uint4(cbuf_16.data[_274 + 0u], cbuf_16.data[_274 + 1u], cbuf_16.data[_274 + 2u], cbuf_16.data[_274 + 3u]); uint _295 = ((0u + (_216 * 16u)) + buf3_off) >> 2u; uint4 _308 = uint4(cbuf_16.data[_295 + 0u], cbuf_16.data[_295 + 1u], cbuf_16.data[_295 + 2u], cbuf_16.data[_295 + 3u]); uint _316 = ((0u + ((_216 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _329 = uint4(cbuf_16.data[_316 + 0u], cbuf_16.data[_316 + 1u], cbuf_16.data[_316 + 2u], cbuf_16.data[_316 + 3u]); uint _337 = ((0u + ((_216 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _350 = uint4(cbuf_16.data[_337 + 0u], cbuf_16.data[_337 + 1u], cbuf_16.data[_337 + 2u], cbuf_16.data[_337 + 3u]); uint _358 = ((0u + (_222 * 16u)) + buf3_off) >> 2u; uint4 _371 = uint4(cbuf_16.data[_358 + 0u], cbuf_16.data[_358 + 1u], cbuf_16.data[_358 + 2u], cbuf_16.data[_358 + 3u]); uint _379 = ((0u + ((_222 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _392 = uint4(cbuf_16.data[_379 + 0u], cbuf_16.data[_379 + 1u], cbuf_16.data[_379 + 2u], cbuf_16.data[_379 + 3u]); uint _400 = ((0u + ((_222 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _413 = uint4(cbuf_16.data[_400 + 0u], cbuf_16.data[_400 + 1u], cbuf_16.data[_400 + 2u], cbuf_16.data[_400 + 3u]); uint _421 = ((0u + (_226 * 16u)) + buf3_off) >> 2u; uint4 _434 = uint4(cbuf_16.data[_421 + 0u], cbuf_16.data[_421 + 1u], cbuf_16.data[_421 + 2u], cbuf_16.data[_421 + 3u]); uint _442 = ((0u + ((_226 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _455 = uint4(cbuf_16.data[_442 + 0u], cbuf_16.data[_442 + 1u], cbuf_16.data[_442 + 2u], cbuf_16.data[_442 + 3u]); uint _463 = ((0u + ((_226 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _476 = uint4(cbuf_16.data[_463 + 0u], cbuf_16.data[_463 + 1u], cbuf_16.data[_463 + 2u], cbuf_16.data[_463 + 3u]); float _491 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(as_type(_202), spvFAdd(as_type(_203), spvFAdd(as_type(_204), in.vs_in_attr2.y)))); float _492 = spvFMul(in.vs_in_attr2.y, _491); float _494 = spvFMul(as_type(_204), _491); float _520 = spvFMul(as_type(_203), _491); float _546 = spvFMul(as_type(_202), _491); _607 = as_type(fma(as_type(_434.x), _546, fma(as_type(_371.x), _520, fma(as_type(_308.x), _494, spvFMul(_492, as_type(_245.x)))))); _608 = as_type(fma(as_type(_455.x), _546, fma(as_type(_392.x), _520, fma(as_type(_329.x), _494, spvFMul(_492, as_type(_266.x)))))); _609 = as_type(fma(as_type(_434.y), _546, fma(as_type(_371.y), _520, fma(as_type(_308.y), _494, spvFMul(_492, as_type(_245.y)))))); _610 = as_type(fma(as_type(_476.x), _546, fma(as_type(_413.x), _520, fma(as_type(_350.x), _494, spvFMul(_492, as_type(_287.x)))))); _611 = as_type(fma(as_type(_455.y), _546, fma(as_type(_392.y), _520, fma(as_type(_329.y), _494, spvFMul(_492, as_type(_266.y)))))); _612 = as_type(fma(as_type(_434.w), _546, fma(as_type(_371.w), _520, fma(as_type(_308.w), _494, spvFMul(_492, as_type(_245.w)))))); _613 = as_type(fma(as_type(_434.z), _546, fma(as_type(_371.z), _520, fma(as_type(_308.z), _494, spvFMul(_492, as_type(_245.z)))))); _614 = as_type(fma(as_type(_476.y), _546, fma(as_type(_413.y), _520, fma(as_type(_350.y), _494, spvFMul(_492, as_type(_287.y)))))); _615 = as_type(fma(as_type(_455.w), _546, fma(as_type(_392.w), _520, fma(as_type(_329.w), _494, spvFMul(_492, as_type(_266.w)))))); _616 = as_type(fma(as_type(_455.z), _546, fma(as_type(_392.z), _520, fma(as_type(_329.z), _494, spvFMul(_492, as_type(_266.z)))))); _617 = as_type(fma(as_type(_476.w), _546, fma(as_type(_413.w), _520, fma(as_type(_350.w), _494, spvFMul(_492, as_type(_287.w)))))); _618 = as_type(fma(as_type(_476.z), _546, fma(as_type(_413.z), _520, fma(as_type(_350.z), _494, spvFMul(_492, as_type(_287.z)))))); } else { _607 = _205; _608 = _198; _609 = _204; _610 = _202; _611 = _208; _612 = _203; _613 = _197; _614 = _201; _615 = _206; _616 = _207; _617 = _199; _618 = _200; } float _715 = spvFSub(fma(as_type(_610), in.vs_in_attr0.x, fma(as_type(_614), in.vs_in_attr0.y, fma(as_type(_618), in.vs_in_attr0.z, as_type(_617)))), as_type(cbuf_24.data[191u + buf4_dword_off])); float _719 = spvFSub(fma(as_type(_608), in.vs_in_attr0.x, fma(as_type(_611), in.vs_in_attr0.y, fma(as_type(_616), in.vs_in_attr0.z, as_type(_615)))), as_type(cbuf_24.data[187u + buf4_dword_off])); float _733 = spvFSub(fma(as_type(_607), in.vs_in_attr0.x, fma(as_type(_609), in.vs_in_attr0.y, fma(as_type(_613), in.vs_in_attr0.z, as_type(_612)))), as_type(cbuf_24.data[183u + buf4_dword_off])); float _747 = fma(as_type(cbuf_24.data[208u + buf4_dword_off]), _733, fma(as_type(cbuf_24.data[209u + buf4_dword_off]), _719, fma(as_type(cbuf_24.data[210u + buf4_dword_off]), _715, as_type(cbuf_24.data[211u + buf4_dword_off])))); float _749 = fma(as_type(cbuf_24.data[212u + buf4_dword_off]), _733, fma(as_type(cbuf_24.data[213u + buf4_dword_off]), _719, fma(as_type(cbuf_24.data[214u + buf4_dword_off]), _715, as_type(cbuf_24.data[215u + buf4_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_24.data[200u + buf4_dword_off]), _733, fma(as_type(cbuf_24.data[201u + buf4_dword_off]), _719, fma(as_type(cbuf_24.data[202u + buf4_dword_off]), _715, as_type(cbuf_24.data[203u + buf4_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_24.data[204u + buf4_dword_off]), _733, fma(as_type(cbuf_24.data[205u + buf4_dword_off]), _719, fma(as_type(cbuf_24.data[206u + buf4_dword_off]), _715, as_type(cbuf_24.data[207u + buf4_dword_off])))); out.gl_Position.z = _747; out.gl_Position.w = _749; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _747; out.out_attr1.y = _749; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x61547e10 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(11)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _108 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_8.data[((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf0_off) >> 2u]) * 3u; uint _114 = ((0u + ((_108 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _127 = uint4(cbuf_12.data[_114 + 0u], cbuf_12.data[_114 + 1u], cbuf_12.data[_114 + 2u], cbuf_12.data[_114 + 3u]); uint _135 = ((0u + ((_108 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _148 = uint4(cbuf_12.data[_135 + 0u], cbuf_12.data[_135 + 1u], cbuf_12.data[_135 + 2u], cbuf_12.data[_135 + 3u]); uint _156 = ((0u + (_108 * 16u)) + buf1_off) >> 2u; uint4 _169 = uint4(cbuf_12.data[_156 + 0u], cbuf_12.data[_156 + 1u], cbuf_12.data[_156 + 2u], cbuf_12.data[_156 + 3u]); float _271 = spvFSub(fma(as_type(_127.x), in.vs_in_attr0.x, fma(as_type(_127.y), in.vs_in_attr0.y, fma(as_type(_127.z), in.vs_in_attr0.z, as_type(_127.w)))), as_type(cbuf_16.data[191u + buf2_dword_off])); float _275 = spvFSub(fma(as_type(_148.x), in.vs_in_attr0.x, fma(as_type(_148.y), in.vs_in_attr0.y, fma(as_type(_148.z), in.vs_in_attr0.z, as_type(_148.w)))), as_type(cbuf_16.data[187u + buf2_dword_off])); float _289 = spvFSub(fma(as_type(_169.x), in.vs_in_attr0.x, fma(as_type(_169.y), in.vs_in_attr0.y, fma(as_type(_169.z), in.vs_in_attr0.z, as_type(_169.w)))), as_type(cbuf_16.data[183u + buf2_dword_off])); float _303 = fma(as_type(cbuf_16.data[208u + buf2_dword_off]), _289, fma(as_type(cbuf_16.data[209u + buf2_dword_off]), _275, fma(as_type(cbuf_16.data[210u + buf2_dword_off]), _271, as_type(cbuf_16.data[211u + buf2_dword_off])))); float _305 = fma(as_type(cbuf_16.data[212u + buf2_dword_off]), _289, fma(as_type(cbuf_16.data[213u + buf2_dword_off]), _275, fma(as_type(cbuf_16.data[214u + buf2_dword_off]), _271, as_type(cbuf_16.data[215u + buf2_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_16.data[200u + buf2_dword_off]), _289, fma(as_type(cbuf_16.data[201u + buf2_dword_off]), _275, fma(as_type(cbuf_16.data[202u + buf2_dword_off]), _271, as_type(cbuf_16.data[203u + buf2_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_16.data[204u + buf2_dword_off]), _289, fma(as_type(cbuf_16.data[205u + buf2_dword_off]), _275, fma(as_type(cbuf_16.data[206u + buf2_dword_off]), _271, as_type(cbuf_16.data[207u + buf2_dword_off])))); out.gl_Position.z = _303; out.gl_Position.w = _305; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _303; out.out_attr1.y = _305; out.out_attr1.z = float(gl_InstanceIndex); out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; }; fragment void main0(main0_in in [[stage_in]]) { float4 frag_color0; float _55 = spvFMul(in.fs_in_attr1.x, 1.0 / in.fs_in_attr1.y); float _61 = fract(spvFMul(65025.0, _55)); float _62 = fract(spvFMul(255.0, _55)); frag_color0.x = _61; frag_color0.y = fma(_61, -0.0039215688593685626983642578125, _62); frag_color0.z = fma(_55, 1.0, -spvFMul(0.0039215688593685626983642578125, _62)); frag_color0.w = 0.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x14b7164 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(11)]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _100 = (cbuf_8.data[20u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _106 = ((0u + ((_100 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _119 = uint4(cbuf_12.data[_106 + 0u], cbuf_12.data[_106 + 1u], cbuf_12.data[_106 + 2u], cbuf_12.data[_106 + 3u]); uint _127 = ((0u + ((_100 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _140 = uint4(cbuf_12.data[_127 + 0u], cbuf_12.data[_127 + 1u], cbuf_12.data[_127 + 2u], cbuf_12.data[_127 + 3u]); uint _148 = ((0u + (_100 * 16u)) + buf1_off) >> 2u; uint4 _161 = uint4(cbuf_12.data[_148 + 0u], cbuf_12.data[_148 + 1u], cbuf_12.data[_148 + 2u], cbuf_12.data[_148 + 3u]); float _263 = spvFSub(fma(as_type(_119.x), in.vs_in_attr0.x, fma(as_type(_119.y), in.vs_in_attr0.y, fma(as_type(_119.z), in.vs_in_attr0.z, as_type(_119.w)))), as_type(cbuf_16.data[191u + buf2_dword_off])); float _267 = spvFSub(fma(as_type(_140.x), in.vs_in_attr0.x, fma(as_type(_140.y), in.vs_in_attr0.y, fma(as_type(_140.z), in.vs_in_attr0.z, as_type(_140.w)))), as_type(cbuf_16.data[187u + buf2_dword_off])); float _281 = spvFSub(fma(as_type(_161.x), in.vs_in_attr0.x, fma(as_type(_161.y), in.vs_in_attr0.y, fma(as_type(_161.z), in.vs_in_attr0.z, as_type(_161.w)))), as_type(cbuf_16.data[183u + buf2_dword_off])); float _295 = fma(as_type(cbuf_16.data[208u + buf2_dword_off]), _281, fma(as_type(cbuf_16.data[209u + buf2_dword_off]), _267, fma(as_type(cbuf_16.data[210u + buf2_dword_off]), _263, as_type(cbuf_16.data[211u + buf2_dword_off])))); float _297 = fma(as_type(cbuf_16.data[212u + buf2_dword_off]), _281, fma(as_type(cbuf_16.data[213u + buf2_dword_off]), _267, fma(as_type(cbuf_16.data[214u + buf2_dword_off]), _263, as_type(cbuf_16.data[215u + buf2_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_16.data[200u + buf2_dword_off]), _281, fma(as_type(cbuf_16.data[201u + buf2_dword_off]), _267, fma(as_type(cbuf_16.data[202u + buf2_dword_off]), _263, as_type(cbuf_16.data[203u + buf2_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_16.data[204u + buf2_dword_off]), _281, fma(as_type(cbuf_16.data[205u + buf2_dword_off]), _267, fma(as_type(cbuf_16.data[206u + buf2_dword_off]), _263, as_type(cbuf_16.data[207u + buf2_dword_off])))); out.gl_Position.z = _295; out.gl_Position.w = _297; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _295; out.out_attr1.y = _297; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x108e11bc [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x327e1a5e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[576]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; int4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(14)]]) { main0_out out = {}; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _120 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _126 = ((0u + ((_120 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _139 = uint4(cbuf_16.data[_126 + 0u], cbuf_16.data[_126 + 1u], cbuf_16.data[_126 + 2u], cbuf_16.data[_126 + 3u]); uint _147 = ((0u + ((_120 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _160 = uint4(cbuf_16.data[_147 + 0u], cbuf_16.data[_147 + 1u], cbuf_16.data[_147 + 2u], cbuf_16.data[_147 + 3u]); uint _168 = ((0u + (_120 * 16u)) + buf3_off) >> 2u; uint4 _181 = uint4(cbuf_16.data[_168 + 0u], cbuf_16.data[_168 + 1u], cbuf_16.data[_168 + 2u], cbuf_16.data[_168 + 3u]); float _283 = spvFSub(fma(as_type(_139.x), in.vs_in_attr0.x, fma(as_type(_139.y), in.vs_in_attr0.y, fma(as_type(_139.z), in.vs_in_attr0.z, as_type(_139.w)))), as_type(cbuf_20.data[191u + buf4_dword_off])); float _287 = spvFSub(fma(as_type(_160.x), in.vs_in_attr0.x, fma(as_type(_160.y), in.vs_in_attr0.y, fma(as_type(_160.z), in.vs_in_attr0.z, as_type(_160.w)))), as_type(cbuf_20.data[187u + buf4_dword_off])); float _301 = spvFSub(fma(as_type(_181.x), in.vs_in_attr0.x, fma(as_type(_181.y), in.vs_in_attr0.y, fma(as_type(_181.z), in.vs_in_attr0.z, as_type(_181.w)))), as_type(cbuf_20.data[183u + buf4_dword_off])); float _315 = fma(as_type(cbuf_20.data[208u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[209u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[210u + buf4_dword_off]), _283, as_type(cbuf_20.data[211u + buf4_dword_off])))); float _317 = fma(as_type(cbuf_20.data[212u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[213u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[214u + buf4_dword_off]), _283, as_type(cbuf_20.data[215u + buf4_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[201u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[202u + buf4_dword_off]), _283, as_type(cbuf_20.data[203u + buf4_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf4_dword_off]), _301, fma(as_type(cbuf_20.data[205u + buf4_dword_off]), _287, fma(as_type(cbuf_20.data[206u + buf4_dword_off]), _283, as_type(cbuf_20.data[207u + buf4_dword_off])))); out.gl_Position.z = _315; out.gl_Position.w = _317; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr2.x))))), as_type(cbuf_8.data[2u + buf5_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr2.y))))), as_type(cbuf_8.data[3u + buf5_dword_off])); out.out_attr1.z = 0.0; out.out_attr1.w = 0.0; out.out_attr2.x = _315; out.out_attr2.y = _317; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _110 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.x, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.y, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _122 = spvFMul(_110.w, in.fs_in_attr0.w); float _135 = spvFMul(in.fs_in_attr2.x, 1.0 / in.fs_in_attr2.y); float _140 = fract(spvFMul(255.0, _135)); bool _142 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _122)) || (_122 == 0.0); float _143 = fract(spvFMul(65025.0, _135)); float _145 = spvFMul(0.0039215688593685626983642578125, _140); uint _154; uint _155; if (!_142) { _154 = as_type(fma(_135, 1.0, -_145)); _155 = as_type(fma(_143, -0.0039215688593685626983642578125, _140)); } else { _154 = as_type(_145); _155 = as_type(_140); } if (_142) { discard_fragment(); } frag_color0.x = _143; frag_color0.y = as_type(_155); frag_color0.z = as_type(_154); frag_color0.w = _122; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_44; float4 m_45; float4 m_46; float4 gl_Position; }; struct main0_in { float4 m_27; float4 m_28; float4 m_29; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _68 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _71 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _74 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _82 = ((_68.x && _74.y) || (_68.y && _74.x)) ? (-1.0) : 1.0; bool _89 = (_71.x && _68.y) || (_71.y && _68.x); float _90 = _89 ? (-1.0) : 1.0; bool _97 = (_74.x && _71.y) || (_74.y && _71.x); float _98 = _97 ? (-1.0) : 1.0; bool _102 = gl_InvocationID == 3; int _104 = ((_89 ? 1 : (_97 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _102 ? ((gl_in[0].gl_Position * _82) + ((gl_in[1].gl_Position * _90) + (gl_in[2].gl_Position * _98))) : gl_in[_104].gl_Position; gl_out[gl_InvocationID].m_44 = _102 ? ((gl_in[0].m_27 * _82) + ((gl_in[1].m_27 * _90) + (gl_in[2].m_27 * _98))) : gl_in[_104].m_27; gl_out[gl_InvocationID].m_45 = _102 ? ((gl_in[0].m_28 * _82) + ((gl_in[1].m_28 * _90) + (gl_in[2].m_28 * _98))) : gl_in[_104].m_28; gl_out[gl_InvocationID].m_46 = _102 ? ((gl_in[0].m_29 * _82) + ((gl_in[1].m_29 * _90) + (gl_in[2].m_29 * _98))) : gl_in[_104].m_29; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_33 [[user(locn0)]]; float4 m_34 [[user(locn1)]]; float4 m_35 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 m_28; float4 m_29; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _47 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_47].gl_Position; out.m_33 = gl_in[_47].m_27; out.m_34 = gl_in[_47].m_28; out.m_35 = gl_in[_47].m_29; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xa89e01e9 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb10c4f55 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[336]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(18)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(19)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(20)]]) { main0_out out = {}; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint _145 = as_type(as_type(in.vs_in_attr3.x)); uint _149 = as_type(as_type(in.vs_in_attr3.y)); uint _153 = as_type(as_type(in.vs_in_attr3.z)); uint _157 = as_type(as_type(in.vs_in_attr3.w)); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _195 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _281 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _282 = spvFMul(in.vs_in_attr4.x, _281); float _283 = spvFMul(in.vs_in_attr4.y, _281); float _284 = spvFMul(in.vs_in_attr4.z, _281); float _285 = spvFMul(in.vs_in_attr4.w, _281); uint _286 = _145 * 3u; uint _289 = _149 * 3u; uint _292 = _153 * 3u; uint _297 = ((0u + (_286 * 16u)) + buf9_off) >> 2u; uint4 _310 = uint4(cbuf_24.data[_297 + 0u], cbuf_24.data[_297 + 1u], cbuf_24.data[_297 + 2u], cbuf_24.data[_297 + 3u]); uint _318 = ((0u + ((_286 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _331 = uint4(cbuf_24.data[_318 + 0u], cbuf_24.data[_318 + 1u], cbuf_24.data[_318 + 2u], cbuf_24.data[_318 + 3u]); uint _339 = ((0u + ((_286 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _352 = uint4(cbuf_24.data[_339 + 0u], cbuf_24.data[_339 + 1u], cbuf_24.data[_339 + 2u], cbuf_24.data[_339 + 3u]); uint _360 = ((0u + (_289 * 16u)) + buf9_off) >> 2u; uint4 _373 = uint4(cbuf_24.data[_360 + 0u], cbuf_24.data[_360 + 1u], cbuf_24.data[_360 + 2u], cbuf_24.data[_360 + 3u]); uint _381 = ((0u + ((_289 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _394 = uint4(cbuf_24.data[_381 + 0u], cbuf_24.data[_381 + 1u], cbuf_24.data[_381 + 2u], cbuf_24.data[_381 + 3u]); uint _402 = ((0u + ((_289 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _415 = uint4(cbuf_24.data[_402 + 0u], cbuf_24.data[_402 + 1u], cbuf_24.data[_402 + 2u], cbuf_24.data[_402 + 3u]); uint _423 = ((0u + (_292 * 16u)) + buf9_off) >> 2u; uint4 _436 = uint4(cbuf_24.data[_423 + 0u], cbuf_24.data[_423 + 1u], cbuf_24.data[_423 + 2u], cbuf_24.data[_423 + 3u]); uint _444 = ((0u + ((_292 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _457 = uint4(cbuf_24.data[_444 + 0u], cbuf_24.data[_444 + 1u], cbuf_24.data[_444 + 2u], cbuf_24.data[_444 + 3u]); uint _527 = _157 * 3u; uint _531 = (cbuf_12.data[_195] + _145) * 3u; uint _535 = (cbuf_12.data[_195] + _149) * 3u; uint _539 = ((0u + ((_292 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _552 = uint4(cbuf_24.data[_539 + 0u], cbuf_24.data[_539 + 1u], cbuf_24.data[_539 + 2u], cbuf_24.data[_539 + 3u]); uint _560 = ((0u + (_527 * 16u)) + buf9_off) >> 2u; uint4 _573 = uint4(cbuf_24.data[_560 + 0u], cbuf_24.data[_560 + 1u], cbuf_24.data[_560 + 2u], cbuf_24.data[_560 + 3u]); uint _581 = ((0u + ((_527 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _594 = uint4(cbuf_24.data[_581 + 0u], cbuf_24.data[_581 + 1u], cbuf_24.data[_581 + 2u], cbuf_24.data[_581 + 3u]); uint _602 = ((0u + ((_527 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _615 = uint4(cbuf_24.data[_602 + 0u], cbuf_24.data[_602 + 1u], cbuf_24.data[_602 + 2u], cbuf_24.data[_602 + 3u]); uint _623 = ((0u + (_531 * 16u)) + buf10_off) >> 2u; uint4 _636 = uint4(cbuf_16.data[_623 + 0u], cbuf_16.data[_623 + 1u], cbuf_16.data[_623 + 2u], cbuf_16.data[_623 + 3u]); uint _644 = ((0u + ((_531 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _657 = uint4(cbuf_16.data[_644 + 0u], cbuf_16.data[_644 + 1u], cbuf_16.data[_644 + 2u], cbuf_16.data[_644 + 3u]); uint _665 = ((0u + ((_531 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _678 = uint4(cbuf_16.data[_665 + 0u], cbuf_16.data[_665 + 1u], cbuf_16.data[_665 + 2u], cbuf_16.data[_665 + 3u]); uint _686 = ((0u + (_535 * 16u)) + buf10_off) >> 2u; uint4 _699 = uint4(cbuf_16.data[_686 + 0u], cbuf_16.data[_686 + 1u], cbuf_16.data[_686 + 2u], cbuf_16.data[_686 + 3u]); float _713 = fma(as_type(_573.x), _285, fma(as_type(_436.x), _284, fma(as_type(_310.x), _282, spvFMul(_283, as_type(_373.x))))); float _715 = fma(as_type(_573.y), _285, fma(as_type(_436.y), _284, fma(as_type(_310.y), _282, spvFMul(_283, as_type(_373.y))))); float _717 = fma(as_type(_573.z), _285, fma(as_type(_436.z), _284, fma(as_type(_310.z), _282, spvFMul(_283, as_type(_373.z))))); float _721 = fma(as_type(_594.x), _285, fma(as_type(_457.x), _284, fma(as_type(_331.x), _282, spvFMul(_283, as_type(_394.x))))); float _723 = fma(as_type(_594.y), _285, fma(as_type(_457.y), _284, fma(as_type(_331.y), _282, spvFMul(_283, as_type(_394.y))))); float _725 = fma(as_type(_594.z), _285, fma(as_type(_457.z), _284, fma(as_type(_331.z), _282, spvFMul(_283, as_type(_394.z))))); float _729 = fma(as_type(_615.x), _285, fma(as_type(_552.x), _284, fma(as_type(_352.x), _282, spvFMul(_283, as_type(_415.x))))); float _731 = fma(as_type(_615.y), _285, fma(as_type(_552.y), _284, fma(as_type(_352.y), _282, spvFMul(_283, as_type(_415.y))))); float _733 = fma(as_type(_615.z), _285, fma(as_type(_552.z), _284, fma(as_type(_352.z), _282, spvFMul(_283, as_type(_415.z))))); float _742 = fma(_713, in.vs_in_attr0.x, fma(_715, in.vs_in_attr0.y, fma(_717, in.vs_in_attr0.z, fma(as_type(_573.w), _285, fma(as_type(_436.w), _284, fma(as_type(_310.w), _282, spvFMul(_283, as_type(_373.w)))))))); float _743 = fma(_721, in.vs_in_attr0.x, fma(_723, in.vs_in_attr0.y, fma(_725, in.vs_in_attr0.z, fma(as_type(_594.w), _285, fma(as_type(_457.w), _284, fma(as_type(_331.w), _282, spvFMul(_283, as_type(_394.w)))))))); float _744 = fma(_729, in.vs_in_attr0.x, fma(_731, in.vs_in_attr0.y, fma(_733, in.vs_in_attr0.z, fma(as_type(_615.w), _285, fma(as_type(_552.w), _284, fma(as_type(_352.w), _282, spvFMul(_283, as_type(_415.w)))))))); uint _764 = (cbuf_12.data[_195] + _153) * 3u; uint _768 = (cbuf_12.data[_195] + _157) * 3u; uint _774 = ((0u + ((_535 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _787 = uint4(cbuf_16.data[_774 + 0u], cbuf_16.data[_774 + 1u], cbuf_16.data[_774 + 2u], cbuf_16.data[_774 + 3u]); uint _795 = ((0u + ((_535 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _808 = uint4(cbuf_16.data[_795 + 0u], cbuf_16.data[_795 + 1u], cbuf_16.data[_795 + 2u], cbuf_16.data[_795 + 3u]); uint _816 = ((0u + (_764 * 16u)) + buf10_off) >> 2u; uint4 _829 = uint4(cbuf_16.data[_816 + 0u], cbuf_16.data[_816 + 1u], cbuf_16.data[_816 + 2u], cbuf_16.data[_816 + 3u]); uint _837 = ((0u + ((_764 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _850 = uint4(cbuf_16.data[_837 + 0u], cbuf_16.data[_837 + 1u], cbuf_16.data[_837 + 2u], cbuf_16.data[_837 + 3u]); uint _858 = ((0u + ((_764 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _871 = uint4(cbuf_16.data[_858 + 0u], cbuf_16.data[_858 + 1u], cbuf_16.data[_858 + 2u], cbuf_16.data[_858 + 3u]); uint _879 = ((0u + (_768 * 16u)) + buf10_off) >> 2u; uint4 _892 = uint4(cbuf_16.data[_879 + 0u], cbuf_16.data[_879 + 1u], cbuf_16.data[_879 + 2u], cbuf_16.data[_879 + 3u]); float _954 = fma(as_type(_892.x), _285, fma(as_type(_829.x), _284, fma(as_type(_636.x), _282, spvFMul(_283, as_type(_699.x))))); float _956 = fma(as_type(_892.y), _285, fma(as_type(_829.y), _284, fma(as_type(_636.y), _282, spvFMul(_283, as_type(_699.y))))); float _958 = fma(as_type(_892.z), _285, fma(as_type(_829.z), _284, fma(as_type(_636.z), _282, spvFMul(_283, as_type(_699.z))))); float _965 = spvFSub(fma(_954, _742, fma(_956, _743, fma(_958, _744, fma(as_type(_892.w), _285, fma(as_type(_829.w), _284, fma(as_type(_636.w), _282, spvFMul(_283, as_type(_699.w)))))))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _976 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _977 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _978 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _986 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _987 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _988 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _995 = fma(_713, _986, fma(_715, _987, spvFMul(_988, _717))); float _996 = fma(_721, _986, fma(_723, _987, spvFMul(_988, _725))); float _997 = fma(_729, _986, fma(_731, _987, spvFMul(_988, _733))); float _1004 = fma(_713, _976, fma(_715, _977, spvFMul(_978, _717))); float _1005 = fma(_721, _976, fma(_723, _977, spvFMul(_978, _725))); float _1006 = fma(_729, _976, fma(_731, _977, spvFMul(_978, _733))); uint _1014 = ((0u + ((_768 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _1027 = uint4(cbuf_16.data[_1014 + 0u], cbuf_16.data[_1014 + 1u], cbuf_16.data[_1014 + 2u], cbuf_16.data[_1014 + 3u]); uint _1035 = ((0u + ((_768 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _1048 = uint4(cbuf_16.data[_1035 + 0u], cbuf_16.data[_1035 + 1u], cbuf_16.data[_1035 + 2u], cbuf_16.data[_1035 + 3u]); float _1056 = fma(as_type(_1027.x), _285, fma(as_type(_850.x), _284, fma(as_type(_657.x), _282, spvFMul(_283, as_type(_787.x))))); float _1058 = fma(as_type(_1027.y), _285, fma(as_type(_850.y), _284, fma(as_type(_657.y), _282, spvFMul(_283, as_type(_787.y))))); float _1060 = fma(as_type(_1027.z), _285, fma(as_type(_850.z), _284, fma(as_type(_657.z), _282, spvFMul(_283, as_type(_787.z))))); float _1064 = fma(as_type(_1048.x), _285, fma(as_type(_871.x), _284, fma(as_type(_678.x), _282, spvFMul(_283, as_type(_808.x))))); float _1066 = fma(as_type(_1048.y), _285, fma(as_type(_871.y), _284, fma(as_type(_678.y), _282, spvFMul(_283, as_type(_808.y))))); float _1068 = fma(as_type(_1048.z), _285, fma(as_type(_871.z), _284, fma(as_type(_678.z), _282, spvFMul(_283, as_type(_808.z))))); float _1078 = spvFSub(fma(_1056, _742, fma(_1058, _743, fma(_1060, _744, fma(as_type(_1027.w), _285, fma(as_type(_850.w), _284, fma(as_type(_657.w), _282, spvFMul(_283, as_type(_787.w)))))))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _1080 = spvFSub(fma(_1064, _742, fma(_1066, _743, fma(_1068, _744, fma(as_type(_1048.w), _285, fma(as_type(_871.w), _284, fma(as_type(_678.w), _282, spvFMul(_283, as_type(_808.w)))))))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _1102 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _965, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _1078, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _1080, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _1104 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _965, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _1078, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _1080, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _1106 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _965, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _1078, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _1080, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _1108 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _965, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _1078, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _1080, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _1102; out.gl_Position.y = _1104; out.gl_Position.z = _1106; out.gl_Position.w = _1108; out.out_attr4.x = _1102; out.out_attr4.y = _1104; out.out_attr4.z = _1106; out.out_attr4.w = _1108; out.out_attr1.x = fma(_954, _1004, fma(_956, _1005, spvFMul(_1006, _958))); out.out_attr1.y = fma(_1056, _1004, fma(_1058, _1005, spvFMul(_1006, _1060))); out.out_attr1.z = fma(_1064, _1004, fma(_1066, _1005, spvFMul(_1006, _1068))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf11_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf11_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf11_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf11_dword_off])); out.out_attr0.x = fma(_954, _995, fma(_956, _996, spvFMul(_997, _958))); out.out_attr0.y = fma(_1056, _995, fma(_1058, _996, spvFMul(_997, _1060))); out.out_attr0.z = fma(_1064, _995, fma(_1066, _996, spvFMul(_997, _1068))); out.out_attr0.w = 0.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; constant uint _124 = {}; constant uint _125 = {}; constant uint _126 = {}; constant uint _127 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_44 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_28 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_40 [[buffer(14)]], constant fs_cbuf_block_f32_5& cbuf_48 [[buffer(15)]], texture2d fs_img108 [[texture(0)]], texture2d fs_img116 [[texture(1)]], texture2d fs_img52 [[texture(2)]], texture2d fs_img76 [[texture(3)]], texture2d fs_img68 [[texture(4)]], texture2d fs_img124 [[texture(5)]], texture2d fs_img60 [[texture(6)]], texturecube fs_img100 [[texture(7)]], texturecube fs_img92 [[texture(8)]], texture2d fs_img84 [[texture(9)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _161 = uint(gl_FrontFacing); float _263 = 1.0 / in.fs_in_attr4.w; float _319 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _333 = fma(as_type(cbuf_44.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))); float _335 = 1.0 / fma(as_type(cbuf_44.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _340 = fs_img108.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_44.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr4.x), _263, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_44.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr4.y), _263, 0.5))))); float4 _346 = fs_img116.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _347 = _346.x; float _349 = _346.y; float _351 = _346.z; float _353 = _346.w; float _355 = spvFMul(in.fs_in_attr0.x, _319); float _356 = spvFMul(in.fs_in_attr0.y, _319); float _357 = spvFMul(in.fs_in_attr0.z, _319); float _359 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _361 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _362 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _366 = fma(-fma(as_type(cbuf_44.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _335, as_type(cbuf_44.data[183u + buf0_dword_off])); float _369 = fma(-fma(as_type(cbuf_44.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _335, as_type(cbuf_44.data[187u + buf0_dword_off])); float _373 = fma(-_333, _335, as_type(cbuf_44.data[191u + buf0_dword_off])); bool _375 = 0u == _161; uint _388; uint _389; uint _390; if (_375) { _388 = as_type(fast::max(-_357, -_357)); _389 = as_type(fast::max(-_356, -_356)); _390 = as_type(fast::max(-_355, -_355)); } else { _388 = as_type(_357); _389 = as_type(_333); _390 = _161; } uint _394; uint _395; if (!_375) { _394 = as_type(_356); _395 = as_type(_355); } else { _394 = _389; _395 = _390; } uint _413 = uint(in.fs_in_attr0.w) * 13u; float _424 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _428 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float4 _434 = fs_img52.sample(fs_samp4, float2(_424, _428)); float _435 = _434.x; float _437 = _434.y; float _439 = _434.z; float _460 = spvFMul(_434.w, in.fs_in_attr2.w); float _462 = spvFMul(_460, as_type(cbuf_36.data[((12u + ((_413 + 7u) * 16u)) + buf2_off) >> 2u])); float _464 = fma(as_type(cbuf_32.data[21u + buf3_dword_off]), spvFAdd(-0.5, _340.w), _460); bool _469 = (as_type(cbuf_32.data[20u + buf3_dword_off]) > _464) || (_462 == 0.0); bool _470 = !_469; uint _1082; uint _1083; uint _1084; uint _1085; uint _1086; uint _1087; uint _1088; uint _1089; uint _1090; uint _1091; uint _1092; uint _1093; uint _1094; uint _1095; uint _1096; uint _1097; uint _1098; uint _1099; uint _1100; uint _1101; bool _1102; uint _1103; uint _1104; uint _1105; uint _1106; if (!_469) { float4 _496 = fs_img76.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _525 = fs_img68.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _526 = _525.x; float4 _531 = fs_img124.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _533 = _531.y; float _538 = fma(2.0, _496.y, -1.0); float _539 = spvFMul(fma(2.0, _496.x, -1.0), fma(2.0, _496.w, -1.0)); float _550 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _552 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_539, _539), spvFMul(_538, _538)), 0.0, 1.0))); float _554 = rsqrt(fma(_359, _359, fma(_361, _361, spvFMul(_362, _362)))); float _567 = fma(spvFMul(_362, _554), _539, fma(spvFMul(in.fs_in_attr1.z, _550), _538, spvFMul(as_type(_388), _552))); float _584 = fma(spvFMul(_361, _554), _539, fma(spvFMul(in.fs_in_attr1.y, _550), _538, spvFMul(as_type(_394), _552))); float _587 = fma(spvFMul(_359, _554), _539, fma(spvFMul(in.fs_in_attr1.x, _550), _538, spvFMul(as_type(_395), _552))); uint _591 = 24u + buf3_dword_off; float _597 = rsqrt(fma(_366, _366, fma(_369, _369, spvFMul(_373, _373)))); float _598 = rsqrt(fma(_587, _587, fma(_584, _584, spvFMul(_567, _567)))); float _600 = spvFMul(_567, _598); float _602 = spvFMul(_584, _598); float _606 = spvFMul(_587, _598); float _616 = spvFMul(fma(_606, spvFMul(_366, _597), fma(_602, spvFMul(_369, _597), spvFMul(spvFMul(_373, _597), _600))), 2.0); float4 _622 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _623 = _622.x; float _624 = _622.y; float _625 = _622.z; float _630 = spvFMul(as_type(cbuf_32.data[8u + buf3_dword_off]), 0.00390625); float _635 = spvFMul(fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _526, _531.x), _526), _526), _630); float _637 = fma(-_366, _597, spvFMul(_606, _616)); float _639 = fma(-_369, _597, spvFMul(_602, _616)); float _641 = fma(-_373, _597, spvFMul(_600, _616)); float _652 = 1.0 / abs(1.0); float _654 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_635, 13.0), 0.5))); float _656 = fma(_639, _652, 1.5); float _657 = fma(_637, _652, 1.5); uint _661 = ((0u + ((_413 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _674 = uint4(cbuf_36.data[_661 + 0u], cbuf_36.data[_661 + 1u], cbuf_36.data[_661 + 2u], cbuf_36.data[_661 + 3u]); uint _675 = _674.x; uint _676 = _674.y; uint _677 = _674.z; float4 _685 = fs_img100.sample(fs_samp20, float3(spvFSub(_657, 1.5), spvFSub(_656, 1.5), _641), level(_654)); uint _692 = ((0u + ((_413 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _705 = uint4(cbuf_36.data[_692 + 0u], cbuf_36.data[_692 + 1u], cbuf_36.data[_692 + 2u], cbuf_36.data[_692 + 3u]); uint _713 = ((0u + ((_413 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _726 = uint4(cbuf_36.data[_713 + 0u], cbuf_36.data[_713 + 1u], cbuf_36.data[_713 + 2u], cbuf_36.data[_713 + 3u]); uint _734 = ((0u + ((_413 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _747 = uint4(cbuf_36.data[_734 + 0u], cbuf_36.data[_734 + 1u], cbuf_36.data[_734 + 2u], cbuf_36.data[_734 + 3u]); float4 _758 = fs_img92.sample(fs_samp20, float3(spvFSub(_657, 1.5), spvFSub(_656, 1.5), _641), level(_654)); float _759 = _758.x; float _760 = _758.y; float _762 = _758.z; uint _780 = 12u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); float _786 = fast::clamp(spvFAdd(fma(_637, as_type(_395), fma(_639, as_type(_394), spvFMul(as_type(_388), _641))), 1.0), 0.0, 1.0); bool _789 = (_625 == 0.0) && (0.0 == _624); float _802 = _789 ? _623 : _625; float _803 = _789 ? _623 : _624; float _804 = spvFMul(_533, _533); float _816 = fast::clamp(spvFMul(sqrt(_435), as_type(cbuf_40.data[24u + buf5_dword_off])), 0.0, 1.0); float _819 = fast::clamp(spvFMul(sqrt(_437), as_type(cbuf_40.data[25u + buf5_dword_off])), 0.0, 1.0); float _822 = fast::clamp(spvFMul(sqrt(_439), as_type(cbuf_40.data[26u + buf5_dword_off])), 0.0, 1.0); float _830 = fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _623, _804), _623), _623); float _832 = fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _803, _804), _803), _803); float _835 = fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _802, _804), _802), _802); float4 _841 = fs_img84.sample(fs_samp20, float2(_424, _428)); float _855 = spvFMul(_816, _816); float _856 = spvFMul(_819, _819); float _857 = spvFMul(_822, _822); float _883 = fma(as_type(_675), fma(-as_type(_676), _759, spvFMul(as_type(_677), _685.x)), spvFMul(as_type(_676), _759)); float _886 = fma(as_type(_675), fma(-as_type(_676), _760, spvFMul(as_type(_677), _685.y)), spvFMul(as_type(_676), _760)); float _891 = fma(_600, as_type(_705.z), fma(_606, as_type(_705.x), spvFMul(_602, as_type(_705.y)))); float _894 = fma(_600, as_type(_726.z), fma(_606, as_type(_726.x), spvFMul(_602, as_type(_726.y)))); float _903 = fma(-_822, _822, fma(_353, _857, _351)); float _908 = spvFMul(_786, _786); float _918 = fma(as_type(cbuf_32.data[_591]), fma(-_819, _819, fma(_353, _856, _349)), _856); float _921 = fma(as_type(cbuf_32.data[_591]), _903, _857); float _926 = spvFMul(spvFMul(_832, _886), _908); float _929 = fast::max(0.0, spvFAdd(as_type(_705.w), _891)); float _930 = fast::max(0.0, spvFAdd(as_type(_726.w), _894)); float _931 = fast::max(0.0, spvFAdd(as_type(_747.w), fma(_600, as_type(_747.z), fma(_606, as_type(_747.x), spvFMul(_602, as_type(_747.y)))))); float _935 = spvFMul(as_type(cbuf_32.data[4u + buf3_dword_off]), as_type(cbuf_48.data[_780])); float _953 = spvFMul(as_type(cbuf_28.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr2.y); float _965 = spvFMul(_926, spvFMul(as_type(cbuf_32.data[5u + buf3_dword_off]), as_type(cbuf_48.data[_780]))); float _967 = spvFMul(spvFMul(spvFMul(_835, fma(as_type(_675), fma(-as_type(_676), _762, spvFMul(as_type(_677), _685.z)), spvFMul(as_type(_676), _762))), _908), spvFMul(as_type(cbuf_32.data[6u + buf3_dword_off]), as_type(cbuf_48.data[_780]))); bool _970 = _470 && (!_469); uint _972; if (_970) { _972 = _413 + 6u; } else { _972 = as_type(_935); } uint _1028; uint _1029; uint _1030; uint _1031; uint _1032; uint _1033; uint _1034; uint _1035; uint _1036; uint _1037; uint _1038; uint _1039; uint _1040; uint _1041; uint _1042; if (_970) { bool _979 = as_type(cbuf_32.data[22u + buf3_dword_off]) != 0.0; _1028 = as_type(fma(0.5, _606, 0.500488758087158203125)); _1029 = as_type(spvFMul(0.100000001490116119384765625, _953)); _1030 = as_type(spvFMul(_630, _635)); _1031 = as_type(_979 ? _462 : _841.x); _1032 = as_type(_979 ? _462 : 1.0); _1033 = as_type(_979 ? _462 : 0.0); _1034 = as_type(fma(0.5, _600, 0.500488758087158203125)); _1035 = as_type(fma(0.5, _602, 0.500488758087158203125)); _1036 = as_type(_979 ? _462 : spvFMul(as_type(cbuf_32.data[56u + buf3_dword_off]), 0.0039215688593685626983642578125)); _1037 = cbuf_36.data[((0u + ((_413 + 12u) * 16u)) + buf2_off) >> 2u]; _1038 = as_type(sqrt(_832)); _1039 = as_type(_979 ? _462 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + (_972 * 16u)) + buf2_off) >> 2u]))); _1040 = as_type(sqrt(_835)); _1041 = as_type(sqrt(_830)); _1042 = as_type(_979 ? _462 : as_type(_674.w)); } else { _1028 = as_type(_886); _1029 = as_type(_883); _1030 = as_type(_921); _1031 = as_type(_918); _1032 = as_type(_903); _1033 = as_type(_602); _1034 = as_type(_894); _1035 = as_type(_891); _1036 = as_type(_762); _1037 = as_type(_760); _1038 = as_type(_931); _1039 = as_type(_832); _1040 = as_type(_835); _1041 = as_type(_630); _1042 = as_type(_926); } uint _1061; uint _1062; uint _1063; uint _1064; uint _1065; uint _1066; uint _1067; uint _1068; uint _1069; uint _1070; uint _1071; uint _1072; uint _1073; uint _1074; uint _1075; uint _1076; uint _1077; uint _1078; uint _1079; uint _1080; uint _1081; if (_470 && (!_970)) { _1061 = as_type(_953); _1062 = as_type(_965); _1063 = as_type(_953); _1064 = _1042; _1065 = as_type(_967); _1066 = as_type(_965); _1067 = as_type(_953); _1068 = _1042; _1069 = as_type(_953); _1070 = as_type(_953); _1071 = _1042; _1072 = as_type(_967); _1073 = as_type(_965); _1074 = _1042; _1075 = as_type(_967); _1076 = as_type(_965); _1077 = _1042; _1078 = as_type(_967); _1079 = as_type(_953); _1080 = as_type(_967); _1081 = as_type(_965); } else { _1061 = _1028; _1062 = _1029; _1063 = _1030; _1064 = _1031; _1065 = as_type(spvFMul(as_type(cbuf_32.data[2u + buf3_dword_off]), _921)); _1066 = as_type(spvFMul(as_type(cbuf_32.data[1u + buf3_dword_off]), _918)); _1067 = as_type(spvFMul(as_type(cbuf_32.data[0u + buf3_dword_off]), fma(as_type(cbuf_32.data[_591]), fma(-_816, _816, fma(_353, _855, _347)), _855))); _1068 = _1032; _1069 = as_type(fma(-_830, _929, _929)); _1070 = as_type(spvFMul(spvFMul(spvFMul(_830, _883), _908), _935)); _1071 = _1033; _1072 = _1034; _1073 = _1035; _1074 = _1036; _1075 = _1037; _1076 = _1038; _1077 = _1039; _1078 = _1040; _1079 = _1041; _1080 = as_type(fma(-_835, _931, _931)); _1081 = as_type(fma(-_832, _930, _930)); } _1082 = _1071; _1083 = _1072; _1084 = _1073; _1085 = _1061; _1086 = _1074; _1087 = _1075; _1088 = _1062; _1089 = _1063; _1090 = _1064; _1091 = _1065; _1092 = _1066; _1093 = _1067; _1094 = _1077; _1095 = _1078; _1096 = _1076; _1097 = _1079; _1098 = _1068; _1099 = _1080; _1100 = _1081; _1101 = _1069; _1102 = _470; _1103 = _1042; _1104 = as_type(_967); _1105 = as_type(_965); _1106 = _1070; } else { _1082 = as_type(_464); _1083 = as_type(_428); _1084 = as_type(_424); _1085 = _126; _1086 = as_type(in.fs_in_attr3.x); _1087 = as_type(_369); _1088 = _127; _1089 = _124; _1090 = as_type(_439); _1091 = as_type(_437); _1092 = as_type(_435); _1093 = as_type(_353); _1094 = as_type(in.fs_in_attr3.z); _1095 = as_type(_359); _1096 = as_type(_362); _1097 = as_type(in.fs_in_attr3.y); _1098 = as_type(_351); _1099 = _388; _1100 = _394; _1101 = as_type(_349); _1102 = true; _1103 = as_type(_373); _1104 = _395; _1105 = _125; _1106 = as_type(_347); } if (!_1102) { discard_fragment(); } out.frag_color5.x = as_type(_1106); out.frag_color5.y = as_type(_1105); out.frag_color5.z = as_type(_1104); out.frag_color5.w = as_type(_1103); if (!_1102) { discard_fragment(); } out.frag_color4.x = as_type(_1101); out.frag_color4.y = as_type(_1100); out.frag_color4.z = as_type(_1099); out.frag_color4.w = as_type(_1098); if (!_1102) { discard_fragment(); } out.frag_color3.x = as_type(_1097); out.frag_color3.y = as_type(_1096); out.frag_color3.z = as_type(_1095); out.frag_color3.w = as_type(_1094); if (!_1102) { discard_fragment(); } out.frag_color2.x = as_type(_1093); out.frag_color2.y = as_type(_1092); out.frag_color2.z = as_type(_1091); out.frag_color2.w = as_type(_1090); if (!_1102) { discard_fragment(); } out.frag_color1.x = as_type(_1089); out.frag_color1.y = as_type(_1088); out.frag_color1.z = as_type(_1087); out.frag_color1.w = as_type(_1086); if (_469) { discard_fragment(); } out.frag_color0.x = as_type(_1085); out.frag_color0.y = as_type(_1084); out.frag_color0.z = as_type(_1083); out.frag_color0.w = as_type(_1082); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc77a0097 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[336]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; constant uint _97 = {}; constant uint _98 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(20)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(21)]]) { main0_out out = {}; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint _145 = as_type(as_type(in.vs_in_attr1.z)); uint _153 = as_type(as_type(in.vs_in_attr2.x)); uint _157 = as_type(as_type(in.vs_in_attr2.y)); float _233 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_153))); float _234 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_157))); float _235 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.z))))); float _242 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _243 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _244 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_145))); bool _249 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u)] == 0u; uint _294; uint _295; uint _296; uint _297; uint _298; uint _299; uint _300; uint _301; uint _302; uint _303; uint _304; uint _305; if (!_249) { _294 = cbuf_24.data[2u + buf8_dword_off]; _295 = cbuf_24.data[1u + buf8_dword_off]; _296 = cbuf_24.data[7u + buf8_dword_off]; _297 = cbuf_24.data[6u + buf8_dword_off]; _298 = cbuf_24.data[4u + buf8_dword_off]; _299 = cbuf_24.data[11u + buf8_dword_off]; _300 = cbuf_24.data[10u + buf8_dword_off]; _301 = cbuf_24.data[9u + buf8_dword_off]; _302 = cbuf_24.data[0u + buf8_dword_off]; _303 = cbuf_24.data[8u + buf8_dword_off]; _304 = cbuf_24.data[5u + buf8_dword_off]; _305 = cbuf_24.data[3u + buf8_dword_off]; } else { _294 = _97; _295 = _98; _296 = as_type(as_type(in.vs_in_attr3.y)); _297 = as_type(as_type(in.vs_in_attr2.w)); _298 = _157; _299 = _153; _300 = as_type(as_type(in.vs_in_attr1.w)); _301 = _145; _302 = as_type(in.vs_in_attr5.w); _303 = as_type(in.vs_in_attr5.z); _304 = as_type(in.vs_in_attr5.y); _305 = as_type(as_type(in.vs_in_attr4.y)); } uint _704; uint _705; uint _706; uint _707; uint _708; uint _709; uint _710; uint _711; uint _712; uint _713; uint _714; uint _715; if (_249) { uint _307 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); uint _312 = (cbuf_16.data[_307] + _305) * 3u; uint _313 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.x))) * 3u; uint _319 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.z))) * 3u; uint _323 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.w))) * 3u; uint _329 = ((0u + (_312 * 16u)) + buf10_off) >> 2u; uint4 _342 = uint4(cbuf_20.data[_329 + 0u], cbuf_20.data[_329 + 1u], cbuf_20.data[_329 + 2u], cbuf_20.data[_329 + 3u]); uint _350 = ((0u + ((_312 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _363 = uint4(cbuf_20.data[_350 + 0u], cbuf_20.data[_350 + 1u], cbuf_20.data[_350 + 2u], cbuf_20.data[_350 + 3u]); uint _371 = ((0u + ((_312 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _384 = uint4(cbuf_20.data[_371 + 0u], cbuf_20.data[_371 + 1u], cbuf_20.data[_371 + 2u], cbuf_20.data[_371 + 3u]); uint _392 = ((0u + (_313 * 16u)) + buf10_off) >> 2u; uint4 _405 = uint4(cbuf_20.data[_392 + 0u], cbuf_20.data[_392 + 1u], cbuf_20.data[_392 + 2u], cbuf_20.data[_392 + 3u]); uint _413 = ((0u + ((_313 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _426 = uint4(cbuf_20.data[_413 + 0u], cbuf_20.data[_413 + 1u], cbuf_20.data[_413 + 2u], cbuf_20.data[_413 + 3u]); uint _434 = ((0u + ((_313 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _447 = uint4(cbuf_20.data[_434 + 0u], cbuf_20.data[_434 + 1u], cbuf_20.data[_434 + 2u], cbuf_20.data[_434 + 3u]); uint _455 = ((0u + (_319 * 16u)) + buf10_off) >> 2u; uint4 _468 = uint4(cbuf_20.data[_455 + 0u], cbuf_20.data[_455 + 1u], cbuf_20.data[_455 + 2u], cbuf_20.data[_455 + 3u]); uint _476 = ((0u + ((_319 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _489 = uint4(cbuf_20.data[_476 + 0u], cbuf_20.data[_476 + 1u], cbuf_20.data[_476 + 2u], cbuf_20.data[_476 + 3u]); uint _497 = ((0u + ((_319 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _510 = uint4(cbuf_20.data[_497 + 0u], cbuf_20.data[_497 + 1u], cbuf_20.data[_497 + 2u], cbuf_20.data[_497 + 3u]); uint _518 = ((0u + (_323 * 16u)) + buf10_off) >> 2u; uint4 _531 = uint4(cbuf_20.data[_518 + 0u], cbuf_20.data[_518 + 1u], cbuf_20.data[_518 + 2u], cbuf_20.data[_518 + 3u]); uint _539 = ((0u + ((_323 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _552 = uint4(cbuf_20.data[_539 + 0u], cbuf_20.data[_539 + 1u], cbuf_20.data[_539 + 2u], cbuf_20.data[_539 + 3u]); uint _560 = ((0u + ((_323 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _573 = uint4(cbuf_20.data[_560 + 0u], cbuf_20.data[_560 + 1u], cbuf_20.data[_560 + 2u], cbuf_20.data[_560 + 3u]); float _588 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(as_type(_302), spvFAdd(as_type(_303), spvFAdd(in.vs_in_attr5.x, as_type(_304))))); float _590 = spvFMul(as_type(_304), _588); float _591 = spvFMul(in.vs_in_attr5.x, _588); float _617 = spvFMul(as_type(_303), _588); float _643 = spvFMul(as_type(_302), _588); _704 = as_type(fma(as_type(_531.x), _643, fma(as_type(_468.x), _617, fma(as_type(_405.x), _591, spvFMul(_590, as_type(_342.x)))))); _705 = as_type(fma(as_type(_552.x), _643, fma(as_type(_489.x), _617, fma(as_type(_426.x), _591, spvFMul(_590, as_type(_363.x)))))); _706 = as_type(fma(as_type(_531.y), _643, fma(as_type(_468.y), _617, fma(as_type(_405.y), _591, spvFMul(_590, as_type(_342.y)))))); _707 = as_type(fma(as_type(_573.x), _643, fma(as_type(_510.x), _617, fma(as_type(_447.x), _591, spvFMul(_590, as_type(_384.x)))))); _708 = as_type(fma(as_type(_552.y), _643, fma(as_type(_489.y), _617, fma(as_type(_426.y), _591, spvFMul(_590, as_type(_363.y)))))); _709 = as_type(fma(as_type(_531.w), _643, fma(as_type(_468.w), _617, fma(as_type(_405.w), _591, spvFMul(_590, as_type(_342.w)))))); _710 = as_type(fma(as_type(_531.z), _643, fma(as_type(_468.z), _617, fma(as_type(_405.z), _591, spvFMul(_590, as_type(_342.z)))))); _711 = as_type(fma(as_type(_573.y), _643, fma(as_type(_510.y), _617, fma(as_type(_447.y), _591, spvFMul(_590, as_type(_384.y)))))); _712 = as_type(fma(as_type(_552.w), _643, fma(as_type(_489.w), _617, fma(as_type(_426.w), _591, spvFMul(_590, as_type(_363.w)))))); _713 = as_type(fma(as_type(_552.z), _643, fma(as_type(_489.z), _617, fma(as_type(_426.z), _591, spvFMul(_590, as_type(_363.z)))))); _714 = as_type(fma(as_type(_573.w), _643, fma(as_type(_510.w), _617, fma(as_type(_447.w), _591, spvFMul(_590, as_type(_384.w)))))); _715 = as_type(fma(as_type(_573.z), _643, fma(as_type(_510.z), _617, fma(as_type(_447.z), _591, spvFMul(_590, as_type(_384.z)))))); } else { _704 = _302; _705 = _298; _706 = _295; _707 = _303; _708 = _304; _709 = _305; _710 = _294; _711 = _301; _712 = _296; _713 = _297; _714 = _299; _715 = _300; } float _812 = spvFSub(fma(as_type(_707), in.vs_in_attr0.x, fma(as_type(_711), in.vs_in_attr0.y, fma(as_type(_715), in.vs_in_attr0.z, as_type(_714)))), as_type(cbuf_28.data[191u + buf11_dword_off])); float _816 = spvFSub(fma(as_type(_705), in.vs_in_attr0.x, fma(as_type(_708), in.vs_in_attr0.y, fma(as_type(_713), in.vs_in_attr0.z, as_type(_712)))), as_type(cbuf_28.data[187u + buf11_dword_off])); float _830 = spvFSub(fma(as_type(_704), in.vs_in_attr0.x, fma(as_type(_706), in.vs_in_attr0.y, fma(as_type(_710), in.vs_in_attr0.z, as_type(_709)))), as_type(cbuf_28.data[183u + buf11_dword_off])); float _840 = fma(as_type(cbuf_28.data[200u + buf11_dword_off]), _830, fma(as_type(cbuf_28.data[201u + buf11_dword_off]), _816, fma(as_type(cbuf_28.data[202u + buf11_dword_off]), _812, as_type(cbuf_28.data[203u + buf11_dword_off])))); float _842 = fma(as_type(cbuf_28.data[204u + buf11_dword_off]), _830, fma(as_type(cbuf_28.data[205u + buf11_dword_off]), _816, fma(as_type(cbuf_28.data[206u + buf11_dword_off]), _812, as_type(cbuf_28.data[207u + buf11_dword_off])))); float _844 = fma(as_type(cbuf_28.data[208u + buf11_dword_off]), _830, fma(as_type(cbuf_28.data[209u + buf11_dword_off]), _816, fma(as_type(cbuf_28.data[210u + buf11_dword_off]), _812, as_type(cbuf_28.data[211u + buf11_dword_off])))); float _846 = fma(as_type(cbuf_28.data[212u + buf11_dword_off]), _830, fma(as_type(cbuf_28.data[213u + buf11_dword_off]), _816, fma(as_type(cbuf_28.data[214u + buf11_dword_off]), _812, as_type(cbuf_28.data[215u + buf11_dword_off])))); out.gl_Position.x = _840; out.gl_Position.y = _842; out.gl_Position.z = _844; out.gl_Position.w = _846; out.out_attr0.x = fma(as_type(_704), _242, fma(as_type(_706), _243, spvFMul(_244, as_type(_710)))); out.out_attr0.y = fma(as_type(_705), _242, fma(as_type(_708), _243, spvFMul(_244, as_type(_713)))); out.out_attr0.z = fma(as_type(_707), _242, fma(as_type(_711), _243, spvFMul(_244, as_type(_715)))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_704), _233, fma(as_type(_706), _234, spvFMul(_235, as_type(_710)))); out.out_attr1.y = fma(as_type(_705), _233, fma(as_type(_708), _234, spvFMul(_235, as_type(_713)))); out.out_attr1.z = fma(as_type(_707), _233, fma(as_type(_711), _234, spvFMul(_235, as_type(_715)))); out.out_attr1.w = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); out.out_attr2.x = in.vs_in_attr6.x; out.out_attr2.y = in.vs_in_attr6.y; out.out_attr2.z = in.vs_in_attr6.z; out.out_attr2.w = in.vs_in_attr6.w; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[2u + buf12_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[3u + buf12_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.z))))), as_type(cbuf_8.data[6u + buf12_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.w))))), as_type(cbuf_8.data[7u + buf12_dword_off])); out.out_attr4.x = _840; out.out_attr4.y = _842; out.out_attr4.z = _844; out.out_attr4.w = _846; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; constant uint _124 = {}; constant uint _125 = {}; constant uint _126 = {}; constant uint _127 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_44 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_28 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_40 [[buffer(14)]], constant fs_cbuf_block_f32_5& cbuf_48 [[buffer(15)]], texture2d fs_img108 [[texture(0)]], texture2d fs_img116 [[texture(1)]], texture2d fs_img52 [[texture(2)]], texture2d fs_img76 [[texture(3)]], texture2d fs_img68 [[texture(4)]], texture2d fs_img124 [[texture(5)]], texture2d fs_img60 [[texture(6)]], texturecube fs_img100 [[texture(7)]], texturecube fs_img92 [[texture(8)]], texture2d fs_img84 [[texture(9)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _161 = uint(gl_FrontFacing); float _263 = 1.0 / in.fs_in_attr4.w; float _319 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _333 = fma(as_type(cbuf_44.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))); float _335 = 1.0 / fma(as_type(cbuf_44.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _340 = fs_img108.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_44.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr4.x), _263, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_44.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr4.y), _263, 0.5))))); float4 _346 = fs_img116.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _347 = _346.x; float _349 = _346.y; float _351 = _346.z; float _353 = _346.w; float _355 = spvFMul(in.fs_in_attr0.x, _319); float _356 = spvFMul(in.fs_in_attr0.y, _319); float _357 = spvFMul(in.fs_in_attr0.z, _319); float _359 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _361 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _362 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _366 = fma(-fma(as_type(cbuf_44.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _335, as_type(cbuf_44.data[183u + buf0_dword_off])); float _369 = fma(-fma(as_type(cbuf_44.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _335, as_type(cbuf_44.data[187u + buf0_dword_off])); float _373 = fma(-_333, _335, as_type(cbuf_44.data[191u + buf0_dword_off])); bool _375 = 0u == _161; uint _388; uint _389; uint _390; if (_375) { _388 = as_type(fast::max(-_357, -_357)); _389 = as_type(fast::max(-_356, -_356)); _390 = as_type(fast::max(-_355, -_355)); } else { _388 = as_type(_357); _389 = as_type(_333); _390 = _161; } uint _394; uint _395; if (!_375) { _394 = as_type(_356); _395 = as_type(_355); } else { _394 = _389; _395 = _390; } uint _413 = uint(in.fs_in_attr0.w) * 13u; float _424 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _428 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float4 _434 = fs_img52.sample(fs_samp4, float2(_424, _428)); float _435 = _434.x; float _437 = _434.y; float _439 = _434.z; float _460 = spvFMul(_434.w, in.fs_in_attr2.w); float _462 = spvFMul(_460, as_type(cbuf_36.data[((12u + ((_413 + 7u) * 16u)) + buf2_off) >> 2u])); float _464 = fma(as_type(cbuf_32.data[21u + buf3_dword_off]), spvFAdd(-0.5, _340.w), _460); bool _469 = (as_type(cbuf_32.data[20u + buf3_dword_off]) > _464) || (_462 == 0.0); bool _470 = !_469; uint _1082; uint _1083; uint _1084; uint _1085; uint _1086; uint _1087; uint _1088; uint _1089; uint _1090; uint _1091; uint _1092; uint _1093; uint _1094; uint _1095; uint _1096; uint _1097; uint _1098; uint _1099; uint _1100; uint _1101; bool _1102; uint _1103; uint _1104; uint _1105; uint _1106; if (!_469) { float4 _496 = fs_img76.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _525 = fs_img68.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _526 = _525.x; float4 _531 = fs_img124.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _533 = _531.y; float _538 = fma(2.0, _496.y, -1.0); float _539 = spvFMul(fma(2.0, _496.x, -1.0), fma(2.0, _496.w, -1.0)); float _550 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _552 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_539, _539), spvFMul(_538, _538)), 0.0, 1.0))); float _554 = rsqrt(fma(_359, _359, fma(_361, _361, spvFMul(_362, _362)))); float _567 = fma(spvFMul(_362, _554), _539, fma(spvFMul(in.fs_in_attr1.z, _550), _538, spvFMul(as_type(_388), _552))); float _584 = fma(spvFMul(_361, _554), _539, fma(spvFMul(in.fs_in_attr1.y, _550), _538, spvFMul(as_type(_394), _552))); float _587 = fma(spvFMul(_359, _554), _539, fma(spvFMul(in.fs_in_attr1.x, _550), _538, spvFMul(as_type(_395), _552))); uint _591 = 24u + buf3_dword_off; float _597 = rsqrt(fma(_366, _366, fma(_369, _369, spvFMul(_373, _373)))); float _598 = rsqrt(fma(_587, _587, fma(_584, _584, spvFMul(_567, _567)))); float _600 = spvFMul(_567, _598); float _602 = spvFMul(_584, _598); float _606 = spvFMul(_587, _598); float _616 = spvFMul(fma(_606, spvFMul(_366, _597), fma(_602, spvFMul(_369, _597), spvFMul(spvFMul(_373, _597), _600))), 2.0); float4 _622 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _623 = _622.x; float _624 = _622.y; float _625 = _622.z; float _630 = spvFMul(as_type(cbuf_32.data[8u + buf3_dword_off]), 0.00390625); float _635 = spvFMul(fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _526, _531.x), _526), _526), _630); float _637 = fma(-_366, _597, spvFMul(_606, _616)); float _639 = fma(-_369, _597, spvFMul(_602, _616)); float _641 = fma(-_373, _597, spvFMul(_600, _616)); float _652 = 1.0 / abs(1.0); float _654 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_635, 13.0), 0.5))); float _656 = fma(_639, _652, 1.5); float _657 = fma(_637, _652, 1.5); uint _661 = ((0u + ((_413 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _674 = uint4(cbuf_36.data[_661 + 0u], cbuf_36.data[_661 + 1u], cbuf_36.data[_661 + 2u], cbuf_36.data[_661 + 3u]); uint _675 = _674.x; uint _676 = _674.y; uint _677 = _674.z; float4 _685 = fs_img100.sample(fs_samp20, float3(spvFSub(_657, 1.5), spvFSub(_656, 1.5), _641), level(_654)); uint _692 = ((0u + ((_413 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _705 = uint4(cbuf_36.data[_692 + 0u], cbuf_36.data[_692 + 1u], cbuf_36.data[_692 + 2u], cbuf_36.data[_692 + 3u]); uint _713 = ((0u + ((_413 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _726 = uint4(cbuf_36.data[_713 + 0u], cbuf_36.data[_713 + 1u], cbuf_36.data[_713 + 2u], cbuf_36.data[_713 + 3u]); uint _734 = ((0u + ((_413 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _747 = uint4(cbuf_36.data[_734 + 0u], cbuf_36.data[_734 + 1u], cbuf_36.data[_734 + 2u], cbuf_36.data[_734 + 3u]); float4 _758 = fs_img92.sample(fs_samp20, float3(spvFSub(_657, 1.5), spvFSub(_656, 1.5), _641), level(_654)); float _759 = _758.x; float _760 = _758.y; float _762 = _758.z; uint _780 = 12u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); float _786 = fast::clamp(spvFAdd(fma(_637, as_type(_395), fma(_639, as_type(_394), spvFMul(as_type(_388), _641))), 1.0), 0.0, 1.0); bool _789 = (_625 == 0.0) && (0.0 == _624); float _802 = _789 ? _623 : _625; float _803 = _789 ? _623 : _624; float _804 = spvFMul(_533, _533); float _816 = fast::clamp(spvFMul(sqrt(_435), as_type(cbuf_40.data[24u + buf5_dword_off])), 0.0, 1.0); float _819 = fast::clamp(spvFMul(sqrt(_437), as_type(cbuf_40.data[25u + buf5_dword_off])), 0.0, 1.0); float _822 = fast::clamp(spvFMul(sqrt(_439), as_type(cbuf_40.data[26u + buf5_dword_off])), 0.0, 1.0); float _830 = fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _623, _804), _623), _623); float _832 = fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _803, _804), _803), _803); float _835 = fma(as_type(cbuf_32.data[_591]), spvFSub(fma(_353, _802, _804), _802), _802); float4 _841 = fs_img84.sample(fs_samp20, float2(_424, _428)); float _855 = spvFMul(_816, _816); float _856 = spvFMul(_819, _819); float _857 = spvFMul(_822, _822); float _883 = fma(as_type(_675), fma(-as_type(_676), _759, spvFMul(as_type(_677), _685.x)), spvFMul(as_type(_676), _759)); float _886 = fma(as_type(_675), fma(-as_type(_676), _760, spvFMul(as_type(_677), _685.y)), spvFMul(as_type(_676), _760)); float _891 = fma(_600, as_type(_705.z), fma(_606, as_type(_705.x), spvFMul(_602, as_type(_705.y)))); float _894 = fma(_600, as_type(_726.z), fma(_606, as_type(_726.x), spvFMul(_602, as_type(_726.y)))); float _903 = fma(-_822, _822, fma(_353, _857, _351)); float _908 = spvFMul(_786, _786); float _918 = fma(as_type(cbuf_32.data[_591]), fma(-_819, _819, fma(_353, _856, _349)), _856); float _921 = fma(as_type(cbuf_32.data[_591]), _903, _857); float _926 = spvFMul(spvFMul(_832, _886), _908); float _929 = fast::max(0.0, spvFAdd(as_type(_705.w), _891)); float _930 = fast::max(0.0, spvFAdd(as_type(_726.w), _894)); float _931 = fast::max(0.0, spvFAdd(as_type(_747.w), fma(_600, as_type(_747.z), fma(_606, as_type(_747.x), spvFMul(_602, as_type(_747.y)))))); float _935 = spvFMul(as_type(cbuf_32.data[4u + buf3_dword_off]), as_type(cbuf_48.data[_780])); float _953 = spvFMul(as_type(cbuf_28.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr2.y); float _965 = spvFMul(_926, spvFMul(as_type(cbuf_32.data[5u + buf3_dword_off]), as_type(cbuf_48.data[_780]))); float _967 = spvFMul(spvFMul(spvFMul(_835, fma(as_type(_675), fma(-as_type(_676), _762, spvFMul(as_type(_677), _685.z)), spvFMul(as_type(_676), _762))), _908), spvFMul(as_type(cbuf_32.data[6u + buf3_dword_off]), as_type(cbuf_48.data[_780]))); bool _970 = _470 && (!_469); uint _972; if (_970) { _972 = _413 + 6u; } else { _972 = as_type(_935); } uint _1028; uint _1029; uint _1030; uint _1031; uint _1032; uint _1033; uint _1034; uint _1035; uint _1036; uint _1037; uint _1038; uint _1039; uint _1040; uint _1041; uint _1042; if (_970) { bool _979 = as_type(cbuf_32.data[22u + buf3_dword_off]) != 0.0; _1028 = as_type(fma(0.5, _606, 0.500488758087158203125)); _1029 = as_type(spvFMul(0.100000001490116119384765625, _953)); _1030 = as_type(spvFMul(_630, _635)); _1031 = as_type(_979 ? _462 : _841.x); _1032 = as_type(_979 ? _462 : 1.0); _1033 = as_type(_979 ? _462 : 0.0); _1034 = as_type(fma(0.5, _600, 0.500488758087158203125)); _1035 = as_type(fma(0.5, _602, 0.500488758087158203125)); _1036 = as_type(_979 ? _462 : spvFMul(as_type(cbuf_32.data[56u + buf3_dword_off]), 0.0039215688593685626983642578125)); _1037 = cbuf_36.data[((0u + ((_413 + 12u) * 16u)) + buf2_off) >> 2u]; _1038 = as_type(sqrt(_832)); _1039 = as_type(_979 ? _462 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + (_972 * 16u)) + buf2_off) >> 2u]))); _1040 = as_type(sqrt(_835)); _1041 = as_type(sqrt(_830)); _1042 = as_type(_979 ? _462 : as_type(_674.w)); } else { _1028 = as_type(_886); _1029 = as_type(_883); _1030 = as_type(_921); _1031 = as_type(_918); _1032 = as_type(_903); _1033 = as_type(_602); _1034 = as_type(_894); _1035 = as_type(_891); _1036 = as_type(_762); _1037 = as_type(_760); _1038 = as_type(_931); _1039 = as_type(_832); _1040 = as_type(_835); _1041 = as_type(_630); _1042 = as_type(_926); } uint _1061; uint _1062; uint _1063; uint _1064; uint _1065; uint _1066; uint _1067; uint _1068; uint _1069; uint _1070; uint _1071; uint _1072; uint _1073; uint _1074; uint _1075; uint _1076; uint _1077; uint _1078; uint _1079; uint _1080; uint _1081; if (_470 && (!_970)) { _1061 = as_type(_953); _1062 = as_type(_965); _1063 = as_type(_953); _1064 = _1042; _1065 = as_type(_967); _1066 = as_type(_965); _1067 = as_type(_953); _1068 = _1042; _1069 = as_type(_953); _1070 = as_type(_953); _1071 = _1042; _1072 = as_type(_967); _1073 = as_type(_965); _1074 = _1042; _1075 = as_type(_967); _1076 = as_type(_965); _1077 = _1042; _1078 = as_type(_967); _1079 = as_type(_953); _1080 = as_type(_967); _1081 = as_type(_965); } else { _1061 = _1028; _1062 = _1029; _1063 = _1030; _1064 = _1031; _1065 = as_type(spvFMul(as_type(cbuf_32.data[2u + buf3_dword_off]), _921)); _1066 = as_type(spvFMul(as_type(cbuf_32.data[1u + buf3_dword_off]), _918)); _1067 = as_type(spvFMul(as_type(cbuf_32.data[0u + buf3_dword_off]), fma(as_type(cbuf_32.data[_591]), fma(-_816, _816, fma(_353, _855, _347)), _855))); _1068 = _1032; _1069 = as_type(fma(-_830, _929, _929)); _1070 = as_type(spvFMul(spvFMul(spvFMul(_830, _883), _908), _935)); _1071 = _1033; _1072 = _1034; _1073 = _1035; _1074 = _1036; _1075 = _1037; _1076 = _1038; _1077 = _1039; _1078 = _1040; _1079 = _1041; _1080 = as_type(fma(-_835, _931, _931)); _1081 = as_type(fma(-_832, _930, _930)); } _1082 = _1071; _1083 = _1072; _1084 = _1073; _1085 = _1061; _1086 = _1074; _1087 = _1075; _1088 = _1062; _1089 = _1063; _1090 = _1064; _1091 = _1065; _1092 = _1066; _1093 = _1067; _1094 = _1077; _1095 = _1078; _1096 = _1076; _1097 = _1079; _1098 = _1068; _1099 = _1080; _1100 = _1081; _1101 = _1069; _1102 = _470; _1103 = _1042; _1104 = as_type(_967); _1105 = as_type(_965); _1106 = _1070; } else { _1082 = as_type(_464); _1083 = as_type(_428); _1084 = as_type(_424); _1085 = _126; _1086 = as_type(in.fs_in_attr3.x); _1087 = as_type(_369); _1088 = _127; _1089 = _124; _1090 = as_type(_439); _1091 = as_type(_437); _1092 = as_type(_435); _1093 = as_type(_353); _1094 = as_type(in.fs_in_attr3.z); _1095 = as_type(_359); _1096 = as_type(_362); _1097 = as_type(in.fs_in_attr3.y); _1098 = as_type(_351); _1099 = _388; _1100 = _394; _1101 = as_type(_349); _1102 = true; _1103 = as_type(_373); _1104 = _395; _1105 = _125; _1106 = as_type(_347); } if (!_1102) { discard_fragment(); } out.frag_color5.x = as_type(_1106); out.frag_color5.y = as_type(_1105); out.frag_color5.z = as_type(_1104); out.frag_color5.w = as_type(_1103); if (!_1102) { discard_fragment(); } out.frag_color4.x = as_type(_1101); out.frag_color4.y = as_type(_1100); out.frag_color4.z = as_type(_1099); out.frag_color4.w = as_type(_1098); if (!_1102) { discard_fragment(); } out.frag_color3.x = as_type(_1097); out.frag_color3.y = as_type(_1096); out.frag_color3.z = as_type(_1095); out.frag_color3.w = as_type(_1094); if (!_1102) { discard_fragment(); } out.frag_color2.x = as_type(_1093); out.frag_color2.y = as_type(_1092); out.frag_color2.z = as_type(_1091); out.frag_color2.w = as_type(_1090); if (!_1102) { discard_fragment(); } out.frag_color1.x = as_type(_1089); out.frag_color1.y = as_type(_1088); out.frag_color1.z = as_type(_1087); out.frag_color1.w = as_type(_1086); if (_469) { discard_fragment(); } out.frag_color0.x = as_type(_1085); out.frag_color0.y = as_type(_1084); out.frag_color0.z = as_type(_1083); out.frag_color0.w = as_type(_1082); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x70bb42af [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x3deaa573 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[336]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _186 = 20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _195 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _196 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _201 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _205 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _212 = ((0u + ((_195 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _225 = uint4(cbuf_16.data[_212 + 0u], cbuf_16.data[_212 + 1u], cbuf_16.data[_212 + 2u], cbuf_16.data[_212 + 3u]); uint _233 = ((0u + ((_196 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _246 = uint4(cbuf_16.data[_233 + 0u], cbuf_16.data[_233 + 1u], cbuf_16.data[_233 + 2u], cbuf_16.data[_233 + 3u]); uint _254 = ((0u + ((_195 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _267 = uint4(cbuf_16.data[_254 + 0u], cbuf_16.data[_254 + 1u], cbuf_16.data[_254 + 2u], cbuf_16.data[_254 + 3u]); uint _275 = ((0u + ((_196 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _288 = uint4(cbuf_16.data[_275 + 0u], cbuf_16.data[_275 + 1u], cbuf_16.data[_275 + 2u], cbuf_16.data[_275 + 3u]); uint _296 = ((0u + (_195 * 16u)) + buf6_off) >> 2u; uint4 _309 = uint4(cbuf_16.data[_296 + 0u], cbuf_16.data[_296 + 1u], cbuf_16.data[_296 + 2u], cbuf_16.data[_296 + 3u]); uint _317 = ((0u + ((_201 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _330 = uint4(cbuf_16.data[_317 + 0u], cbuf_16.data[_317 + 1u], cbuf_16.data[_317 + 2u], cbuf_16.data[_317 + 3u]); uint _338 = ((0u + (_196 * 16u)) + buf6_off) >> 2u; uint4 _351 = uint4(cbuf_16.data[_338 + 0u], cbuf_16.data[_338 + 1u], cbuf_16.data[_338 + 2u], cbuf_16.data[_338 + 3u]); uint _359 = ((0u + ((_201 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _372 = uint4(cbuf_16.data[_359 + 0u], cbuf_16.data[_359 + 1u], cbuf_16.data[_359 + 2u], cbuf_16.data[_359 + 3u]); uint _380 = ((0u + ((_205 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _393 = uint4(cbuf_16.data[_380 + 0u], cbuf_16.data[_380 + 1u], cbuf_16.data[_380 + 2u], cbuf_16.data[_380 + 3u]); uint _401 = ((0u + (_201 * 16u)) + buf6_off) >> 2u; uint4 _414 = uint4(cbuf_16.data[_401 + 0u], cbuf_16.data[_401 + 1u], cbuf_16.data[_401 + 2u], cbuf_16.data[_401 + 3u]); uint _422 = ((0u + ((_205 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _435 = uint4(cbuf_16.data[_422 + 0u], cbuf_16.data[_422 + 1u], cbuf_16.data[_422 + 2u], cbuf_16.data[_422 + 3u]); uint _443 = ((0u + (_205 * 16u)) + buf6_off) >> 2u; uint4 _456 = uint4(cbuf_16.data[_443 + 0u], cbuf_16.data[_443 + 1u], cbuf_16.data[_443 + 2u], cbuf_16.data[_443 + 3u]); float _468 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _469 = spvFMul(in.vs_in_attr4.y, _468); float _470 = spvFMul(in.vs_in_attr4.x, _468); float _475 = spvFMul(in.vs_in_attr4.z, _468); float _554 = spvFMul(in.vs_in_attr4.w, _468); float _596 = fma(as_type(_393.z), _554, fma(as_type(_330.z), _475, fma(as_type(_246.z), _470, spvFMul(_469, as_type(_225.z))))); float _618 = fma(as_type(_435.z), _554, fma(as_type(_372.z), _475, fma(as_type(_288.z), _470, spvFMul(_469, as_type(_267.z))))); float _622 = fma(as_type(_393.y), _554, fma(as_type(_330.y), _475, fma(as_type(_246.y), _470, spvFMul(_469, as_type(_225.y))))); float _631 = fma(as_type(_456.z), _554, fma(as_type(_414.z), _475, fma(as_type(_351.z), _470, spvFMul(_469, as_type(_309.z))))); float _635 = fma(as_type(_435.y), _554, fma(as_type(_372.y), _475, fma(as_type(_288.y), _470, spvFMul(_469, as_type(_267.y))))); float _637 = fma(as_type(_393.x), _554, fma(as_type(_330.x), _475, fma(as_type(_246.x), _470, spvFMul(_469, as_type(_225.x))))); float _643 = fma(as_type(_456.y), _554, fma(as_type(_414.y), _475, fma(as_type(_351.y), _470, spvFMul(_469, as_type(_309.y))))); float _645 = fma(as_type(_435.x), _554, fma(as_type(_372.x), _475, fma(as_type(_288.x), _470, spvFMul(_469, as_type(_267.x))))); float _650 = fma(as_type(_456.x), _554, fma(as_type(_414.x), _475, fma(as_type(_351.x), _470, spvFMul(_469, as_type(_309.x))))); float _654 = spvFSub(fma(_637, in.vs_in_attr0.x, fma(_622, in.vs_in_attr0.y, fma(_596, in.vs_in_attr0.z, fma(as_type(_393.w), _554, fma(as_type(_330.w), _475, fma(as_type(_246.w), _470, spvFMul(_469, as_type(_225.w)))))))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _657 = spvFSub(fma(_645, in.vs_in_attr0.x, fma(_635, in.vs_in_attr0.y, fma(_618, in.vs_in_attr0.z, fma(as_type(_435.w), _554, fma(as_type(_372.w), _475, fma(as_type(_288.w), _470, spvFMul(_469, as_type(_267.w)))))))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _671 = spvFSub(fma(_650, in.vs_in_attr0.x, fma(_643, in.vs_in_attr0.y, fma(_631, in.vs_in_attr0.z, fma(as_type(_456.w), _554, fma(as_type(_414.w), _475, fma(as_type(_351.w), _470, spvFMul(_469, as_type(_309.w)))))))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _681 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _654, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _683 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _654, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _685 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _654, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _687 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _654, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _681; out.gl_Position.y = _683; out.gl_Position.z = _685; out.gl_Position.w = _687; float _730 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _733 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _736 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _738 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _750 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _751 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_650, _751, fma(_643, _738, spvFMul(_733, _631))); out.out_attr0.y = fma(_645, _751, fma(_635, _738, spvFMul(_733, _618))); out.out_attr0.z = fma(_637, _751, fma(_622, _738, spvFMul(_733, _596))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_650, _750, fma(_643, _736, spvFMul(_730, _631))); out.out_attr1.y = fma(_645, _750, fma(_635, _736, spvFMul(_730, _618))); out.out_attr1.z = fma(_637, _750, fma(_622, _736, spvFMul(_730, _596))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf8_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf8_dword_off])); out.out_attr4.x = _681; out.out_attr4.y = _683; out.out_attr4.z = _685; out.out_attr4.w = _687; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; constant uint _117 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_28 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img92 [[texture(0)]], texture2d fs_img100 [[texture(1)]], texture2d fs_img44 [[texture(2)]], texture2d fs_img68 [[texture(3)]], texture2d fs_img60 [[texture(4)]], texture2d fs_img108 [[texture(5)]], texture2d fs_img52 [[texture(6)]], texturecube fs_img84 [[texture(7)]], texturecube fs_img76 [[texture(8)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _144 = uint(gl_FrontFacing); float _246 = 1.0 / in.fs_in_attr4.w; float _304 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _319 = fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))); float _321 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _326 = fs_img92.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_36.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr4.x), _246, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_36.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr4.y), _246, 0.5))))); float4 _332 = fs_img100.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _333 = _332.x; float _335 = _332.y; float _337 = _332.z; float _339 = _332.w; float _341 = spvFMul(in.fs_in_attr0.x, _304); float _342 = spvFMul(in.fs_in_attr0.y, _304); float _343 = spvFMul(in.fs_in_attr0.z, _304); float _345 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _346 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _348 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _351 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _321, as_type(cbuf_36.data[183u + buf0_dword_off])); float _354 = fma(-fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _321, as_type(cbuf_36.data[187u + buf0_dword_off])); float _358 = fma(-_319, _321, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _360 = 0u == _144; uint _373; uint _374; uint _375; if (_360) { _373 = as_type(fast::max(-_343, -_343)); _374 = as_type(fast::max(-_342, -_342)); _375 = as_type(fast::max(-_341, -_341)); } else { _373 = as_type(_343); _374 = as_type(_319); _375 = _144; } uint _379; uint _380; if (!_360) { _379 = as_type(_342); _380 = as_type(_341); } else { _379 = _374; _380 = _375; } uint _398 = uint(in.fs_in_attr0.w) * 13u; float _409 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _413 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float4 _419 = fs_img44.sample(fs_samp4, float2(_409, _413)); float _420 = _419.x; float _422 = _419.y; float _424 = _419.z; float _426 = _419.w; uint _432 = ((12u + ((_398 + 7u) * 16u)) + buf2_off) >> 2u; float _446 = spvFMul(_426, in.fs_in_attr2.w); float _448 = spvFMul(_446, as_type(cbuf_32.data[_432])); bool _454 = (as_type(cbuf_28.data[20u + buf3_dword_off]) > fma(as_type(cbuf_28.data[21u + buf3_dword_off]), spvFAdd(-0.5, _326.w), _446)) || (_448 == 0.0); bool _455 = !_454; uint _1042; uint _1043; uint _1044; uint _1045; uint _1046; uint _1047; uint _1048; uint _1049; uint _1050; uint _1051; uint _1052; uint _1053; uint _1054; uint _1055; uint _1056; uint _1057; uint _1058; uint _1059; uint _1060; bool _1061; uint _1062; uint _1063; uint _1064; uint _1065; if (!_454) { float4 _481 = fs_img68.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _510 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _511 = _510.x; float4 _516 = fs_img108.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _518 = _516.y; float _523 = fma(2.0, _481.y, -1.0); float _524 = spvFMul(fma(2.0, _481.x, -1.0), fma(2.0, _481.w, -1.0)); float _535 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _537 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_524, _524), spvFMul(_523, _523)), 0.0, 1.0))); float _539 = rsqrt(fma(_345, _345, fma(_346, _346, spvFMul(_348, _348)))); float _565 = fma(spvFMul(_348, _539), _524, fma(spvFMul(in.fs_in_attr1.z, _535), _523, spvFMul(as_type(_373), _537))); float _569 = fma(spvFMul(_346, _539), _524, fma(spvFMul(in.fs_in_attr1.y, _535), _523, spvFMul(as_type(_379), _537))); float _572 = fma(spvFMul(_345, _539), _524, fma(spvFMul(in.fs_in_attr1.x, _535), _523, spvFMul(as_type(_380), _537))); float _576 = rsqrt(fma(_351, _351, fma(_354, _354, spvFMul(_358, _358)))); float _577 = rsqrt(fma(_572, _572, fma(_569, _569, spvFMul(_565, _565)))); uint _581 = 24u + buf3_dword_off; float _585 = spvFMul(_565, _577); float _587 = spvFMul(_569, _577); float _597 = spvFMul(_572, _577); float4 _603 = fs_img52.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[4u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[6u + buf1_dword_off])), fma(as_type(cbuf_24.data[5u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[7u + buf1_dword_off])))); float _604 = _603.x; float _605 = _603.y; float _606 = _603.z; float _607 = fma(_597, spvFMul(_351, _576), fma(_587, spvFMul(_354, _576), spvFMul(spvFMul(_358, _576), _585))); float _610 = spvFMul(fast::max(_607, _607), 2.0); float _616 = spvFMul(as_type(cbuf_28.data[8u + buf3_dword_off]), 0.00390625); float _621 = spvFMul(fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _511, _516.x), _511), _511), _616); float _623 = fma(-_351, _576, spvFMul(_597, _610)); float _625 = fma(-_354, _576, spvFMul(_587, _610)); float _627 = fma(-_358, _576, spvFMul(_585, _610)); float _638 = 1.0 / abs(1.0); float _640 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_621, 13.0), 0.5))); float _642 = fma(_625, _638, 1.5); float _643 = fma(_623, _638, 1.5); uint _647 = ((0u + ((_398 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _660 = uint4(cbuf_32.data[_647 + 0u], cbuf_32.data[_647 + 1u], cbuf_32.data[_647 + 2u], cbuf_32.data[_647 + 3u]); uint _661 = _660.x; uint _662 = _660.y; uint _663 = _660.z; float4 _671 = fs_img84.sample(fs_samp20, float3(spvFSub(_643, 1.5), spvFSub(_642, 1.5), _627), level(_640)); float _673 = _671.y; uint _679 = ((0u + ((_398 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _692 = uint4(cbuf_32.data[_679 + 0u], cbuf_32.data[_679 + 1u], cbuf_32.data[_679 + 2u], cbuf_32.data[_679 + 3u]); uint _700 = ((0u + ((_398 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _713 = uint4(cbuf_32.data[_700 + 0u], cbuf_32.data[_700 + 1u], cbuf_32.data[_700 + 2u], cbuf_32.data[_700 + 3u]); uint _721 = ((0u + ((_398 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _734 = uint4(cbuf_32.data[_721 + 0u], cbuf_32.data[_721 + 1u], cbuf_32.data[_721 + 2u], cbuf_32.data[_721 + 3u]); float4 _745 = fs_img76.sample(fs_samp20, float3(spvFSub(_643, 1.5), spvFSub(_642, 1.5), _627), level(_640)); float _746 = _745.x; float _747 = _745.y; float _748 = _745.z; float _756 = fast::clamp(spvFAdd(fma(_623, as_type(_380), fma(_625, as_type(_379), spvFMul(as_type(_373), _627))), 1.0), 0.0, 1.0); bool _761 = (_606 == 0.0) && (_605 == 0.0); float _764 = _761 ? _604 : _606; float _765 = _761 ? _604 : _605; float _766 = spvFMul(_518, _518); uint _767 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _770 = spvFAdd(1.0, _607); float _786 = fast::clamp(spvFMul(_770, _770), 0.0, 1.0); float _787 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_607, _607), 0.0, 1.0))))); float _800 = spvFMul(_786, _787); float _802 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _604, _766), _604), _604); float _805 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _765, _766), _765), _765); float _807 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _764, _766), _764), _764); float _845 = fma(_339, _422, _335); float _854 = spvFMul(_621, _621); float _860 = fma(as_type(_661), fma(-as_type(_662), _748, spvFMul(as_type(_663), _671.z)), spvFMul(as_type(_662), _748)); float _862 = spvFMul(_756, _756); float _873 = fma(fma(_786, _787, -spvFMul(_800, _805)), _854, _805); float _877 = spvFMul(fma(as_type(_661), fma(-as_type(_662), _747, spvFMul(as_type(_663), _673)), spvFMul(as_type(_662), _747)), _862); float _885 = spvFAdd(as_type(_734.w), fma(_585, as_type(_734.z), fma(_597, as_type(_734.x), spvFMul(_587, as_type(_734.y))))); float _893 = spvFMul(fma(fma(_786, _787, -spvFMul(_800, _802)), _854, _802), spvFMul(fma(as_type(_661), fma(-as_type(_662), _746, spvFMul(as_type(_663), _671.x)), spvFMul(as_type(_662), _746)), _862)); float _895 = spvFMul(_873, _877); float _898 = fast::max(0.0, spvFAdd(as_type(_692.w), fma(_585, as_type(_692.z), fma(_597, as_type(_692.x), spvFMul(_587, as_type(_692.y)))))); float _899 = fast::max(0.0, spvFAdd(as_type(_713.w), fma(_585, as_type(_713.z), fma(_597, as_type(_713.x), spvFMul(_587, as_type(_713.y)))))); float _901 = fast::max(0.0, _885); float _922 = fma(-_802, _898, _898); float _934 = spvFMul(spvFMul(fma(fma(_786, _787, -spvFMul(_800, _807)), _854, _807), spvFMul(_860, _862)), spvFMul(as_type(cbuf_28.data[6u + buf3_dword_off]), as_type(cbuf_40.data[_767]))); bool _937 = _455 && (!_454); uint _938; if (_937) { _938 = 0u; } else { _938 = as_type(_673); } uint _983; uint _984; uint _985; uint _986; uint _987; uint _988; uint _989; uint _990; uint _991; uint _992; uint _993; uint _994; uint _995; if (_937) { bool _942 = as_type(cbuf_28.data[22u + buf3_dword_off]) != 0.0; _983 = as_type(spvFMul(_616, _621)); _984 = as_type(_942 ? _448 : as_type(_660.w)); _985 = as_type(fma(0.5, _585, 0.500488758087158203125)); _986 = as_type(fma(0.5, _587, 0.500488758087158203125)); _987 = as_type(fma(0.5, _597, 0.500488758087158203125)); _988 = as_type(_942 ? _448 : 0.0); _989 = cbuf_32.data[((0u + ((_398 + 12u) * 16u)) + buf2_off) >> 2u]; _990 = as_type(_942 ? _448 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_398 + 6u) * 16u)) + buf2_off) >> 2u]))); _991 = as_type(sqrt(_802)); _992 = as_type(_448); _993 = as_type(sqrt(_807)); _994 = as_type(sqrt(_805)); _995 = as_type(_942 ? _448 : 1.0); } else { _983 = as_type(_860); _984 = as_type(_845); _985 = cbuf_40.data[_767]; _986 = as_type(_587); _987 = as_type(_877); _988 = as_type(_873); _989 = as_type(_885); _990 = as_type(_802); _991 = as_type(_901); _992 = as_type(_616); _993 = as_type(_899); _994 = as_type(_895); _995 = as_type(_893); } uint _1020; uint _1021; uint _1022; uint _1023; uint _1024; uint _1025; uint _1026; uint _1027; uint _1028; uint _1029; uint _1030; uint _1031; uint _1032; uint _1033; uint _1034; uint _1035; uint _1036; uint _1037; uint _1038; uint _1039; uint _1040; uint _1041; if (_455 && (!_937)) { _1020 = as_type(_448); _1021 = as_type(_621); _1022 = as_type(_934); _1023 = as_type(_448); _1024 = as_type(_621); _1025 = as_type(_934); _1026 = as_type(_448); _1027 = as_type(_922); _1028 = as_type(_448); _1029 = as_type(_621); _1030 = as_type(_934); _1031 = as_type(_448); _1032 = as_type(_621); _1033 = as_type(_922); _1034 = as_type(_934); _1035 = as_type(_922); _1036 = as_type(_621); _1037 = as_type(_922); _1038 = as_type(_934); _1039 = as_type(_448); _1040 = as_type(_922); _1041 = as_type(_621); } else { _1020 = _938; _1021 = _983; _1022 = as_type(spvFMul(as_type(cbuf_28.data[2u + buf3_dword_off]), fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _424, _337), _424), _424))); _1023 = as_type(spvFMul(as_type(cbuf_28.data[1u + buf3_dword_off]), fma(as_type(cbuf_28.data[_581]), spvFSub(_845, _422), _422))); _1024 = as_type(spvFMul(as_type(cbuf_28.data[0u + buf3_dword_off]), fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _420, _333), _420), _420))); _1025 = as_type(fma(-_807, _901, _901)); _1026 = as_type(fma(-_805, _899, _899)); _1027 = _984; _1028 = as_type(spvFMul(_895, spvFMul(as_type(cbuf_28.data[5u + buf3_dword_off]), as_type(cbuf_40.data[_767])))); _1029 = as_type(spvFMul(_893, spvFMul(as_type(cbuf_28.data[4u + buf3_dword_off]), as_type(cbuf_40.data[_767])))); _1030 = _985; _1031 = _986; _1032 = _987; _1033 = _988; _1034 = _989; _1035 = _990; _1036 = _991; _1037 = _992; _1038 = _993; _1039 = _994; _1040 = _995; _1041 = as_type(_922); } _1042 = _1030; _1043 = _1031; _1044 = _1032; _1045 = _1033; _1046 = _1034; _1047 = _1020; _1048 = _1021; _1049 = _1037; _1050 = _1022; _1051 = _1023; _1052 = _1024; _1053 = _1035; _1054 = _1038; _1055 = _1039; _1056 = _1036; _1057 = _1040; _1058 = _1025; _1059 = _1026; _1060 = _1041; _1061 = _455; _1062 = _1027; _1063 = as_type(_934); _1064 = _1028; _1065 = _1029; } else { _1042 = as_type(_413); _1043 = as_type(_409); _1044 = cbuf_32.data[_432]; _1045 = as_type(in.fs_in_attr3.x); _1046 = as_type(_354); _1047 = _117; _1048 = as_type(_426); _1049 = as_type(in.fs_in_attr3.z); _1050 = as_type(_424); _1051 = as_type(_422); _1052 = as_type(_420); _1053 = as_type(in.fs_in_attr1.x); _1054 = as_type(_346); _1055 = as_type(in.fs_in_attr3.y); _1056 = as_type(in.fs_in_attr3.w); _1057 = _373; _1058 = as_type(_339); _1059 = as_type(_337); _1060 = as_type(_358); _1061 = true; _1062 = as_type(_335); _1063 = _380; _1064 = as_type(_333); _1065 = as_type(in.fs_in_attr1.w); } if (!_1061) { discard_fragment(); } out.frag_color5.x = as_type(_1065); out.frag_color5.y = as_type(_1064); out.frag_color5.z = as_type(_1063); out.frag_color5.w = as_type(_1062); if (!_1061) { discard_fragment(); } out.frag_color4.x = as_type(_1060); out.frag_color4.y = as_type(_1059); out.frag_color4.z = as_type(_1058); out.frag_color4.w = as_type(_1057); if (!_1061) { discard_fragment(); } out.frag_color3.x = as_type(_1056); out.frag_color3.y = as_type(_1055); out.frag_color3.z = as_type(_1054); out.frag_color3.w = as_type(_1053); if (!_1061) { discard_fragment(); } out.frag_color2.x = as_type(_1052); out.frag_color2.y = as_type(_1051); out.frag_color2.z = as_type(_1050); out.frag_color2.w = as_type(_1049); if (!_1061) { discard_fragment(); } out.frag_color1.x = as_type(_1048); out.frag_color1.y = as_type(_1047); out.frag_color1.z = as_type(_1046); out.frag_color1.w = as_type(_1045); if (_454) { discard_fragment(); } out.frag_color0.x = as_type(_1044); out.frag_color0.y = as_type(_1043); out.frag_color0.z = as_type(_1042); out.frag_color0.w = as_type(_1045); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xe21e283a [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb10c4f55 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[576]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint _145 = as_type(as_type(in.vs_in_attr3.x)); uint _149 = as_type(as_type(in.vs_in_attr3.y)); uint _153 = as_type(as_type(in.vs_in_attr3.z)); uint _157 = as_type(as_type(in.vs_in_attr3.w)); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _195 = 20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _281 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _282 = spvFMul(in.vs_in_attr4.x, _281); float _283 = spvFMul(in.vs_in_attr4.y, _281); float _284 = spvFMul(in.vs_in_attr4.z, _281); float _285 = spvFMul(in.vs_in_attr4.w, _281); uint _286 = _145 * 3u; uint _289 = _149 * 3u; uint _292 = _153 * 3u; uint _297 = ((0u + (_286 * 16u)) + buf7_off) >> 2u; uint4 _310 = uint4(cbuf_24.data[_297 + 0u], cbuf_24.data[_297 + 1u], cbuf_24.data[_297 + 2u], cbuf_24.data[_297 + 3u]); uint _318 = ((0u + ((_286 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _331 = uint4(cbuf_24.data[_318 + 0u], cbuf_24.data[_318 + 1u], cbuf_24.data[_318 + 2u], cbuf_24.data[_318 + 3u]); uint _339 = ((0u + ((_286 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _352 = uint4(cbuf_24.data[_339 + 0u], cbuf_24.data[_339 + 1u], cbuf_24.data[_339 + 2u], cbuf_24.data[_339 + 3u]); uint _360 = ((0u + (_289 * 16u)) + buf7_off) >> 2u; uint4 _373 = uint4(cbuf_24.data[_360 + 0u], cbuf_24.data[_360 + 1u], cbuf_24.data[_360 + 2u], cbuf_24.data[_360 + 3u]); uint _381 = ((0u + ((_289 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _394 = uint4(cbuf_24.data[_381 + 0u], cbuf_24.data[_381 + 1u], cbuf_24.data[_381 + 2u], cbuf_24.data[_381 + 3u]); uint _402 = ((0u + ((_289 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _415 = uint4(cbuf_24.data[_402 + 0u], cbuf_24.data[_402 + 1u], cbuf_24.data[_402 + 2u], cbuf_24.data[_402 + 3u]); uint _423 = ((0u + (_292 * 16u)) + buf7_off) >> 2u; uint4 _436 = uint4(cbuf_24.data[_423 + 0u], cbuf_24.data[_423 + 1u], cbuf_24.data[_423 + 2u], cbuf_24.data[_423 + 3u]); uint _444 = ((0u + ((_292 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _457 = uint4(cbuf_24.data[_444 + 0u], cbuf_24.data[_444 + 1u], cbuf_24.data[_444 + 2u], cbuf_24.data[_444 + 3u]); uint _527 = _157 * 3u; uint _531 = (cbuf_12.data[_195] + _145) * 3u; uint _535 = (cbuf_12.data[_195] + _149) * 3u; uint _539 = ((0u + ((_292 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _552 = uint4(cbuf_24.data[_539 + 0u], cbuf_24.data[_539 + 1u], cbuf_24.data[_539 + 2u], cbuf_24.data[_539 + 3u]); uint _560 = ((0u + (_527 * 16u)) + buf7_off) >> 2u; uint4 _573 = uint4(cbuf_24.data[_560 + 0u], cbuf_24.data[_560 + 1u], cbuf_24.data[_560 + 2u], cbuf_24.data[_560 + 3u]); uint _581 = ((0u + ((_527 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _594 = uint4(cbuf_24.data[_581 + 0u], cbuf_24.data[_581 + 1u], cbuf_24.data[_581 + 2u], cbuf_24.data[_581 + 3u]); uint _602 = ((0u + ((_527 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _615 = uint4(cbuf_24.data[_602 + 0u], cbuf_24.data[_602 + 1u], cbuf_24.data[_602 + 2u], cbuf_24.data[_602 + 3u]); uint _623 = ((0u + (_531 * 16u)) + buf8_off) >> 2u; uint4 _636 = uint4(cbuf_16.data[_623 + 0u], cbuf_16.data[_623 + 1u], cbuf_16.data[_623 + 2u], cbuf_16.data[_623 + 3u]); uint _644 = ((0u + ((_531 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _657 = uint4(cbuf_16.data[_644 + 0u], cbuf_16.data[_644 + 1u], cbuf_16.data[_644 + 2u], cbuf_16.data[_644 + 3u]); uint _665 = ((0u + ((_531 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _678 = uint4(cbuf_16.data[_665 + 0u], cbuf_16.data[_665 + 1u], cbuf_16.data[_665 + 2u], cbuf_16.data[_665 + 3u]); uint _686 = ((0u + (_535 * 16u)) + buf8_off) >> 2u; uint4 _699 = uint4(cbuf_16.data[_686 + 0u], cbuf_16.data[_686 + 1u], cbuf_16.data[_686 + 2u], cbuf_16.data[_686 + 3u]); float _713 = fma(as_type(_573.x), _285, fma(as_type(_436.x), _284, fma(as_type(_310.x), _282, spvFMul(_283, as_type(_373.x))))); float _715 = fma(as_type(_573.y), _285, fma(as_type(_436.y), _284, fma(as_type(_310.y), _282, spvFMul(_283, as_type(_373.y))))); float _717 = fma(as_type(_573.z), _285, fma(as_type(_436.z), _284, fma(as_type(_310.z), _282, spvFMul(_283, as_type(_373.z))))); float _721 = fma(as_type(_594.x), _285, fma(as_type(_457.x), _284, fma(as_type(_331.x), _282, spvFMul(_283, as_type(_394.x))))); float _723 = fma(as_type(_594.y), _285, fma(as_type(_457.y), _284, fma(as_type(_331.y), _282, spvFMul(_283, as_type(_394.y))))); float _725 = fma(as_type(_594.z), _285, fma(as_type(_457.z), _284, fma(as_type(_331.z), _282, spvFMul(_283, as_type(_394.z))))); float _729 = fma(as_type(_615.x), _285, fma(as_type(_552.x), _284, fma(as_type(_352.x), _282, spvFMul(_283, as_type(_415.x))))); float _731 = fma(as_type(_615.y), _285, fma(as_type(_552.y), _284, fma(as_type(_352.y), _282, spvFMul(_283, as_type(_415.y))))); float _733 = fma(as_type(_615.z), _285, fma(as_type(_552.z), _284, fma(as_type(_352.z), _282, spvFMul(_283, as_type(_415.z))))); float _742 = fma(_713, in.vs_in_attr0.x, fma(_715, in.vs_in_attr0.y, fma(_717, in.vs_in_attr0.z, fma(as_type(_573.w), _285, fma(as_type(_436.w), _284, fma(as_type(_310.w), _282, spvFMul(_283, as_type(_373.w)))))))); float _743 = fma(_721, in.vs_in_attr0.x, fma(_723, in.vs_in_attr0.y, fma(_725, in.vs_in_attr0.z, fma(as_type(_594.w), _285, fma(as_type(_457.w), _284, fma(as_type(_331.w), _282, spvFMul(_283, as_type(_394.w)))))))); float _744 = fma(_729, in.vs_in_attr0.x, fma(_731, in.vs_in_attr0.y, fma(_733, in.vs_in_attr0.z, fma(as_type(_615.w), _285, fma(as_type(_552.w), _284, fma(as_type(_352.w), _282, spvFMul(_283, as_type(_415.w)))))))); uint _764 = (cbuf_12.data[_195] + _153) * 3u; uint _768 = (cbuf_12.data[_195] + _157) * 3u; uint _774 = ((0u + ((_535 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _787 = uint4(cbuf_16.data[_774 + 0u], cbuf_16.data[_774 + 1u], cbuf_16.data[_774 + 2u], cbuf_16.data[_774 + 3u]); uint _795 = ((0u + ((_535 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _808 = uint4(cbuf_16.data[_795 + 0u], cbuf_16.data[_795 + 1u], cbuf_16.data[_795 + 2u], cbuf_16.data[_795 + 3u]); uint _816 = ((0u + (_764 * 16u)) + buf8_off) >> 2u; uint4 _829 = uint4(cbuf_16.data[_816 + 0u], cbuf_16.data[_816 + 1u], cbuf_16.data[_816 + 2u], cbuf_16.data[_816 + 3u]); uint _837 = ((0u + ((_764 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _850 = uint4(cbuf_16.data[_837 + 0u], cbuf_16.data[_837 + 1u], cbuf_16.data[_837 + 2u], cbuf_16.data[_837 + 3u]); uint _858 = ((0u + ((_764 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _871 = uint4(cbuf_16.data[_858 + 0u], cbuf_16.data[_858 + 1u], cbuf_16.data[_858 + 2u], cbuf_16.data[_858 + 3u]); uint _879 = ((0u + (_768 * 16u)) + buf8_off) >> 2u; uint4 _892 = uint4(cbuf_16.data[_879 + 0u], cbuf_16.data[_879 + 1u], cbuf_16.data[_879 + 2u], cbuf_16.data[_879 + 3u]); float _954 = fma(as_type(_892.x), _285, fma(as_type(_829.x), _284, fma(as_type(_636.x), _282, spvFMul(_283, as_type(_699.x))))); float _956 = fma(as_type(_892.y), _285, fma(as_type(_829.y), _284, fma(as_type(_636.y), _282, spvFMul(_283, as_type(_699.y))))); float _958 = fma(as_type(_892.z), _285, fma(as_type(_829.z), _284, fma(as_type(_636.z), _282, spvFMul(_283, as_type(_699.z))))); float _965 = spvFSub(fma(_954, _742, fma(_956, _743, fma(_958, _744, fma(as_type(_892.w), _285, fma(as_type(_829.w), _284, fma(as_type(_636.w), _282, spvFMul(_283, as_type(_699.w)))))))), as_type(cbuf_20.data[183u + buf6_dword_off])); float _976 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _977 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _978 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _986 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _987 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _988 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _995 = fma(_713, _986, fma(_715, _987, spvFMul(_988, _717))); float _996 = fma(_721, _986, fma(_723, _987, spvFMul(_988, _725))); float _997 = fma(_729, _986, fma(_731, _987, spvFMul(_988, _733))); float _1004 = fma(_713, _976, fma(_715, _977, spvFMul(_978, _717))); float _1005 = fma(_721, _976, fma(_723, _977, spvFMul(_978, _725))); float _1006 = fma(_729, _976, fma(_731, _977, spvFMul(_978, _733))); uint _1014 = ((0u + ((_768 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _1027 = uint4(cbuf_16.data[_1014 + 0u], cbuf_16.data[_1014 + 1u], cbuf_16.data[_1014 + 2u], cbuf_16.data[_1014 + 3u]); uint _1035 = ((0u + ((_768 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _1048 = uint4(cbuf_16.data[_1035 + 0u], cbuf_16.data[_1035 + 1u], cbuf_16.data[_1035 + 2u], cbuf_16.data[_1035 + 3u]); float _1056 = fma(as_type(_1027.x), _285, fma(as_type(_850.x), _284, fma(as_type(_657.x), _282, spvFMul(_283, as_type(_787.x))))); float _1058 = fma(as_type(_1027.y), _285, fma(as_type(_850.y), _284, fma(as_type(_657.y), _282, spvFMul(_283, as_type(_787.y))))); float _1060 = fma(as_type(_1027.z), _285, fma(as_type(_850.z), _284, fma(as_type(_657.z), _282, spvFMul(_283, as_type(_787.z))))); float _1064 = fma(as_type(_1048.x), _285, fma(as_type(_871.x), _284, fma(as_type(_678.x), _282, spvFMul(_283, as_type(_808.x))))); float _1066 = fma(as_type(_1048.y), _285, fma(as_type(_871.y), _284, fma(as_type(_678.y), _282, spvFMul(_283, as_type(_808.y))))); float _1068 = fma(as_type(_1048.z), _285, fma(as_type(_871.z), _284, fma(as_type(_678.z), _282, spvFMul(_283, as_type(_808.z))))); float _1078 = spvFSub(fma(_1056, _742, fma(_1058, _743, fma(_1060, _744, fma(as_type(_1027.w), _285, fma(as_type(_850.w), _284, fma(as_type(_657.w), _282, spvFMul(_283, as_type(_787.w)))))))), as_type(cbuf_20.data[187u + buf6_dword_off])); float _1080 = spvFSub(fma(_1064, _742, fma(_1066, _743, fma(_1068, _744, fma(as_type(_1048.w), _285, fma(as_type(_871.w), _284, fma(as_type(_678.w), _282, spvFMul(_283, as_type(_808.w)))))))), as_type(cbuf_20.data[191u + buf6_dword_off])); float _1102 = fma(as_type(cbuf_20.data[200u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[201u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[202u + buf6_dword_off]), _1080, as_type(cbuf_20.data[203u + buf6_dword_off])))); float _1104 = fma(as_type(cbuf_20.data[204u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[205u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[206u + buf6_dword_off]), _1080, as_type(cbuf_20.data[207u + buf6_dword_off])))); float _1106 = fma(as_type(cbuf_20.data[208u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[209u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[210u + buf6_dword_off]), _1080, as_type(cbuf_20.data[211u + buf6_dword_off])))); float _1108 = fma(as_type(cbuf_20.data[212u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[213u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[214u + buf6_dword_off]), _1080, as_type(cbuf_20.data[215u + buf6_dword_off])))); out.gl_Position.x = _1102; out.gl_Position.y = _1104; out.gl_Position.z = _1106; out.gl_Position.w = _1108; out.out_attr4.x = _1102; out.out_attr4.y = _1104; out.out_attr4.z = _1106; out.out_attr4.w = _1108; out.out_attr1.x = fma(_954, _1004, fma(_956, _1005, spvFMul(_1006, _958))); out.out_attr1.y = fma(_1056, _1004, fma(_1058, _1005, spvFMul(_1006, _1060))); out.out_attr1.z = fma(_1064, _1004, fma(_1066, _1005, spvFMul(_1006, _1068))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf9_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf9_dword_off])); out.out_attr0.x = fma(_954, _995, fma(_956, _996, spvFMul(_997, _958))); out.out_attr0.y = fma(_1056, _995, fma(_1058, _996, spvFMul(_997, _1060))); out.out_attr0.z = fma(_1064, _995, fma(_1066, _996, spvFMul(_997, _1068))); out.out_attr0.w = 0.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img92 [[texture(0)]], texture2d fs_img68 [[texture(1)]], texture2d fs_img60 [[texture(2)]], texture2d fs_img100 [[texture(3)]], texture2d fs_img52 [[texture(4)]], texturecube fs_img84 [[texture(5)]], texturecube fs_img76 [[texture(6)]], texture2d fs_img44 [[texture(7)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint _134 = uint(gl_FrontFacing); float _268 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _284 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _289 = fs_img92.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _293 = _289.w; float _294 = spvFMul(in.fs_in_attr0.x, _268); float _296 = spvFMul(in.fs_in_attr0.y, _268); float _297 = spvFMul(in.fs_in_attr0.z, _268); float _299 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _300 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _301 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _304 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _284, as_type(cbuf_36.data[183u + buf0_dword_off])); float _307 = fma(-fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _284, as_type(cbuf_36.data[187u + buf0_dword_off])); float _310 = fma(-fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))), _284, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _311 = 0u == _134; uint _324; uint _325; uint _326; if (_311) { _324 = as_type(fast::max(-_294, -_294)); _325 = as_type(fast::max(-_297, -_297)); _326 = as_type(fast::max(-_296, -_296)); } else { _324 = as_type(_294); _325 = as_type(_297); _326 = _134; } uint _329; if (!_311) { _329 = as_type(_296); } else { _329 = _326; } float4 _360 = fs_img68.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _389 = fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _390 = _389.x; float4 _395 = fs_img100.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _397 = _395.y; float _402 = fma(2.0, _360.y, -1.0); float _403 = spvFMul(fma(2.0, _360.x, -1.0), fma(2.0, _360.w, -1.0)); float _414 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _416 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_403, _403), spvFMul(_402, _402)), 0.0, 1.0))); float _418 = rsqrt(fma(_299, _299, fma(_300, _300, spvFMul(_301, _301)))); float _447 = fma(spvFMul(_301, _418), _403, fma(spvFMul(in.fs_in_attr1.z, _414), _402, spvFMul(as_type(_325), _416))); float _451 = fma(spvFMul(_300, _418), _403, fma(spvFMul(in.fs_in_attr1.y, _414), _402, spvFMul(as_type(_329), _416))); float _454 = fma(spvFMul(_299, _418), _403, fma(spvFMul(in.fs_in_attr1.x, _414), _402, spvFMul(as_type(_324), _416))); float _458 = rsqrt(fma(_304, _304, fma(_307, _307, spvFMul(_310, _310)))); float _459 = rsqrt(fma(_454, _454, fma(_451, _451, spvFMul(_447, _447)))); uint _463 = 24u + buf2_dword_off; float _467 = spvFMul(_447, _459); float _469 = spvFMul(_451, _459); float _478 = spvFMul(_454, _459); float4 _484 = fs_img52.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _485 = _484.x; float _486 = _484.y; float _487 = _484.z; float _488 = fma(_478, spvFMul(_304, _458), fma(_469, spvFMul(_307, _458), spvFMul(spvFMul(_310, _458), _467))); float _494 = spvFMul(fast::max(_488, _488), 2.0); float _512 = spvFMul(as_type(cbuf_28.data[8u + buf2_dword_off]), 0.00390625); uint _516 = uint(in.fs_in_attr0.w) * 13u; float _517 = spvFMul(fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _390, _395.x), _390), _390), _512); float _519 = fma(-_304, _458, spvFMul(_478, _494)); float _521 = fma(-_307, _458, spvFMul(_469, _494)); float _523 = fma(-_310, _458, spvFMul(_467, _494)); float _535 = 1.0 / abs(1.0); float _537 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_517, 13.0), 0.5))); float _539 = fma(_521, _535, 1.5); float _540 = fma(_519, _535, 1.5); uint _546 = ((0u + ((_516 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _559 = uint4(cbuf_32.data[_546 + 0u], cbuf_32.data[_546 + 1u], cbuf_32.data[_546 + 2u], cbuf_32.data[_546 + 3u]); uint _560 = _559.x; uint _561 = _559.y; uint _562 = _559.z; float4 _570 = fs_img84.sample(fs_samp20, float3(spvFSub(_540, 1.5), spvFSub(_539, 1.5), _523), level(_537)); uint _577 = ((0u + ((_516 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _590 = uint4(cbuf_32.data[_577 + 0u], cbuf_32.data[_577 + 1u], cbuf_32.data[_577 + 2u], cbuf_32.data[_577 + 3u]); uint _598 = ((0u + ((_516 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _611 = uint4(cbuf_32.data[_598 + 0u], cbuf_32.data[_598 + 1u], cbuf_32.data[_598 + 2u], cbuf_32.data[_598 + 3u]); uint _619 = ((0u + ((_516 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _632 = uint4(cbuf_32.data[_619 + 0u], cbuf_32.data[_619 + 1u], cbuf_32.data[_619 + 2u], cbuf_32.data[_619 + 3u]); float4 _649 = fs_img76.sample(fs_samp20, float3(spvFSub(_540, 1.5), spvFSub(_539, 1.5), _523), level(_537)); float _650 = _649.x; float _651 = _649.y; float _652 = _649.z; float4 _657 = fs_img44.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); float _658 = _657.x; float _659 = _657.y; float _660 = _657.z; float _682 = fast::clamp(spvFAdd(fma(_519, as_type(_324), fma(_521, as_type(_329), spvFMul(as_type(_325), _523))), 1.0), 0.0, 1.0); bool _694 = (_487 == 0.0) && (_486 == 0.0); float _697 = _694 ? _485 : _487; float _698 = _694 ? _485 : _486; float _699 = spvFMul(_397, _397); uint _700 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _703 = spvFAdd(1.0, _488); float _722 = fast::clamp(spvFMul(_703, _703), 0.0, 1.0); float _723 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_488, _488), 0.0, 1.0))))); float _736 = spvFMul(_722, _723); float _738 = fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _485, _699), _485), _485); float _740 = fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _698, _699), _698), _698); float _742 = fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _697, _699), _697), _697); float _790 = spvFMul(_517, _517); float _797 = spvFMul(_682, _682); float _830 = fast::max(0.0, spvFAdd(as_type(_590.w), fma(_467, as_type(_590.z), fma(_478, as_type(_590.x), spvFMul(_469, as_type(_590.y)))))); float _831 = fast::max(0.0, spvFAdd(as_type(_611.w), fma(_467, as_type(_611.z), fma(_478, as_type(_611.x), spvFMul(_469, as_type(_611.y)))))); float _832 = fast::max(0.0, spvFAdd(as_type(_632.w), fma(_467, as_type(_632.z), fma(_478, as_type(_632.x), spvFMul(_469, as_type(_632.y)))))); float _843 = spvFMul(spvFMul(_657.w, in.fs_in_attr2.w), as_type(cbuf_32.data[((12u + ((_516 + 7u) * 16u)) + buf3_off) >> 2u])); bool _847 = as_type(cbuf_28.data[22u + buf2_dword_off]) != 0.0; float _870 = _847 ? _843 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_722, _723, -spvFMul(_736, _738)), _790, _738), spvFMul(fma(as_type(_560), fma(-as_type(_561), _650, spvFMul(as_type(_562), _570.x)), spvFMul(as_type(_561), _650)), _797)), spvFMul(as_type(cbuf_28.data[4u + buf2_dword_off]), as_type(cbuf_40.data[_700]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_722, _723, -spvFMul(_736, _740)), _790, _740), spvFMul(fma(as_type(_560), fma(-as_type(_561), _651, spvFMul(as_type(_562), _570.y)), spvFMul(as_type(_561), _651)), _797)), spvFMul(as_type(cbuf_28.data[5u + buf2_dword_off]), as_type(cbuf_40.data[_700]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_722, _723, -spvFMul(_736, _742)), _790, _742), spvFMul(fma(as_type(_560), fma(-as_type(_561), _652, spvFMul(as_type(_562), _570.z)), spvFMul(as_type(_561), _652)), _797)), spvFMul(as_type(cbuf_28.data[6u + buf2_dword_off]), as_type(cbuf_40.data[_700]))); out.frag_color5.w = _847 ? _843 : as_type(_559.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_738, _830, _830); out.frag_color4.y = fma(-_740, _831, _831); out.frag_color4.z = fma(-_742, _832, _832); out.frag_color4.w = _847 ? _843 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_738); out.frag_color3.y = sqrt(_740); out.frag_color3.z = sqrt(_742); out.frag_color3.w = _847 ? _843 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_516 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_28.data[0u + buf2_dword_off]), fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _658, _289.x), _658), _658)); out.frag_color2.y = spvFMul(as_type(cbuf_28.data[1u + buf2_dword_off]), fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _659, _289.y), _659), _659)); out.frag_color2.z = spvFMul(as_type(cbuf_28.data[2u + buf2_dword_off]), fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _660, _289.z), _660), _660)); out.frag_color2.w = _843; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_512, _517); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_32.data[((0u + ((_516 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _870; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _478, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _469, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _467, 0.500488758087158203125); out.frag_color0.w = _870; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc77a0097 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[384]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; constant uint _97 = {}; constant uint _98 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(18)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint _144 = as_type(as_type(in.vs_in_attr1.z)); uint _153 = as_type(as_type(in.vs_in_attr2.x)); uint _157 = as_type(as_type(in.vs_in_attr2.y)); float _233 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_153))); float _234 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_157))); float _235 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.z))))); float _242 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _243 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _244 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_144))); bool _249 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u)] == 0u; uint _294; uint _295; uint _296; uint _297; uint _298; uint _299; uint _300; uint _301; uint _302; uint _303; uint _304; uint _305; if (!_249) { _294 = cbuf_24.data[2u + buf6_dword_off]; _295 = cbuf_24.data[1u + buf6_dword_off]; _296 = cbuf_24.data[7u + buf6_dword_off]; _297 = cbuf_24.data[6u + buf6_dword_off]; _298 = cbuf_24.data[4u + buf6_dword_off]; _299 = cbuf_24.data[11u + buf6_dword_off]; _300 = cbuf_24.data[10u + buf6_dword_off]; _301 = cbuf_24.data[9u + buf6_dword_off]; _302 = cbuf_24.data[0u + buf6_dword_off]; _303 = cbuf_24.data[8u + buf6_dword_off]; _304 = cbuf_24.data[5u + buf6_dword_off]; _305 = cbuf_24.data[3u + buf6_dword_off]; } else { _294 = _97; _295 = _98; _296 = as_type(as_type(in.vs_in_attr3.y)); _297 = as_type(as_type(in.vs_in_attr2.w)); _298 = _157; _299 = _153; _300 = as_type(as_type(in.vs_in_attr1.w)); _301 = _144; _302 = as_type(in.vs_in_attr5.w); _303 = as_type(in.vs_in_attr5.z); _304 = as_type(in.vs_in_attr5.y); _305 = as_type(as_type(in.vs_in_attr4.y)); } uint _704; uint _705; uint _706; uint _707; uint _708; uint _709; uint _710; uint _711; uint _712; uint _713; uint _714; uint _715; if (_249) { uint _307 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); uint _312 = (cbuf_16.data[_307] + _305) * 3u; uint _313 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.x))) * 3u; uint _319 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.z))) * 3u; uint _323 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.w))) * 3u; uint _329 = ((0u + (_312 * 16u)) + buf8_off) >> 2u; uint4 _342 = uint4(cbuf_20.data[_329 + 0u], cbuf_20.data[_329 + 1u], cbuf_20.data[_329 + 2u], cbuf_20.data[_329 + 3u]); uint _350 = ((0u + ((_312 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _363 = uint4(cbuf_20.data[_350 + 0u], cbuf_20.data[_350 + 1u], cbuf_20.data[_350 + 2u], cbuf_20.data[_350 + 3u]); uint _371 = ((0u + ((_312 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _384 = uint4(cbuf_20.data[_371 + 0u], cbuf_20.data[_371 + 1u], cbuf_20.data[_371 + 2u], cbuf_20.data[_371 + 3u]); uint _392 = ((0u + (_313 * 16u)) + buf8_off) >> 2u; uint4 _405 = uint4(cbuf_20.data[_392 + 0u], cbuf_20.data[_392 + 1u], cbuf_20.data[_392 + 2u], cbuf_20.data[_392 + 3u]); uint _413 = ((0u + ((_313 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _426 = uint4(cbuf_20.data[_413 + 0u], cbuf_20.data[_413 + 1u], cbuf_20.data[_413 + 2u], cbuf_20.data[_413 + 3u]); uint _434 = ((0u + ((_313 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _447 = uint4(cbuf_20.data[_434 + 0u], cbuf_20.data[_434 + 1u], cbuf_20.data[_434 + 2u], cbuf_20.data[_434 + 3u]); uint _455 = ((0u + (_319 * 16u)) + buf8_off) >> 2u; uint4 _468 = uint4(cbuf_20.data[_455 + 0u], cbuf_20.data[_455 + 1u], cbuf_20.data[_455 + 2u], cbuf_20.data[_455 + 3u]); uint _476 = ((0u + ((_319 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _489 = uint4(cbuf_20.data[_476 + 0u], cbuf_20.data[_476 + 1u], cbuf_20.data[_476 + 2u], cbuf_20.data[_476 + 3u]); uint _497 = ((0u + ((_319 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _510 = uint4(cbuf_20.data[_497 + 0u], cbuf_20.data[_497 + 1u], cbuf_20.data[_497 + 2u], cbuf_20.data[_497 + 3u]); uint _518 = ((0u + (_323 * 16u)) + buf8_off) >> 2u; uint4 _531 = uint4(cbuf_20.data[_518 + 0u], cbuf_20.data[_518 + 1u], cbuf_20.data[_518 + 2u], cbuf_20.data[_518 + 3u]); uint _539 = ((0u + ((_323 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _552 = uint4(cbuf_20.data[_539 + 0u], cbuf_20.data[_539 + 1u], cbuf_20.data[_539 + 2u], cbuf_20.data[_539 + 3u]); uint _560 = ((0u + ((_323 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _573 = uint4(cbuf_20.data[_560 + 0u], cbuf_20.data[_560 + 1u], cbuf_20.data[_560 + 2u], cbuf_20.data[_560 + 3u]); float _588 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(as_type(_302), spvFAdd(as_type(_303), spvFAdd(in.vs_in_attr5.x, as_type(_304))))); float _590 = spvFMul(as_type(_304), _588); float _591 = spvFMul(in.vs_in_attr5.x, _588); float _617 = spvFMul(as_type(_303), _588); float _643 = spvFMul(as_type(_302), _588); _704 = as_type(fma(as_type(_531.x), _643, fma(as_type(_468.x), _617, fma(as_type(_405.x), _591, spvFMul(_590, as_type(_342.x)))))); _705 = as_type(fma(as_type(_552.x), _643, fma(as_type(_489.x), _617, fma(as_type(_426.x), _591, spvFMul(_590, as_type(_363.x)))))); _706 = as_type(fma(as_type(_531.y), _643, fma(as_type(_468.y), _617, fma(as_type(_405.y), _591, spvFMul(_590, as_type(_342.y)))))); _707 = as_type(fma(as_type(_573.x), _643, fma(as_type(_510.x), _617, fma(as_type(_447.x), _591, spvFMul(_590, as_type(_384.x)))))); _708 = as_type(fma(as_type(_552.y), _643, fma(as_type(_489.y), _617, fma(as_type(_426.y), _591, spvFMul(_590, as_type(_363.y)))))); _709 = as_type(fma(as_type(_531.w), _643, fma(as_type(_468.w), _617, fma(as_type(_405.w), _591, spvFMul(_590, as_type(_342.w)))))); _710 = as_type(fma(as_type(_531.z), _643, fma(as_type(_468.z), _617, fma(as_type(_405.z), _591, spvFMul(_590, as_type(_342.z)))))); _711 = as_type(fma(as_type(_573.y), _643, fma(as_type(_510.y), _617, fma(as_type(_447.y), _591, spvFMul(_590, as_type(_384.y)))))); _712 = as_type(fma(as_type(_552.w), _643, fma(as_type(_489.w), _617, fma(as_type(_426.w), _591, spvFMul(_590, as_type(_363.w)))))); _713 = as_type(fma(as_type(_552.z), _643, fma(as_type(_489.z), _617, fma(as_type(_426.z), _591, spvFMul(_590, as_type(_363.z)))))); _714 = as_type(fma(as_type(_573.w), _643, fma(as_type(_510.w), _617, fma(as_type(_447.w), _591, spvFMul(_590, as_type(_384.w)))))); _715 = as_type(fma(as_type(_573.z), _643, fma(as_type(_510.z), _617, fma(as_type(_447.z), _591, spvFMul(_590, as_type(_384.z)))))); } else { _704 = _302; _705 = _298; _706 = _295; _707 = _303; _708 = _304; _709 = _305; _710 = _294; _711 = _301; _712 = _296; _713 = _297; _714 = _299; _715 = _300; } float _812 = spvFSub(fma(as_type(_707), in.vs_in_attr0.x, fma(as_type(_711), in.vs_in_attr0.y, fma(as_type(_715), in.vs_in_attr0.z, as_type(_714)))), as_type(cbuf_28.data[191u + buf9_dword_off])); float _816 = spvFSub(fma(as_type(_705), in.vs_in_attr0.x, fma(as_type(_708), in.vs_in_attr0.y, fma(as_type(_713), in.vs_in_attr0.z, as_type(_712)))), as_type(cbuf_28.data[187u + buf9_dword_off])); float _830 = spvFSub(fma(as_type(_704), in.vs_in_attr0.x, fma(as_type(_706), in.vs_in_attr0.y, fma(as_type(_710), in.vs_in_attr0.z, as_type(_709)))), as_type(cbuf_28.data[183u + buf9_dword_off])); float _840 = fma(as_type(cbuf_28.data[200u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[201u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[202u + buf9_dword_off]), _812, as_type(cbuf_28.data[203u + buf9_dword_off])))); float _842 = fma(as_type(cbuf_28.data[204u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[205u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[206u + buf9_dword_off]), _812, as_type(cbuf_28.data[207u + buf9_dword_off])))); float _844 = fma(as_type(cbuf_28.data[208u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[209u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[210u + buf9_dword_off]), _812, as_type(cbuf_28.data[211u + buf9_dword_off])))); float _846 = fma(as_type(cbuf_28.data[212u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[213u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[214u + buf9_dword_off]), _812, as_type(cbuf_28.data[215u + buf9_dword_off])))); out.gl_Position.x = _840; out.gl_Position.y = _842; out.gl_Position.z = _844; out.gl_Position.w = _846; out.out_attr0.x = fma(as_type(_704), _242, fma(as_type(_706), _243, spvFMul(_244, as_type(_710)))); out.out_attr0.y = fma(as_type(_705), _242, fma(as_type(_708), _243, spvFMul(_244, as_type(_713)))); out.out_attr0.z = fma(as_type(_707), _242, fma(as_type(_711), _243, spvFMul(_244, as_type(_715)))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_704), _233, fma(as_type(_706), _234, spvFMul(_235, as_type(_710)))); out.out_attr1.y = fma(as_type(_705), _233, fma(as_type(_708), _234, spvFMul(_235, as_type(_713)))); out.out_attr1.z = fma(as_type(_707), _233, fma(as_type(_711), _234, spvFMul(_235, as_type(_715)))); out.out_attr1.w = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); out.out_attr2.x = in.vs_in_attr6.x; out.out_attr2.y = in.vs_in_attr6.y; out.out_attr2.z = in.vs_in_attr6.z; out.out_attr2.w = in.vs_in_attr6.w; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr4.x = _840; out.out_attr4.y = _842; out.out_attr4.z = _844; out.out_attr4.w = _846; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img92 [[texture(0)]], texture2d fs_img68 [[texture(1)]], texture2d fs_img60 [[texture(2)]], texture2d fs_img100 [[texture(3)]], texture2d fs_img52 [[texture(4)]], texturecube fs_img84 [[texture(5)]], texturecube fs_img76 [[texture(6)]], texture2d fs_img44 [[texture(7)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint _134 = uint(gl_FrontFacing); float _268 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _284 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _289 = fs_img92.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _293 = _289.w; float _294 = spvFMul(in.fs_in_attr0.x, _268); float _296 = spvFMul(in.fs_in_attr0.y, _268); float _297 = spvFMul(in.fs_in_attr0.z, _268); float _299 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _300 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _301 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _304 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _284, as_type(cbuf_36.data[183u + buf0_dword_off])); float _307 = fma(-fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _284, as_type(cbuf_36.data[187u + buf0_dword_off])); float _310 = fma(-fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))), _284, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _311 = 0u == _134; uint _324; uint _325; uint _326; if (_311) { _324 = as_type(fast::max(-_294, -_294)); _325 = as_type(fast::max(-_297, -_297)); _326 = as_type(fast::max(-_296, -_296)); } else { _324 = as_type(_294); _325 = as_type(_297); _326 = _134; } uint _329; if (!_311) { _329 = as_type(_296); } else { _329 = _326; } float4 _360 = fs_img68.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _389 = fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _390 = _389.x; float4 _395 = fs_img100.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _397 = _395.y; float _402 = fma(2.0, _360.y, -1.0); float _403 = spvFMul(fma(2.0, _360.x, -1.0), fma(2.0, _360.w, -1.0)); float _414 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _416 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_403, _403), spvFMul(_402, _402)), 0.0, 1.0))); float _418 = rsqrt(fma(_299, _299, fma(_300, _300, spvFMul(_301, _301)))); float _447 = fma(spvFMul(_301, _418), _403, fma(spvFMul(in.fs_in_attr1.z, _414), _402, spvFMul(as_type(_325), _416))); float _451 = fma(spvFMul(_300, _418), _403, fma(spvFMul(in.fs_in_attr1.y, _414), _402, spvFMul(as_type(_329), _416))); float _454 = fma(spvFMul(_299, _418), _403, fma(spvFMul(in.fs_in_attr1.x, _414), _402, spvFMul(as_type(_324), _416))); float _458 = rsqrt(fma(_304, _304, fma(_307, _307, spvFMul(_310, _310)))); float _459 = rsqrt(fma(_454, _454, fma(_451, _451, spvFMul(_447, _447)))); uint _463 = 24u + buf2_dword_off; float _467 = spvFMul(_447, _459); float _469 = spvFMul(_451, _459); float _478 = spvFMul(_454, _459); float4 _484 = fs_img52.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _485 = _484.x; float _486 = _484.y; float _487 = _484.z; float _488 = fma(_478, spvFMul(_304, _458), fma(_469, spvFMul(_307, _458), spvFMul(spvFMul(_310, _458), _467))); float _494 = spvFMul(fast::max(_488, _488), 2.0); float _512 = spvFMul(as_type(cbuf_28.data[8u + buf2_dword_off]), 0.00390625); uint _516 = uint(in.fs_in_attr0.w) * 13u; float _517 = spvFMul(fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _390, _395.x), _390), _390), _512); float _519 = fma(-_304, _458, spvFMul(_478, _494)); float _521 = fma(-_307, _458, spvFMul(_469, _494)); float _523 = fma(-_310, _458, spvFMul(_467, _494)); float _535 = 1.0 / abs(1.0); float _537 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_517, 13.0), 0.5))); float _539 = fma(_521, _535, 1.5); float _540 = fma(_519, _535, 1.5); uint _546 = ((0u + ((_516 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _559 = uint4(cbuf_32.data[_546 + 0u], cbuf_32.data[_546 + 1u], cbuf_32.data[_546 + 2u], cbuf_32.data[_546 + 3u]); uint _560 = _559.x; uint _561 = _559.y; uint _562 = _559.z; float4 _570 = fs_img84.sample(fs_samp20, float3(spvFSub(_540, 1.5), spvFSub(_539, 1.5), _523), level(_537)); uint _577 = ((0u + ((_516 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _590 = uint4(cbuf_32.data[_577 + 0u], cbuf_32.data[_577 + 1u], cbuf_32.data[_577 + 2u], cbuf_32.data[_577 + 3u]); uint _598 = ((0u + ((_516 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _611 = uint4(cbuf_32.data[_598 + 0u], cbuf_32.data[_598 + 1u], cbuf_32.data[_598 + 2u], cbuf_32.data[_598 + 3u]); uint _619 = ((0u + ((_516 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _632 = uint4(cbuf_32.data[_619 + 0u], cbuf_32.data[_619 + 1u], cbuf_32.data[_619 + 2u], cbuf_32.data[_619 + 3u]); float4 _649 = fs_img76.sample(fs_samp20, float3(spvFSub(_540, 1.5), spvFSub(_539, 1.5), _523), level(_537)); float _650 = _649.x; float _651 = _649.y; float _652 = _649.z; float4 _657 = fs_img44.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); float _658 = _657.x; float _659 = _657.y; float _660 = _657.z; float _682 = fast::clamp(spvFAdd(fma(_519, as_type(_324), fma(_521, as_type(_329), spvFMul(as_type(_325), _523))), 1.0), 0.0, 1.0); bool _694 = (_487 == 0.0) && (_486 == 0.0); float _697 = _694 ? _485 : _487; float _698 = _694 ? _485 : _486; float _699 = spvFMul(_397, _397); uint _700 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _703 = spvFAdd(1.0, _488); float _722 = fast::clamp(spvFMul(_703, _703), 0.0, 1.0); float _723 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_488, _488), 0.0, 1.0))))); float _736 = spvFMul(_722, _723); float _738 = fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _485, _699), _485), _485); float _740 = fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _698, _699), _698), _698); float _742 = fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _697, _699), _697), _697); float _790 = spvFMul(_517, _517); float _797 = spvFMul(_682, _682); float _830 = fast::max(0.0, spvFAdd(as_type(_590.w), fma(_467, as_type(_590.z), fma(_478, as_type(_590.x), spvFMul(_469, as_type(_590.y)))))); float _831 = fast::max(0.0, spvFAdd(as_type(_611.w), fma(_467, as_type(_611.z), fma(_478, as_type(_611.x), spvFMul(_469, as_type(_611.y)))))); float _832 = fast::max(0.0, spvFAdd(as_type(_632.w), fma(_467, as_type(_632.z), fma(_478, as_type(_632.x), spvFMul(_469, as_type(_632.y)))))); float _843 = spvFMul(spvFMul(_657.w, in.fs_in_attr2.w), as_type(cbuf_32.data[((12u + ((_516 + 7u) * 16u)) + buf3_off) >> 2u])); bool _847 = as_type(cbuf_28.data[22u + buf2_dword_off]) != 0.0; float _870 = _847 ? _843 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_722, _723, -spvFMul(_736, _738)), _790, _738), spvFMul(fma(as_type(_560), fma(-as_type(_561), _650, spvFMul(as_type(_562), _570.x)), spvFMul(as_type(_561), _650)), _797)), spvFMul(as_type(cbuf_28.data[4u + buf2_dword_off]), as_type(cbuf_40.data[_700]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_722, _723, -spvFMul(_736, _740)), _790, _740), spvFMul(fma(as_type(_560), fma(-as_type(_561), _651, spvFMul(as_type(_562), _570.y)), spvFMul(as_type(_561), _651)), _797)), spvFMul(as_type(cbuf_28.data[5u + buf2_dword_off]), as_type(cbuf_40.data[_700]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_722, _723, -spvFMul(_736, _742)), _790, _742), spvFMul(fma(as_type(_560), fma(-as_type(_561), _652, spvFMul(as_type(_562), _570.z)), spvFMul(as_type(_561), _652)), _797)), spvFMul(as_type(cbuf_28.data[6u + buf2_dword_off]), as_type(cbuf_40.data[_700]))); out.frag_color5.w = _847 ? _843 : as_type(_559.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_738, _830, _830); out.frag_color4.y = fma(-_740, _831, _831); out.frag_color4.z = fma(-_742, _832, _832); out.frag_color4.w = _847 ? _843 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_738); out.frag_color3.y = sqrt(_740); out.frag_color3.z = sqrt(_742); out.frag_color3.w = _847 ? _843 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_516 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_28.data[0u + buf2_dword_off]), fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _658, _289.x), _658), _658)); out.frag_color2.y = spvFMul(as_type(cbuf_28.data[1u + buf2_dword_off]), fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _659, _289.y), _659), _659)); out.frag_color2.z = spvFMul(as_type(cbuf_28.data[2u + buf2_dword_off]), fma(as_type(cbuf_28.data[_463]), spvFSub(fma(_293, _660, _289.z), _660), _660)); out.frag_color2.w = _843; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_512, _517); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_32.data[((0u + ((_516 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _870; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _478, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _469, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _467, 0.500488758087158203125); out.frag_color0.w = _870; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x50287a64 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x3deaa573 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[1008]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint _186 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _195 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _196 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _201 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _205 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _212 = ((0u + ((_195 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _225 = uint4(cbuf_16.data[_212 + 0u], cbuf_16.data[_212 + 1u], cbuf_16.data[_212 + 2u], cbuf_16.data[_212 + 3u]); uint _233 = ((0u + ((_196 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _246 = uint4(cbuf_16.data[_233 + 0u], cbuf_16.data[_233 + 1u], cbuf_16.data[_233 + 2u], cbuf_16.data[_233 + 3u]); uint _254 = ((0u + ((_195 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _267 = uint4(cbuf_16.data[_254 + 0u], cbuf_16.data[_254 + 1u], cbuf_16.data[_254 + 2u], cbuf_16.data[_254 + 3u]); uint _275 = ((0u + ((_196 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _288 = uint4(cbuf_16.data[_275 + 0u], cbuf_16.data[_275 + 1u], cbuf_16.data[_275 + 2u], cbuf_16.data[_275 + 3u]); uint _296 = ((0u + (_195 * 16u)) + buf8_off) >> 2u; uint4 _309 = uint4(cbuf_16.data[_296 + 0u], cbuf_16.data[_296 + 1u], cbuf_16.data[_296 + 2u], cbuf_16.data[_296 + 3u]); uint _317 = ((0u + ((_201 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _330 = uint4(cbuf_16.data[_317 + 0u], cbuf_16.data[_317 + 1u], cbuf_16.data[_317 + 2u], cbuf_16.data[_317 + 3u]); uint _338 = ((0u + (_196 * 16u)) + buf8_off) >> 2u; uint4 _351 = uint4(cbuf_16.data[_338 + 0u], cbuf_16.data[_338 + 1u], cbuf_16.data[_338 + 2u], cbuf_16.data[_338 + 3u]); uint _359 = ((0u + ((_201 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _372 = uint4(cbuf_16.data[_359 + 0u], cbuf_16.data[_359 + 1u], cbuf_16.data[_359 + 2u], cbuf_16.data[_359 + 3u]); uint _380 = ((0u + ((_205 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _393 = uint4(cbuf_16.data[_380 + 0u], cbuf_16.data[_380 + 1u], cbuf_16.data[_380 + 2u], cbuf_16.data[_380 + 3u]); uint _401 = ((0u + (_201 * 16u)) + buf8_off) >> 2u; uint4 _414 = uint4(cbuf_16.data[_401 + 0u], cbuf_16.data[_401 + 1u], cbuf_16.data[_401 + 2u], cbuf_16.data[_401 + 3u]); uint _422 = ((0u + ((_205 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _435 = uint4(cbuf_16.data[_422 + 0u], cbuf_16.data[_422 + 1u], cbuf_16.data[_422 + 2u], cbuf_16.data[_422 + 3u]); uint _443 = ((0u + (_205 * 16u)) + buf8_off) >> 2u; uint4 _456 = uint4(cbuf_16.data[_443 + 0u], cbuf_16.data[_443 + 1u], cbuf_16.data[_443 + 2u], cbuf_16.data[_443 + 3u]); float _468 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _469 = spvFMul(in.vs_in_attr4.y, _468); float _470 = spvFMul(in.vs_in_attr4.x, _468); float _475 = spvFMul(in.vs_in_attr4.z, _468); float _554 = spvFMul(in.vs_in_attr4.w, _468); float _596 = fma(as_type(_393.z), _554, fma(as_type(_330.z), _475, fma(as_type(_246.z), _470, spvFMul(_469, as_type(_225.z))))); float _618 = fma(as_type(_435.z), _554, fma(as_type(_372.z), _475, fma(as_type(_288.z), _470, spvFMul(_469, as_type(_267.z))))); float _622 = fma(as_type(_393.y), _554, fma(as_type(_330.y), _475, fma(as_type(_246.y), _470, spvFMul(_469, as_type(_225.y))))); float _631 = fma(as_type(_456.z), _554, fma(as_type(_414.z), _475, fma(as_type(_351.z), _470, spvFMul(_469, as_type(_309.z))))); float _635 = fma(as_type(_435.y), _554, fma(as_type(_372.y), _475, fma(as_type(_288.y), _470, spvFMul(_469, as_type(_267.y))))); float _637 = fma(as_type(_393.x), _554, fma(as_type(_330.x), _475, fma(as_type(_246.x), _470, spvFMul(_469, as_type(_225.x))))); float _643 = fma(as_type(_456.y), _554, fma(as_type(_414.y), _475, fma(as_type(_351.y), _470, spvFMul(_469, as_type(_309.y))))); float _645 = fma(as_type(_435.x), _554, fma(as_type(_372.x), _475, fma(as_type(_288.x), _470, spvFMul(_469, as_type(_267.x))))); float _650 = fma(as_type(_456.x), _554, fma(as_type(_414.x), _475, fma(as_type(_351.x), _470, spvFMul(_469, as_type(_309.x))))); float _654 = spvFSub(fma(_637, in.vs_in_attr0.x, fma(_622, in.vs_in_attr0.y, fma(_596, in.vs_in_attr0.z, fma(as_type(_393.w), _554, fma(as_type(_330.w), _475, fma(as_type(_246.w), _470, spvFMul(_469, as_type(_225.w)))))))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _657 = spvFSub(fma(_645, in.vs_in_attr0.x, fma(_635, in.vs_in_attr0.y, fma(_618, in.vs_in_attr0.z, fma(as_type(_435.w), _554, fma(as_type(_372.w), _475, fma(as_type(_288.w), _470, spvFMul(_469, as_type(_267.w)))))))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _671 = spvFSub(fma(_650, in.vs_in_attr0.x, fma(_643, in.vs_in_attr0.y, fma(_631, in.vs_in_attr0.z, fma(as_type(_456.w), _554, fma(as_type(_414.w), _475, fma(as_type(_351.w), _470, spvFMul(_469, as_type(_309.w)))))))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _681 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _654, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _683 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _654, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _685 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _654, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _687 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _654, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _681; out.gl_Position.y = _683; out.gl_Position.z = _685; out.gl_Position.w = _687; float _730 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _733 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _736 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _738 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _750 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _751 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_650, _751, fma(_643, _738, spvFMul(_733, _631))); out.out_attr0.y = fma(_645, _751, fma(_635, _738, spvFMul(_733, _618))); out.out_attr0.z = fma(_637, _751, fma(_622, _738, spvFMul(_733, _596))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_650, _750, fma(_643, _736, spvFMul(_730, _631))); out.out_attr1.y = fma(_645, _750, fma(_635, _736, spvFMul(_730, _618))); out.out_attr1.z = fma(_637, _750, fma(_622, _736, spvFMul(_730, _596))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr4.x = _681; out.out_attr4.y = _683; out.out_attr4.z = _685; out.out_attr4.w = _687; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_44 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_36 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_28 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_40 [[buffer(14)]], constant fs_cbuf_block_f32_5& cbuf_48 [[buffer(15)]], texture2d fs_img108 [[texture(0)]], texture2d fs_img76 [[texture(1)]], texture2d fs_img68 [[texture(2)]], texture2d fs_img116 [[texture(3)]], texture2d fs_img60 [[texture(4)]], texture2d fs_img52 [[texture(5)]], texturecube fs_img100 [[texture(6)]], texturecube fs_img92 [[texture(7)]], texture2d fs_img84 [[texture(8)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _148 = uint(gl_FrontFacing); float _282 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _298 = 1.0 / fma(as_type(cbuf_44.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _303 = fs_img108.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _307 = _303.w; float _308 = spvFMul(in.fs_in_attr0.x, _282); float _310 = spvFMul(in.fs_in_attr0.y, _282); float _311 = spvFMul(in.fs_in_attr0.z, _282); float _313 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _314 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _315 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _318 = fma(-fma(as_type(cbuf_44.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _298, as_type(cbuf_44.data[183u + buf0_dword_off])); float _321 = fma(-fma(as_type(cbuf_44.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _298, as_type(cbuf_44.data[187u + buf0_dword_off])); float _324 = fma(-fma(as_type(cbuf_44.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))), _298, as_type(cbuf_44.data[191u + buf0_dword_off])); bool _325 = 0u == _148; uint _338; uint _339; uint _340; if (_325) { _338 = as_type(fast::max(-_308, -_308)); _339 = as_type(fast::max(-_311, -_311)); _340 = as_type(fast::max(-_310, -_310)); } else { _338 = as_type(_308); _339 = as_type(_311); _340 = _148; } uint _343; if (!_325) { _343 = as_type(_310); } else { _343 = _340; } float4 _374 = fs_img76.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _403 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _404 = _403.x; float4 _409 = fs_img116.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _411 = _409.y; float _416 = fma(2.0, _374.y, -1.0); float _417 = spvFMul(fma(2.0, _374.x, -1.0), fma(2.0, _374.w, -1.0)); float _428 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _430 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_417, _417), spvFMul(_416, _416)), 0.0, 1.0))); float _432 = rsqrt(fma(_313, _313, fma(_314, _314, spvFMul(_315, _315)))); float _461 = fma(spvFMul(_315, _432), _417, fma(spvFMul(in.fs_in_attr1.z, _428), _416, spvFMul(as_type(_339), _430))); float _465 = fma(spvFMul(_314, _432), _417, fma(spvFMul(in.fs_in_attr1.y, _428), _416, spvFMul(as_type(_343), _430))); float _468 = fma(spvFMul(_313, _432), _417, fma(spvFMul(in.fs_in_attr1.x, _428), _416, spvFMul(as_type(_338), _430))); float _472 = rsqrt(fma(_318, _318, fma(_321, _321, spvFMul(_324, _324)))); float _473 = rsqrt(fma(_468, _468, fma(_465, _465, spvFMul(_461, _461)))); uint _477 = 24u + buf2_dword_off; float _481 = spvFMul(_461, _473); float _483 = spvFMul(_465, _473); float _504 = spvFMul(_468, _473); float4 _510 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _511 = _510.x; float _512 = _510.y; float _513 = _510.z; float _514 = fma(_504, spvFMul(_318, _472), fma(_483, spvFMul(_321, _472), spvFMul(spvFMul(_324, _472), _481))); float _520 = spvFMul(fast::max(_514, _514), 2.0); float _526 = spvFMul(as_type(cbuf_32.data[8u + buf2_dword_off]), 0.00390625); uint _530 = uint(in.fs_in_attr0.w) * 13u; float _531 = spvFMul(fma(as_type(cbuf_32.data[_477]), spvFSub(fma(_307, _404, _409.x), _404), _404), _526); float _533 = fma(-_318, _472, spvFMul(_504, _520)); float _535 = fma(-_321, _472, spvFMul(_483, _520)); float _537 = fma(-_324, _472, spvFMul(_481, _520)); float _548 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _551 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float _555 = 1.0 / abs(1.0); float _557 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_531, 13.0), 0.5))); float _559 = fma(_535, _555, 1.5); float _560 = fma(_533, _555, 1.5); float4 _566 = fs_img52.sample(fs_samp4, float2(_548, _551)); uint _575 = ((0u + ((_530 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _588 = uint4(cbuf_36.data[_575 + 0u], cbuf_36.data[_575 + 1u], cbuf_36.data[_575 + 2u], cbuf_36.data[_575 + 3u]); uint _589 = _588.x; uint _590 = _588.y; uint _591 = _588.z; float4 _599 = fs_img100.sample(fs_samp20, float3(spvFSub(_560, 1.5), spvFSub(_559, 1.5), _537), level(_557)); uint _606 = ((0u + ((_530 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _619 = uint4(cbuf_36.data[_606 + 0u], cbuf_36.data[_606 + 1u], cbuf_36.data[_606 + 2u], cbuf_36.data[_606 + 3u]); uint _627 = ((0u + ((_530 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _640 = uint4(cbuf_36.data[_627 + 0u], cbuf_36.data[_627 + 1u], cbuf_36.data[_627 + 2u], cbuf_36.data[_627 + 3u]); uint _648 = ((0u + ((_530 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _661 = uint4(cbuf_36.data[_648 + 0u], cbuf_36.data[_648 + 1u], cbuf_36.data[_648 + 2u], cbuf_36.data[_648 + 3u]); float4 _672 = fs_img92.sample(fs_samp20, float3(spvFSub(_560, 1.5), spvFSub(_559, 1.5), _537), level(_557)); float _673 = _672.x; float _674 = _672.y; float _675 = _672.z; float4 _694 = fs_img84.sample(fs_samp20, float2(_548, _551)); float _714 = fast::clamp(spvFAdd(fma(_533, as_type(_338), fma(_535, as_type(_343), spvFMul(as_type(_339), _537))), 1.0), 0.0, 1.0); bool _726 = (_513 == 0.0) && (_512 == 0.0); float _729 = _726 ? _511 : _513; float _730 = _726 ? _511 : _512; float _731 = spvFMul(_411, _411); uint _732 = 12u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); float _735 = spvFAdd(1.0, _514); float _757 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_514, _514), 0.0, 1.0))))); float _771 = fma(as_type(cbuf_32.data[_477]), spvFSub(fma(_307, _511, _731), _511), _511); float _773 = fma(as_type(cbuf_32.data[_477]), spvFSub(fma(_307, _730, _731), _730), _730); float _775 = fma(as_type(cbuf_32.data[_477]), spvFSub(fma(_307, _729, _731), _729), _729); float _780 = fast::clamp(spvFMul(_735, _735), 0.0, 1.0); float _783 = fast::clamp(spvFAdd(sqrt(_566.x), as_type(cbuf_40.data[24u + buf5_dword_off])), 0.0, 1.0); float _786 = fast::clamp(spvFAdd(sqrt(_566.y), as_type(cbuf_40.data[25u + buf5_dword_off])), 0.0, 1.0); float _789 = fast::clamp(spvFAdd(sqrt(_566.z), as_type(cbuf_40.data[26u + buf5_dword_off])), 0.0, 1.0); float _790 = spvFMul(_780, _757); float _803 = spvFMul(_783, _783); float _804 = spvFMul(_786, _786); float _805 = spvFMul(_789, _789); float _841 = spvFMul(_531, _531); float _848 = spvFMul(_714, _714); float _888 = fast::max(0.0, spvFAdd(as_type(_619.w), fma(_481, as_type(_619.z), fma(_504, as_type(_619.x), spvFMul(_483, as_type(_619.y)))))); float _889 = fast::max(0.0, spvFAdd(as_type(_640.w), fma(_481, as_type(_640.z), fma(_504, as_type(_640.x), spvFMul(_483, as_type(_640.y)))))); float _890 = fast::max(0.0, spvFAdd(as_type(_661.w), fma(_481, as_type(_661.z), fma(_504, as_type(_661.x), spvFMul(_483, as_type(_661.y)))))); float _901 = spvFMul(spvFMul(_566.w, in.fs_in_attr2.w), as_type(cbuf_36.data[((12u + ((_530 + 7u) * 16u)) + buf3_off) >> 2u])); bool _907 = as_type(cbuf_32.data[22u + buf2_dword_off]) != 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_780, _757, -spvFMul(_790, _771)), _841, _771), spvFMul(fma(as_type(_589), fma(-as_type(_590), _673, spvFMul(as_type(_591), _599.x)), spvFMul(as_type(_590), _673)), _848)), spvFMul(as_type(cbuf_32.data[4u + buf2_dword_off]), as_type(cbuf_48.data[_732]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_780, _757, -spvFMul(_790, _773)), _841, _773), spvFMul(fma(as_type(_589), fma(-as_type(_590), _674, spvFMul(as_type(_591), _599.y)), spvFMul(as_type(_590), _674)), _848)), spvFMul(as_type(cbuf_32.data[5u + buf2_dword_off]), as_type(cbuf_48.data[_732]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_780, _757, -spvFMul(_790, _775)), _841, _775), spvFMul(fma(as_type(_589), fma(-as_type(_590), _675, spvFMul(as_type(_591), _599.z)), spvFMul(as_type(_590), _675)), _848)), spvFMul(as_type(cbuf_32.data[6u + buf2_dword_off]), as_type(cbuf_48.data[_732]))); out.frag_color5.w = _907 ? _901 : as_type(_588.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_771, _888, _888); out.frag_color4.y = fma(-_773, _889, _889); out.frag_color4.z = fma(-_775, _890, _890); out.frag_color4.w = _907 ? _901 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_771); out.frag_color3.y = sqrt(_773); out.frag_color3.z = sqrt(_775); out.frag_color3.w = _907 ? _901 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + ((_530 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_32.data[0u + buf2_dword_off]), fma(as_type(cbuf_32.data[_477]), fma(-_783, _783, fma(_307, _803, _303.x)), _803)); out.frag_color2.y = spvFMul(as_type(cbuf_32.data[1u + buf2_dword_off]), fma(as_type(cbuf_32.data[_477]), fma(-_786, _786, fma(_307, _804, _303.y)), _804)); out.frag_color2.z = spvFMul(as_type(cbuf_32.data[2u + buf2_dword_off]), fma(as_type(cbuf_32.data[_477]), fma(-_789, _789, fma(_307, _805, _303.z)), _805)); out.frag_color2.w = _907 ? _901 : _694.x; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_526, _531); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_28.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr2.y)); out.frag_color1.z = as_type(cbuf_36.data[((0u + ((_530 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _907 ? _901 : spvFMul(as_type(cbuf_32.data[56u + buf2_dword_off]), 0.0039215688593685626983642578125); if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _504, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _483, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _481, 0.500488758087158203125); out.frag_color0.w = _907 ? _901 : 0.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb10c4f55 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[576]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint _145 = as_type(as_type(in.vs_in_attr3.x)); uint _149 = as_type(as_type(in.vs_in_attr3.y)); uint _153 = as_type(as_type(in.vs_in_attr3.z)); uint _157 = as_type(as_type(in.vs_in_attr3.w)); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _195 = 20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _281 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _282 = spvFMul(in.vs_in_attr4.x, _281); float _283 = spvFMul(in.vs_in_attr4.y, _281); float _284 = spvFMul(in.vs_in_attr4.z, _281); float _285 = spvFMul(in.vs_in_attr4.w, _281); uint _286 = _145 * 3u; uint _289 = _149 * 3u; uint _292 = _153 * 3u; uint _297 = ((0u + (_286 * 16u)) + buf7_off) >> 2u; uint4 _310 = uint4(cbuf_24.data[_297 + 0u], cbuf_24.data[_297 + 1u], cbuf_24.data[_297 + 2u], cbuf_24.data[_297 + 3u]); uint _318 = ((0u + ((_286 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _331 = uint4(cbuf_24.data[_318 + 0u], cbuf_24.data[_318 + 1u], cbuf_24.data[_318 + 2u], cbuf_24.data[_318 + 3u]); uint _339 = ((0u + ((_286 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _352 = uint4(cbuf_24.data[_339 + 0u], cbuf_24.data[_339 + 1u], cbuf_24.data[_339 + 2u], cbuf_24.data[_339 + 3u]); uint _360 = ((0u + (_289 * 16u)) + buf7_off) >> 2u; uint4 _373 = uint4(cbuf_24.data[_360 + 0u], cbuf_24.data[_360 + 1u], cbuf_24.data[_360 + 2u], cbuf_24.data[_360 + 3u]); uint _381 = ((0u + ((_289 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _394 = uint4(cbuf_24.data[_381 + 0u], cbuf_24.data[_381 + 1u], cbuf_24.data[_381 + 2u], cbuf_24.data[_381 + 3u]); uint _402 = ((0u + ((_289 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _415 = uint4(cbuf_24.data[_402 + 0u], cbuf_24.data[_402 + 1u], cbuf_24.data[_402 + 2u], cbuf_24.data[_402 + 3u]); uint _423 = ((0u + (_292 * 16u)) + buf7_off) >> 2u; uint4 _436 = uint4(cbuf_24.data[_423 + 0u], cbuf_24.data[_423 + 1u], cbuf_24.data[_423 + 2u], cbuf_24.data[_423 + 3u]); uint _444 = ((0u + ((_292 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _457 = uint4(cbuf_24.data[_444 + 0u], cbuf_24.data[_444 + 1u], cbuf_24.data[_444 + 2u], cbuf_24.data[_444 + 3u]); uint _527 = _157 * 3u; uint _531 = (cbuf_12.data[_195] + _145) * 3u; uint _535 = (cbuf_12.data[_195] + _149) * 3u; uint _539 = ((0u + ((_292 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _552 = uint4(cbuf_24.data[_539 + 0u], cbuf_24.data[_539 + 1u], cbuf_24.data[_539 + 2u], cbuf_24.data[_539 + 3u]); uint _560 = ((0u + (_527 * 16u)) + buf7_off) >> 2u; uint4 _573 = uint4(cbuf_24.data[_560 + 0u], cbuf_24.data[_560 + 1u], cbuf_24.data[_560 + 2u], cbuf_24.data[_560 + 3u]); uint _581 = ((0u + ((_527 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _594 = uint4(cbuf_24.data[_581 + 0u], cbuf_24.data[_581 + 1u], cbuf_24.data[_581 + 2u], cbuf_24.data[_581 + 3u]); uint _602 = ((0u + ((_527 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _615 = uint4(cbuf_24.data[_602 + 0u], cbuf_24.data[_602 + 1u], cbuf_24.data[_602 + 2u], cbuf_24.data[_602 + 3u]); uint _623 = ((0u + (_531 * 16u)) + buf8_off) >> 2u; uint4 _636 = uint4(cbuf_16.data[_623 + 0u], cbuf_16.data[_623 + 1u], cbuf_16.data[_623 + 2u], cbuf_16.data[_623 + 3u]); uint _644 = ((0u + ((_531 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _657 = uint4(cbuf_16.data[_644 + 0u], cbuf_16.data[_644 + 1u], cbuf_16.data[_644 + 2u], cbuf_16.data[_644 + 3u]); uint _665 = ((0u + ((_531 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _678 = uint4(cbuf_16.data[_665 + 0u], cbuf_16.data[_665 + 1u], cbuf_16.data[_665 + 2u], cbuf_16.data[_665 + 3u]); uint _686 = ((0u + (_535 * 16u)) + buf8_off) >> 2u; uint4 _699 = uint4(cbuf_16.data[_686 + 0u], cbuf_16.data[_686 + 1u], cbuf_16.data[_686 + 2u], cbuf_16.data[_686 + 3u]); float _713 = fma(as_type(_573.x), _285, fma(as_type(_436.x), _284, fma(as_type(_310.x), _282, spvFMul(_283, as_type(_373.x))))); float _715 = fma(as_type(_573.y), _285, fma(as_type(_436.y), _284, fma(as_type(_310.y), _282, spvFMul(_283, as_type(_373.y))))); float _717 = fma(as_type(_573.z), _285, fma(as_type(_436.z), _284, fma(as_type(_310.z), _282, spvFMul(_283, as_type(_373.z))))); float _721 = fma(as_type(_594.x), _285, fma(as_type(_457.x), _284, fma(as_type(_331.x), _282, spvFMul(_283, as_type(_394.x))))); float _723 = fma(as_type(_594.y), _285, fma(as_type(_457.y), _284, fma(as_type(_331.y), _282, spvFMul(_283, as_type(_394.y))))); float _725 = fma(as_type(_594.z), _285, fma(as_type(_457.z), _284, fma(as_type(_331.z), _282, spvFMul(_283, as_type(_394.z))))); float _729 = fma(as_type(_615.x), _285, fma(as_type(_552.x), _284, fma(as_type(_352.x), _282, spvFMul(_283, as_type(_415.x))))); float _731 = fma(as_type(_615.y), _285, fma(as_type(_552.y), _284, fma(as_type(_352.y), _282, spvFMul(_283, as_type(_415.y))))); float _733 = fma(as_type(_615.z), _285, fma(as_type(_552.z), _284, fma(as_type(_352.z), _282, spvFMul(_283, as_type(_415.z))))); float _742 = fma(_713, in.vs_in_attr0.x, fma(_715, in.vs_in_attr0.y, fma(_717, in.vs_in_attr0.z, fma(as_type(_573.w), _285, fma(as_type(_436.w), _284, fma(as_type(_310.w), _282, spvFMul(_283, as_type(_373.w)))))))); float _743 = fma(_721, in.vs_in_attr0.x, fma(_723, in.vs_in_attr0.y, fma(_725, in.vs_in_attr0.z, fma(as_type(_594.w), _285, fma(as_type(_457.w), _284, fma(as_type(_331.w), _282, spvFMul(_283, as_type(_394.w)))))))); float _744 = fma(_729, in.vs_in_attr0.x, fma(_731, in.vs_in_attr0.y, fma(_733, in.vs_in_attr0.z, fma(as_type(_615.w), _285, fma(as_type(_552.w), _284, fma(as_type(_352.w), _282, spvFMul(_283, as_type(_415.w)))))))); uint _764 = (cbuf_12.data[_195] + _153) * 3u; uint _768 = (cbuf_12.data[_195] + _157) * 3u; uint _774 = ((0u + ((_535 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _787 = uint4(cbuf_16.data[_774 + 0u], cbuf_16.data[_774 + 1u], cbuf_16.data[_774 + 2u], cbuf_16.data[_774 + 3u]); uint _795 = ((0u + ((_535 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _808 = uint4(cbuf_16.data[_795 + 0u], cbuf_16.data[_795 + 1u], cbuf_16.data[_795 + 2u], cbuf_16.data[_795 + 3u]); uint _816 = ((0u + (_764 * 16u)) + buf8_off) >> 2u; uint4 _829 = uint4(cbuf_16.data[_816 + 0u], cbuf_16.data[_816 + 1u], cbuf_16.data[_816 + 2u], cbuf_16.data[_816 + 3u]); uint _837 = ((0u + ((_764 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _850 = uint4(cbuf_16.data[_837 + 0u], cbuf_16.data[_837 + 1u], cbuf_16.data[_837 + 2u], cbuf_16.data[_837 + 3u]); uint _858 = ((0u + ((_764 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _871 = uint4(cbuf_16.data[_858 + 0u], cbuf_16.data[_858 + 1u], cbuf_16.data[_858 + 2u], cbuf_16.data[_858 + 3u]); uint _879 = ((0u + (_768 * 16u)) + buf8_off) >> 2u; uint4 _892 = uint4(cbuf_16.data[_879 + 0u], cbuf_16.data[_879 + 1u], cbuf_16.data[_879 + 2u], cbuf_16.data[_879 + 3u]); float _954 = fma(as_type(_892.x), _285, fma(as_type(_829.x), _284, fma(as_type(_636.x), _282, spvFMul(_283, as_type(_699.x))))); float _956 = fma(as_type(_892.y), _285, fma(as_type(_829.y), _284, fma(as_type(_636.y), _282, spvFMul(_283, as_type(_699.y))))); float _958 = fma(as_type(_892.z), _285, fma(as_type(_829.z), _284, fma(as_type(_636.z), _282, spvFMul(_283, as_type(_699.z))))); float _965 = spvFSub(fma(_954, _742, fma(_956, _743, fma(_958, _744, fma(as_type(_892.w), _285, fma(as_type(_829.w), _284, fma(as_type(_636.w), _282, spvFMul(_283, as_type(_699.w)))))))), as_type(cbuf_20.data[183u + buf6_dword_off])); float _976 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _977 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _978 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _986 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _987 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _988 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _995 = fma(_713, _986, fma(_715, _987, spvFMul(_988, _717))); float _996 = fma(_721, _986, fma(_723, _987, spvFMul(_988, _725))); float _997 = fma(_729, _986, fma(_731, _987, spvFMul(_988, _733))); float _1004 = fma(_713, _976, fma(_715, _977, spvFMul(_978, _717))); float _1005 = fma(_721, _976, fma(_723, _977, spvFMul(_978, _725))); float _1006 = fma(_729, _976, fma(_731, _977, spvFMul(_978, _733))); uint _1014 = ((0u + ((_768 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _1027 = uint4(cbuf_16.data[_1014 + 0u], cbuf_16.data[_1014 + 1u], cbuf_16.data[_1014 + 2u], cbuf_16.data[_1014 + 3u]); uint _1035 = ((0u + ((_768 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _1048 = uint4(cbuf_16.data[_1035 + 0u], cbuf_16.data[_1035 + 1u], cbuf_16.data[_1035 + 2u], cbuf_16.data[_1035 + 3u]); float _1056 = fma(as_type(_1027.x), _285, fma(as_type(_850.x), _284, fma(as_type(_657.x), _282, spvFMul(_283, as_type(_787.x))))); float _1058 = fma(as_type(_1027.y), _285, fma(as_type(_850.y), _284, fma(as_type(_657.y), _282, spvFMul(_283, as_type(_787.y))))); float _1060 = fma(as_type(_1027.z), _285, fma(as_type(_850.z), _284, fma(as_type(_657.z), _282, spvFMul(_283, as_type(_787.z))))); float _1064 = fma(as_type(_1048.x), _285, fma(as_type(_871.x), _284, fma(as_type(_678.x), _282, spvFMul(_283, as_type(_808.x))))); float _1066 = fma(as_type(_1048.y), _285, fma(as_type(_871.y), _284, fma(as_type(_678.y), _282, spvFMul(_283, as_type(_808.y))))); float _1068 = fma(as_type(_1048.z), _285, fma(as_type(_871.z), _284, fma(as_type(_678.z), _282, spvFMul(_283, as_type(_808.z))))); float _1078 = spvFSub(fma(_1056, _742, fma(_1058, _743, fma(_1060, _744, fma(as_type(_1027.w), _285, fma(as_type(_850.w), _284, fma(as_type(_657.w), _282, spvFMul(_283, as_type(_787.w)))))))), as_type(cbuf_20.data[187u + buf6_dword_off])); float _1080 = spvFSub(fma(_1064, _742, fma(_1066, _743, fma(_1068, _744, fma(as_type(_1048.w), _285, fma(as_type(_871.w), _284, fma(as_type(_678.w), _282, spvFMul(_283, as_type(_808.w)))))))), as_type(cbuf_20.data[191u + buf6_dword_off])); float _1102 = fma(as_type(cbuf_20.data[200u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[201u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[202u + buf6_dword_off]), _1080, as_type(cbuf_20.data[203u + buf6_dword_off])))); float _1104 = fma(as_type(cbuf_20.data[204u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[205u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[206u + buf6_dword_off]), _1080, as_type(cbuf_20.data[207u + buf6_dword_off])))); float _1106 = fma(as_type(cbuf_20.data[208u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[209u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[210u + buf6_dword_off]), _1080, as_type(cbuf_20.data[211u + buf6_dword_off])))); float _1108 = fma(as_type(cbuf_20.data[212u + buf6_dword_off]), _965, fma(as_type(cbuf_20.data[213u + buf6_dword_off]), _1078, fma(as_type(cbuf_20.data[214u + buf6_dword_off]), _1080, as_type(cbuf_20.data[215u + buf6_dword_off])))); out.gl_Position.x = _1102; out.gl_Position.y = _1104; out.gl_Position.z = _1106; out.gl_Position.w = _1108; out.out_attr4.x = _1102; out.out_attr4.y = _1104; out.out_attr4.z = _1106; out.out_attr4.w = _1108; out.out_attr1.x = fma(_954, _1004, fma(_956, _1005, spvFMul(_1006, _958))); out.out_attr1.y = fma(_1056, _1004, fma(_1058, _1005, spvFMul(_1006, _1060))); out.out_attr1.z = fma(_1064, _1004, fma(_1066, _1005, spvFMul(_1006, _1068))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf9_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf9_dword_off])); out.out_attr0.x = fma(_954, _995, fma(_956, _996, spvFMul(_997, _958))); out.out_attr0.y = fma(_1056, _995, fma(_1058, _996, spvFMul(_997, _1060))); out.out_attr0.z = fma(_1064, _995, fma(_1066, _996, spvFMul(_997, _1068))); out.out_attr0.w = 0.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc77a0097 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[576]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; constant uint _97 = {}; constant uint _98 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(18)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint _144 = as_type(as_type(in.vs_in_attr1.z)); uint _153 = as_type(as_type(in.vs_in_attr2.x)); uint _157 = as_type(as_type(in.vs_in_attr2.y)); float _233 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_153))); float _234 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_157))); float _235 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.z))))); float _242 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _243 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _244 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_144))); bool _249 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u)] == 0u; uint _294; uint _295; uint _296; uint _297; uint _298; uint _299; uint _300; uint _301; uint _302; uint _303; uint _304; uint _305; if (!_249) { _294 = cbuf_24.data[2u + buf6_dword_off]; _295 = cbuf_24.data[1u + buf6_dword_off]; _296 = cbuf_24.data[7u + buf6_dword_off]; _297 = cbuf_24.data[6u + buf6_dword_off]; _298 = cbuf_24.data[4u + buf6_dword_off]; _299 = cbuf_24.data[11u + buf6_dword_off]; _300 = cbuf_24.data[10u + buf6_dword_off]; _301 = cbuf_24.data[9u + buf6_dword_off]; _302 = cbuf_24.data[0u + buf6_dword_off]; _303 = cbuf_24.data[8u + buf6_dword_off]; _304 = cbuf_24.data[5u + buf6_dword_off]; _305 = cbuf_24.data[3u + buf6_dword_off]; } else { _294 = _97; _295 = _98; _296 = as_type(as_type(in.vs_in_attr3.y)); _297 = as_type(as_type(in.vs_in_attr2.w)); _298 = _157; _299 = _153; _300 = as_type(as_type(in.vs_in_attr1.w)); _301 = _144; _302 = as_type(in.vs_in_attr5.w); _303 = as_type(in.vs_in_attr5.z); _304 = as_type(in.vs_in_attr5.y); _305 = as_type(as_type(in.vs_in_attr4.y)); } uint _704; uint _705; uint _706; uint _707; uint _708; uint _709; uint _710; uint _711; uint _712; uint _713; uint _714; uint _715; if (_249) { uint _307 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); uint _312 = (cbuf_16.data[_307] + _305) * 3u; uint _313 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.x))) * 3u; uint _319 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.z))) * 3u; uint _323 = (cbuf_16.data[_307] + as_type(as_type(in.vs_in_attr4.w))) * 3u; uint _329 = ((0u + (_312 * 16u)) + buf8_off) >> 2u; uint4 _342 = uint4(cbuf_20.data[_329 + 0u], cbuf_20.data[_329 + 1u], cbuf_20.data[_329 + 2u], cbuf_20.data[_329 + 3u]); uint _350 = ((0u + ((_312 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _363 = uint4(cbuf_20.data[_350 + 0u], cbuf_20.data[_350 + 1u], cbuf_20.data[_350 + 2u], cbuf_20.data[_350 + 3u]); uint _371 = ((0u + ((_312 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _384 = uint4(cbuf_20.data[_371 + 0u], cbuf_20.data[_371 + 1u], cbuf_20.data[_371 + 2u], cbuf_20.data[_371 + 3u]); uint _392 = ((0u + (_313 * 16u)) + buf8_off) >> 2u; uint4 _405 = uint4(cbuf_20.data[_392 + 0u], cbuf_20.data[_392 + 1u], cbuf_20.data[_392 + 2u], cbuf_20.data[_392 + 3u]); uint _413 = ((0u + ((_313 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _426 = uint4(cbuf_20.data[_413 + 0u], cbuf_20.data[_413 + 1u], cbuf_20.data[_413 + 2u], cbuf_20.data[_413 + 3u]); uint _434 = ((0u + ((_313 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _447 = uint4(cbuf_20.data[_434 + 0u], cbuf_20.data[_434 + 1u], cbuf_20.data[_434 + 2u], cbuf_20.data[_434 + 3u]); uint _455 = ((0u + (_319 * 16u)) + buf8_off) >> 2u; uint4 _468 = uint4(cbuf_20.data[_455 + 0u], cbuf_20.data[_455 + 1u], cbuf_20.data[_455 + 2u], cbuf_20.data[_455 + 3u]); uint _476 = ((0u + ((_319 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _489 = uint4(cbuf_20.data[_476 + 0u], cbuf_20.data[_476 + 1u], cbuf_20.data[_476 + 2u], cbuf_20.data[_476 + 3u]); uint _497 = ((0u + ((_319 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _510 = uint4(cbuf_20.data[_497 + 0u], cbuf_20.data[_497 + 1u], cbuf_20.data[_497 + 2u], cbuf_20.data[_497 + 3u]); uint _518 = ((0u + (_323 * 16u)) + buf8_off) >> 2u; uint4 _531 = uint4(cbuf_20.data[_518 + 0u], cbuf_20.data[_518 + 1u], cbuf_20.data[_518 + 2u], cbuf_20.data[_518 + 3u]); uint _539 = ((0u + ((_323 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _552 = uint4(cbuf_20.data[_539 + 0u], cbuf_20.data[_539 + 1u], cbuf_20.data[_539 + 2u], cbuf_20.data[_539 + 3u]); uint _560 = ((0u + ((_323 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _573 = uint4(cbuf_20.data[_560 + 0u], cbuf_20.data[_560 + 1u], cbuf_20.data[_560 + 2u], cbuf_20.data[_560 + 3u]); float _588 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(as_type(_302), spvFAdd(as_type(_303), spvFAdd(in.vs_in_attr5.x, as_type(_304))))); float _590 = spvFMul(as_type(_304), _588); float _591 = spvFMul(in.vs_in_attr5.x, _588); float _617 = spvFMul(as_type(_303), _588); float _643 = spvFMul(as_type(_302), _588); _704 = as_type(fma(as_type(_531.x), _643, fma(as_type(_468.x), _617, fma(as_type(_405.x), _591, spvFMul(_590, as_type(_342.x)))))); _705 = as_type(fma(as_type(_552.x), _643, fma(as_type(_489.x), _617, fma(as_type(_426.x), _591, spvFMul(_590, as_type(_363.x)))))); _706 = as_type(fma(as_type(_531.y), _643, fma(as_type(_468.y), _617, fma(as_type(_405.y), _591, spvFMul(_590, as_type(_342.y)))))); _707 = as_type(fma(as_type(_573.x), _643, fma(as_type(_510.x), _617, fma(as_type(_447.x), _591, spvFMul(_590, as_type(_384.x)))))); _708 = as_type(fma(as_type(_552.y), _643, fma(as_type(_489.y), _617, fma(as_type(_426.y), _591, spvFMul(_590, as_type(_363.y)))))); _709 = as_type(fma(as_type(_531.w), _643, fma(as_type(_468.w), _617, fma(as_type(_405.w), _591, spvFMul(_590, as_type(_342.w)))))); _710 = as_type(fma(as_type(_531.z), _643, fma(as_type(_468.z), _617, fma(as_type(_405.z), _591, spvFMul(_590, as_type(_342.z)))))); _711 = as_type(fma(as_type(_573.y), _643, fma(as_type(_510.y), _617, fma(as_type(_447.y), _591, spvFMul(_590, as_type(_384.y)))))); _712 = as_type(fma(as_type(_552.w), _643, fma(as_type(_489.w), _617, fma(as_type(_426.w), _591, spvFMul(_590, as_type(_363.w)))))); _713 = as_type(fma(as_type(_552.z), _643, fma(as_type(_489.z), _617, fma(as_type(_426.z), _591, spvFMul(_590, as_type(_363.z)))))); _714 = as_type(fma(as_type(_573.w), _643, fma(as_type(_510.w), _617, fma(as_type(_447.w), _591, spvFMul(_590, as_type(_384.w)))))); _715 = as_type(fma(as_type(_573.z), _643, fma(as_type(_510.z), _617, fma(as_type(_447.z), _591, spvFMul(_590, as_type(_384.z)))))); } else { _704 = _302; _705 = _298; _706 = _295; _707 = _303; _708 = _304; _709 = _305; _710 = _294; _711 = _301; _712 = _296; _713 = _297; _714 = _299; _715 = _300; } float _812 = spvFSub(fma(as_type(_707), in.vs_in_attr0.x, fma(as_type(_711), in.vs_in_attr0.y, fma(as_type(_715), in.vs_in_attr0.z, as_type(_714)))), as_type(cbuf_28.data[191u + buf9_dword_off])); float _816 = spvFSub(fma(as_type(_705), in.vs_in_attr0.x, fma(as_type(_708), in.vs_in_attr0.y, fma(as_type(_713), in.vs_in_attr0.z, as_type(_712)))), as_type(cbuf_28.data[187u + buf9_dword_off])); float _830 = spvFSub(fma(as_type(_704), in.vs_in_attr0.x, fma(as_type(_706), in.vs_in_attr0.y, fma(as_type(_710), in.vs_in_attr0.z, as_type(_709)))), as_type(cbuf_28.data[183u + buf9_dword_off])); float _840 = fma(as_type(cbuf_28.data[200u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[201u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[202u + buf9_dword_off]), _812, as_type(cbuf_28.data[203u + buf9_dword_off])))); float _842 = fma(as_type(cbuf_28.data[204u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[205u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[206u + buf9_dword_off]), _812, as_type(cbuf_28.data[207u + buf9_dword_off])))); float _844 = fma(as_type(cbuf_28.data[208u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[209u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[210u + buf9_dword_off]), _812, as_type(cbuf_28.data[211u + buf9_dword_off])))); float _846 = fma(as_type(cbuf_28.data[212u + buf9_dword_off]), _830, fma(as_type(cbuf_28.data[213u + buf9_dword_off]), _816, fma(as_type(cbuf_28.data[214u + buf9_dword_off]), _812, as_type(cbuf_28.data[215u + buf9_dword_off])))); out.gl_Position.x = _840; out.gl_Position.y = _842; out.gl_Position.z = _844; out.gl_Position.w = _846; out.out_attr0.x = fma(as_type(_704), _242, fma(as_type(_706), _243, spvFMul(_244, as_type(_710)))); out.out_attr0.y = fma(as_type(_705), _242, fma(as_type(_708), _243, spvFMul(_244, as_type(_713)))); out.out_attr0.z = fma(as_type(_707), _242, fma(as_type(_711), _243, spvFMul(_244, as_type(_715)))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_704), _233, fma(as_type(_706), _234, spvFMul(_235, as_type(_710)))); out.out_attr1.y = fma(as_type(_705), _233, fma(as_type(_708), _234, spvFMul(_235, as_type(_713)))); out.out_attr1.z = fma(as_type(_707), _233, fma(as_type(_711), _234, spvFMul(_235, as_type(_715)))); out.out_attr1.w = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); out.out_attr2.x = in.vs_in_attr6.x; out.out_attr2.y = in.vs_in_attr6.y; out.out_attr2.z = in.vs_in_attr6.z; out.out_attr2.w = in.vs_in_attr6.w; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr4.x = _840; out.out_attr4.y = _842; out.out_attr4.z = _844; out.out_attr4.w = _846; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; constant uint _117 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_28 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img92 [[texture(0)]], texture2d fs_img100 [[texture(1)]], texture2d fs_img44 [[texture(2)]], texture2d fs_img68 [[texture(3)]], texture2d fs_img60 [[texture(4)]], texture2d fs_img108 [[texture(5)]], texture2d fs_img52 [[texture(6)]], texturecube fs_img84 [[texture(7)]], texturecube fs_img76 [[texture(8)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _144 = uint(gl_FrontFacing); float _246 = 1.0 / in.fs_in_attr4.w; float _304 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _319 = fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))); float _321 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _326 = fs_img92.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_36.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr4.x), _246, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_36.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr4.y), _246, 0.5))))); float4 _332 = fs_img100.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _333 = _332.x; float _335 = _332.y; float _337 = _332.z; float _339 = _332.w; float _341 = spvFMul(in.fs_in_attr0.x, _304); float _342 = spvFMul(in.fs_in_attr0.y, _304); float _343 = spvFMul(in.fs_in_attr0.z, _304); float _345 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _346 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _348 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _351 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _321, as_type(cbuf_36.data[183u + buf0_dword_off])); float _354 = fma(-fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _321, as_type(cbuf_36.data[187u + buf0_dword_off])); float _358 = fma(-_319, _321, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _360 = 0u == _144; uint _373; uint _374; uint _375; if (_360) { _373 = as_type(fast::max(-_343, -_343)); _374 = as_type(fast::max(-_342, -_342)); _375 = as_type(fast::max(-_341, -_341)); } else { _373 = as_type(_343); _374 = as_type(_319); _375 = _144; } uint _379; uint _380; if (!_360) { _379 = as_type(_342); _380 = as_type(_341); } else { _379 = _374; _380 = _375; } uint _398 = uint(in.fs_in_attr0.w) * 13u; float _409 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _413 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float4 _419 = fs_img44.sample(fs_samp4, float2(_409, _413)); float _420 = _419.x; float _422 = _419.y; float _424 = _419.z; float _426 = _419.w; uint _432 = ((12u + ((_398 + 7u) * 16u)) + buf2_off) >> 2u; float _446 = spvFMul(_426, in.fs_in_attr2.w); float _448 = spvFMul(_446, as_type(cbuf_32.data[_432])); bool _454 = (as_type(cbuf_28.data[20u + buf3_dword_off]) > fma(as_type(cbuf_28.data[21u + buf3_dword_off]), spvFAdd(-0.5, _326.w), _446)) || (_448 == 0.0); bool _455 = !_454; uint _1042; uint _1043; uint _1044; uint _1045; uint _1046; uint _1047; uint _1048; uint _1049; uint _1050; uint _1051; uint _1052; uint _1053; uint _1054; uint _1055; uint _1056; uint _1057; uint _1058; uint _1059; uint _1060; bool _1061; uint _1062; uint _1063; uint _1064; uint _1065; if (!_454) { float4 _481 = fs_img68.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _510 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _511 = _510.x; float4 _516 = fs_img108.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _518 = _516.y; float _523 = fma(2.0, _481.y, -1.0); float _524 = spvFMul(fma(2.0, _481.x, -1.0), fma(2.0, _481.w, -1.0)); float _535 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _537 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_524, _524), spvFMul(_523, _523)), 0.0, 1.0))); float _539 = rsqrt(fma(_345, _345, fma(_346, _346, spvFMul(_348, _348)))); float _565 = fma(spvFMul(_348, _539), _524, fma(spvFMul(in.fs_in_attr1.z, _535), _523, spvFMul(as_type(_373), _537))); float _569 = fma(spvFMul(_346, _539), _524, fma(spvFMul(in.fs_in_attr1.y, _535), _523, spvFMul(as_type(_379), _537))); float _572 = fma(spvFMul(_345, _539), _524, fma(spvFMul(in.fs_in_attr1.x, _535), _523, spvFMul(as_type(_380), _537))); float _576 = rsqrt(fma(_351, _351, fma(_354, _354, spvFMul(_358, _358)))); float _577 = rsqrt(fma(_572, _572, fma(_569, _569, spvFMul(_565, _565)))); uint _581 = 24u + buf3_dword_off; float _585 = spvFMul(_565, _577); float _587 = spvFMul(_569, _577); float _597 = spvFMul(_572, _577); float4 _603 = fs_img52.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[4u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[6u + buf1_dword_off])), fma(as_type(cbuf_24.data[5u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[7u + buf1_dword_off])))); float _604 = _603.x; float _605 = _603.y; float _606 = _603.z; float _607 = fma(_597, spvFMul(_351, _576), fma(_587, spvFMul(_354, _576), spvFMul(spvFMul(_358, _576), _585))); float _610 = spvFMul(fast::max(_607, _607), 2.0); float _616 = spvFMul(as_type(cbuf_28.data[8u + buf3_dword_off]), 0.00390625); float _621 = spvFMul(fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _511, _516.x), _511), _511), _616); float _623 = fma(-_351, _576, spvFMul(_597, _610)); float _625 = fma(-_354, _576, spvFMul(_587, _610)); float _627 = fma(-_358, _576, spvFMul(_585, _610)); float _638 = 1.0 / abs(1.0); float _640 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_621, 13.0), 0.5))); float _642 = fma(_625, _638, 1.5); float _643 = fma(_623, _638, 1.5); uint _647 = ((0u + ((_398 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _660 = uint4(cbuf_32.data[_647 + 0u], cbuf_32.data[_647 + 1u], cbuf_32.data[_647 + 2u], cbuf_32.data[_647 + 3u]); uint _661 = _660.x; uint _662 = _660.y; uint _663 = _660.z; float4 _671 = fs_img84.sample(fs_samp20, float3(spvFSub(_643, 1.5), spvFSub(_642, 1.5), _627), level(_640)); float _673 = _671.y; uint _679 = ((0u + ((_398 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _692 = uint4(cbuf_32.data[_679 + 0u], cbuf_32.data[_679 + 1u], cbuf_32.data[_679 + 2u], cbuf_32.data[_679 + 3u]); uint _700 = ((0u + ((_398 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _713 = uint4(cbuf_32.data[_700 + 0u], cbuf_32.data[_700 + 1u], cbuf_32.data[_700 + 2u], cbuf_32.data[_700 + 3u]); uint _721 = ((0u + ((_398 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _734 = uint4(cbuf_32.data[_721 + 0u], cbuf_32.data[_721 + 1u], cbuf_32.data[_721 + 2u], cbuf_32.data[_721 + 3u]); float4 _745 = fs_img76.sample(fs_samp20, float3(spvFSub(_643, 1.5), spvFSub(_642, 1.5), _627), level(_640)); float _746 = _745.x; float _747 = _745.y; float _748 = _745.z; float _756 = fast::clamp(spvFAdd(fma(_623, as_type(_380), fma(_625, as_type(_379), spvFMul(as_type(_373), _627))), 1.0), 0.0, 1.0); bool _761 = (_606 == 0.0) && (_605 == 0.0); float _764 = _761 ? _604 : _606; float _765 = _761 ? _604 : _605; float _766 = spvFMul(_518, _518); uint _767 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _770 = spvFAdd(1.0, _607); float _786 = fast::clamp(spvFMul(_770, _770), 0.0, 1.0); float _787 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_607, _607), 0.0, 1.0))))); float _800 = spvFMul(_786, _787); float _802 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _604, _766), _604), _604); float _805 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _765, _766), _765), _765); float _807 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _764, _766), _764), _764); float _845 = fma(_339, _422, _335); float _854 = spvFMul(_621, _621); float _860 = fma(as_type(_661), fma(-as_type(_662), _748, spvFMul(as_type(_663), _671.z)), spvFMul(as_type(_662), _748)); float _862 = spvFMul(_756, _756); float _873 = fma(fma(_786, _787, -spvFMul(_800, _805)), _854, _805); float _877 = spvFMul(fma(as_type(_661), fma(-as_type(_662), _747, spvFMul(as_type(_663), _673)), spvFMul(as_type(_662), _747)), _862); float _885 = spvFAdd(as_type(_734.w), fma(_585, as_type(_734.z), fma(_597, as_type(_734.x), spvFMul(_587, as_type(_734.y))))); float _893 = spvFMul(fma(fma(_786, _787, -spvFMul(_800, _802)), _854, _802), spvFMul(fma(as_type(_661), fma(-as_type(_662), _746, spvFMul(as_type(_663), _671.x)), spvFMul(as_type(_662), _746)), _862)); float _895 = spvFMul(_873, _877); float _898 = fast::max(0.0, spvFAdd(as_type(_692.w), fma(_585, as_type(_692.z), fma(_597, as_type(_692.x), spvFMul(_587, as_type(_692.y)))))); float _899 = fast::max(0.0, spvFAdd(as_type(_713.w), fma(_585, as_type(_713.z), fma(_597, as_type(_713.x), spvFMul(_587, as_type(_713.y)))))); float _901 = fast::max(0.0, _885); float _922 = fma(-_802, _898, _898); float _934 = spvFMul(spvFMul(fma(fma(_786, _787, -spvFMul(_800, _807)), _854, _807), spvFMul(_860, _862)), spvFMul(as_type(cbuf_28.data[6u + buf3_dword_off]), as_type(cbuf_40.data[_767]))); bool _937 = _455 && (!_454); uint _938; if (_937) { _938 = 0u; } else { _938 = as_type(_673); } uint _983; uint _984; uint _985; uint _986; uint _987; uint _988; uint _989; uint _990; uint _991; uint _992; uint _993; uint _994; uint _995; if (_937) { bool _942 = as_type(cbuf_28.data[22u + buf3_dword_off]) != 0.0; _983 = as_type(spvFMul(_616, _621)); _984 = as_type(_942 ? _448 : as_type(_660.w)); _985 = as_type(fma(0.5, _585, 0.500488758087158203125)); _986 = as_type(fma(0.5, _587, 0.500488758087158203125)); _987 = as_type(fma(0.5, _597, 0.500488758087158203125)); _988 = as_type(_942 ? _448 : 0.0); _989 = cbuf_32.data[((0u + ((_398 + 12u) * 16u)) + buf2_off) >> 2u]; _990 = as_type(_942 ? _448 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_398 + 6u) * 16u)) + buf2_off) >> 2u]))); _991 = as_type(sqrt(_802)); _992 = as_type(_448); _993 = as_type(sqrt(_807)); _994 = as_type(sqrt(_805)); _995 = as_type(_942 ? _448 : 1.0); } else { _983 = as_type(_860); _984 = as_type(_845); _985 = cbuf_40.data[_767]; _986 = as_type(_587); _987 = as_type(_877); _988 = as_type(_873); _989 = as_type(_885); _990 = as_type(_802); _991 = as_type(_901); _992 = as_type(_616); _993 = as_type(_899); _994 = as_type(_895); _995 = as_type(_893); } uint _1020; uint _1021; uint _1022; uint _1023; uint _1024; uint _1025; uint _1026; uint _1027; uint _1028; uint _1029; uint _1030; uint _1031; uint _1032; uint _1033; uint _1034; uint _1035; uint _1036; uint _1037; uint _1038; uint _1039; uint _1040; uint _1041; if (_455 && (!_937)) { _1020 = as_type(_448); _1021 = as_type(_621); _1022 = as_type(_934); _1023 = as_type(_448); _1024 = as_type(_621); _1025 = as_type(_934); _1026 = as_type(_448); _1027 = as_type(_922); _1028 = as_type(_448); _1029 = as_type(_621); _1030 = as_type(_934); _1031 = as_type(_448); _1032 = as_type(_621); _1033 = as_type(_922); _1034 = as_type(_934); _1035 = as_type(_922); _1036 = as_type(_621); _1037 = as_type(_922); _1038 = as_type(_934); _1039 = as_type(_448); _1040 = as_type(_922); _1041 = as_type(_621); } else { _1020 = _938; _1021 = _983; _1022 = as_type(spvFMul(as_type(cbuf_28.data[2u + buf3_dword_off]), fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _424, _337), _424), _424))); _1023 = as_type(spvFMul(as_type(cbuf_28.data[1u + buf3_dword_off]), fma(as_type(cbuf_28.data[_581]), spvFSub(_845, _422), _422))); _1024 = as_type(spvFMul(as_type(cbuf_28.data[0u + buf3_dword_off]), fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_339, _420, _333), _420), _420))); _1025 = as_type(fma(-_807, _901, _901)); _1026 = as_type(fma(-_805, _899, _899)); _1027 = _984; _1028 = as_type(spvFMul(_895, spvFMul(as_type(cbuf_28.data[5u + buf3_dword_off]), as_type(cbuf_40.data[_767])))); _1029 = as_type(spvFMul(_893, spvFMul(as_type(cbuf_28.data[4u + buf3_dword_off]), as_type(cbuf_40.data[_767])))); _1030 = _985; _1031 = _986; _1032 = _987; _1033 = _988; _1034 = _989; _1035 = _990; _1036 = _991; _1037 = _992; _1038 = _993; _1039 = _994; _1040 = _995; _1041 = as_type(_922); } _1042 = _1030; _1043 = _1031; _1044 = _1032; _1045 = _1033; _1046 = _1034; _1047 = _1020; _1048 = _1021; _1049 = _1037; _1050 = _1022; _1051 = _1023; _1052 = _1024; _1053 = _1035; _1054 = _1038; _1055 = _1039; _1056 = _1036; _1057 = _1040; _1058 = _1025; _1059 = _1026; _1060 = _1041; _1061 = _455; _1062 = _1027; _1063 = as_type(_934); _1064 = _1028; _1065 = _1029; } else { _1042 = as_type(_413); _1043 = as_type(_409); _1044 = cbuf_32.data[_432]; _1045 = as_type(in.fs_in_attr3.x); _1046 = as_type(_354); _1047 = _117; _1048 = as_type(_426); _1049 = as_type(in.fs_in_attr3.z); _1050 = as_type(_424); _1051 = as_type(_422); _1052 = as_type(_420); _1053 = as_type(in.fs_in_attr1.x); _1054 = as_type(_346); _1055 = as_type(in.fs_in_attr3.y); _1056 = as_type(in.fs_in_attr3.w); _1057 = _373; _1058 = as_type(_339); _1059 = as_type(_337); _1060 = as_type(_358); _1061 = true; _1062 = as_type(_335); _1063 = _380; _1064 = as_type(_333); _1065 = as_type(in.fs_in_attr1.w); } if (!_1061) { discard_fragment(); } out.frag_color5.x = as_type(_1065); out.frag_color5.y = as_type(_1064); out.frag_color5.z = as_type(_1063); out.frag_color5.w = as_type(_1062); if (!_1061) { discard_fragment(); } out.frag_color4.x = as_type(_1060); out.frag_color4.y = as_type(_1059); out.frag_color4.z = as_type(_1058); out.frag_color4.w = as_type(_1057); if (!_1061) { discard_fragment(); } out.frag_color3.x = as_type(_1056); out.frag_color3.y = as_type(_1055); out.frag_color3.z = as_type(_1054); out.frag_color3.w = as_type(_1053); if (!_1061) { discard_fragment(); } out.frag_color2.x = as_type(_1052); out.frag_color2.y = as_type(_1051); out.frag_color2.z = as_type(_1050); out.frag_color2.w = as_type(_1049); if (!_1061) { discard_fragment(); } out.frag_color1.x = as_type(_1048); out.frag_color1.y = as_type(_1047); out.frag_color1.z = as_type(_1046); out.frag_color1.w = as_type(_1045); if (_454) { discard_fragment(); } out.frag_color0.x = as_type(_1044); out.frag_color0.y = as_type(_1043); out.frag_color0.z = as_type(_1042); out.frag_color0.w = as_type(_1045); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x3deaa573 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[192]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _186 = 20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _195 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _196 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _201 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _205 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _212 = ((0u + ((_195 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _225 = uint4(cbuf_16.data[_212 + 0u], cbuf_16.data[_212 + 1u], cbuf_16.data[_212 + 2u], cbuf_16.data[_212 + 3u]); uint _233 = ((0u + ((_196 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _246 = uint4(cbuf_16.data[_233 + 0u], cbuf_16.data[_233 + 1u], cbuf_16.data[_233 + 2u], cbuf_16.data[_233 + 3u]); uint _254 = ((0u + ((_195 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _267 = uint4(cbuf_16.data[_254 + 0u], cbuf_16.data[_254 + 1u], cbuf_16.data[_254 + 2u], cbuf_16.data[_254 + 3u]); uint _275 = ((0u + ((_196 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _288 = uint4(cbuf_16.data[_275 + 0u], cbuf_16.data[_275 + 1u], cbuf_16.data[_275 + 2u], cbuf_16.data[_275 + 3u]); uint _296 = ((0u + (_195 * 16u)) + buf6_off) >> 2u; uint4 _309 = uint4(cbuf_16.data[_296 + 0u], cbuf_16.data[_296 + 1u], cbuf_16.data[_296 + 2u], cbuf_16.data[_296 + 3u]); uint _317 = ((0u + ((_201 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _330 = uint4(cbuf_16.data[_317 + 0u], cbuf_16.data[_317 + 1u], cbuf_16.data[_317 + 2u], cbuf_16.data[_317 + 3u]); uint _338 = ((0u + (_196 * 16u)) + buf6_off) >> 2u; uint4 _351 = uint4(cbuf_16.data[_338 + 0u], cbuf_16.data[_338 + 1u], cbuf_16.data[_338 + 2u], cbuf_16.data[_338 + 3u]); uint _359 = ((0u + ((_201 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _372 = uint4(cbuf_16.data[_359 + 0u], cbuf_16.data[_359 + 1u], cbuf_16.data[_359 + 2u], cbuf_16.data[_359 + 3u]); uint _380 = ((0u + ((_205 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _393 = uint4(cbuf_16.data[_380 + 0u], cbuf_16.data[_380 + 1u], cbuf_16.data[_380 + 2u], cbuf_16.data[_380 + 3u]); uint _401 = ((0u + (_201 * 16u)) + buf6_off) >> 2u; uint4 _414 = uint4(cbuf_16.data[_401 + 0u], cbuf_16.data[_401 + 1u], cbuf_16.data[_401 + 2u], cbuf_16.data[_401 + 3u]); uint _422 = ((0u + ((_205 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _435 = uint4(cbuf_16.data[_422 + 0u], cbuf_16.data[_422 + 1u], cbuf_16.data[_422 + 2u], cbuf_16.data[_422 + 3u]); uint _443 = ((0u + (_205 * 16u)) + buf6_off) >> 2u; uint4 _456 = uint4(cbuf_16.data[_443 + 0u], cbuf_16.data[_443 + 1u], cbuf_16.data[_443 + 2u], cbuf_16.data[_443 + 3u]); float _468 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _469 = spvFMul(in.vs_in_attr4.y, _468); float _470 = spvFMul(in.vs_in_attr4.x, _468); float _475 = spvFMul(in.vs_in_attr4.z, _468); float _554 = spvFMul(in.vs_in_attr4.w, _468); float _596 = fma(as_type(_393.z), _554, fma(as_type(_330.z), _475, fma(as_type(_246.z), _470, spvFMul(_469, as_type(_225.z))))); float _618 = fma(as_type(_435.z), _554, fma(as_type(_372.z), _475, fma(as_type(_288.z), _470, spvFMul(_469, as_type(_267.z))))); float _622 = fma(as_type(_393.y), _554, fma(as_type(_330.y), _475, fma(as_type(_246.y), _470, spvFMul(_469, as_type(_225.y))))); float _631 = fma(as_type(_456.z), _554, fma(as_type(_414.z), _475, fma(as_type(_351.z), _470, spvFMul(_469, as_type(_309.z))))); float _635 = fma(as_type(_435.y), _554, fma(as_type(_372.y), _475, fma(as_type(_288.y), _470, spvFMul(_469, as_type(_267.y))))); float _637 = fma(as_type(_393.x), _554, fma(as_type(_330.x), _475, fma(as_type(_246.x), _470, spvFMul(_469, as_type(_225.x))))); float _643 = fma(as_type(_456.y), _554, fma(as_type(_414.y), _475, fma(as_type(_351.y), _470, spvFMul(_469, as_type(_309.y))))); float _645 = fma(as_type(_435.x), _554, fma(as_type(_372.x), _475, fma(as_type(_288.x), _470, spvFMul(_469, as_type(_267.x))))); float _650 = fma(as_type(_456.x), _554, fma(as_type(_414.x), _475, fma(as_type(_351.x), _470, spvFMul(_469, as_type(_309.x))))); float _654 = spvFSub(fma(_637, in.vs_in_attr0.x, fma(_622, in.vs_in_attr0.y, fma(_596, in.vs_in_attr0.z, fma(as_type(_393.w), _554, fma(as_type(_330.w), _475, fma(as_type(_246.w), _470, spvFMul(_469, as_type(_225.w)))))))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _657 = spvFSub(fma(_645, in.vs_in_attr0.x, fma(_635, in.vs_in_attr0.y, fma(_618, in.vs_in_attr0.z, fma(as_type(_435.w), _554, fma(as_type(_372.w), _475, fma(as_type(_288.w), _470, spvFMul(_469, as_type(_267.w)))))))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _671 = spvFSub(fma(_650, in.vs_in_attr0.x, fma(_643, in.vs_in_attr0.y, fma(_631, in.vs_in_attr0.z, fma(as_type(_456.w), _554, fma(as_type(_414.w), _475, fma(as_type(_351.w), _470, spvFMul(_469, as_type(_309.w)))))))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _681 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _654, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _683 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _654, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _685 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _654, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _687 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _654, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _681; out.gl_Position.y = _683; out.gl_Position.z = _685; out.gl_Position.w = _687; float _730 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _733 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _736 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _738 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _750 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _751 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_650, _751, fma(_643, _738, spvFMul(_733, _631))); out.out_attr0.y = fma(_645, _751, fma(_635, _738, spvFMul(_733, _618))); out.out_attr0.z = fma(_637, _751, fma(_622, _738, spvFMul(_733, _596))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_650, _750, fma(_643, _736, spvFMul(_730, _631))); out.out_attr1.y = fma(_645, _750, fma(_635, _736, spvFMul(_730, _618))); out.out_attr1.z = fma(_637, _750, fma(_622, _736, spvFMul(_730, _596))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf8_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf8_dword_off])); out.out_attr4.x = _681; out.out_attr4.y = _683; out.out_attr4.z = _685; out.out_attr4.w = _687; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x9e3394c8 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xa7450683 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint _177 = 20u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _186 = (cbuf_12.data[_177] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _187 = (cbuf_12.data[_177] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _192 = (cbuf_12.data[_177] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _196 = (cbuf_12.data[_177] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _203 = ((0u + ((_186 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _216 = uint4(cbuf_16.data[_203 + 0u], cbuf_16.data[_203 + 1u], cbuf_16.data[_203 + 2u], cbuf_16.data[_203 + 3u]); uint _224 = ((0u + ((_187 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _237 = uint4(cbuf_16.data[_224 + 0u], cbuf_16.data[_224 + 1u], cbuf_16.data[_224 + 2u], cbuf_16.data[_224 + 3u]); uint _245 = ((0u + ((_186 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _258 = uint4(cbuf_16.data[_245 + 0u], cbuf_16.data[_245 + 1u], cbuf_16.data[_245 + 2u], cbuf_16.data[_245 + 3u]); uint _266 = ((0u + ((_187 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _279 = uint4(cbuf_16.data[_266 + 0u], cbuf_16.data[_266 + 1u], cbuf_16.data[_266 + 2u], cbuf_16.data[_266 + 3u]); uint _287 = ((0u + (_186 * 16u)) + buf7_off) >> 2u; uint4 _300 = uint4(cbuf_16.data[_287 + 0u], cbuf_16.data[_287 + 1u], cbuf_16.data[_287 + 2u], cbuf_16.data[_287 + 3u]); uint _308 = ((0u + ((_192 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _321 = uint4(cbuf_16.data[_308 + 0u], cbuf_16.data[_308 + 1u], cbuf_16.data[_308 + 2u], cbuf_16.data[_308 + 3u]); uint _329 = ((0u + (_187 * 16u)) + buf7_off) >> 2u; uint4 _342 = uint4(cbuf_16.data[_329 + 0u], cbuf_16.data[_329 + 1u], cbuf_16.data[_329 + 2u], cbuf_16.data[_329 + 3u]); uint _350 = ((0u + ((_192 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _363 = uint4(cbuf_16.data[_350 + 0u], cbuf_16.data[_350 + 1u], cbuf_16.data[_350 + 2u], cbuf_16.data[_350 + 3u]); uint _371 = ((0u + ((_196 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _384 = uint4(cbuf_16.data[_371 + 0u], cbuf_16.data[_371 + 1u], cbuf_16.data[_371 + 2u], cbuf_16.data[_371 + 3u]); uint _392 = ((0u + (_192 * 16u)) + buf7_off) >> 2u; uint4 _405 = uint4(cbuf_16.data[_392 + 0u], cbuf_16.data[_392 + 1u], cbuf_16.data[_392 + 2u], cbuf_16.data[_392 + 3u]); uint _413 = ((0u + ((_196 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _426 = uint4(cbuf_16.data[_413 + 0u], cbuf_16.data[_413 + 1u], cbuf_16.data[_413 + 2u], cbuf_16.data[_413 + 3u]); uint _434 = ((0u + (_196 * 16u)) + buf7_off) >> 2u; uint4 _447 = uint4(cbuf_16.data[_434 + 0u], cbuf_16.data[_434 + 1u], cbuf_16.data[_434 + 2u], cbuf_16.data[_434 + 3u]); float _459 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _460 = spvFMul(in.vs_in_attr4.y, _459); float _461 = spvFMul(in.vs_in_attr4.x, _459); float _466 = spvFMul(in.vs_in_attr4.z, _459); float _545 = spvFMul(in.vs_in_attr4.w, _459); float _587 = fma(as_type(_384.z), _545, fma(as_type(_321.z), _466, fma(as_type(_237.z), _461, spvFMul(_460, as_type(_216.z))))); float _609 = fma(as_type(_426.z), _545, fma(as_type(_363.z), _466, fma(as_type(_279.z), _461, spvFMul(_460, as_type(_258.z))))); float _613 = fma(as_type(_384.y), _545, fma(as_type(_321.y), _466, fma(as_type(_237.y), _461, spvFMul(_460, as_type(_216.y))))); float _622 = fma(as_type(_447.z), _545, fma(as_type(_405.z), _466, fma(as_type(_342.z), _461, spvFMul(_460, as_type(_300.z))))); float _626 = fma(as_type(_426.y), _545, fma(as_type(_363.y), _466, fma(as_type(_279.y), _461, spvFMul(_460, as_type(_258.y))))); float _628 = fma(as_type(_384.x), _545, fma(as_type(_321.x), _466, fma(as_type(_237.x), _461, spvFMul(_460, as_type(_216.x))))); float _634 = fma(as_type(_447.y), _545, fma(as_type(_405.y), _466, fma(as_type(_342.y), _461, spvFMul(_460, as_type(_300.y))))); float _636 = fma(as_type(_426.x), _545, fma(as_type(_363.x), _466, fma(as_type(_279.x), _461, spvFMul(_460, as_type(_258.x))))); float _641 = fma(as_type(_447.x), _545, fma(as_type(_405.x), _466, fma(as_type(_342.x), _461, spvFMul(_460, as_type(_300.x))))); float _645 = spvFSub(fma(_628, in.vs_in_attr0.x, fma(_613, in.vs_in_attr0.y, fma(_587, in.vs_in_attr0.z, fma(as_type(_384.w), _545, fma(as_type(_321.w), _466, fma(as_type(_237.w), _461, spvFMul(_460, as_type(_216.w)))))))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _648 = spvFSub(fma(_636, in.vs_in_attr0.x, fma(_626, in.vs_in_attr0.y, fma(_609, in.vs_in_attr0.z, fma(as_type(_426.w), _545, fma(as_type(_363.w), _466, fma(as_type(_279.w), _461, spvFMul(_460, as_type(_258.w)))))))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _662 = spvFSub(fma(_641, in.vs_in_attr0.x, fma(_634, in.vs_in_attr0.y, fma(_622, in.vs_in_attr0.z, fma(as_type(_447.w), _545, fma(as_type(_405.w), _466, fma(as_type(_342.w), _461, spvFMul(_460, as_type(_300.w)))))))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _672 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _662, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _648, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _645, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _674 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _662, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _648, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _645, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _676 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _662, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _648, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _645, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _678 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _662, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _648, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _645, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _672; out.gl_Position.y = _674; out.gl_Position.z = _676; out.gl_Position.w = _678; float _705 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _708 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _711 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _713 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _723 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _724 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_641, _724, fma(_634, _713, spvFMul(_622, _708))); out.out_attr0.y = fma(_636, _724, fma(_626, _713, spvFMul(_609, _708))); out.out_attr0.z = fma(_628, _724, fma(_613, _713, spvFMul(_587, _708))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_641, _723, fma(_634, _711, spvFMul(_622, _705))); out.out_attr1.y = fma(_636, _723, fma(_626, _711, spvFMul(_609, _705))); out.out_attr1.z = fma(_628, _723, fma(_613, _711, spvFMul(_587, _705))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _672; out.out_attr3.y = _674; out.out_attr3.z = _676; out.out_attr3.w = _678; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_36 [[buffer(13)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(14)]], texture2d fs_img72 [[texture(0)]], texture2d fs_img64 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texturecube fs_img88 [[texture(3)]], texturecube fs_img80 [[texture(4)]], texture2d fs_img48 [[texture(5)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint _139 = uint(gl_FrontFacing); float _150 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _151 = spvFMul(in.fs_in_attr0.x, _150); float _153 = spvFMul(in.fs_in_attr0.y, _150); float _154 = spvFMul(in.fs_in_attr0.z, _150); float _166 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _168 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _170 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _174 = rsqrt(fma(_166, _166, fma(_168, _168, spvFMul(_170, _170)))); float _288 = 1.0 / fma(as_type(cbuf_40.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float _303 = fma(-fma(as_type(cbuf_40.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _288, as_type(cbuf_40.data[183u + buf0_dword_off])); float _306 = fma(-fma(as_type(cbuf_40.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))), _288, as_type(cbuf_40.data[187u + buf0_dword_off])); float _309 = fma(-fma(as_type(cbuf_40.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _288, as_type(cbuf_40.data[191u + buf0_dword_off])); bool _310 = 0u == _139; uint _315; if (_310) { _315 = as_type(fast::max(-_151, -_151)); } else { _315 = _139; } uint _324; uint _325; if (_310) { _324 = as_type(fast::max(-_154, -_154)); _325 = as_type(fast::max(-_153, -_153)); } else { _324 = as_type(_151); _325 = as_type(_154); } uint _328; uint _329; uint _330; if (!_310) { _328 = _324; _329 = as_type(_153); _330 = _325; } else { _328 = _315; _329 = _325; _330 = _324; } float4 _361 = fs_img72.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _390 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _396 = fma(2.0, _361.y, -1.0); float _397 = spvFMul(fma(2.0, _361.x, -1.0), fma(2.0, _361.w, -1.0)); float _406 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _407 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_397, _397), spvFMul(_396, _396)), 0.0, 1.0))); float _419 = fma(spvFMul(spvFMul(_170, _174), in.fs_in_attr1.w), _397, fma(spvFMul(in.fs_in_attr1.z, _406), _396, spvFMul(as_type(_330), _407))); float _422 = fma(spvFMul(spvFMul(_168, _174), in.fs_in_attr1.w), _397, fma(spvFMul(in.fs_in_attr1.y, _406), _396, spvFMul(as_type(_329), _407))); float _425 = fma(spvFMul(spvFMul(_166, _174), in.fs_in_attr1.w), _397, fma(spvFMul(in.fs_in_attr1.x, _406), _396, spvFMul(as_type(_328), _407))); float _432 = rsqrt(fma(_303, _303, fma(_306, _306, spvFMul(_309, _309)))); float _433 = rsqrt(fma(_425, _425, fma(_422, _422, spvFMul(_419, _419)))); float _451 = spvFMul(_419, _433); float _453 = spvFMul(_422, _433); float _456 = spvFMul(_425, _433); float _461 = spvFMul(fma(_456, spvFMul(_303, _432), fma(_453, spvFMul(_306, _432), spvFMul(spvFMul(_309, _432), _451))), 2.0); float _477 = spvFMul(as_type(cbuf_28.data[8u + buf2_dword_off]), 0.00390625); uint _481 = uint(in.fs_in_attr0.w) * 13u; float _482 = spvFMul(_390.x, _477); float _484 = fma(-_303, _432, spvFMul(_456, _461)); float _486 = fma(-_306, _432, spvFMul(_453, _461)); float _488 = fma(-_309, _432, spvFMul(_451, _461)); float _506 = 1.0 / abs(1.0); float4 _511 = fs_img56.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[4u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[6u + buf1_dword_off])), fma(as_type(cbuf_24.data[5u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[7u + buf1_dword_off])))); float _512 = _511.x; float _513 = _511.y; float _514 = _511.z; float _516 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_482, 13.0), 0.5))); float _518 = fma(_486, _506, 1.5); float _519 = fma(_484, _506, 1.5); uint _525 = ((0u + ((_481 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _538 = uint4(cbuf_32.data[_525 + 0u], cbuf_32.data[_525 + 1u], cbuf_32.data[_525 + 2u], cbuf_32.data[_525 + 3u]); uint _539 = _538.x; uint _540 = _538.y; uint _541 = _538.z; float4 _549 = fs_img88.sample(fs_samp20, float3(spvFSub(_519, 1.5), spvFSub(_518, 1.5), _488), level(_516)); uint _556 = ((0u + ((_481 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _569 = uint4(cbuf_32.data[_556 + 0u], cbuf_32.data[_556 + 1u], cbuf_32.data[_556 + 2u], cbuf_32.data[_556 + 3u]); uint _577 = ((0u + ((_481 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _590 = uint4(cbuf_32.data[_577 + 0u], cbuf_32.data[_577 + 1u], cbuf_32.data[_577 + 2u], cbuf_32.data[_577 + 3u]); uint _598 = ((0u + ((_481 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _611 = uint4(cbuf_32.data[_598 + 0u], cbuf_32.data[_598 + 1u], cbuf_32.data[_598 + 2u], cbuf_32.data[_598 + 3u]); float4 _628 = fs_img80.sample(fs_samp20, float3(spvFSub(_519, 1.5), spvFSub(_518, 1.5), _488), level(_516)); float _629 = _628.x; float _630 = _628.y; float _631 = _628.z; float4 _636 = fs_img48.sample(fs_samp4, float2(fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[2u + buf1_dword_off])), fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[3u + buf1_dword_off])))); float _640 = _636.w; uint _668 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _673 = fast::clamp(spvFAdd(fma(_484, as_type(_328), fma(_486, as_type(_329), spvFMul(as_type(_330), _488))), 1.0), 0.0, 1.0); bool _704 = (_514 == 0.0) && (_513 == 0.0); float _747 = spvFMul(_673, _673); float _756 = fast::clamp(fma(as_type(cbuf_36.data[24u + buf4_dword_off]), _640, sqrt(_636.x)), 0.0, 1.0); float _759 = fast::clamp(fma(as_type(cbuf_36.data[25u + buf4_dword_off]), _640, sqrt(_636.y)), 0.0, 1.0); float _762 = fast::clamp(fma(as_type(cbuf_36.data[26u + buf4_dword_off]), _640, sqrt(_636.z)), 0.0, 1.0); float _763 = _704 ? _512 : _514; float _764 = _704 ? _512 : _513; float _783 = fast::max(0.0, spvFAdd(as_type(_569.w), fma(_451, as_type(_569.z), fma(_456, as_type(_569.x), spvFMul(_453, as_type(_569.y)))))); float _784 = fast::max(0.0, spvFAdd(as_type(_590.w), fma(_451, as_type(_590.z), fma(_456, as_type(_590.x), spvFMul(_453, as_type(_590.y)))))); float _785 = fast::max(0.0, spvFAdd(as_type(_611.w), fma(_451, as_type(_611.z), fma(_456, as_type(_611.x), spvFMul(_453, as_type(_611.y)))))); float _796 = spvFMul(in.fs_in_attr2.w, as_type(cbuf_32.data[((12u + ((_481 + 7u) * 16u)) + buf3_off) >> 2u])); bool _800 = as_type(cbuf_28.data[22u + buf2_dword_off]) != 0.0; float _823 = _800 ? _796 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(_512, spvFMul(fma(as_type(_539), fma(-as_type(_540), _629, spvFMul(as_type(_541), _549.x)), spvFMul(as_type(_540), _629)), _747)), spvFMul(as_type(cbuf_28.data[4u + buf2_dword_off]), as_type(cbuf_44.data[_668]))); out.frag_color5.y = spvFMul(spvFMul(_764, spvFMul(fma(as_type(_539), fma(-as_type(_540), _630, spvFMul(as_type(_541), _549.y)), spvFMul(as_type(_540), _630)), _747)), spvFMul(as_type(cbuf_28.data[5u + buf2_dword_off]), as_type(cbuf_44.data[_668]))); out.frag_color5.z = spvFMul(spvFMul(_763, spvFMul(fma(as_type(_539), fma(-as_type(_540), _631, spvFMul(as_type(_541), _549.z)), spvFMul(as_type(_540), _631)), _747)), spvFMul(as_type(cbuf_28.data[6u + buf2_dword_off]), as_type(cbuf_44.data[_668]))); out.frag_color5.w = _800 ? _796 : as_type(_538.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_512, _783, _783); out.frag_color4.y = fma(-_764, _784, _784); out.frag_color4.z = fma(-_763, _785, _785); out.frag_color4.w = _800 ? _796 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_512); out.frag_color3.y = sqrt(_764); out.frag_color3.z = sqrt(_763); out.frag_color3.w = _800 ? _796 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_481 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_28.data[0u + buf2_dword_off]), spvFMul(_756, _756)); out.frag_color2.y = spvFMul(as_type(cbuf_28.data[1u + buf2_dword_off]), spvFMul(_759, _759)); out.frag_color2.z = spvFMul(as_type(cbuf_28.data[2u + buf2_dword_off]), spvFMul(_762, _762)); out.frag_color2.w = _796; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_477, _482); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_32.data[((0u + ((_481 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _823; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _456, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _453, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _451, 0.500488758087158203125); out.frag_color0.w = _823; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x998b035e [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x3deaa573 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint _186 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _195 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _196 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _201 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _205 = (cbuf_12.data[_186] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _212 = ((0u + ((_195 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _225 = uint4(cbuf_16.data[_212 + 0u], cbuf_16.data[_212 + 1u], cbuf_16.data[_212 + 2u], cbuf_16.data[_212 + 3u]); uint _233 = ((0u + ((_196 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _246 = uint4(cbuf_16.data[_233 + 0u], cbuf_16.data[_233 + 1u], cbuf_16.data[_233 + 2u], cbuf_16.data[_233 + 3u]); uint _254 = ((0u + ((_195 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _267 = uint4(cbuf_16.data[_254 + 0u], cbuf_16.data[_254 + 1u], cbuf_16.data[_254 + 2u], cbuf_16.data[_254 + 3u]); uint _275 = ((0u + ((_196 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _288 = uint4(cbuf_16.data[_275 + 0u], cbuf_16.data[_275 + 1u], cbuf_16.data[_275 + 2u], cbuf_16.data[_275 + 3u]); uint _296 = ((0u + (_195 * 16u)) + buf8_off) >> 2u; uint4 _309 = uint4(cbuf_16.data[_296 + 0u], cbuf_16.data[_296 + 1u], cbuf_16.data[_296 + 2u], cbuf_16.data[_296 + 3u]); uint _317 = ((0u + ((_201 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _330 = uint4(cbuf_16.data[_317 + 0u], cbuf_16.data[_317 + 1u], cbuf_16.data[_317 + 2u], cbuf_16.data[_317 + 3u]); uint _338 = ((0u + (_196 * 16u)) + buf8_off) >> 2u; uint4 _351 = uint4(cbuf_16.data[_338 + 0u], cbuf_16.data[_338 + 1u], cbuf_16.data[_338 + 2u], cbuf_16.data[_338 + 3u]); uint _359 = ((0u + ((_201 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _372 = uint4(cbuf_16.data[_359 + 0u], cbuf_16.data[_359 + 1u], cbuf_16.data[_359 + 2u], cbuf_16.data[_359 + 3u]); uint _380 = ((0u + ((_205 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _393 = uint4(cbuf_16.data[_380 + 0u], cbuf_16.data[_380 + 1u], cbuf_16.data[_380 + 2u], cbuf_16.data[_380 + 3u]); uint _401 = ((0u + (_201 * 16u)) + buf8_off) >> 2u; uint4 _414 = uint4(cbuf_16.data[_401 + 0u], cbuf_16.data[_401 + 1u], cbuf_16.data[_401 + 2u], cbuf_16.data[_401 + 3u]); uint _422 = ((0u + ((_205 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _435 = uint4(cbuf_16.data[_422 + 0u], cbuf_16.data[_422 + 1u], cbuf_16.data[_422 + 2u], cbuf_16.data[_422 + 3u]); uint _443 = ((0u + (_205 * 16u)) + buf8_off) >> 2u; uint4 _456 = uint4(cbuf_16.data[_443 + 0u], cbuf_16.data[_443 + 1u], cbuf_16.data[_443 + 2u], cbuf_16.data[_443 + 3u]); float _468 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _469 = spvFMul(in.vs_in_attr4.y, _468); float _470 = spvFMul(in.vs_in_attr4.x, _468); float _475 = spvFMul(in.vs_in_attr4.z, _468); float _554 = spvFMul(in.vs_in_attr4.w, _468); float _596 = fma(as_type(_393.z), _554, fma(as_type(_330.z), _475, fma(as_type(_246.z), _470, spvFMul(_469, as_type(_225.z))))); float _618 = fma(as_type(_435.z), _554, fma(as_type(_372.z), _475, fma(as_type(_288.z), _470, spvFMul(_469, as_type(_267.z))))); float _622 = fma(as_type(_393.y), _554, fma(as_type(_330.y), _475, fma(as_type(_246.y), _470, spvFMul(_469, as_type(_225.y))))); float _631 = fma(as_type(_456.z), _554, fma(as_type(_414.z), _475, fma(as_type(_351.z), _470, spvFMul(_469, as_type(_309.z))))); float _635 = fma(as_type(_435.y), _554, fma(as_type(_372.y), _475, fma(as_type(_288.y), _470, spvFMul(_469, as_type(_267.y))))); float _637 = fma(as_type(_393.x), _554, fma(as_type(_330.x), _475, fma(as_type(_246.x), _470, spvFMul(_469, as_type(_225.x))))); float _643 = fma(as_type(_456.y), _554, fma(as_type(_414.y), _475, fma(as_type(_351.y), _470, spvFMul(_469, as_type(_309.y))))); float _645 = fma(as_type(_435.x), _554, fma(as_type(_372.x), _475, fma(as_type(_288.x), _470, spvFMul(_469, as_type(_267.x))))); float _650 = fma(as_type(_456.x), _554, fma(as_type(_414.x), _475, fma(as_type(_351.x), _470, spvFMul(_469, as_type(_309.x))))); float _654 = spvFSub(fma(_637, in.vs_in_attr0.x, fma(_622, in.vs_in_attr0.y, fma(_596, in.vs_in_attr0.z, fma(as_type(_393.w), _554, fma(as_type(_330.w), _475, fma(as_type(_246.w), _470, spvFMul(_469, as_type(_225.w)))))))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _657 = spvFSub(fma(_645, in.vs_in_attr0.x, fma(_635, in.vs_in_attr0.y, fma(_618, in.vs_in_attr0.z, fma(as_type(_435.w), _554, fma(as_type(_372.w), _475, fma(as_type(_288.w), _470, spvFMul(_469, as_type(_267.w)))))))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _671 = spvFSub(fma(_650, in.vs_in_attr0.x, fma(_643, in.vs_in_attr0.y, fma(_631, in.vs_in_attr0.z, fma(as_type(_456.w), _554, fma(as_type(_414.w), _475, fma(as_type(_351.w), _470, spvFMul(_469, as_type(_309.w)))))))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _681 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _654, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _683 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _654, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _685 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _654, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _687 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _671, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _657, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _654, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _681; out.gl_Position.y = _683; out.gl_Position.z = _685; out.gl_Position.w = _687; float _730 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _733 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _736 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _738 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _750 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _751 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_650, _751, fma(_643, _738, spvFMul(_733, _631))); out.out_attr0.y = fma(_645, _751, fma(_635, _738, spvFMul(_733, _618))); out.out_attr0.z = fma(_637, _751, fma(_622, _738, spvFMul(_733, _596))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_650, _750, fma(_643, _736, spvFMul(_730, _631))); out.out_attr1.y = fma(_645, _750, fma(_635, _736, spvFMul(_730, _618))); out.out_attr1.z = fma(_637, _750, fma(_622, _736, spvFMul(_730, _596))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr4.x = _681; out.out_attr4.y = _683; out.out_attr4.z = _685; out.out_attr4.w = _687; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; constant uint _124 = {}; constant uint _125 = {}; constant uint _126 = {}; constant uint _127 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_44 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_28 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_40 [[buffer(14)]], constant fs_cbuf_block_f32_5& cbuf_48 [[buffer(15)]], texture2d fs_img108 [[texture(0)]], texture2d fs_img116 [[texture(1)]], texture2d fs_img52 [[texture(2)]], texture2d fs_img76 [[texture(3)]], texture2d fs_img68 [[texture(4)]], texture2d fs_img124 [[texture(5)]], texture2d fs_img60 [[texture(6)]], texturecube fs_img100 [[texture(7)]], texturecube fs_img92 [[texture(8)]], texture2d fs_img84 [[texture(9)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _161 = uint(gl_FrontFacing); float _263 = 1.0 / in.fs_in_attr4.w; float _320 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _334 = fma(as_type(cbuf_44.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))); float _336 = 1.0 / fma(as_type(cbuf_44.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _341 = fs_img108.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_44.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr4.x), _263, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_44.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr4.y), _263, 0.5))))); float4 _347 = fs_img116.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _348 = _347.x; float _350 = _347.y; float _352 = _347.z; float _354 = _347.w; float _356 = spvFMul(in.fs_in_attr0.x, _320); float _358 = spvFMul(in.fs_in_attr0.y, _320); float _359 = spvFMul(in.fs_in_attr0.z, _320); float _361 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _363 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _364 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _368 = fma(-fma(as_type(cbuf_44.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _336, as_type(cbuf_44.data[183u + buf0_dword_off])); float _371 = fma(-fma(as_type(cbuf_44.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _336, as_type(cbuf_44.data[187u + buf0_dword_off])); float _375 = fma(-_334, _336, as_type(cbuf_44.data[191u + buf0_dword_off])); bool _377 = 0u == _161; uint _390; uint _391; uint _392; if (_377) { _390 = as_type(fast::max(-_356, -_356)); _391 = as_type(fast::max(-_359, -_359)); _392 = as_type(fast::max(-_358, -_358)); } else { _390 = as_type(_356); _391 = as_type(_359); _392 = as_type(_334); } uint _395; if (!_377) { _395 = as_type(_358); } else { _395 = _392; } uint _413 = uint(in.fs_in_attr0.w) * 13u; float _424 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _428 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float4 _434 = fs_img52.sample(fs_samp4, float2(_424, _428)); float _435 = _434.x; float _437 = _434.y; float _439 = _434.z; float _441 = _434.w; float _461 = spvFMul(_441, in.fs_in_attr2.w); float _463 = spvFMul(_461, as_type(cbuf_36.data[((12u + ((_413 + 7u) * 16u)) + buf2_off) >> 2u])); float _465 = fma(as_type(cbuf_32.data[21u + buf3_dword_off]), spvFAdd(-0.5, _341.w), _461); bool _470 = (as_type(cbuf_32.data[20u + buf3_dword_off]) > _465) || (_463 == 0.0); bool _471 = !_470; uint _1114; uint _1115; uint _1116; uint _1117; uint _1118; uint _1119; uint _1120; uint _1121; uint _1122; uint _1123; uint _1124; uint _1125; uint _1126; uint _1127; uint _1128; uint _1129; uint _1130; uint _1131; uint _1132; uint _1133; bool _1134; uint _1135; uint _1136; uint _1137; uint _1138; if (!_470) { float4 _497 = fs_img76.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _526 = fs_img68.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _527 = _526.x; float4 _532 = fs_img124.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _534 = _532.y; float _539 = fma(2.0, _497.y, -1.0); float _540 = spvFMul(fma(2.0, _497.x, -1.0), fma(2.0, _497.w, -1.0)); float _551 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _553 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_540, _540), spvFMul(_539, _539)), 0.0, 1.0))); float _555 = rsqrt(fma(_361, _361, fma(_363, _363, spvFMul(_364, _364)))); float _581 = fma(spvFMul(_364, _555), _540, fma(spvFMul(in.fs_in_attr1.z, _551), _539, spvFMul(as_type(_391), _553))); float _585 = fma(spvFMul(_363, _555), _540, fma(spvFMul(in.fs_in_attr1.y, _551), _539, spvFMul(as_type(_395), _553))); float _588 = fma(spvFMul(_361, _555), _540, fma(spvFMul(in.fs_in_attr1.x, _551), _539, spvFMul(as_type(_390), _553))); float _592 = rsqrt(fma(_368, _368, fma(_371, _371, spvFMul(_375, _375)))); float _593 = rsqrt(fma(_588, _588, fma(_585, _585, spvFMul(_581, _581)))); uint _597 = 24u + buf3_dword_off; float _601 = spvFMul(_581, _593); float _603 = spvFMul(_585, _593); float _613 = spvFMul(_588, _593); float4 _619 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _620 = _619.x; float _621 = _619.y; float _622 = _619.z; float _623 = fma(_613, spvFMul(_368, _592), fma(_603, spvFMul(_371, _592), spvFMul(spvFMul(_375, _592), _601))); float _626 = spvFMul(fast::max(_623, _623), 2.0); float _632 = spvFMul(as_type(cbuf_32.data[8u + buf3_dword_off]), 0.00390625); float _637 = spvFMul(fma(as_type(cbuf_32.data[_597]), spvFSub(fma(_354, _527, _532.x), _527), _527), _632); float _639 = fma(-_368, _592, spvFMul(_613, _626)); float _641 = fma(-_371, _592, spvFMul(_603, _626)); float _643 = fma(-_375, _592, spvFMul(_601, _626)); float _654 = 1.0 / abs(1.0); float _656 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_637, 13.0), 0.5))); float _658 = fma(_641, _654, 1.5); float _659 = fma(_639, _654, 1.5); uint _663 = ((0u + ((_413 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _676 = uint4(cbuf_36.data[_663 + 0u], cbuf_36.data[_663 + 1u], cbuf_36.data[_663 + 2u], cbuf_36.data[_663 + 3u]); uint _677 = _676.x; uint _678 = _676.y; uint _679 = _676.z; float4 _687 = fs_img100.sample(fs_samp20, float3(spvFSub(_659, 1.5), spvFSub(_658, 1.5), _643), level(_656)); uint _694 = ((0u + ((_413 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _707 = uint4(cbuf_36.data[_694 + 0u], cbuf_36.data[_694 + 1u], cbuf_36.data[_694 + 2u], cbuf_36.data[_694 + 3u]); uint _715 = ((0u + ((_413 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _728 = uint4(cbuf_36.data[_715 + 0u], cbuf_36.data[_715 + 1u], cbuf_36.data[_715 + 2u], cbuf_36.data[_715 + 3u]); uint _736 = ((0u + ((_413 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _749 = uint4(cbuf_36.data[_736 + 0u], cbuf_36.data[_736 + 1u], cbuf_36.data[_736 + 2u], cbuf_36.data[_736 + 3u]); float4 _760 = fs_img92.sample(fs_samp20, float3(spvFSub(_659, 1.5), spvFSub(_658, 1.5), _643), level(_656)); float _761 = _760.x; float _762 = _760.y; float _763 = _760.z; float _783 = fast::clamp(spvFAdd(fma(_639, as_type(_390), fma(_641, as_type(_395), spvFMul(as_type(_391), _643))), 1.0), 0.0, 1.0); bool _788 = (_622 == 0.0) && (_621 == 0.0); float _791 = _788 ? _620 : _622; float _792 = _788 ? _620 : _621; float _793 = spvFMul(_534, _534); uint _794 = 12u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); float _797 = spvFAdd(1.0, _623); float _816 = fast::clamp(spvFMul(_797, _797), 0.0, 1.0); float _817 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_623, _623), 0.0, 1.0))))); float _832 = fast::clamp(spvFAdd(sqrt(_435), as_type(cbuf_40.data[24u + buf5_dword_off])), 0.0, 1.0); float _835 = fast::clamp(spvFAdd(sqrt(_437), as_type(cbuf_40.data[25u + buf5_dword_off])), 0.0, 1.0); float _838 = fast::clamp(spvFAdd(sqrt(_439), as_type(cbuf_40.data[26u + buf5_dword_off])), 0.0, 1.0); float _839 = spvFMul(_816, _817); float _841 = fma(as_type(cbuf_32.data[_597]), spvFSub(fma(_354, _620, _793), _620), _620); float _843 = fma(as_type(cbuf_32.data[_597]), spvFSub(fma(_354, _792, _793), _792), _792); float _845 = fma(as_type(cbuf_32.data[_597]), spvFSub(fma(_354, _791, _793), _791), _791); float4 _850 = fs_img84.sample(fs_samp20, float2(_424, _428)); float _851 = _850.x; float _865 = spvFMul(_832, _832); float _866 = spvFMul(_835, _835); float _867 = spvFMul(_838, _838); float _898 = fma(_816, _817, -spvFMul(_839, _843)); float _902 = spvFMul(_637, _637); float _904 = fma(as_type(_677), fma(-as_type(_678), _761, spvFMul(as_type(_679), _687.x)), spvFMul(as_type(_678), _761)); float _910 = spvFMul(_783, _783); float _912 = fma(_601, as_type(_707.z), fma(_613, as_type(_707.x), spvFMul(_603, as_type(_707.y)))); float _915 = fma(_601, as_type(_728.z), fma(_613, as_type(_728.x), spvFMul(_603, as_type(_728.y)))); float _918 = fma(_601, as_type(_749.z), fma(_613, as_type(_749.x), spvFMul(_603, as_type(_749.y)))); float _923 = fma(-_835, _835, fma(_354, _866, _350)); float _938 = spvFAdd(as_type(_749.w), _918); float _941 = fma(as_type(cbuf_32.data[_597]), fma(-_832, _832, fma(_354, _865, _348)), _865); float _950 = spvFMul(fma(_898, _902, _843), spvFMul(fma(as_type(_677), fma(-as_type(_678), _762, spvFMul(as_type(_679), _687.y)), spvFMul(as_type(_678), _762)), _910)); float _953 = fast::max(0.0, spvFAdd(as_type(_707.w), _912)); float _954 = fast::max(0.0, spvFAdd(as_type(_728.w), _915)); float _956 = fast::max(0.0, _938); float _960 = spvFMul(as_type(cbuf_32.data[4u + buf3_dword_off]), as_type(cbuf_48.data[_794])); float _978 = spvFMul(as_type(cbuf_28.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr2.y); float _980 = fma(-_841, _953, _953); float _990 = spvFMul(_950, spvFMul(as_type(cbuf_32.data[5u + buf3_dword_off]), as_type(cbuf_48.data[_794]))); float _992 = spvFMul(spvFMul(fma(fma(_816, _817, -spvFMul(_839, _845)), _902, _845), spvFMul(fma(as_type(_677), fma(-as_type(_678), _763, spvFMul(as_type(_679), _687.z)), spvFMul(as_type(_678), _763)), _910)), spvFMul(as_type(cbuf_32.data[6u + buf3_dword_off]), as_type(cbuf_48.data[_794]))); bool _995 = _471 && (!_470); uint _997; if (_995) { _997 = _413 + 6u; } else { _997 = as_type(_960); } uint _1053; uint _1054; uint _1055; uint _1056; uint _1057; uint _1058; uint _1059; uint _1060; uint _1061; uint _1062; uint _1063; uint _1064; uint _1065; uint _1066; uint _1067; if (_995) { bool _1004 = as_type(cbuf_32.data[22u + buf3_dword_off]) != 0.0; _1053 = as_type(fma(0.5, _613, 0.500488758087158203125)); _1054 = as_type(spvFMul(0.100000001490116119384765625, _978)); _1055 = as_type(spvFMul(_632, _637)); _1056 = as_type(_1004 ? _463 : 1.0); _1057 = as_type(_1004 ? _463 : as_type(_676.w)); _1058 = as_type(_1004 ? _463 : 0.0); _1059 = as_type(fma(0.5, _601, 0.500488758087158203125)); _1060 = as_type(fma(0.5, _603, 0.500488758087158203125)); _1061 = as_type(_1004 ? _463 : spvFMul(as_type(cbuf_32.data[56u + buf3_dword_off]), 0.0039215688593685626983642578125)); _1062 = cbuf_36.data[((0u + ((_413 + 12u) * 16u)) + buf2_off) >> 2u]; _1063 = as_type(sqrt(_843)); _1064 = as_type(sqrt(_841)); _1065 = as_type(sqrt(_845)); _1066 = as_type(_1004 ? _463 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + (_997 * 16u)) + buf2_off) >> 2u]))); _1067 = as_type(_1004 ? _463 : _851); } else { _1053 = as_type(_904); _1054 = as_type(_898); _1055 = as_type(_603); _1056 = as_type(_941); _1057 = as_type(_923); _1058 = as_type(_918); _1059 = as_type(_915); _1060 = as_type(_912); _1061 = cbuf_48.data[_794]; _1062 = as_type(_938); _1063 = as_type(_956); _1064 = as_type(_954); _1065 = as_type(_632); _1066 = as_type(_851); _1067 = as_type(_950); } uint _1092; uint _1093; uint _1094; uint _1095; uint _1096; uint _1097; uint _1098; uint _1099; uint _1100; uint _1101; uint _1102; uint _1103; uint _1104; uint _1105; uint _1106; uint _1107; uint _1108; uint _1109; uint _1110; uint _1111; uint _1112; uint _1113; if (_471 && (!_995)) { _1092 = as_type(_978); _1093 = as_type(_990); _1094 = as_type(_978); _1095 = as_type(_978); _1096 = as_type(_992); _1097 = as_type(_990); _1098 = as_type(_980); _1099 = as_type(_992); _1100 = as_type(_990); _1101 = as_type(_980); _1102 = as_type(_978); _1103 = as_type(_980); _1104 = as_type(_992); _1105 = as_type(_990); _1106 = as_type(_980); _1107 = as_type(_992); _1108 = as_type(_990); _1109 = as_type(_978); _1110 = as_type(_992); _1111 = as_type(_980); _1112 = as_type(_980); _1113 = as_type(_978); } else { _1092 = _1053; _1093 = _1054; _1094 = _1055; _1095 = as_type(spvFMul(as_type(cbuf_32.data[0u + buf3_dword_off]), _941)); _1096 = as_type(spvFMul(as_type(cbuf_32.data[2u + buf3_dword_off]), fma(as_type(cbuf_32.data[_597]), fma(-_838, _838, fma(_354, _867, _352)), _867))); _1097 = as_type(spvFMul(as_type(cbuf_32.data[1u + buf3_dword_off]), fma(as_type(cbuf_32.data[_597]), _923, _866))); _1098 = _1056; _1099 = as_type(fma(-_845, _956, _956)); _1100 = as_type(fma(-_843, _954, _954)); _1101 = _1057; _1102 = as_type(spvFMul(spvFMul(fma(fma(_816, _817, -spvFMul(_839, _841)), _902, _841), spvFMul(_904, _910)), _960)); _1103 = _1058; _1104 = _1059; _1105 = _1060; _1106 = _1061; _1107 = _1062; _1108 = _1063; _1109 = _1064; _1110 = _1065; _1111 = _1066; _1112 = _1067; _1113 = as_type(_980); } _1114 = _1103; _1115 = _1104; _1116 = _1105; _1117 = _1092; _1118 = _1106; _1119 = _1107; _1120 = _1093; _1121 = _1094; _1122 = _1112; _1123 = _1096; _1124 = _1097; _1125 = _1095; _1126 = _1111; _1127 = _1110; _1128 = _1108; _1129 = _1109; _1130 = _1098; _1131 = _1099; _1132 = _1100; _1133 = _1113; _1134 = _471; _1135 = _1101; _1136 = as_type(_992); _1137 = as_type(_990); _1138 = _1102; } else { _1114 = as_type(_465); _1115 = as_type(_428); _1116 = as_type(_424); _1117 = _124; _1118 = as_type(in.fs_in_attr3.x); _1119 = as_type(_371); _1120 = _127; _1121 = _125; _1122 = as_type(in.fs_in_attr3.y); _1123 = as_type(_439); _1124 = as_type(_437); _1125 = as_type(_441); _1126 = as_type(_361); _1127 = as_type(in.fs_in_attr3.z); _1128 = as_type(_364); _1129 = as_type(in.fs_in_attr3.w); _1130 = as_type(_435); _1131 = as_type(_354); _1132 = as_type(_352); _1133 = as_type(_375); _1134 = true; _1135 = as_type(_350); _1136 = _161; _1137 = _126; _1138 = as_type(_348); } if (!_1134) { discard_fragment(); } out.frag_color5.x = as_type(_1138); out.frag_color5.y = as_type(_1137); out.frag_color5.z = as_type(_1136); out.frag_color5.w = as_type(_1135); if (!_1134) { discard_fragment(); } out.frag_color4.x = as_type(_1133); out.frag_color4.y = as_type(_1132); out.frag_color4.z = as_type(_1131); out.frag_color4.w = as_type(_1130); if (!_1134) { discard_fragment(); } out.frag_color3.x = as_type(_1129); out.frag_color3.y = as_type(_1128); out.frag_color3.z = as_type(_1127); out.frag_color3.w = as_type(_1126); if (!_1134) { discard_fragment(); } out.frag_color2.x = as_type(_1125); out.frag_color2.y = as_type(_1124); out.frag_color2.z = as_type(_1123); out.frag_color2.w = as_type(_1122); if (!_1134) { discard_fragment(); } out.frag_color1.x = as_type(_1121); out.frag_color1.y = as_type(_1120); out.frag_color1.z = as_type(_1119); out.frag_color1.w = as_type(_1118); if (_470) { discard_fragment(); } out.frag_color0.x = as_type(_1117); out.frag_color0.y = as_type(_1116); out.frag_color0.z = as_type(_1115); out.frag_color0.w = as_type(_1114); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x52738b8a [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xddbe557e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 out_attr7 [[user(locn7)]]; float4 out_attr8 [[user(locn8)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; uint4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; float4 vs_in_attr8 [[attribute(8)]]; int4 vs_in_attr9 [[attribute(9)]]; int4 vs_in_attr10 [[attribute(10)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint _240 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); out.out_attr4.x = in.vs_in_attr8.x; out.out_attr4.y = in.vs_in_attr8.y; out.out_attr4.z = in.vs_in_attr8.z; out.out_attr4.w = in.vs_in_attr7.w; out.out_attr6.x = in.vs_in_attr7.x; out.out_attr6.y = in.vs_in_attr7.y; out.out_attr6.z = in.vs_in_attr7.z; out.out_attr6.w = in.vs_in_attr7.w; uint _253 = (cbuf_12.data[_240] + as_type(as_type(in.vs_in_attr5.y))) * 3u; uint _254 = (cbuf_12.data[_240] + as_type(as_type(in.vs_in_attr5.x))) * 3u; uint _259 = (cbuf_12.data[_240] + as_type(as_type(in.vs_in_attr5.z))) * 3u; uint _263 = (cbuf_12.data[_240] + as_type(as_type(in.vs_in_attr5.w))) * 3u; uint _270 = ((0u + ((_253 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _283 = uint4(cbuf_16.data[_270 + 0u], cbuf_16.data[_270 + 1u], cbuf_16.data[_270 + 2u], cbuf_16.data[_270 + 3u]); uint _291 = ((0u + ((_254 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _304 = uint4(cbuf_16.data[_291 + 0u], cbuf_16.data[_291 + 1u], cbuf_16.data[_291 + 2u], cbuf_16.data[_291 + 3u]); uint _312 = ((0u + ((_253 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _325 = uint4(cbuf_16.data[_312 + 0u], cbuf_16.data[_312 + 1u], cbuf_16.data[_312 + 2u], cbuf_16.data[_312 + 3u]); uint _333 = ((0u + ((_254 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _346 = uint4(cbuf_16.data[_333 + 0u], cbuf_16.data[_333 + 1u], cbuf_16.data[_333 + 2u], cbuf_16.data[_333 + 3u]); uint _354 = ((0u + (_253 * 16u)) + buf8_off) >> 2u; uint4 _367 = uint4(cbuf_16.data[_354 + 0u], cbuf_16.data[_354 + 1u], cbuf_16.data[_354 + 2u], cbuf_16.data[_354 + 3u]); uint _375 = ((0u + ((_259 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _388 = uint4(cbuf_16.data[_375 + 0u], cbuf_16.data[_375 + 1u], cbuf_16.data[_375 + 2u], cbuf_16.data[_375 + 3u]); uint _396 = ((0u + (_254 * 16u)) + buf8_off) >> 2u; uint4 _409 = uint4(cbuf_16.data[_396 + 0u], cbuf_16.data[_396 + 1u], cbuf_16.data[_396 + 2u], cbuf_16.data[_396 + 3u]); uint _417 = ((0u + ((_259 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _430 = uint4(cbuf_16.data[_417 + 0u], cbuf_16.data[_417 + 1u], cbuf_16.data[_417 + 2u], cbuf_16.data[_417 + 3u]); uint _438 = ((0u + ((_263 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _451 = uint4(cbuf_16.data[_438 + 0u], cbuf_16.data[_438 + 1u], cbuf_16.data[_438 + 2u], cbuf_16.data[_438 + 3u]); uint _459 = ((0u + (_259 * 16u)) + buf8_off) >> 2u; uint4 _472 = uint4(cbuf_16.data[_459 + 0u], cbuf_16.data[_459 + 1u], cbuf_16.data[_459 + 2u], cbuf_16.data[_459 + 3u]); uint _480 = ((0u + ((_263 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _493 = uint4(cbuf_16.data[_480 + 0u], cbuf_16.data[_480 + 1u], cbuf_16.data[_480 + 2u], cbuf_16.data[_480 + 3u]); uint _501 = ((0u + (_263 * 16u)) + buf8_off) >> 2u; uint4 _514 = uint4(cbuf_16.data[_501 + 0u], cbuf_16.data[_501 + 1u], cbuf_16.data[_501 + 2u], cbuf_16.data[_501 + 3u]); float _526 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr6.w, spvFAdd(in.vs_in_attr6.z, spvFAdd(in.vs_in_attr6.x, in.vs_in_attr6.y)))); float _527 = spvFMul(in.vs_in_attr6.y, _526); float _528 = spvFMul(in.vs_in_attr6.x, _526); float _533 = spvFMul(in.vs_in_attr6.z, _526); float _612 = spvFMul(in.vs_in_attr6.w, _526); float _654 = fma(as_type(_451.z), _612, fma(as_type(_388.z), _533, fma(as_type(_304.z), _528, spvFMul(_527, as_type(_283.z))))); float _676 = fma(as_type(_493.z), _612, fma(as_type(_430.z), _533, fma(as_type(_346.z), _528, spvFMul(_527, as_type(_325.z))))); float _680 = fma(as_type(_451.y), _612, fma(as_type(_388.y), _533, fma(as_type(_304.y), _528, spvFMul(_527, as_type(_283.y))))); float _689 = fma(as_type(_514.z), _612, fma(as_type(_472.z), _533, fma(as_type(_409.z), _528, spvFMul(_527, as_type(_367.z))))); float _693 = fma(as_type(_493.y), _612, fma(as_type(_430.y), _533, fma(as_type(_346.y), _528, spvFMul(_527, as_type(_325.y))))); float _695 = fma(as_type(_451.x), _612, fma(as_type(_388.x), _533, fma(as_type(_304.x), _528, spvFMul(_527, as_type(_283.x))))); float _701 = fma(as_type(_514.y), _612, fma(as_type(_472.y), _533, fma(as_type(_409.y), _528, spvFMul(_527, as_type(_367.y))))); float _703 = fma(as_type(_493.x), _612, fma(as_type(_430.x), _533, fma(as_type(_346.x), _528, spvFMul(_527, as_type(_325.x))))); float _708 = fma(as_type(_514.x), _612, fma(as_type(_472.x), _533, fma(as_type(_409.x), _528, spvFMul(_527, as_type(_367.x))))); float _712 = spvFSub(fma(_695, in.vs_in_attr0.x, fma(_680, in.vs_in_attr0.y, fma(_654, in.vs_in_attr0.z, fma(as_type(_451.w), _612, fma(as_type(_388.w), _533, fma(as_type(_304.w), _528, spvFMul(_527, as_type(_283.w)))))))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _715 = spvFSub(fma(_703, in.vs_in_attr0.x, fma(_693, in.vs_in_attr0.y, fma(_676, in.vs_in_attr0.z, fma(as_type(_493.w), _612, fma(as_type(_430.w), _533, fma(as_type(_346.w), _528, spvFMul(_527, as_type(_325.w)))))))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _729 = spvFSub(fma(_708, in.vs_in_attr0.x, fma(_701, in.vs_in_attr0.y, fma(_689, in.vs_in_attr0.z, fma(as_type(_514.w), _612, fma(as_type(_472.w), _533, fma(as_type(_409.w), _528, spvFMul(_527, as_type(_367.w)))))))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _739 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _729, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _715, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _712, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _741 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _729, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _715, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _712, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _743 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _729, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _715, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _712, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _745 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _729, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _715, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _712, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _739; out.gl_Position.y = _741; out.gl_Position.z = _743; out.gl_Position.w = _745; float _809 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _812 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _815 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.z))), -127.0), 0.0078740157186985015869140625); float _818 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _821 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _824 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _827 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.y))), -127.0), 0.0078740157186985015869140625); float _829 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _849 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _851 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _853 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr4.x))))); float _854 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_708, _854, fma(_701, _829, spvFMul(_689, _818))); out.out_attr0.y = fma(_703, _854, fma(_693, _829, spvFMul(_676, _818))); out.out_attr0.z = fma(_695, _854, fma(_680, _829, spvFMul(_654, _818))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_708, _849, fma(_701, _821, spvFMul(_689, _809))); out.out_attr1.y = fma(_703, _849, fma(_693, _821, spvFMul(_676, _809))); out.out_attr1.z = fma(_695, _849, fma(_680, _821, spvFMul(_654, _809))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr2.x = fma(_708, _851, fma(_701, _824, spvFMul(_689, _812))); out.out_attr2.y = fma(_703, _851, fma(_693, _824, spvFMul(_676, _812))); out.out_attr2.z = fma(_695, _851, fma(_680, _824, spvFMul(_654, _812))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(_708, _853, fma(_701, _827, spvFMul(_689, _815))); out.out_attr3.y = fma(_703, _853, fma(_693, _827, spvFMul(_676, _815))); out.out_attr3.z = fma(_695, _853, fma(_680, _827, spvFMul(_654, _815))); out.out_attr3.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.w))), -127.0), 0.0078740157186985015869140625); out.out_attr5.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr5.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr5.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr5.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr7.x = _739; out.out_attr7.y = _741; out.out_attr7.z = _743; out.out_attr7.w = _745; out.out_attr8.x = fma(as_type(cbuf_8.data[8u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr10.x))))), as_type(cbuf_8.data[10u + buf10_dword_off])); out.out_attr8.y = fma(as_type(cbuf_8.data[9u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr10.y))))), as_type(cbuf_8.data[11u + buf10_dword_off])); out.out_attr8.z = 0.0; out.out_attr8.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[60]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; float4 fs_in_attr7 [[user(locn7)]]; float4 fs_in_attr8 [[user(locn8)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_44 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_36 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_28 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_40 [[buffer(14)]], constant fs_cbuf_block_f32_5& cbuf_48 [[buffer(15)]], texture2d fs_img140 [[texture(0)]], texture2d fs_img76 [[texture(1)]], texture2d fs_img108 [[texture(2)]], texture2d fs_img68 [[texture(3)]], texture2d fs_img100 [[texture(4)]], texture2d fs_img148 [[texture(5)]], texture2d fs_img60 [[texture(6)]], texture2d fs_img92 [[texture(7)]], texture2d fs_img84 [[texture(8)]], texture2d fs_img52 [[texture(9)]], texturecube fs_img132 [[texture(10)]], texturecube fs_img124 [[texture(11)]], texture2d fs_img116 [[texture(12)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; float _164 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _165 = spvFMul(in.fs_in_attr0.x, _164); float _167 = spvFMul(in.fs_in_attr0.y, _164); float _169 = spvFMul(in.fs_in_attr0.z, _164); float _183 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _184 = spvFMul(in.fs_in_attr1.x, _183); float _185 = spvFMul(in.fs_in_attr1.y, _183); float _186 = spvFMul(in.fs_in_attr1.z, _183); float _196 = spvFMul(in.fs_in_attr1.w, fma(_167, _186, -spvFMul(_169, _185))); float _197 = spvFMul(in.fs_in_attr1.w, fma(_169, _184, -spvFMul(_165, _186))); float _198 = spvFMul(in.fs_in_attr1.w, fma(_165, _185, -spvFMul(_167, _184))); float _210 = rsqrt(fma(in.fs_in_attr2.x, in.fs_in_attr2.x, fma(in.fs_in_attr2.y, in.fs_in_attr2.y, spvFMul(in.fs_in_attr2.z, in.fs_in_attr2.z)))); float _211 = spvFMul(in.fs_in_attr2.x, _210); float _212 = spvFMul(in.fs_in_attr2.y, _210); float _213 = spvFMul(in.fs_in_attr2.z, _210); float _223 = spvFMul(in.fs_in_attr2.w, fma(_167, _213, -spvFMul(_169, _212))); float _224 = spvFMul(in.fs_in_attr2.w, fma(_169, _211, -spvFMul(_165, _213))); float _225 = spvFMul(in.fs_in_attr2.w, fma(_165, _212, -spvFMul(_167, _211))); float _330 = 1.0 / fma(as_type(cbuf_44.data[32u + buf0_dword_off]), in.fs_in_attr7.x, fma(as_type(cbuf_44.data[33u + buf0_dword_off]), in.fs_in_attr7.y, fma(as_type(cbuf_44.data[34u + buf0_dword_off]), in.fs_in_attr7.z, spvFMul(as_type(cbuf_44.data[35u + buf0_dword_off]), in.fs_in_attr7.w)))); float _345 = fma(-fma(as_type(cbuf_44.data[20u + buf0_dword_off]), in.fs_in_attr7.x, fma(as_type(cbuf_44.data[21u + buf0_dword_off]), in.fs_in_attr7.y, fma(as_type(cbuf_44.data[22u + buf0_dword_off]), in.fs_in_attr7.z, spvFMul(as_type(cbuf_44.data[23u + buf0_dword_off]), in.fs_in_attr7.w)))), _330, as_type(cbuf_44.data[183u + buf0_dword_off])); float _348 = fma(-fma(as_type(cbuf_44.data[24u + buf0_dword_off]), in.fs_in_attr7.x, fma(as_type(cbuf_44.data[25u + buf0_dword_off]), in.fs_in_attr7.y, fma(as_type(cbuf_44.data[26u + buf0_dword_off]), in.fs_in_attr7.z, spvFMul(as_type(cbuf_44.data[27u + buf0_dword_off]), in.fs_in_attr7.w)))), _330, as_type(cbuf_44.data[187u + buf0_dword_off])); float _351 = fma(-fma(as_type(cbuf_44.data[28u + buf0_dword_off]), in.fs_in_attr7.x, fma(as_type(cbuf_44.data[29u + buf0_dword_off]), in.fs_in_attr7.y, fma(as_type(cbuf_44.data[30u + buf0_dword_off]), in.fs_in_attr7.z, spvFMul(as_type(cbuf_44.data[31u + buf0_dword_off]), in.fs_in_attr7.w)))), _330, as_type(cbuf_44.data[191u + buf0_dword_off])); float4 _360 = fs_img140.sample(fs_samp4, float2(in.fs_in_attr8.x, in.fs_in_attr8.y)); float _364 = _360.w; uint _378; uint _379; uint _380; if (0u == uint(gl_FrontFacing)) { _378 = as_type(fast::max(-_167, -_167)); _379 = as_type(fast::max(-_169, -_169)); _380 = as_type(fast::max(-_165, -_165)); } else { _378 = as_type(_167); _379 = as_type(_169); _380 = as_type(_165); } float4 _437 = fs_img76.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr5.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr5.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _445 = fs_img108.sample(fs_samp16, float2(fma(in.fs_in_attr5.z, as_type(cbuf_24.data[40u + buf1_dword_off]), as_type(cbuf_24.data[42u + buf1_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_24.data[41u + buf1_dword_off]), as_type(cbuf_24.data[43u + buf1_dword_off])))); float4 _496 = fs_img68.sample(fs_samp8, float2(fma(in.fs_in_attr5.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr5.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _497 = _496.x; float4 _508 = fs_img148.sample(fs_samp8, float2(in.fs_in_attr8.x, in.fs_in_attr8.y)); float _510 = _508.y; float _517 = fma(2.0, _437.y, -1.0); float _518 = spvFMul(fma(2.0, _437.x, -1.0), fma(2.0, _437.w, -1.0)); float _519 = fma(2.0, _445.y, -1.0); float _520 = spvFMul(fma(2.0, _445.x, -1.0), fma(2.0, _445.w, -1.0)); float _537 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_518, _518), spvFMul(_517, _517)), 0.0, 1.0))); float _538 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_520, _520), spvFMul(_519, _519)), 0.0, 1.0))); float _539 = rsqrt(fma(_196, _196, fma(_197, _197, spvFMul(_198, _198)))); float _540 = rsqrt(fma(_223, _223, fma(_224, _224, spvFMul(_225, _225)))); float _586 = fma(spvFMul(_198, _539), _518, fma(_186, _517, spvFMul(as_type(_379), _537))); float _596 = fma(spvFMul(_197, _539), _518, fma(_185, _517, spvFMul(as_type(_378), _537))); float _600 = fma(spvFMul(_196, _539), _518, fma(_184, _517, spvFMul(as_type(_380), _537))); float _603 = fma(in.fs_in_attr4.w, spvFSub(fma(spvFMul(_225, _540), _520, fma(_213, _519, spvFMul(as_type(_379), _538))), _586), _586); float _606 = fma(in.fs_in_attr4.w, spvFSub(fma(spvFMul(_224, _540), _520, fma(_212, _519, spvFMul(as_type(_378), _538))), _596), _596); float _609 = fma(in.fs_in_attr4.w, spvFSub(fma(spvFMul(_223, _540), _520, fma(_211, _519, spvFMul(as_type(_380), _538))), _600), _600); float _625 = rsqrt(fma(_345, _345, fma(_348, _348, spvFMul(_351, _351)))); float _626 = rsqrt(fma(_609, _609, fma(_606, _606, spvFMul(_603, _603)))); uint _654 = 24u + buf2_dword_off; float _658 = spvFMul(_603, _626); float4 _663 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr5.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr5.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _664 = _663.x; float _665 = _663.y; float _666 = _663.z; float4 _671 = fs_img92.sample(fs_samp8, float2(fma(in.fs_in_attr5.z, as_type(cbuf_24.data[32u + buf1_dword_off]), as_type(cbuf_24.data[34u + buf1_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_24.data[33u + buf1_dword_off]), as_type(cbuf_24.data[35u + buf1_dword_off])))); float _672 = _671.x; float _673 = _671.y; float _674 = _671.z; float _676 = spvFMul(_606, _626); float _680 = spvFMul(_609, _626); float _682 = fma(in.fs_in_attr4.w, spvFSub(fs_img100.sample(fs_samp8, float2(fma(in.fs_in_attr5.z, as_type(cbuf_24.data[36u + buf1_dword_off]), as_type(cbuf_24.data[38u + buf1_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_24.data[37u + buf1_dword_off]), as_type(cbuf_24.data[39u + buf1_dword_off])))).x, _497), _497); float _683 = fma(_680, spvFMul(_345, _625), fma(_676, spvFMul(_348, _625), spvFMul(spvFMul(_351, _625), _658))); float _689 = spvFMul(fast::max(_683, _683), 2.0); float _701 = spvFMul(as_type(cbuf_32.data[8u + buf2_dword_off]), 0.00390625); uint _705 = uint(in.fs_in_attr0.w) * 13u; float _708 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr5.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _711 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr5.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float _712 = spvFMul(fma(as_type(cbuf_32.data[_654]), spvFSub(fma(_682, _364, _508.x), _682), _682), _701); float _714 = fma(-_345, _625, spvFMul(_680, _689)); float _716 = fma(-_348, _625, spvFMul(_676, _689)); float _718 = fma(-_351, _625, spvFMul(_658, _689)); float4 _727 = fs_img84.sample(fs_samp4, float2(fma(as_type(cbuf_24.data[28u + buf1_dword_off]), in.fs_in_attr5.z, as_type(cbuf_24.data[30u + buf1_dword_off])), fma(as_type(cbuf_24.data[29u + buf1_dword_off]), in.fs_in_attr5.w, as_type(cbuf_24.data[31u + buf1_dword_off])))); float4 _739 = fs_img52.sample(fs_samp4, float2(_708, _711)); float _746 = 1.0 / abs(1.0); float _748 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_712, 13.0), 0.5))); float _750 = fma(_716, _746, 1.5); float _751 = fma(_714, _746, 1.5); uint _757 = ((0u + ((_705 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _770 = uint4(cbuf_36.data[_757 + 0u], cbuf_36.data[_757 + 1u], cbuf_36.data[_757 + 2u], cbuf_36.data[_757 + 3u]); uint _771 = _770.x; uint _772 = _770.y; uint _773 = _770.z; float4 _781 = fs_img132.sample(fs_samp20, float3(spvFSub(_751, 1.5), spvFSub(_750, 1.5), _718), level(_748)); uint _788 = ((0u + ((_705 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _801 = uint4(cbuf_36.data[_788 + 0u], cbuf_36.data[_788 + 1u], cbuf_36.data[_788 + 2u], cbuf_36.data[_788 + 3u]); uint _809 = ((0u + ((_705 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _822 = uint4(cbuf_36.data[_809 + 0u], cbuf_36.data[_809 + 1u], cbuf_36.data[_809 + 2u], cbuf_36.data[_809 + 3u]); uint _830 = ((0u + ((_705 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _843 = uint4(cbuf_36.data[_830 + 0u], cbuf_36.data[_830 + 1u], cbuf_36.data[_830 + 2u], cbuf_36.data[_830 + 3u]); float4 _854 = fs_img124.sample(fs_samp20, float3(spvFSub(_751, 1.5), spvFSub(_750, 1.5), _718), level(_748)); float _855 = _854.x; float _856 = _854.y; float _857 = _854.z; float4 _876 = fs_img116.sample(fs_samp20, float2(_708, _711)); uint _889 = 24u + buf5_dword_off; uint _892 = 25u + buf5_dword_off; uint _895 = 26u + buf5_dword_off; bool _898 = (_666 == 0.0) && (_665 == 0.0); bool _899 = (_674 == 0.0) && (_673 == 0.0); float _902 = _898 ? _664 : _666; float _903 = _898 ? _664 : _665; float _911 = fma(in.fs_in_attr4.w, spvFSub(_672, _664), _664); float _912 = fma(in.fs_in_attr4.w, spvFSub(_899 ? _672 : _673, _903), _903); float _913 = fma(in.fs_in_attr4.w, spvFSub(_899 ? _672 : _674, _902), _902); uint _914 = 12u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); float _917 = spvFAdd(1.0, _683); float _920 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_683, _683), 0.0, 1.0))))); float _923 = fast::clamp(spvFAdd(fma(_714, as_type(_380), fma(_716, as_type(_378), spvFMul(as_type(_379), _718))), 1.0), 0.0, 1.0); float _936 = fast::clamp(spvFAdd(as_type(cbuf_40.data[_889]), sqrt(_727.x)), 0.0, 1.0); float _942 = fast::clamp(spvFAdd(as_type(cbuf_40.data[_892]), sqrt(_727.y)), 0.0, 1.0); float _945 = fast::clamp(spvFAdd(as_type(cbuf_40.data[_895]), sqrt(_727.z)), 0.0, 1.0); float _946 = spvFMul(_510, _510); float _949 = fast::clamp(spvFAdd(sqrt(_739.x), as_type(cbuf_40.data[_889])), 0.0, 1.0); float _952 = fast::clamp(spvFAdd(sqrt(_739.y), as_type(cbuf_40.data[_892])), 0.0, 1.0); float _955 = fast::clamp(spvFAdd(sqrt(_739.z), as_type(cbuf_40.data[_895])), 0.0, 1.0); float _988 = fast::clamp(spvFMul(_917, _917), 0.0, 1.0); float _1001 = fma(in.fs_in_attr4.w, fma(-_949, _949, spvFMul(_936, _936)), spvFMul(_949, _949)); float _1002 = fma(in.fs_in_attr4.w, fma(-_952, _952, spvFMul(_942, _942)), spvFMul(_952, _952)); float _1003 = fma(in.fs_in_attr4.w, fma(-_955, _955, spvFMul(_945, _945)), spvFMul(_955, _955)); float _1004 = spvFMul(_988, _920); float _1006 = fma(as_type(cbuf_32.data[_654]), spvFSub(fma(_911, _364, _946), _911), _911); float _1008 = fma(as_type(cbuf_32.data[_654]), spvFSub(fma(_912, _364, _946), _912), _912); float _1010 = fma(as_type(cbuf_32.data[_654]), spvFSub(fma(_913, _364, _946), _913), _913); float _1059 = spvFMul(_712, _712); float _1066 = spvFMul(_923, _923); float _1108 = fast::max(0.0, spvFAdd(as_type(_801.w), fma(_658, as_type(_801.z), fma(_680, as_type(_801.x), spvFMul(_676, as_type(_801.y)))))); float _1109 = fast::max(0.0, spvFAdd(as_type(_822.w), fma(_658, as_type(_822.z), fma(_680, as_type(_822.x), spvFMul(_676, as_type(_822.y)))))); float _1110 = fast::max(0.0, spvFAdd(as_type(_843.w), fma(_658, as_type(_843.z), fma(_680, as_type(_843.x), spvFMul(_676, as_type(_843.y)))))); float _1121 = spvFMul(1.0, as_type(cbuf_36.data[((12u + ((_705 + 7u) * 16u)) + buf3_off) >> 2u])); bool _1127 = as_type(cbuf_32.data[22u + buf2_dword_off]) != 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_988, _920, -spvFMul(_1004, _1006)), _1059, _1006), spvFMul(fma(as_type(_771), fma(-as_type(_772), _855, spvFMul(as_type(_773), _781.x)), spvFMul(as_type(_772), _855)), _1066)), spvFMul(as_type(cbuf_32.data[4u + buf2_dword_off]), as_type(cbuf_48.data[_914]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_988, _920, -spvFMul(_1004, _1008)), _1059, _1008), spvFMul(fma(as_type(_771), fma(-as_type(_772), _856, spvFMul(as_type(_773), _781.y)), spvFMul(as_type(_772), _856)), _1066)), spvFMul(as_type(cbuf_32.data[5u + buf2_dword_off]), as_type(cbuf_48.data[_914]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_988, _920, -spvFMul(_1004, _1010)), _1059, _1010), spvFMul(fma(as_type(_771), fma(-as_type(_772), _857, spvFMul(as_type(_773), _781.z)), spvFMul(as_type(_772), _857)), _1066)), spvFMul(as_type(cbuf_32.data[6u + buf2_dword_off]), as_type(cbuf_48.data[_914]))); out.frag_color5.w = _1127 ? _1121 : as_type(_770.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_1006, _1108, _1108); out.frag_color4.y = fma(-_1008, _1109, _1109); out.frag_color4.z = fma(-_1010, _1110, _1110); out.frag_color4.w = _1127 ? _1121 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_1006); out.frag_color3.y = sqrt(_1008); out.frag_color3.z = sqrt(_1010); out.frag_color3.w = _1127 ? _1121 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + ((_705 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_32.data[0u + buf2_dword_off]), spvFMul(fma(as_type(cbuf_32.data[_654]), spvFSub(fma(_364, _1001, _360.x), _1001), _1001), in.fs_in_attr6.x)); out.frag_color2.y = spvFMul(as_type(cbuf_32.data[1u + buf2_dword_off]), spvFMul(fma(as_type(cbuf_32.data[_654]), spvFSub(fma(_364, _1002, _360.y), _1002), _1002), in.fs_in_attr6.y)); out.frag_color2.z = spvFMul(as_type(cbuf_32.data[2u + buf2_dword_off]), spvFMul(fma(as_type(cbuf_32.data[_654]), spvFSub(fma(_364, _1003, _360.z), _1003), _1003), in.fs_in_attr6.z)); out.frag_color2.w = _1127 ? _1121 : _876.x; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_701, _712); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_28.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr4.y)); out.frag_color1.z = as_type(cbuf_36.data[((0u + ((_705 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _1127 ? _1121 : spvFMul(as_type(cbuf_32.data[56u + buf2_dword_off]), 0.0039215688593685626983642578125); if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _680, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _676, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _658, 0.500488758087158203125); out.frag_color0.w = _1127 ? _1121 : 0.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xdbb222eb [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc829ee58 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr4.x; out.out_attr0.y = in.vs_in_attr4.y; out.out_attr0.z = in.vs_in_attr4.z; out.out_attr0.w = in.vs_in_attr4.w; uint _207 = (cbuf_12.data[20u + buf7_dword_off] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _213 = ((0u + ((_207 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _226 = uint4(cbuf_16.data[_213 + 0u], cbuf_16.data[_213 + 1u], cbuf_16.data[_213 + 2u], cbuf_16.data[_213 + 3u]); uint _227 = _226.x; uint _228 = _226.y; uint _229 = _226.z; uint _234 = ((0u + ((_207 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _247 = uint4(cbuf_16.data[_234 + 0u], cbuf_16.data[_234 + 1u], cbuf_16.data[_234 + 2u], cbuf_16.data[_234 + 3u]); uint _248 = _247.x; uint _249 = _247.y; uint _250 = _247.z; uint _255 = ((0u + (_207 * 16u)) + buf8_off) >> 2u; uint4 _268 = uint4(cbuf_16.data[_255 + 0u], cbuf_16.data[_255 + 1u], cbuf_16.data[_255 + 2u], cbuf_16.data[_255 + 3u]); uint _269 = _268.x; uint _270 = _268.y; uint _271 = _268.z; float _370 = spvFSub(fma(as_type(_227), in.vs_in_attr0.x, fma(as_type(_228), in.vs_in_attr0.y, fma(as_type(_229), in.vs_in_attr0.z, as_type(_226.w)))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _374 = spvFSub(fma(as_type(_248), in.vs_in_attr0.x, fma(as_type(_249), in.vs_in_attr0.y, fma(as_type(_250), in.vs_in_attr0.z, as_type(_247.w)))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _388 = spvFSub(fma(as_type(_269), in.vs_in_attr0.x, fma(as_type(_270), in.vs_in_attr0.y, fma(as_type(_271), in.vs_in_attr0.z, as_type(_268.w)))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _398 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _370, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _400 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _370, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _402 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _370, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _404 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _370, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _398; out.gl_Position.y = _400; out.gl_Position.z = _402; out.gl_Position.w = _404; float _478 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _481 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _484 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _487 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _490 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _492 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _520 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _522 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _523 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr1.x = fma(as_type(_269), _523, fma(as_type(_270), _492, spvFMul(as_type(_271), _484))); out.out_attr1.y = fma(as_type(_248), _523, fma(as_type(_249), _492, spvFMul(as_type(_250), _484))); out.out_attr1.z = fma(as_type(_227), _523, fma(as_type(_228), _492, spvFMul(as_type(_229), _484))); out.out_attr1.w = 0.0; out.out_attr2.x = fma(as_type(_269), _520, fma(as_type(_270), _487, spvFMul(as_type(_271), _478))); out.out_attr2.y = fma(as_type(_248), _520, fma(as_type(_249), _487, spvFMul(as_type(_250), _478))); out.out_attr2.z = fma(as_type(_227), _520, fma(as_type(_228), _487, spvFMul(as_type(_229), _478))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(_269), _522, fma(as_type(_270), _490, spvFMul(as_type(_271), _481))); out.out_attr3.y = fma(as_type(_248), _522, fma(as_type(_249), _490, spvFMul(as_type(_250), _481))); out.out_attr3.z = fma(as_type(_227), _522, fma(as_type(_228), _490, spvFMul(as_type(_229), _481))); out.out_attr3.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr4.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr4.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr5.x = fma(as_type(cbuf_12.data[12u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_12.data[14u + buf7_dword_off])); out.out_attr5.y = fma(as_type(cbuf_12.data[13u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_12.data[15u + buf7_dword_off])); out.out_attr5.z = fma(as_type(cbuf_8.data[12u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[14u + buf10_dword_off])); out.out_attr5.w = fma(as_type(cbuf_8.data[13u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[15u + buf10_dword_off])); out.out_attr6.x = _398; out.out_attr6.y = _400; out.out_attr6.z = _402; out.out_attr6.w = _404; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[16]; }; struct fs_cbuf_block_f32_2 { uint data[216]; }; struct fs_cbuf_block_f32_3 { uint data[44]; }; struct fs_cbuf_block_f32_4 { uint data[104]; }; struct fs_cbuf_block_f32_5 { uint data[168]; }; struct fs_cbuf_block_f32_6 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_36 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_48 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_52 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_40 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_28 [[buffer(15)]], texture2d fs_img120 [[texture(0)]], texture2d fs_img80 [[texture(1)]], texture2d fs_img112 [[texture(2)]], texture2d fs_img136 [[texture(3)]], texture2d fs_img72 [[texture(4)]], texture2d fs_img104 [[texture(5)]], texture2d fs_img64 [[texture(6)]], texture2d fs_img96 [[texture(7)]], texture2d fs_img128 [[texture(8)]], texture2d fs_img56 [[texture(9)]], texture2d fs_img88 [[texture(10)]], sampler fs_samp24 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp4 [[sampler(4)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _154 = uint(gl_FrontFacing); float4 _187 = fs_img120.sample(fs_samp24, float2(fma(in.fs_in_attr5.z, as_type(cbuf_32.data[56u + buf0_dword_off]), as_type(cbuf_32.data[58u + buf0_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_32.data[57u + buf0_dword_off]), as_type(cbuf_32.data[59u + buf0_dword_off])))); float _270 = fma(as_type(cbuf_36.data[12u + buf1_dword_off]), _187.x, as_type(cbuf_36.data[14u + buf1_dword_off])); float _305 = (0.0 < _270) ? fma(-_270, spvFSub(0.0, in.fs_in_attr0.w), in.fs_in_attr0.w) : fma(_270, spvFSub(1.0, in.fs_in_attr0.w), in.fs_in_attr0.w); float _332 = fast::clamp(fast::max(_305, _305), 0.0, 1.0); float _348 = spvFMul(_332, _332); float _349 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _372 = 1.0 / fma(as_type(cbuf_48.data[32u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_48.data[33u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_48.data[34u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_48.data[35u + buf2_dword_off]), in.fs_in_attr6.w)))); uint _377 = 40u + buf3_dword_off; uint _389 = 43u + buf3_dword_off; float _392 = spvFMul(in.fs_in_attr1.x, _349); float _394 = spvFMul(in.fs_in_attr1.y, _349); float _395 = spvFMul(in.fs_in_attr1.z, _349); float _397 = spvFMul(fma(in.fs_in_attr1.y, in.fs_in_attr2.z, -spvFMul(in.fs_in_attr1.z, in.fs_in_attr2.y)), in.fs_in_attr2.w); float _398 = spvFMul(fma(in.fs_in_attr1.z, in.fs_in_attr2.x, -spvFMul(in.fs_in_attr1.x, in.fs_in_attr2.z)), in.fs_in_attr2.w); float _399 = spvFMul(fma(in.fs_in_attr1.x, in.fs_in_attr2.y, -spvFMul(in.fs_in_attr1.y, in.fs_in_attr2.x)), in.fs_in_attr2.w); float _400 = spvFMul(fma(in.fs_in_attr1.y, in.fs_in_attr3.z, -spvFMul(in.fs_in_attr1.z, in.fs_in_attr3.y)), in.fs_in_attr3.w); float _401 = spvFMul(fma(in.fs_in_attr1.z, in.fs_in_attr3.x, -spvFMul(in.fs_in_attr1.x, in.fs_in_attr3.z)), in.fs_in_attr3.w); float _402 = spvFMul(fma(in.fs_in_attr1.x, in.fs_in_attr3.y, -spvFMul(in.fs_in_attr1.y, in.fs_in_attr3.x)), in.fs_in_attr3.w); float _405 = fma(-fma(as_type(cbuf_48.data[20u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_48.data[21u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_48.data[22u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_48.data[23u + buf2_dword_off]), in.fs_in_attr6.w)))), _372, as_type(cbuf_48.data[183u + buf2_dword_off])); float _408 = fma(-fma(as_type(cbuf_48.data[24u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_48.data[25u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_48.data[26u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_48.data[27u + buf2_dword_off]), in.fs_in_attr6.w)))), _372, as_type(cbuf_48.data[187u + buf2_dword_off])); float _411 = fma(-fma(as_type(cbuf_48.data[28u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_48.data[29u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_48.data[30u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_48.data[31u + buf2_dword_off]), in.fs_in_attr6.w)))), _372, as_type(cbuf_48.data[191u + buf2_dword_off])); float _414 = fma(_348, 3.0, -spvFMul(spvFMul(_332, _348), 2.0)); bool _415 = 0u == _154; uint _428; uint _429; uint _430; if (_415) { _428 = as_type(fast::max(-_395, -_395)); _429 = as_type(fast::max(-_392, -_392)); _430 = as_type(fast::max(-_394, -_394)); } else { _428 = as_type(_395); _429 = _154; _430 = as_type(_392); } uint _433; uint _434; if (!_415) { _433 = _430; _434 = as_type(_394); } else { _433 = _429; _434 = _430; } float4 _485 = fs_img80.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf0_dword_off]), in.fs_in_attr4.x, as_type(cbuf_32.data[14u + buf0_dword_off])), fma(as_type(cbuf_32.data[13u + buf0_dword_off]), in.fs_in_attr4.y, as_type(cbuf_32.data[15u + buf0_dword_off])))); float4 _493 = fs_img112.sample(fs_samp16, float2(fma(in.fs_in_attr4.z, as_type(cbuf_32.data[40u + buf0_dword_off]), as_type(cbuf_32.data[42u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_32.data[41u + buf0_dword_off]), as_type(cbuf_32.data[43u + buf0_dword_off])))); float4 _505 = fs_img136.sample(fs_samp20, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float4 _584 = fs_img72.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_32.data[8u + buf0_dword_off]), as_type(cbuf_32.data[10u + buf0_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_32.data[9u + buf0_dword_off]), as_type(cbuf_32.data[11u + buf0_dword_off])))); float _585 = _584.x; float4 _590 = fs_img104.sample(fs_samp8, float2(fma(in.fs_in_attr4.z, as_type(cbuf_32.data[36u + buf0_dword_off]), as_type(cbuf_32.data[38u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_32.data[37u + buf0_dword_off]), as_type(cbuf_32.data[39u + buf0_dword_off])))); float4 _608 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf0_dword_off]), in.fs_in_attr4.x, as_type(cbuf_32.data[6u + buf0_dword_off])), fma(as_type(cbuf_32.data[5u + buf0_dword_off]), in.fs_in_attr4.y, as_type(cbuf_32.data[7u + buf0_dword_off])))); float _609 = _608.x; float _610 = _608.y; float _611 = _608.z; float4 _616 = fs_img96.sample(fs_samp8, float2(fma(in.fs_in_attr4.z, as_type(cbuf_32.data[32u + buf0_dword_off]), as_type(cbuf_32.data[34u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_32.data[33u + buf0_dword_off]), as_type(cbuf_32.data[35u + buf0_dword_off])))); float _617 = _616.x; float _618 = _616.y; float _619 = _616.z; uint _647 = uint(in.fs_in_attr1.w) * 13u; float4 _653 = fs_img128.sample(fs_samp20, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float _654 = _653.x; float _655 = _653.y; float _656 = _653.z; float4 _676 = fs_img56.sample(fs_samp4, float2(fma(in.fs_in_attr4.x, as_type(cbuf_32.data[0u + buf0_dword_off]), as_type(cbuf_32.data[2u + buf0_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_32.data[1u + buf0_dword_off]), as_type(cbuf_32.data[3u + buf0_dword_off])))); float _677 = _676.x; float _678 = _676.y; float _679 = _676.z; float _680 = _676.w; float4 _685 = fs_img88.sample(fs_samp4, float2(fma(in.fs_in_attr4.z, as_type(cbuf_32.data[28u + buf0_dword_off]), as_type(cbuf_32.data[30u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_32.data[29u + buf0_dword_off]), as_type(cbuf_32.data[31u + buf0_dword_off])))); uint _708 = 12u + buf3_dword_off; float _719 = fma(2.0, _485.y, -1.0); float _720 = spvFMul(fma(2.0, _485.x, -1.0), fma(2.0, _485.w, -1.0)); float _721 = fma(2.0, _493.y, -1.0); float _722 = spvFMul(fma(2.0, _493.x, -1.0), fma(2.0, _493.w, -1.0)); float _737 = fma(2.0, _505.z, -1.0); float _744 = fma(2.0, _505.y, -1.0); float _746 = rsqrt(fma(in.fs_in_attr2.x, in.fs_in_attr2.x, fma(in.fs_in_attr2.y, in.fs_in_attr2.y, spvFMul(in.fs_in_attr2.z, in.fs_in_attr2.z)))); float _748 = rsqrt(fma(in.fs_in_attr3.x, in.fs_in_attr3.x, fma(in.fs_in_attr3.y, in.fs_in_attr3.y, spvFMul(in.fs_in_attr3.z, in.fs_in_attr3.z)))); float _750 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_720, _720), spvFMul(_719, _719)), 0.0, 1.0))); float _751 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_722, _722), spvFMul(_721, _721)), 0.0, 1.0))); float _753 = fma(2.0, _505.x, -1.0); float _756 = rsqrt(fma(_397, _397, fma(_398, _398, spvFMul(_399, _399)))); float _758 = rsqrt(fma(_400, _400, fma(_401, _401, spvFMul(_402, _402)))); float _779 = rsqrt(fma(_753, _753, fma(_744, _744, spvFMul(_737, _737)))); float _787 = fma(spvFMul(_399, _756), _720, fma(spvFMul(in.fs_in_attr2.z, _746), _719, spvFMul(as_type(_428), _750))); float _792 = rsqrt(fma(_405, _405, fma(_408, _408, spvFMul(_411, _411)))); float _793 = spvFMul(_737, _779); float _797 = fma(spvFMul(_398, _756), _720, fma(spvFMul(in.fs_in_attr2.y, _746), _719, spvFMul(as_type(_434), _750))); float _801 = spvFMul(_744, _779); float _802 = fma(_411, _792, _793); float _803 = fma(spvFMul(_397, _756), _720, fma(spvFMul(in.fs_in_attr2.x, _746), _719, spvFMul(as_type(_433), _750))); float _806 = fma(_414, spvFSub(fma(spvFMul(_402, _758), _722, fma(spvFMul(in.fs_in_attr3.z, _748), _721, spvFMul(as_type(_428), _751))), _787), _787); float _807 = spvFMul(_753, _779); float _810 = fast::clamp(spvFAdd(as_type(cbuf_52.data[41u + buf3_dword_off]), _505.w), 0.0, 1.0); float _811 = fma(_408, _792, _801); float _814 = fma(_414, spvFSub(fma(spvFMul(_401, _758), _722, fma(spvFMul(in.fs_in_attr3.y, _748), _721, spvFMul(as_type(_434), _751))), _797), _797); float _818 = fma(_405, _792, _807); float _820 = fma(_414, spvFSub(fma(spvFMul(_400, _758), _722, fma(spvFMul(in.fs_in_attr3.x, _748), _721, spvFMul(as_type(_433), _751))), _803), _803); float _825 = spvFMul(as_type(cbuf_40.data[8u + buf5_dword_off]), 0.00390625); float _830 = spvFMul(fma(_414, spvFSub(_590.x, _585), _585), _825); float _832 = rsqrt(fma(_818, _818, fma(_811, _811, spvFMul(_802, _802)))); float _842 = rsqrt(fma(_820, _820, fma(_814, _814, spvFMul(_806, _806)))); float _855 = spvFMul(_802, _832); float _856 = spvFMul(_806, _842); float _858 = exp2(spvFMul(13.0, _830)); float _860 = fma(fast::max(0.001000000047497451305389404296875, exp2(spvFMul(as_type(cbuf_52.data[42u + buf3_dword_off]), log2(_810)))), spvFSub(100.0, as_type(cbuf_52.data[_377])), as_type(cbuf_52.data[_377])); float _861 = spvFMul(_811, _832); float _863 = spvFMul(_814, _842); float _865 = spvFMul(_818, _832); float _870 = spvFMul(_820, _842); bool _876 = (_611 == 0.0) && (_610 == 0.0); bool _877 = (_619 == 0.0) && (_618 == 0.0); float _894 = _876 ? _609 : _611; float _895 = _876 ? _609 : _610; float _904 = fast::max(1.0, spvFMul(spvFMul(_858, _860), 1.0 / fma(_858, 0.01000213623046875, _860))); float _919 = spvFMul(_654, spvFMul(as_type(cbuf_28.data[0u + buf6_dword_off]), _654)); float _920 = spvFMul(_655, spvFMul(as_type(cbuf_28.data[1u + buf6_dword_off]), _655)); float _921 = spvFMul(_656, spvFMul(as_type(cbuf_28.data[2u + buf6_dword_off]), _656)); float _926 = fma(_414, spvFSub(_617, _609), _609); float _927 = fma(_414, spvFSub(_877 ? _617 : _618, _895), _895); float _928 = fma(_414, spvFSub(_877 ? _617 : _619, _894), _894); float _937 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(spvFMul(_405, _792), _865, fma(spvFMul(_408, _792), _861, spvFMul(spvFMul(_411, _792), _855))), 0.0, 1.0))))); float _942 = spvFMul(_810, spvFMul(as_type(cbuf_52.data[_389]), _919)); float _943 = spvFMul(_810, spvFMul(as_type(cbuf_52.data[_389]), _920)); float _944 = spvFMul(_810, spvFMul(as_type(cbuf_52.data[_389]), _921)); float _946 = fast::clamp(fma(_807, _870, fma(_801, _863, spvFMul(_856, _793))), 0.0, 1.0); float _950 = spvFMul(exp2(spvFMul(_904, log2(fast::clamp(fma(_865, _870, fma(_861, _863, spvFMul(_856, _855))), 0.0, 1.0)))), fma(0.125, _904, 0.25)); float _1006 = spvFMul(fma(_414, spvFSub(_685.w, _680), _680), as_type(cbuf_44.data[((12u + ((_647 + 7u) * 16u)) + buf4_off) >> 2u])); bool _1010 = as_type(cbuf_40.data[22u + buf5_dword_off]) != 0.0; float _1034 = _1010 ? _1006 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(-_926, _937, spvFAdd(_926, _937)), spvFMul(_942, _950)), spvFMul(as_type(cbuf_40.data[4u + buf5_dword_off]), as_type(cbuf_52.data[_708]))); out.frag_color5.y = spvFMul(spvFMul(fma(-_927, _937, spvFAdd(_927, _937)), spvFMul(_943, _950)), spvFMul(as_type(cbuf_40.data[5u + buf5_dword_off]), as_type(cbuf_52.data[_708]))); out.frag_color5.z = spvFMul(spvFMul(fma(-_928, _937, spvFAdd(_928, _937)), spvFMul(_944, _950)), spvFMul(as_type(cbuf_40.data[6u + buf5_dword_off]), as_type(cbuf_52.data[_708]))); out.frag_color5.w = _1010 ? _1006 : as_type(cbuf_44.data[((12u + ((_647 + 8u) * 16u)) + buf4_off) >> 2u]); if (false) { discard_fragment(); } out.frag_color4.x = spvFMul(fma(fma(-_926, _946, _946), _942, fma(as_type(cbuf_52.data[_389]), _919, -_942)), spvFSub(1.0, _926)); out.frag_color4.y = spvFMul(fma(fma(-_927, _946, _946), _943, fma(as_type(cbuf_52.data[_389]), _920, -_943)), spvFSub(1.0, _927)); out.frag_color4.z = spvFMul(fma(fma(-_928, _946, _946), _944, fma(as_type(cbuf_52.data[_389]), _921, -_944)), spvFSub(1.0, _928)); out.frag_color4.w = _1010 ? _1006 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_926); out.frag_color3.y = sqrt(_927); out.frag_color3.z = sqrt(_928); out.frag_color3.w = _1010 ? _1006 : spvFMul(0.0039215688593685626983642578125, float(cbuf_44.data[((0u + ((_647 + 6u) * 16u)) + buf4_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_40.data[0u + buf5_dword_off]), fma(_414, spvFSub(_685.x, _677), _677)); out.frag_color2.y = spvFMul(as_type(cbuf_40.data[1u + buf5_dword_off]), fma(_414, spvFSub(_685.y, _678), _678)); out.frag_color2.z = spvFMul(as_type(cbuf_40.data[2u + buf5_dword_off]), fma(_414, spvFSub(_685.z, _679), _679)); out.frag_color2.w = _1006; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_825, _830); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_36.data[4u + buf1_dword_off]), in.fs_in_attr0.y)); out.frag_color1.z = _653.w; out.frag_color1.w = _1034; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _870, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _863, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _856, 0.500488758087158203125); out.frag_color0.w = _1034; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xbb10e440 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x9da6aacb [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _171 = (cbuf_12.data[20u + buf7_dword_off] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _177 = ((0u + ((_171 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _190 = uint4(cbuf_16.data[_177 + 0u], cbuf_16.data[_177 + 1u], cbuf_16.data[_177 + 2u], cbuf_16.data[_177 + 3u]); uint _191 = _190.x; uint _192 = _190.y; uint _193 = _190.z; uint _198 = ((0u + ((_171 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _211 = uint4(cbuf_16.data[_198 + 0u], cbuf_16.data[_198 + 1u], cbuf_16.data[_198 + 2u], cbuf_16.data[_198 + 3u]); uint _212 = _211.x; uint _213 = _211.y; uint _214 = _211.z; uint _219 = ((0u + (_171 * 16u)) + buf8_off) >> 2u; uint4 _232 = uint4(cbuf_16.data[_219 + 0u], cbuf_16.data[_219 + 1u], cbuf_16.data[_219 + 2u], cbuf_16.data[_219 + 3u]); uint _233 = _232.x; uint _234 = _232.y; uint _235 = _232.z; float _334 = spvFSub(fma(as_type(_191), in.vs_in_attr0.x, fma(as_type(_192), in.vs_in_attr0.y, fma(as_type(_193), in.vs_in_attr0.z, as_type(_190.w)))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _338 = spvFSub(fma(as_type(_212), in.vs_in_attr0.x, fma(as_type(_213), in.vs_in_attr0.y, fma(as_type(_214), in.vs_in_attr0.z, as_type(_211.w)))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _352 = spvFSub(fma(as_type(_233), in.vs_in_attr0.x, fma(as_type(_234), in.vs_in_attr0.y, fma(as_type(_235), in.vs_in_attr0.z, as_type(_232.w)))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _362 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _334, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _364 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _334, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _366 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _334, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _368 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _334, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _362; out.gl_Position.y = _364; out.gl_Position.z = _366; out.gl_Position.w = _368; float _411 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _414 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _417 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _419 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _437 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _438 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_233), _438, fma(as_type(_234), _419, spvFMul(as_type(_235), _414))); out.out_attr0.y = fma(as_type(_212), _438, fma(as_type(_213), _419, spvFMul(as_type(_214), _414))); out.out_attr0.z = fma(as_type(_191), _438, fma(as_type(_192), _419, spvFMul(as_type(_193), _414))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_233), _437, fma(as_type(_234), _417, spvFMul(as_type(_235), _411))); out.out_attr1.y = fma(as_type(_212), _437, fma(as_type(_213), _417, spvFMul(as_type(_214), _411))); out.out_attr1.z = fma(as_type(_191), _437, fma(as_type(_192), _417, spvFMul(as_type(_193), _411))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_12.data[12u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(cbuf_12.data[14u + buf7_dword_off])); out.out_attr3.w = fma(as_type(cbuf_12.data[13u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(cbuf_12.data[15u + buf7_dword_off])); out.out_attr4.x = _362; out.out_attr4.y = _364; out.out_attr4.z = _366; out.out_attr4.w = _368; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[44]; }; struct fs_cbuf_block_f32_2 { uint data[100]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[164]; }; struct fs_cbuf_block_f32_6 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_44 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_48 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_32 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_36 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_24 [[buffer(15)]], texture2d fs_img76 [[texture(0)]], texture2d fs_img92 [[texture(1)]], texture2d fs_img84 [[texture(2)]], texture2d fs_img68 [[texture(3)]], texture2d fs_img60 [[texture(4)]], texture2d fs_img52 [[texture(5)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp20 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _148 = uint(gl_FrontFacing); float _278 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _294 = 1.0 / fma(as_type(cbuf_44.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); uint _296 = 40u + buf1_dword_off; uint _308 = 43u + buf1_dword_off; float _311 = spvFMul(in.fs_in_attr0.x, _278); float _312 = spvFMul(in.fs_in_attr0.y, _278); float _314 = spvFMul(in.fs_in_attr0.z, _278); float _316 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _317 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _318 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _321 = fma(-fma(as_type(cbuf_44.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _294, as_type(cbuf_44.data[183u + buf0_dword_off])); float _324 = fma(-fma(as_type(cbuf_44.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _294, as_type(cbuf_44.data[187u + buf0_dword_off])); float _327 = fma(-fma(as_type(cbuf_44.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_44.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_44.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_44.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))), _294, as_type(cbuf_44.data[191u + buf0_dword_off])); bool _328 = 0u == _148; uint _333; if (_328) { _333 = as_type(fast::max(-_311, -_311)); } else { _333 = _148; } uint _342; uint _343; if (_328) { _342 = as_type(fast::max(-_314, -_314)); _343 = as_type(fast::max(-_312, -_312)); } else { _342 = as_type(_312); _343 = as_type(_314); } uint _346; uint _347; uint _348; if (!_328) { _346 = as_type(_311); _347 = _342; _348 = _343; } else { _346 = _333; _347 = _343; _348 = _342; } uint _350 = 12u + buf1_dword_off; float4 _386 = fs_img76.sample(fs_samp16, float2(fma(as_type(cbuf_28.data[12u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_28.data[14u + buf2_dword_off])), fma(as_type(cbuf_28.data[13u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_28.data[15u + buf2_dword_off])))); float4 _394 = fs_img92.sample(fs_samp20, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float4 _433 = fs_img84.sample(fs_samp20, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _434 = _433.x; float _435 = _433.y; float _436 = _433.z; float4 _448 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[8u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_28.data[10u + buf2_dword_off])), fma(as_type(cbuf_28.data[9u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_28.data[11u + buf2_dword_off])))); float4 _474 = fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[4u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_28.data[6u + buf2_dword_off])), fma(as_type(cbuf_28.data[5u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_28.data[7u + buf2_dword_off])))); float _475 = _474.x; float _476 = _474.y; float _477 = _474.z; uint _479 = uint(in.fs_in_attr0.w) * 13u; float4 _493 = fs_img52.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_28.data[0u + buf2_dword_off]), as_type(cbuf_28.data[2u + buf2_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_28.data[1u + buf2_dword_off]), as_type(cbuf_28.data[3u + buf2_dword_off])))); float _523 = fma(2.0, _386.y, -1.0); float _524 = spvFMul(fma(2.0, _386.x, -1.0), fma(2.0, _386.w, -1.0)); float _525 = fma(2.0, _394.z, -1.0); float _529 = fma(2.0, _394.y, -1.0); float _536 = fma(2.0, _394.x, -1.0); float _546 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _548 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_524, _524), spvFMul(_523, _523)), 0.0, 1.0))); float _550 = rsqrt(fma(_536, _536, fma(_529, _529, spvFMul(_525, _525)))); float _552 = rsqrt(fma(_316, _316, fma(_317, _317, spvFMul(_318, _318)))); float _555 = rsqrt(fma(_321, _321, fma(_324, _324, spvFMul(_327, _327)))); float _556 = spvFMul(_525, _550); float _562 = spvFMul(_529, _550); float _563 = fma(_327, _555, _556); float _569 = fma(spvFMul(_318, _552), _524, fma(spvFMul(in.fs_in_attr1.z, _546), _523, spvFMul(as_type(_348), _548))); float _570 = spvFMul(_536, _550); float _573 = fast::clamp(spvFAdd(as_type(cbuf_48.data[41u + buf1_dword_off]), _394.w), 0.0, 1.0); float _574 = fma(_324, _555, _562); float _578 = fma(spvFMul(_317, _552), _524, fma(spvFMul(in.fs_in_attr1.y, _546), _523, spvFMul(as_type(_347), _548))); float _581 = fma(_321, _555, _570); float _583 = fma(spvFMul(_316, _552), _524, fma(spvFMul(in.fs_in_attr1.x, _546), _523, spvFMul(as_type(_346), _548))); float _587 = spvFMul(as_type(cbuf_36.data[8u + buf5_dword_off]), 0.00390625); float _592 = spvFMul(_448.x, _587); float _594 = rsqrt(fma(_581, _581, fma(_574, _574, spvFMul(_563, _563)))); float _604 = rsqrt(fma(_583, _583, fma(_578, _578, spvFMul(_569, _569)))); float _613 = spvFMul(_563, _594); float _614 = spvFMul(_569, _604); float _616 = exp2(spvFMul(13.0, _592)); float _618 = fma(fast::max(0.001000000047497451305389404296875, exp2(spvFMul(as_type(cbuf_48.data[42u + buf1_dword_off]), log2(_573)))), spvFSub(100.0, as_type(cbuf_48.data[_296])), as_type(cbuf_48.data[_296])); float _619 = spvFMul(_574, _594); float _621 = spvFMul(_578, _604); float _625 = spvFMul(_581, _594); float _630 = spvFMul(_583, _604); float _658 = fast::max(1.0, spvFMul(spvFMul(_616, _618), 1.0 / fma(_616, 0.01000213623046875, _618))); bool _670 = (_477 == 0.0) && (_476 == 0.0); float _671 = spvFMul(_434, spvFMul(as_type(cbuf_24.data[0u + buf6_dword_off]), _434)); float _672 = spvFMul(_435, spvFMul(as_type(cbuf_24.data[1u + buf6_dword_off]), _435)); float _673 = spvFMul(_436, spvFMul(as_type(cbuf_24.data[2u + buf6_dword_off]), _436)); float _678 = _670 ? _475 : _477; float _679 = _670 ? _475 : _476; float _688 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(spvFMul(_321, _555), _625, fma(spvFMul(_324, _555), _619, spvFMul(spvFMul(_327, _555), _613))), 0.0, 1.0))))); float _694 = spvFMul(_573, spvFMul(as_type(cbuf_48.data[_308]), _671)); float _695 = spvFMul(_573, spvFMul(as_type(cbuf_48.data[_308]), _672)); float _696 = spvFMul(_573, spvFMul(as_type(cbuf_48.data[_308]), _673)); float _698 = fast::clamp(fma(_570, _630, fma(_562, _621, spvFMul(_614, _556))), 0.0, 1.0); float _702 = spvFMul(exp2(spvFMul(_658, log2(fast::clamp(fma(_625, _630, fma(_619, _621, spvFMul(_614, _613))), 0.0, 1.0)))), fma(0.125, _658, 0.25)); float _752 = spvFMul(spvFMul(_493.w, in.fs_in_attr2.w), as_type(cbuf_40.data[((12u + ((_479 + 7u) * 16u)) + buf3_off) >> 2u])); bool _756 = as_type(cbuf_36.data[22u + buf5_dword_off]) != 0.0; float _780 = _756 ? _752 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(-_475, _688, spvFAdd(_475, _688)), spvFMul(_694, _702)), spvFMul(as_type(cbuf_36.data[4u + buf5_dword_off]), as_type(cbuf_48.data[_350]))); out.frag_color5.y = spvFMul(spvFMul(fma(-_679, _688, spvFAdd(_679, _688)), spvFMul(_695, _702)), spvFMul(as_type(cbuf_36.data[5u + buf5_dword_off]), as_type(cbuf_48.data[_350]))); out.frag_color5.z = spvFMul(spvFMul(fma(-_678, _688, spvFAdd(_678, _688)), spvFMul(_696, _702)), spvFMul(as_type(cbuf_36.data[6u + buf5_dword_off]), as_type(cbuf_48.data[_350]))); out.frag_color5.w = _756 ? _752 : as_type(cbuf_40.data[((12u + ((_479 + 8u) * 16u)) + buf3_off) >> 2u]); if (false) { discard_fragment(); } out.frag_color4.x = spvFMul(fma(fma(-_475, _698, _698), _694, fma(as_type(cbuf_48.data[_308]), _671, -_694)), spvFSub(1.0, _475)); out.frag_color4.y = spvFMul(fma(fma(-_679, _698, _698), _695, fma(as_type(cbuf_48.data[_308]), _672, -_695)), spvFSub(1.0, _679)); out.frag_color4.z = spvFMul(fma(fma(-_678, _698, _698), _696, fma(as_type(cbuf_48.data[_308]), _673, -_696)), spvFSub(1.0, _678)); out.frag_color4.w = _756 ? _752 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_475); out.frag_color3.y = sqrt(_679); out.frag_color3.z = sqrt(_678); out.frag_color3.w = _756 ? _752 : spvFMul(0.0039215688593685626983642578125, float(cbuf_40.data[((0u + ((_479 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_36.data[0u + buf5_dword_off]), _493.x); out.frag_color2.y = spvFMul(as_type(cbuf_36.data[1u + buf5_dword_off]), _493.y); out.frag_color2.z = spvFMul(as_type(cbuf_36.data[2u + buf5_dword_off]), _493.z); out.frag_color2.w = _752; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_587, _592); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_32.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr2.y)); out.frag_color1.z = _433.w; out.frag_color1.w = _780; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _630, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _621, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _614, 0.500488758087158203125); out.frag_color0.w = _780; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x1c3953c6 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x9da6aacb (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _171 = (cbuf_12.data[20u + buf7_dword_off] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _177 = ((0u + ((_171 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _190 = uint4(cbuf_16.data[_177 + 0u], cbuf_16.data[_177 + 1u], cbuf_16.data[_177 + 2u], cbuf_16.data[_177 + 3u]); uint _191 = _190.x; uint _192 = _190.y; uint _193 = _190.z; uint _198 = ((0u + ((_171 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _211 = uint4(cbuf_16.data[_198 + 0u], cbuf_16.data[_198 + 1u], cbuf_16.data[_198 + 2u], cbuf_16.data[_198 + 3u]); uint _212 = _211.x; uint _213 = _211.y; uint _214 = _211.z; uint _219 = ((0u + (_171 * 16u)) + buf8_off) >> 2u; uint4 _232 = uint4(cbuf_16.data[_219 + 0u], cbuf_16.data[_219 + 1u], cbuf_16.data[_219 + 2u], cbuf_16.data[_219 + 3u]); uint _233 = _232.x; uint _234 = _232.y; uint _235 = _232.z; float _334 = spvFSub(fma(as_type(_191), in.vs_in_attr0.x, fma(as_type(_192), in.vs_in_attr0.y, fma(as_type(_193), in.vs_in_attr0.z, as_type(_190.w)))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _338 = spvFSub(fma(as_type(_212), in.vs_in_attr0.x, fma(as_type(_213), in.vs_in_attr0.y, fma(as_type(_214), in.vs_in_attr0.z, as_type(_211.w)))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _352 = spvFSub(fma(as_type(_233), in.vs_in_attr0.x, fma(as_type(_234), in.vs_in_attr0.y, fma(as_type(_235), in.vs_in_attr0.z, as_type(_232.w)))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _362 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _334, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _364 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _334, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _366 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _334, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _368 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _334, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _362; out.gl_Position.y = _364; out.gl_Position.z = _366; out.gl_Position.w = _368; float _411 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _414 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _417 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _419 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _437 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _438 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_233), _438, fma(as_type(_234), _419, spvFMul(as_type(_235), _414))); out.out_attr0.y = fma(as_type(_212), _438, fma(as_type(_213), _419, spvFMul(as_type(_214), _414))); out.out_attr0.z = fma(as_type(_191), _438, fma(as_type(_192), _419, spvFMul(as_type(_193), _414))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_233), _437, fma(as_type(_234), _417, spvFMul(as_type(_235), _411))); out.out_attr1.y = fma(as_type(_212), _437, fma(as_type(_213), _417, spvFMul(as_type(_214), _411))); out.out_attr1.z = fma(as_type(_191), _437, fma(as_type(_192), _417, spvFMul(as_type(_193), _411))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_12.data[12u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(cbuf_12.data[14u + buf7_dword_off])); out.out_attr3.w = fma(as_type(cbuf_12.data[13u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(cbuf_12.data[15u + buf7_dword_off])); out.out_attr4.x = _362; out.out_attr4.y = _364; out.out_attr4.z = _366; out.out_attr4.w = _368; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[44]; }; struct fs_cbuf_block_f32_2 { uint data[100]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[164]; }; struct fs_cbuf_block_f32_5 { uint data[8]; }; struct fs_cbuf_block_f32_6 { uint data[4]; }; constant uint _123 = {}; constant uint _124 = {}; constant uint _125 = {}; constant uint _126 = {}; constant uint _127 = {}; constant uint _128 = {}; constant uint _129 = {}; constant uint _130 = {}; constant uint _131 = {}; constant uint _132 = {}; constant uint _133 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_48 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_52 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_44 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_36 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_28 [[buffer(15)]], texture2d fs_img104 [[texture(0)]], texture2d fs_img56 [[texture(1)]], texture2d fs_img80 [[texture(2)]], texture2d fs_img96 [[texture(3)]], texture2d fs_img88 [[texture(4)]], texture2d fs_img72 [[texture(5)]], texture2d fs_img64 [[texture(6)]], sampler fs_samp24 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp8 [[sampler(4)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _167 = uint(gl_FrontFacing); float _268 = 1.0 / in.fs_in_attr4.w; float _321 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _335 = fma(as_type(cbuf_48.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))); float _337 = 1.0 / fma(as_type(cbuf_48.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _342 = fs_img104.sample(fs_samp24, float2(spvFMul(0.25, spvFMul(as_type(cbuf_48.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr4.x), _268, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_48.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr4.y), _268, 0.5))))); uint _345 = 40u + buf1_dword_off; uint _357 = 43u + buf1_dword_off; float _360 = spvFMul(in.fs_in_attr0.x, _321); float _361 = spvFMul(in.fs_in_attr0.y, _321); float _362 = spvFMul(in.fs_in_attr0.z, _321); float _364 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _365 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _366 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _370 = fma(-fma(as_type(cbuf_48.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _337, as_type(cbuf_48.data[183u + buf0_dword_off])); float _374 = fma(-fma(as_type(cbuf_48.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _337, as_type(cbuf_48.data[187u + buf0_dword_off])); float _377 = fma(-_335, _337, as_type(cbuf_48.data[191u + buf0_dword_off])); bool _379 = 0u == _167; uint _392; uint _393; uint _394; if (_379) { _392 = as_type(fast::max(-_362, -_362)); _393 = as_type(fast::max(-_361, -_361)); _394 = as_type(fast::max(-_360, -_360)); } else { _392 = as_type(_362); _393 = as_type(_335); _394 = _167; } uint _398; uint _399; if (!_379) { _398 = as_type(_361); _399 = as_type(_360); } else { _398 = _393; _399 = _394; } uint _417 = uint(in.fs_in_attr0.w) * 13u; float4 _436 = fs_img56.sample(fs_samp4, float2(fma(as_type(cbuf_32.data[0u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[2u + buf2_dword_off])), fma(as_type(cbuf_32.data[1u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[3u + buf2_dword_off])))); float _437 = _436.x; uint _438 = as_type(_437); float _439 = _436.y; uint _440 = as_type(_439); float _441 = _436.z; uint _442 = as_type(_441); float _463 = spvFMul(_436.w, in.fs_in_attr2.w); float _465 = spvFMul(_463, as_type(cbuf_44.data[((12u + ((_417 + 7u) * 16u)) + buf3_off) >> 2u])); uint _466 = as_type(_465); bool _472 = (as_type(cbuf_40.data[20u + buf4_dword_off]) > fma(as_type(cbuf_40.data[21u + buf4_dword_off]), spvFAdd(-0.5, _342.w), _463)) || (_465 == 0.0); bool _473 = !_472; uint _948; uint _949; uint _950; uint _951; uint _952; uint _953; uint _954; uint _955; uint _956; uint _957; uint _958; uint _959; uint _960; uint _961; uint _962; uint _963; uint _964; uint _965; uint _966; bool _967; uint _968; uint _969; uint _970; uint _971; if (!_472) { float4 _503 = fs_img80.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[12u + buf2_dword_off]), as_type(cbuf_32.data[14u + buf2_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[13u + buf2_dword_off]), as_type(cbuf_32.data[15u + buf2_dword_off])))); float4 _511 = fs_img96.sample(fs_samp20, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float4 _548 = fs_img88.sample(fs_samp20, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _549 = _548.x; float _550 = _548.y; float _551 = _548.z; uint _554 = 12u + buf1_dword_off; float4 _567 = fs_img72.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[8u + buf2_dword_off]), as_type(cbuf_32.data[10u + buf2_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[9u + buf2_dword_off]), as_type(cbuf_32.data[11u + buf2_dword_off])))); float4 _579 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf2_dword_off])), fma(as_type(cbuf_32.data[5u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf2_dword_off])))); float _580 = _579.x; float _581 = _579.y; float _582 = _579.z; float _590 = fma(2.0, _503.y, -1.0); float _591 = spvFMul(fma(2.0, _503.x, -1.0), fma(2.0, _503.w, -1.0)); float _592 = fma(2.0, _511.z, -1.0); float _596 = fma(2.0, _511.y, -1.0); float _603 = fma(2.0, _511.x, -1.0); float _613 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _615 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_591, _591), spvFMul(_590, _590)), 0.0, 1.0))); float _617 = rsqrt(fma(_603, _603, fma(_596, _596, spvFMul(_592, _592)))); float _620 = rsqrt(fma(_364, _364, fma(_365, _365, spvFMul(_366, _366)))); float _623 = rsqrt(fma(_370, _370, fma(_374, _374, spvFMul(_377, _377)))); float _624 = spvFMul(_592, _617); float _630 = spvFMul(_596, _617); float _631 = fma(_377, _623, _624); float _637 = fma(spvFMul(_366, _620), _591, fma(spvFMul(in.fs_in_attr1.z, _613), _590, spvFMul(as_type(_392), _615))); float _638 = spvFMul(_603, _617); float _641 = fast::clamp(spvFAdd(as_type(cbuf_52.data[41u + buf1_dword_off]), _511.w), 0.0, 1.0); float _642 = fma(_374, _623, _630); float _646 = fma(spvFMul(_365, _620), _591, fma(spvFMul(in.fs_in_attr1.y, _613), _590, spvFMul(as_type(_398), _615))); float _649 = fma(_370, _623, _638); float _651 = fma(spvFMul(_364, _620), _591, fma(spvFMul(in.fs_in_attr1.x, _613), _590, spvFMul(as_type(_399), _615))); float _655 = spvFMul(as_type(cbuf_40.data[8u + buf4_dword_off]), 0.00390625); float _661 = spvFMul(_567.x, _655); float _663 = rsqrt(fma(_649, _649, fma(_642, _642, spvFMul(_631, _631)))); float _674 = rsqrt(fma(_651, _651, fma(_646, _646, spvFMul(_637, _637)))); float _682 = spvFMul(_631, _663); float _684 = spvFMul(_637, _674); float _685 = exp2(spvFMul(13.0, _661)); float _687 = fma(fast::max(0.001000000047497451305389404296875, exp2(spvFMul(as_type(cbuf_52.data[42u + buf1_dword_off]), log2(_641)))), spvFSub(100.0, as_type(cbuf_52.data[_345])), as_type(cbuf_52.data[_345])); float _688 = spvFMul(_642, _663); float _693 = spvFMul(_646, _674); float _694 = spvFMul(_649, _663); float _699 = spvFMul(_651, _674); float _724 = fast::max(1.0, spvFMul(spvFMul(_685, _687), 1.0 / fma(_685, 0.01000213623046875, _687))); bool _736 = (_582 == 0.0) && (_581 == 0.0); float _737 = spvFMul(_549, spvFMul(as_type(cbuf_28.data[0u + buf6_dword_off]), _549)); float _738 = spvFMul(_550, spvFMul(as_type(cbuf_28.data[1u + buf6_dword_off]), _550)); float _739 = spvFMul(_551, spvFMul(as_type(cbuf_28.data[2u + buf6_dword_off]), _551)); float _744 = _736 ? _580 : _582; float _745 = _736 ? _580 : _581; float _755 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(spvFMul(_370, _623), _694, fma(spvFMul(_374, _623), _688, spvFMul(spvFMul(_377, _623), _682))), 0.0, 1.0))))); float _758 = spvFMul(_641, spvFMul(as_type(cbuf_52.data[_357]), _737)); float _759 = spvFMul(_641, spvFMul(as_type(cbuf_52.data[_357]), _738)); float _760 = spvFMul(_641, spvFMul(as_type(cbuf_52.data[_357]), _739)); float _762 = fast::clamp(fma(_638, _699, fma(_630, _693, spvFMul(_684, _624))), 0.0, 1.0); float _766 = spvFMul(exp2(spvFMul(_724, log2(fast::clamp(fma(_694, _699, fma(_688, _693, spvFMul(_684, _682))), 0.0, 1.0)))), fma(0.125, _724, 0.25)); float _794 = fma(fma(-_745, _762, _762), _759, fma(as_type(cbuf_52.data[_357]), _738, -_759)); float _796 = fma(fma(-_744, _762, _762), _760, fma(as_type(cbuf_52.data[_357]), _739, -_760)); float _798 = spvFSub(1.0, _580); float _800 = spvFSub(1.0, _744); float _802 = spvFMul(fma(-_580, _755, spvFAdd(_580, _755)), spvFMul(_758, _766)); float _804 = spvFMul(fma(-_745, _755, spvFAdd(_745, _755)), spvFMul(_759, _766)); float _806 = spvFMul(fma(-_744, _755, spvFAdd(_744, _755)), spvFMul(_760, _766)); float _813 = spvFMul(as_type(cbuf_40.data[5u + buf4_dword_off]), as_type(cbuf_52.data[_554])); float _828 = spvFMul(as_type(cbuf_36.data[4u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u)]), in.fs_in_attr2.y); bool _842 = _473 && (!_472); uint _844; if (_842) { _844 = _417 + 6u; } else { _844 = as_type(_796); } uint _892; uint _893; uint _894; uint _895; uint _896; uint _897; uint _898; uint _899; uint _900; uint _901; uint _902; uint _903; uint _904; uint _905; if (_842) { bool _847 = as_type(cbuf_40.data[22u + buf4_dword_off]) != 0.0; _892 = as_type(fma(0.5, _684, 0.500488758087158203125)); _893 = as_type(spvFMul(_655, _661)); _894 = as_type(_847 ? _465 : 1.0); _895 = as_type(fma(0.5, _693, 0.500488758087158203125)); _896 = as_type(fma(0.5, _699, 0.500488758087158203125)); _897 = as_type(_847 ? _465 : 0.0); _898 = as_type(_548.w); _899 = as_type(spvFMul(0.100000001490116119384765625, _828)); _900 = as_type(_847 ? _465 : spvFMul(0.0039215688593685626983642578125, float(cbuf_44.data[((0u + (_844 * 16u)) + buf3_off) >> 2u]))); _901 = as_type(sqrt(_744)); _902 = as_type(sqrt(_580)); _903 = as_type(_465); _904 = as_type(sqrt(_745)); _905 = as_type(_847 ? _465 : as_type(cbuf_44.data[((12u + ((_417 + 8u) * 16u)) + buf3_off) >> 2u])); } else { _892 = as_type(_617); _893 = as_type(_551); _894 = as_type(_745); _895 = _442; _896 = _440; _897 = _438; _898 = _466; _899 = as_type(_813); _900 = as_type(_806); _901 = as_type(_800); _902 = as_type(_794); _903 = as_type(_804); _904 = as_type(_655); _905 = as_type(_802); } uint _926; uint _927; uint _928; uint _929; uint _930; uint _931; uint _932; uint _933; uint _934; uint _935; uint _936; uint _937; uint _938; uint _939; uint _940; uint _941; uint _942; uint _943; uint _944; uint _945; uint _946; uint _947; if (_473 && (!_842)) { _926 = as_type(_699); _927 = as_type(_828); _928 = as_type(_699); _929 = as_type(_798); _930 = as_type(_828); _931 = as_type(_699); _932 = as_type(_798); _933 = as_type(_828); _934 = as_type(_798); _935 = as_type(_828); _936 = as_type(_699); _937 = _905; _938 = as_type(_798); _939 = as_type(_828); _940 = _905; _941 = as_type(_699); _942 = as_type(_798); _943 = _905; _944 = as_type(_699); _945 = as_type(_828); _946 = _905; _947 = as_type(_798); } else { _926 = _892; _927 = _893; _928 = as_type(spvFMul(as_type(cbuf_40.data[2u + buf4_dword_off]), _441)); _929 = as_type(spvFMul(as_type(cbuf_40.data[1u + buf4_dword_off]), _439)); _930 = as_type(spvFMul(as_type(cbuf_40.data[0u + buf4_dword_off]), _437)); _931 = as_type(spvFMul(_796, _800)); _932 = as_type(spvFMul(_794, spvFSub(1.0, _745))); _933 = as_type(spvFMul(fma(fma(-_580, _762, _762), _758, fma(as_type(cbuf_52.data[_357]), _737, -_758)), _798)); _934 = as_type(spvFMul(_804, _813)); _935 = as_type(spvFMul(_802, spvFMul(as_type(cbuf_40.data[4u + buf4_dword_off]), as_type(cbuf_52.data[_554])))); _936 = as_type(spvFMul(_806, spvFMul(as_type(cbuf_40.data[6u + buf4_dword_off]), as_type(cbuf_52.data[_554])))); _937 = _894; _938 = _895; _939 = _896; _940 = _897; _941 = _898; _942 = _899; _943 = _900; _944 = _901; _945 = _902; _946 = _903; _947 = _904; } _948 = _926; _949 = _938; _950 = _939; _951 = _940; _952 = _941; _953 = _942; _954 = _927; _955 = _946; _956 = _928; _957 = _929; _958 = _930; _959 = _943; _960 = _944; _961 = _947; _962 = _945; _963 = _937; _964 = _931; _965 = _932; _966 = _933; _967 = _473; _968 = _905; _969 = _936; _970 = _934; _971 = _935; } else { _948 = _123; _949 = _442; _950 = _440; _951 = _438; _952 = _466; _953 = as_type(in.fs_in_attr1.z); _954 = _124; _955 = as_type(_366); _956 = _125; _957 = _126; _958 = _127; _959 = as_type(in.fs_in_attr1.x); _960 = as_type(in.fs_in_attr3.y); _961 = as_type(in.fs_in_attr3.x); _962 = as_type(_370); _963 = as_type(in.fs_in_attr2.w); _964 = _128; _965 = _129; _966 = _131; _967 = true; _968 = as_type(_377); _969 = _133; _970 = _132; _971 = _130; } if (!_967) { discard_fragment(); } out.frag_color5.x = as_type(_971); out.frag_color5.y = as_type(_970); out.frag_color5.z = as_type(_969); out.frag_color5.w = as_type(_968); if (!_967) { discard_fragment(); } out.frag_color4.x = as_type(_966); out.frag_color4.y = as_type(_965); out.frag_color4.z = as_type(_964); out.frag_color4.w = as_type(_963); if (!_967) { discard_fragment(); } out.frag_color3.x = as_type(_962); out.frag_color3.y = as_type(_961); out.frag_color3.z = as_type(_960); out.frag_color3.w = as_type(_959); if (!_967) { discard_fragment(); } out.frag_color2.x = as_type(_958); out.frag_color2.y = as_type(_957); out.frag_color2.z = as_type(_956); out.frag_color2.w = as_type(_955); if (!_967) { discard_fragment(); } out.frag_color1.x = as_type(_954); out.frag_color1.y = as_type(_953); out.frag_color1.z = as_type(_952); out.frag_color1.w = as_type(_951); if (_472) { discard_fragment(); } out.frag_color0.x = as_type(_950); out.frag_color0.y = as_type(_949); out.frag_color0.z = as_type(_948); out.frag_color0.w = as_type(_951); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x6a833138 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[216]; }; struct vs_cbuf_block_f32_1 { uint data[832]; }; struct vs_cbuf_block_f32_2 { uint data[192]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _245 = gl_InstanceIndex * 13u; float _260 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _261 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _262 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _270 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _271 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _272 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _291 = ((0u + ((_245 + 3u) * 16u)) + buf8_off) >> 2u; uint4 _304 = uint4(cbuf_12.data[_291 + 0u], cbuf_12.data[_291 + 1u], cbuf_12.data[_291 + 2u], cbuf_12.data[_291 + 3u]); uint _310 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + ((_245 + 5u) * 16u)) + buf8_off) >> 2u]) * 3u; uint _323 = ((0u + (_310 * 16u)) + buf9_off) >> 2u; uint4 _336 = uint4(cbuf_16.data[_323 + 0u], cbuf_16.data[_323 + 1u], cbuf_16.data[_323 + 2u], cbuf_16.data[_323 + 3u]); uint _337 = _336.x; uint _338 = _336.y; uint _339 = _336.z; uint _344 = ((0u + ((_310 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _357 = uint4(cbuf_16.data[_344 + 0u], cbuf_16.data[_344 + 1u], cbuf_16.data[_344 + 2u], cbuf_16.data[_344 + 3u]); uint _358 = _357.x; uint _359 = _357.y; uint _360 = _357.z; uint _365 = ((0u + ((_310 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _378 = uint4(cbuf_16.data[_365 + 0u], cbuf_16.data[_365 + 1u], cbuf_16.data[_365 + 2u], cbuf_16.data[_365 + 3u]); uint _379 = _378.x; uint _380 = _378.y; uint _381 = _378.z; float _405 = spvFSub(fma(as_type(_337), in.vs_in_attr0.x, fma(as_type(_338), in.vs_in_attr0.y, fma(as_type(_339), in.vs_in_attr0.z, as_type(_336.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _407 = spvFSub(fma(as_type(_358), in.vs_in_attr0.x, fma(as_type(_359), in.vs_in_attr0.y, fma(as_type(_360), in.vs_in_attr0.z, as_type(_357.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _409 = spvFSub(fma(as_type(_379), in.vs_in_attr0.x, fma(as_type(_380), in.vs_in_attr0.y, fma(as_type(_381), in.vs_in_attr0.z, as_type(_378.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _431 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _409, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _433 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _409, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _435 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _409, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _437 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _409, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _431; out.gl_Position.y = _433; out.gl_Position.z = _435; out.gl_Position.w = _437; out.out_attr4.x = _431; out.out_attr4.y = _433; out.out_attr4.z = _435; out.out_attr4.w = _437; out.out_attr0.x = fma(as_type(_337), _270, fma(as_type(_338), _271, spvFMul(as_type(_339), _272))); out.out_attr0.y = fma(as_type(_358), _270, fma(as_type(_359), _271, spvFMul(as_type(_360), _272))); out.out_attr0.z = fma(as_type(_379), _270, fma(as_type(_380), _271, spvFMul(as_type(_381), _272))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_337), _260, fma(as_type(_338), _261, spvFMul(as_type(_339), _262))); out.out_attr1.y = fma(as_type(_358), _260, fma(as_type(_359), _261, spvFMul(as_type(_360), _262))); out.out_attr1.z = fma(as_type(_379), _260, fma(as_type(_380), _261, spvFMul(as_type(_381), _262))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(_304.x), as_type(_304.z)); out.out_attr3.w = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(_304.y), as_type(_304.w)); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xe54449c7 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x63220f67 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[216]; }; struct vs_cbuf_block_f32_1 { uint data[832]; }; struct vs_cbuf_block_f32_2 { uint data[192]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr4.x; out.out_attr0.y = in.vs_in_attr4.y; out.out_attr0.z = in.vs_in_attr4.z; out.out_attr0.w = in.vs_in_attr4.w; uint _281 = gl_InstanceIndex * 13u; float _296 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _297 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _298 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _308 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _309 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _310 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _318 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _319 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _320 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _330 = ((0u + ((_281 + 3u) * 16u)) + buf8_off) >> 2u; uint4 _343 = uint4(cbuf_12.data[_330 + 0u], cbuf_12.data[_330 + 1u], cbuf_12.data[_330 + 2u], cbuf_12.data[_330 + 3u]); uint _349 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + ((_281 + 5u) * 16u)) + buf8_off) >> 2u]) * 3u; uint _355 = ((0u + (_349 * 16u)) + buf9_off) >> 2u; uint4 _368 = uint4(cbuf_16.data[_355 + 0u], cbuf_16.data[_355 + 1u], cbuf_16.data[_355 + 2u], cbuf_16.data[_355 + 3u]); uint _369 = _368.x; uint _370 = _368.y; uint _371 = _368.z; uint _376 = ((0u + ((_349 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _389 = uint4(cbuf_16.data[_376 + 0u], cbuf_16.data[_376 + 1u], cbuf_16.data[_376 + 2u], cbuf_16.data[_376 + 3u]); uint _390 = _389.x; uint _391 = _389.y; uint _392 = _389.z; uint _397 = ((0u + ((_349 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _410 = uint4(cbuf_16.data[_397 + 0u], cbuf_16.data[_397 + 1u], cbuf_16.data[_397 + 2u], cbuf_16.data[_397 + 3u]); uint _411 = _410.x; uint _412 = _410.y; uint _413 = _410.z; float _438 = spvFSub(fma(as_type(_369), in.vs_in_attr0.x, fma(as_type(_370), in.vs_in_attr0.y, fma(as_type(_371), in.vs_in_attr0.z, as_type(_368.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _440 = spvFSub(fma(as_type(_390), in.vs_in_attr0.x, fma(as_type(_391), in.vs_in_attr0.y, fma(as_type(_392), in.vs_in_attr0.z, as_type(_389.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _442 = spvFSub(fma(as_type(_411), in.vs_in_attr0.x, fma(as_type(_412), in.vs_in_attr0.y, fma(as_type(_413), in.vs_in_attr0.z, as_type(_410.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _464 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _438, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _440, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _442, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _466 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _438, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _440, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _442, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _468 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _438, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _440, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _442, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _470 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _438, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _440, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _442, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _464; out.gl_Position.y = _466; out.gl_Position.z = _468; out.gl_Position.w = _470; out.out_attr6.x = _464; out.out_attr6.y = _466; out.out_attr6.z = _468; out.out_attr6.w = _470; out.out_attr1.x = fma(as_type(_369), _318, fma(as_type(_370), _319, spvFMul(as_type(_371), _320))); out.out_attr1.y = fma(as_type(_390), _318, fma(as_type(_391), _319, spvFMul(as_type(_392), _320))); out.out_attr1.z = fma(as_type(_411), _318, fma(as_type(_412), _319, spvFMul(as_type(_413), _320))); out.out_attr1.w = float(gl_InstanceIndex); out.out_attr2.x = fma(as_type(_369), _296, fma(as_type(_370), _297, spvFMul(as_type(_371), _298))); out.out_attr2.y = fma(as_type(_390), _296, fma(as_type(_391), _297, spvFMul(as_type(_392), _298))); out.out_attr2.z = fma(as_type(_411), _296, fma(as_type(_412), _297, spvFMul(as_type(_413), _298))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(_369), _308, fma(as_type(_370), _309, spvFMul(as_type(_371), _310))); out.out_attr3.y = fma(as_type(_390), _308, fma(as_type(_391), _309, spvFMul(as_type(_392), _310))); out.out_attr3.z = fma(as_type(_411), _308, fma(as_type(_412), _309, spvFMul(as_type(_413), _310))); out.out_attr3.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr4.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr4.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr5.x = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(_343.x), as_type(_343.z)); out.out_attr5.y = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(_343.y), as_type(_343.w)); out.out_attr5.z = fma(as_type(cbuf_8.data[12u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[14u + buf10_dword_off])); out.out_attr5.w = fma(as_type(cbuf_8.data[13u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[15u + buf10_dword_off])); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[40]; }; struct fs_cbuf_block_f32_2 { uint data[216]; }; struct fs_cbuf_block_f32_3 { uint data[44]; }; struct fs_cbuf_block_f32_4 { uint data[168]; }; struct fs_cbuf_block_f32_5 { uint data[832]; }; struct fs_cbuf_block_f32_6 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_40 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_52 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_56 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_48 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_32 [[buffer(15)]], texture2d fs_img124 [[texture(0)]], texture2d fs_img84 [[texture(1)]], texture2d fs_img116 [[texture(2)]], texture2d fs_img76 [[texture(3)]], texture2d fs_img108 [[texture(4)]], texture2d fs_img140 [[texture(5)]], texture2d fs_img68 [[texture(6)]], texture2d fs_img100 [[texture(7)]], texture2d fs_img132 [[texture(8)]], texturecube fs_img156 [[texture(9)]], texturecube fs_img148 [[texture(10)]], texture2d fs_img60 [[texture(11)]], texture2d fs_img92 [[texture(12)]], sampler fs_samp28 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp24 [[sampler(4)]], sampler fs_samp4 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _161 = uint(gl_FrontFacing); float4 _194 = fs_img124.sample(fs_samp28, float2(fma(in.fs_in_attr5.z, as_type(cbuf_36.data[56u + buf0_dword_off]), as_type(cbuf_36.data[58u + buf0_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_36.data[57u + buf0_dword_off]), as_type(cbuf_36.data[59u + buf0_dword_off])))); float _277 = fma(as_type(cbuf_40.data[12u + buf1_dword_off]), _194.x, as_type(cbuf_40.data[14u + buf1_dword_off])); float _312 = (0.0 < _277) ? fma(-_277, spvFSub(0.0, in.fs_in_attr0.w), in.fs_in_attr0.w) : fma(_277, spvFSub(1.0, in.fs_in_attr0.w), in.fs_in_attr0.w); float _339 = fast::clamp(fast::max(_312, _312), 0.0, 1.0); float _355 = spvFMul(_339, _339); float _356 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _379 = 1.0 / fma(as_type(cbuf_52.data[32u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_52.data[33u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_52.data[34u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_52.data[35u + buf2_dword_off]), in.fs_in_attr6.w)))); uint _383 = 40u + buf3_dword_off; uint _395 = 43u + buf3_dword_off; float _398 = spvFMul(in.fs_in_attr1.x, _356); float _400 = spvFMul(in.fs_in_attr1.y, _356); float _401 = spvFMul(in.fs_in_attr1.z, _356); float _403 = spvFMul(fma(in.fs_in_attr1.y, in.fs_in_attr2.z, -spvFMul(in.fs_in_attr1.z, in.fs_in_attr2.y)), in.fs_in_attr2.w); float _404 = spvFMul(fma(in.fs_in_attr1.z, in.fs_in_attr2.x, -spvFMul(in.fs_in_attr1.x, in.fs_in_attr2.z)), in.fs_in_attr2.w); float _405 = spvFMul(fma(in.fs_in_attr1.x, in.fs_in_attr2.y, -spvFMul(in.fs_in_attr1.y, in.fs_in_attr2.x)), in.fs_in_attr2.w); float _406 = spvFMul(fma(in.fs_in_attr1.y, in.fs_in_attr3.z, -spvFMul(in.fs_in_attr1.z, in.fs_in_attr3.y)), in.fs_in_attr3.w); float _407 = spvFMul(fma(in.fs_in_attr1.z, in.fs_in_attr3.x, -spvFMul(in.fs_in_attr1.x, in.fs_in_attr3.z)), in.fs_in_attr3.w); float _408 = spvFMul(fma(in.fs_in_attr1.x, in.fs_in_attr3.y, -spvFMul(in.fs_in_attr1.y, in.fs_in_attr3.x)), in.fs_in_attr3.w); float _411 = fma(-fma(as_type(cbuf_52.data[20u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_52.data[21u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_52.data[22u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_52.data[23u + buf2_dword_off]), in.fs_in_attr6.w)))), _379, as_type(cbuf_52.data[183u + buf2_dword_off])); float _414 = fma(-fma(as_type(cbuf_52.data[24u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_52.data[25u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_52.data[26u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_52.data[27u + buf2_dword_off]), in.fs_in_attr6.w)))), _379, as_type(cbuf_52.data[187u + buf2_dword_off])); float _417 = fma(-fma(as_type(cbuf_52.data[28u + buf2_dword_off]), in.fs_in_attr6.x, fma(as_type(cbuf_52.data[29u + buf2_dword_off]), in.fs_in_attr6.y, fma(as_type(cbuf_52.data[30u + buf2_dword_off]), in.fs_in_attr6.z, spvFMul(as_type(cbuf_52.data[31u + buf2_dword_off]), in.fs_in_attr6.w)))), _379, as_type(cbuf_52.data[191u + buf2_dword_off])); float _420 = fma(_355, 3.0, -spvFMul(spvFMul(_339, _355), 2.0)); bool _421 = 0u == _161; uint _434; uint _435; uint _436; if (_421) { _434 = as_type(fast::max(-_401, -_401)); _435 = as_type(fast::max(-_398, -_398)); _436 = as_type(fast::max(-_400, -_400)); } else { _434 = as_type(_401); _435 = _161; _436 = as_type(_398); } uint _439; uint _440; if (!_421) { _439 = _436; _440 = as_type(_400); } else { _439 = _435; _440 = _436; } float4 _491 = fs_img84.sample(fs_samp16, float2(fma(as_type(cbuf_36.data[12u + buf0_dword_off]), in.fs_in_attr4.x, as_type(cbuf_36.data[14u + buf0_dword_off])), fma(as_type(cbuf_36.data[13u + buf0_dword_off]), in.fs_in_attr4.y, as_type(cbuf_36.data[15u + buf0_dword_off])))); float4 _499 = fs_img116.sample(fs_samp16, float2(fma(in.fs_in_attr4.z, as_type(cbuf_36.data[40u + buf0_dword_off]), as_type(cbuf_36.data[42u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_36.data[41u + buf0_dword_off]), as_type(cbuf_36.data[43u + buf0_dword_off])))); uint _534 = 12u + buf3_dword_off; float4 _553 = fs_img76.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_36.data[8u + buf0_dword_off]), as_type(cbuf_36.data[10u + buf0_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_36.data[9u + buf0_dword_off]), as_type(cbuf_36.data[11u + buf0_dword_off])))); float _554 = _553.x; float4 _559 = fs_img108.sample(fs_samp8, float2(fma(in.fs_in_attr4.z, as_type(cbuf_36.data[36u + buf0_dword_off]), as_type(cbuf_36.data[38u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_36.data[37u + buf0_dword_off]), as_type(cbuf_36.data[39u + buf0_dword_off])))); float _566 = fma(2.0, _491.y, -1.0); float _567 = spvFMul(fma(2.0, _491.x, -1.0), fma(2.0, _491.w, -1.0)); float _568 = fma(2.0, _499.y, -1.0); float _569 = spvFMul(fma(2.0, _499.x, -1.0), fma(2.0, _499.w, -1.0)); float _590 = rsqrt(fma(in.fs_in_attr2.x, in.fs_in_attr2.x, fma(in.fs_in_attr2.y, in.fs_in_attr2.y, spvFMul(in.fs_in_attr2.z, in.fs_in_attr2.z)))); float _592 = rsqrt(fma(in.fs_in_attr3.x, in.fs_in_attr3.x, fma(in.fs_in_attr3.y, in.fs_in_attr3.y, spvFMul(in.fs_in_attr3.z, in.fs_in_attr3.z)))); float _594 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_567, _567), spvFMul(_566, _566)), 0.0, 1.0))); float _595 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_569, _569), spvFMul(_568, _568)), 0.0, 1.0))); float _597 = rsqrt(fma(_403, _403, fma(_404, _404, spvFMul(_405, _405)))); float _599 = rsqrt(fma(_406, _406, fma(_407, _407, spvFMul(_408, _408)))); float _625 = fma(spvFMul(_405, _597), _567, fma(spvFMul(in.fs_in_attr2.z, _590), _566, spvFMul(as_type(_434), _594))); float4 _634 = fs_img140.sample(fs_samp20, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float _642 = fma(spvFMul(_404, _597), _567, fma(spvFMul(in.fs_in_attr2.y, _590), _566, spvFMul(as_type(_440), _594))); float _646 = fma(spvFMul(_403, _597), _567, fma(spvFMul(in.fs_in_attr2.x, _590), _566, spvFMul(as_type(_439), _594))); float _649 = fma(_420, spvFSub(fma(spvFMul(_408, _599), _569, fma(spvFMul(in.fs_in_attr3.z, _592), _568, spvFMul(as_type(_434), _595))), _625), _625); float _652 = fma(_420, spvFSub(fma(spvFMul(_407, _599), _569, fma(spvFMul(in.fs_in_attr3.y, _592), _568, spvFMul(as_type(_440), _595))), _642), _642); float _682 = fma(_420, spvFSub(fma(spvFMul(_406, _599), _569, fma(spvFMul(in.fs_in_attr3.x, _592), _568, spvFMul(as_type(_439), _595))), _646), _646); float _689 = rsqrt(fma(_411, _411, fma(_414, _414, spvFMul(_417, _417)))); float _690 = rsqrt(fma(_682, _682, fma(_652, _652, spvFMul(_649, _649)))); float _691 = spvFMul(_417, _689); float _692 = spvFMul(_649, _690); float _693 = spvFMul(_414, _689); float _694 = spvFMul(_652, _690); float _696 = spvFMul(_411, _689); float _697 = spvFMul(_682, _690); float _711 = fma(_697, _696, fma(_694, _693, spvFMul(_691, _692))); float _717 = spvFMul(fast::max(_711, _711), 2.0); float _721 = spvFMul(as_type(cbuf_44.data[8u + buf4_dword_off]), 0.00390625); float4 _726 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_36.data[4u + buf0_dword_off]), in.fs_in_attr4.x, as_type(cbuf_36.data[6u + buf0_dword_off])), fma(as_type(cbuf_36.data[5u + buf0_dword_off]), in.fs_in_attr4.y, as_type(cbuf_36.data[7u + buf0_dword_off])))); float _727 = _726.x; float _728 = _726.y; float _729 = _726.z; float4 _734 = fs_img100.sample(fs_samp8, float2(fma(in.fs_in_attr4.z, as_type(cbuf_36.data[32u + buf0_dword_off]), as_type(cbuf_36.data[34u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_36.data[33u + buf0_dword_off]), as_type(cbuf_36.data[35u + buf0_dword_off])))); float _735 = _734.x; float _736 = _734.y; float _737 = _734.z; float _738 = spvFMul(fma(_420, spvFSub(_559.x, _554), _554), _721); uint _742 = uint(in.fs_in_attr1.w) * 13u; float _768 = spvFMul(13.0, _738); float _770 = fma(-_411, _689, spvFMul(_697, _717)); float _772 = fma(-_414, _689, spvFMul(_694, _717)); float _774 = fma(-_417, _689, spvFMul(_692, _717)); float _782 = 1.0 / abs(1.0); float _784 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_768, _768), 0.5))); float _786 = fma(_772, _782, 1.5); float _787 = fma(_770, _782, 1.5); float4 _792 = fs_img132.sample(fs_samp20, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float _793 = _792.x; float _794 = _792.y; float _795 = _792.z; uint _801 = ((0u + ((_742 + 8u) * 16u)) + buf5_off) >> 2u; uint4 _814 = uint4(cbuf_48.data[_801 + 0u], cbuf_48.data[_801 + 1u], cbuf_48.data[_801 + 2u], cbuf_48.data[_801 + 3u]); uint _815 = _814.x; uint _816 = _814.y; uint _817 = _814.z; float4 _825 = fs_img156.sample(fs_samp24, float3(spvFSub(_787, 1.5), spvFSub(_786, 1.5), _774), level(_784)); float4 _836 = fs_img148.sample(fs_samp24, float3(spvFSub(_787, 1.5), spvFSub(_786, 1.5), _774), level(_784)); float _837 = _836.x; float _838 = _836.y; float _839 = _836.z; float4 _856 = fs_img60.sample(fs_samp4, float2(fma(in.fs_in_attr4.x, as_type(cbuf_36.data[0u + buf0_dword_off]), as_type(cbuf_36.data[2u + buf0_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_36.data[1u + buf0_dword_off]), as_type(cbuf_36.data[3u + buf0_dword_off])))); float _857 = _856.x; float _858 = _856.y; float _859 = _856.z; float _860 = _856.w; float4 _865 = fs_img92.sample(fs_samp4, float2(fma(in.fs_in_attr4.z, as_type(cbuf_36.data[28u + buf0_dword_off]), as_type(cbuf_36.data[30u + buf0_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_36.data[29u + buf0_dword_off]), as_type(cbuf_36.data[31u + buf0_dword_off])))); float _882 = fma(2.0, _634.z, -1.0); float _883 = fma(2.0, _634.y, -1.0); float _885 = fma(2.0, _634.x, -1.0); float _888 = rsqrt(fma(_885, _885, fma(_883, _883, spvFMul(_882, _882)))); float _889 = spvFMul(_882, _888); float _890 = spvFMul(_883, _888); float _891 = fma(_417, _689, _889); float _892 = spvFMul(_885, _888); float _895 = fast::clamp(spvFAdd(as_type(cbuf_56.data[41u + buf3_dword_off]), _634.w), 0.0, 1.0); float _896 = fma(_414, _689, _890); float _899 = fma(_411, _689, _892); float _905 = rsqrt(fma(_899, _899, fma(_896, _896, spvFMul(_891, _891)))); float _920 = spvFMul(_891, _905); float _921 = exp2(_768); uint _926 = 36u + buf1_dword_off; float _930 = fma(fast::max(0.001000000047497451305389404296875, exp2(spvFMul(as_type(cbuf_56.data[42u + buf3_dword_off]), log2(_895)))), spvFSub(100.0, as_type(cbuf_56.data[_383])), as_type(cbuf_56.data[_383])); float _931 = spvFMul(_896, _905); float _935 = spvFMul(_899, _905); bool _946 = (_729 == 0.0) && (_728 == 0.0); bool _948 = (_737 == 0.0) && (_736 == 0.0); float _953 = spvFAdd(1.0, _711); float _956 = _946 ? _727 : _729; float _957 = _946 ? _727 : _728; float _960 = fast::max(1.0, spvFMul(spvFMul(_921, _930), 1.0 / fma(_921, 0.01000213623046875, _930))); float _987 = fast::clamp(spvFMul(_953, _953), 0.0, 1.0); float _988 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_711, _711), 0.0, 1.0))))); float _992 = spvFMul(_793, spvFMul(as_type(cbuf_32.data[0u + buf6_dword_off]), _793)); float _993 = spvFMul(_794, spvFMul(as_type(cbuf_32.data[1u + buf6_dword_off]), _794)); float _994 = spvFMul(_795, spvFMul(as_type(cbuf_32.data[2u + buf6_dword_off]), _795)); float _1019 = spvFMul(_987, _988); float _1020 = fma(_420, spvFSub(_735, _727), _727); float _1021 = fma(_420, spvFSub(_948 ? _735 : _736, _957), _957); float _1022 = fma(_420, spvFSub(_948 ? _735 : _737, _956), _956); float _1031 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_696, _935, fma(_693, _931, spvFMul(_691, _920))), 0.0, 1.0))))); float _1050 = spvFMul(_895, spvFMul(as_type(cbuf_56.data[_395]), _992)); float _1051 = spvFMul(_895, spvFMul(as_type(cbuf_56.data[_395]), _993)); float _1052 = spvFMul(_895, spvFMul(as_type(cbuf_56.data[_395]), _994)); float _1067 = fast::clamp(spvFAdd(fma(_770, as_type(_439), fma(_772, as_type(_440), spvFMul(as_type(_434), _774))), 1.0), 0.0, 1.0); float _1068 = spvFMul(exp2(spvFMul(_960, log2(fast::clamp(fma(_935, _697, fma(_931, _694, spvFMul(_692, _920))), 0.0, 1.0)))), spvFMul(fma(0.125, _960, 0.25), spvFSub(1.0, as_type(cbuf_40.data[_926])))); float _1071 = fast::clamp(fma(_892, _697, fma(_890, _694, spvFMul(_692, _889))), 0.0, 1.0); float _1084 = spvFMul(_738, _738); float _1085 = spvFMul(_1067, _1067); float _1150 = spvFMul(fma(_420, spvFSub(_865.w, _860), _860), as_type(cbuf_48.data[((12u + ((_742 + 7u) * 16u)) + buf5_off) >> 2u])); bool _1154 = as_type(cbuf_44.data[22u + buf4_dword_off]) != 0.0; float _1177 = _1154 ? _1150 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(fma(spvFMul(_1085, spvFMul(as_type(cbuf_40.data[_926]), fma(as_type(_815), fma(-as_type(_816), _837, spvFMul(as_type(_817), _825.x)), spvFMul(as_type(_816), _837)))), fma(fma(_987, _988, -spvFMul(_1019, _1020)), _1084, _1020), spvFMul(fma(-_1020, _1031, spvFAdd(_1020, _1031)), spvFMul(_1050, _1068))), spvFMul(as_type(cbuf_44.data[4u + buf4_dword_off]), as_type(cbuf_56.data[_534]))); out.frag_color5.y = spvFMul(fma(spvFMul(_1085, spvFMul(as_type(cbuf_40.data[_926]), fma(as_type(_815), fma(-as_type(_816), _838, spvFMul(as_type(_817), _825.y)), spvFMul(as_type(_816), _838)))), fma(fma(_987, _988, -spvFMul(_1019, _1021)), _1084, _1021), spvFMul(fma(-_1021, _1031, spvFAdd(_1021, _1031)), spvFMul(_1051, _1068))), spvFMul(as_type(cbuf_44.data[5u + buf4_dword_off]), as_type(cbuf_56.data[_534]))); out.frag_color5.z = spvFMul(fma(spvFMul(_1085, spvFMul(as_type(cbuf_40.data[_926]), fma(as_type(_815), fma(-as_type(_816), _839, spvFMul(as_type(_817), _825.z)), spvFMul(as_type(_816), _839)))), fma(fma(_987, _988, -spvFMul(_1019, _1022)), _1084, _1022), spvFMul(fma(-_1022, _1031, spvFAdd(_1022, _1031)), spvFMul(_1052, _1068))), spvFMul(as_type(cbuf_44.data[6u + buf4_dword_off]), as_type(cbuf_56.data[_534]))); out.frag_color5.w = _1154 ? _1150 : as_type(_814.w); if (false) { discard_fragment(); } out.frag_color4.x = spvFMul(fma(fma(-_1020, _1071, _1071), _1050, fma(as_type(cbuf_56.data[_395]), _992, -_1050)), spvFSub(1.0, _1020)); out.frag_color4.y = spvFMul(fma(fma(-_1021, _1071, _1071), _1051, fma(as_type(cbuf_56.data[_395]), _993, -_1051)), spvFSub(1.0, _1021)); out.frag_color4.z = spvFMul(fma(fma(-_1022, _1071, _1071), _1052, fma(as_type(cbuf_56.data[_395]), _994, -_1052)), spvFSub(1.0, _1022)); out.frag_color4.w = _1154 ? _1150 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_1020); out.frag_color3.y = sqrt(_1021); out.frag_color3.z = sqrt(_1022); out.frag_color3.w = _1154 ? _1150 : spvFMul(0.0039215688593685626983642578125, float(cbuf_48.data[((0u + ((_742 + 6u) * 16u)) + buf5_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_44.data[0u + buf4_dword_off]), fma(_420, spvFSub(_865.x, _857), _857)); out.frag_color2.y = spvFMul(as_type(cbuf_44.data[1u + buf4_dword_off]), fma(_420, spvFSub(_865.y, _858), _858)); out.frag_color2.z = spvFMul(as_type(cbuf_44.data[2u + buf4_dword_off]), fma(_420, spvFSub(_865.z, _859), _859)); out.frag_color2.w = _1150; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_721, _738); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_40.data[4u + buf1_dword_off]), in.fs_in_attr0.y)); out.frag_color1.z = _792.w; out.frag_color1.w = _1177; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _697, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _694, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _692, 0.500488758087158203125); out.frag_color0.w = _1177; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xca7226ec [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x9da6aacb (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _171 = (cbuf_12.data[20u + buf7_dword_off] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _177 = ((0u + ((_171 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _190 = uint4(cbuf_16.data[_177 + 0u], cbuf_16.data[_177 + 1u], cbuf_16.data[_177 + 2u], cbuf_16.data[_177 + 3u]); uint _191 = _190.x; uint _192 = _190.y; uint _193 = _190.z; uint _198 = ((0u + ((_171 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _211 = uint4(cbuf_16.data[_198 + 0u], cbuf_16.data[_198 + 1u], cbuf_16.data[_198 + 2u], cbuf_16.data[_198 + 3u]); uint _212 = _211.x; uint _213 = _211.y; uint _214 = _211.z; uint _219 = ((0u + (_171 * 16u)) + buf8_off) >> 2u; uint4 _232 = uint4(cbuf_16.data[_219 + 0u], cbuf_16.data[_219 + 1u], cbuf_16.data[_219 + 2u], cbuf_16.data[_219 + 3u]); uint _233 = _232.x; uint _234 = _232.y; uint _235 = _232.z; float _334 = spvFSub(fma(as_type(_191), in.vs_in_attr0.x, fma(as_type(_192), in.vs_in_attr0.y, fma(as_type(_193), in.vs_in_attr0.z, as_type(_190.w)))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _338 = spvFSub(fma(as_type(_212), in.vs_in_attr0.x, fma(as_type(_213), in.vs_in_attr0.y, fma(as_type(_214), in.vs_in_attr0.z, as_type(_211.w)))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _352 = spvFSub(fma(as_type(_233), in.vs_in_attr0.x, fma(as_type(_234), in.vs_in_attr0.y, fma(as_type(_235), in.vs_in_attr0.z, as_type(_232.w)))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _362 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _334, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _364 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _334, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _366 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _334, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _368 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _352, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _338, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _334, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _362; out.gl_Position.y = _364; out.gl_Position.z = _366; out.gl_Position.w = _368; float _411 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _414 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _417 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _419 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _437 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _438 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_233), _438, fma(as_type(_234), _419, spvFMul(as_type(_235), _414))); out.out_attr0.y = fma(as_type(_212), _438, fma(as_type(_213), _419, spvFMul(as_type(_214), _414))); out.out_attr0.z = fma(as_type(_191), _438, fma(as_type(_192), _419, spvFMul(as_type(_193), _414))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_233), _437, fma(as_type(_234), _417, spvFMul(as_type(_235), _411))); out.out_attr1.y = fma(as_type(_212), _437, fma(as_type(_213), _417, spvFMul(as_type(_214), _411))); out.out_attr1.z = fma(as_type(_191), _437, fma(as_type(_192), _417, spvFMul(as_type(_193), _411))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_12.data[12u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(cbuf_12.data[14u + buf7_dword_off])); out.out_attr3.w = fma(as_type(cbuf_12.data[13u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(cbuf_12.data[15u + buf7_dword_off])); out.out_attr4.x = _362; out.out_attr4.y = _364; out.out_attr4.z = _366; out.out_attr4.w = _368; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[44]; }; struct fs_cbuf_block_f32_2 { uint data[100]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[104]; }; struct fs_cbuf_block_f32_5 { uint data[4]; }; struct fs_cbuf_block_f32_6 { uint data[40]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_48 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_52 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_28 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_36 [[buffer(15)]], texture2d fs_img80 [[texture(0)]], texture2d fs_img72 [[texture(1)]], texture2d fs_img96 [[texture(2)]], texture2d fs_img64 [[texture(3)]], texture2d fs_img88 [[texture(4)]], texturecube fs_img112 [[texture(5)]], texturecube fs_img104 [[texture(6)]], texture2d fs_img56 [[texture(7)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp24 [[sampler(3)]], sampler fs_samp4 [[sampler(4)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _155 = uint(gl_FrontFacing); float _285 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _301 = 1.0 / fma(as_type(cbuf_48.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); uint _302 = 40u + buf1_dword_off; uint _314 = 43u + buf1_dword_off; float _317 = spvFMul(in.fs_in_attr0.x, _285); float _318 = spvFMul(in.fs_in_attr0.y, _285); float _320 = spvFMul(in.fs_in_attr0.z, _285); float _322 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _323 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _324 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _327 = fma(-fma(as_type(cbuf_48.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _301, as_type(cbuf_48.data[183u + buf0_dword_off])); float _330 = fma(-fma(as_type(cbuf_48.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _301, as_type(cbuf_48.data[187u + buf0_dword_off])); float _333 = fma(-fma(as_type(cbuf_48.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))), _301, as_type(cbuf_48.data[191u + buf0_dword_off])); bool _334 = 0u == _155; uint _339; if (_334) { _339 = as_type(fast::max(-_317, -_317)); } else { _339 = _155; } uint _348; uint _349; if (_334) { _348 = as_type(fast::max(-_320, -_320)); _349 = as_type(fast::max(-_318, -_318)); } else { _348 = as_type(_318); _349 = as_type(_320); } uint _352; uint _353; uint _354; if (!_334) { _352 = as_type(_317); _353 = _348; _354 = _349; } else { _352 = _339; _353 = _349; _354 = _348; } uint _356 = 12u + buf1_dword_off; float4 _388 = fs_img80.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[14u + buf2_dword_off])), fma(as_type(cbuf_32.data[13u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[15u + buf2_dword_off])))); float4 _417 = fs_img72.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[10u + buf2_dword_off])), fma(as_type(cbuf_32.data[9u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[11u + buf2_dword_off])))); float _423 = fma(2.0, _388.y, -1.0); float _424 = spvFMul(fma(2.0, _388.x, -1.0), fma(2.0, _388.w, -1.0)); float _435 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _437 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_424, _424), spvFMul(_423, _423)), 0.0, 1.0))); float _443 = rsqrt(fma(_322, _322, fma(_323, _323, spvFMul(_324, _324)))); float4 _450 = fs_img96.sample(fs_samp20, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _465 = fma(spvFMul(_324, _443), _424, fma(spvFMul(in.fs_in_attr1.z, _435), _423, spvFMul(as_type(_354), _437))); float _469 = fma(spvFMul(_323, _443), _424, fma(spvFMul(in.fs_in_attr1.y, _435), _423, spvFMul(as_type(_353), _437))); float _472 = fma(spvFMul(_322, _443), _424, fma(spvFMul(in.fs_in_attr1.x, _435), _423, spvFMul(as_type(_352), _437))); float _494 = rsqrt(fma(_327, _327, fma(_330, _330, spvFMul(_333, _333)))); float _495 = rsqrt(fma(_472, _472, fma(_469, _469, spvFMul(_465, _465)))); float _496 = spvFMul(_333, _494); float _497 = spvFMul(_465, _495); float _498 = spvFMul(_330, _494); float _499 = spvFMul(_469, _495); float _501 = spvFMul(_327, _494); float _502 = spvFMul(_472, _495); float _504 = fma(_502, _501, fma(_499, _498, spvFMul(_496, _497))); float _509 = spvFMul(fast::max(_504, _504), 2.0); float _512 = spvFMul(as_type(cbuf_40.data[8u + buf3_dword_off]), 0.00390625); float _519 = spvFMul(_417.x, _512); uint _523 = uint(in.fs_in_attr0.w) * 13u; float _525 = spvFMul(13.0, _519); float _527 = fma(-_327, _494, spvFMul(_502, _509)); float _529 = fma(-_330, _494, spvFMul(_499, _509)); float _531 = fma(-_333, _494, spvFMul(_497, _509)); float4 _537 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf2_dword_off])), fma(as_type(cbuf_32.data[5u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf2_dword_off])))); float _538 = _537.x; float _539 = _537.y; float _540 = _537.z; float _559 = 1.0 / abs(1.0); float _561 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_525, _525), 0.5))); float _563 = fma(_529, _559, 1.5); float _564 = fma(_527, _559, 1.5); float4 _569 = fs_img88.sample(fs_samp20, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _570 = _569.x; float _571 = _569.y; float _572 = _569.z; uint _578 = ((0u + ((_523 + 8u) * 16u)) + buf4_off) >> 2u; uint4 _591 = uint4(cbuf_44.data[_578 + 0u], cbuf_44.data[_578 + 1u], cbuf_44.data[_578 + 2u], cbuf_44.data[_578 + 3u]); uint _592 = _591.x; uint _593 = _591.y; uint _594 = _591.z; float4 _602 = fs_img112.sample(fs_samp24, float3(spvFSub(_564, 1.5), spvFSub(_563, 1.5), _531), level(_561)); float4 _613 = fs_img104.sample(fs_samp24, float3(spvFSub(_564, 1.5), spvFSub(_563, 1.5), _531), level(_561)); float _614 = _613.x; float _615 = _613.y; float _616 = _613.z; float4 _627 = fs_img56.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[0u + buf2_dword_off]), as_type(cbuf_32.data[2u + buf2_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[1u + buf2_dword_off]), as_type(cbuf_32.data[3u + buf2_dword_off])))); float _644 = fma(2.0, _450.z, -1.0); float _645 = fma(2.0, _450.y, -1.0); float _647 = fma(2.0, _450.x, -1.0); float _650 = rsqrt(fma(_647, _647, fma(_645, _645, spvFMul(_644, _644)))); float _651 = spvFMul(_644, _650); float _652 = spvFMul(_645, _650); float _653 = fma(_333, _494, _651); float _654 = spvFMul(_647, _650); float _657 = fast::clamp(spvFAdd(as_type(cbuf_52.data[41u + buf1_dword_off]), _450.w), 0.0, 1.0); float _658 = fma(_330, _494, _652); float _661 = fma(_327, _494, _654); float _667 = rsqrt(fma(_661, _661, fma(_658, _658, spvFMul(_653, _653)))); float _682 = spvFMul(_653, _667); uint _684 = 36u + buf6_dword_off; float _687 = exp2(_525); float _689 = fma(fast::max(0.001000000047497451305389404296875, exp2(spvFMul(as_type(cbuf_52.data[42u + buf1_dword_off]), log2(_657)))), spvFSub(100.0, as_type(cbuf_52.data[_302])), as_type(cbuf_52.data[_302])); float _690 = spvFMul(_658, _667); float _692 = spvFMul(_661, _667); float _713 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_501, _692, fma(_498, _690, spvFMul(_496, _682))), 0.0, 1.0))))); float _718 = fast::clamp(spvFAdd(fma(_527, as_type(_352), fma(_529, as_type(_353), spvFMul(as_type(_354), _531))), 1.0), 0.0, 1.0); float _730 = spvFAdd(1.0, _504); float _732 = fast::max(1.0, spvFMul(spvFMul(_687, _689), 1.0 / fma(_687, 0.01000213623046875, _689))); bool _733 = (_540 == 0.0) && (0.0 == _539); float _734 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_504, _504), 0.0, 1.0))))); float _754 = fast::clamp(spvFMul(_730, _730), 0.0, 1.0); float _755 = spvFMul(_570, spvFMul(as_type(cbuf_28.data[0u + buf5_dword_off]), _570)); float _756 = spvFMul(_571, spvFMul(as_type(cbuf_28.data[1u + buf5_dword_off]), _571)); float _757 = spvFMul(_572, spvFMul(as_type(cbuf_28.data[2u + buf5_dword_off]), _572)); float _779 = spvFMul(_754, _734); float _780 = _733 ? _538 : _540; float _781 = _733 ? _538 : _539; float _805 = spvFMul(_657, spvFMul(as_type(cbuf_52.data[_314]), _755)); float _806 = spvFMul(_657, spvFMul(as_type(cbuf_52.data[_314]), _756)); float _807 = spvFMul(_657, spvFMul(as_type(cbuf_52.data[_314]), _757)); float _820 = spvFMul(exp2(spvFMul(_732, log2(fast::clamp(fma(_692, _502, fma(_690, _499, spvFMul(_497, _682))), 0.0, 1.0)))), spvFMul(fma(0.125, _732, 0.25), spvFSub(1.0, as_type(cbuf_36.data[_684])))); float _824 = fast::clamp(fma(_654, _502, fma(_652, _499, spvFMul(_497, _651))), 0.0, 1.0); float _837 = spvFMul(_519, _519); float _838 = spvFMul(_718, _718); float _897 = spvFMul(spvFMul(_627.w, in.fs_in_attr2.w), as_type(cbuf_44.data[((12u + ((_523 + 7u) * 16u)) + buf4_off) >> 2u])); bool _901 = as_type(cbuf_40.data[22u + buf3_dword_off]) != 0.0; float _924 = _901 ? _897 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(fma(spvFMul(_838, spvFMul(as_type(cbuf_36.data[_684]), fma(as_type(_592), fma(-as_type(_593), _614, spvFMul(as_type(_594), _602.x)), spvFMul(as_type(_593), _614)))), fma(fma(_754, _734, -spvFMul(_538, _779)), _837, _538), spvFMul(fma(-_538, _713, spvFAdd(_538, _713)), spvFMul(_805, _820))), spvFMul(as_type(cbuf_40.data[4u + buf3_dword_off]), as_type(cbuf_52.data[_356]))); out.frag_color5.y = spvFMul(fma(spvFMul(_838, spvFMul(as_type(cbuf_36.data[_684]), fma(as_type(_592), fma(-as_type(_593), _615, spvFMul(as_type(_594), _602.y)), spvFMul(as_type(_593), _615)))), fma(fma(_754, _734, -spvFMul(_781, _779)), _837, _781), spvFMul(fma(-_781, _713, spvFAdd(_781, _713)), spvFMul(_806, _820))), spvFMul(as_type(cbuf_40.data[5u + buf3_dword_off]), as_type(cbuf_52.data[_356]))); out.frag_color5.z = spvFMul(fma(spvFMul(_838, spvFMul(as_type(cbuf_36.data[_684]), fma(as_type(_592), fma(-as_type(_593), _616, spvFMul(as_type(_594), _602.z)), spvFMul(as_type(_593), _616)))), fma(fma(_754, _734, -spvFMul(_780, _779)), _837, _780), spvFMul(fma(-_780, _713, spvFAdd(_780, _713)), spvFMul(_807, _820))), spvFMul(as_type(cbuf_40.data[6u + buf3_dword_off]), as_type(cbuf_52.data[_356]))); out.frag_color5.w = _901 ? _897 : as_type(_591.w); if (false) { discard_fragment(); } out.frag_color4.x = spvFMul(fma(fma(-_538, _824, _824), _805, fma(as_type(cbuf_52.data[_314]), _755, -_805)), spvFSub(1.0, _538)); out.frag_color4.y = spvFMul(fma(fma(-_781, _824, _824), _806, fma(as_type(cbuf_52.data[_314]), _756, -_806)), spvFSub(1.0, _781)); out.frag_color4.z = spvFMul(fma(fma(-_780, _824, _824), _807, fma(as_type(cbuf_52.data[_314]), _757, -_807)), spvFSub(1.0, _780)); out.frag_color4.w = _901 ? _897 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_538); out.frag_color3.y = sqrt(_781); out.frag_color3.z = sqrt(_780); out.frag_color3.w = _901 ? _897 : spvFMul(0.0039215688593685626983642578125, float(cbuf_44.data[((0u + ((_523 + 6u) * 16u)) + buf4_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_40.data[0u + buf3_dword_off]), _627.x); out.frag_color2.y = spvFMul(as_type(cbuf_40.data[1u + buf3_dword_off]), _627.y); out.frag_color2.z = spvFMul(as_type(cbuf_40.data[2u + buf3_dword_off]), _627.z); out.frag_color2.w = _897; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_512, _519); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_36.data[4u + buf6_dword_off]), in.fs_in_attr2.y)); out.frag_color1.z = _569.w; out.frag_color1.w = _924; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _502, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _499, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _497, 0.500488758087158203125); out.frag_color0.w = _924; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xdbeccd9c [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x3eaa5555 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[16]; }; struct vs_cbuf_block_f32_2 { uint data[164]; }; struct vs_cbuf_block_f32_3 { uint data[24]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(13)]], constant vs_cbuf_block_f32_1& cbuf_8 [[buffer(14)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(15)]], constant vs_cbuf_block_f32_3& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(17)]]) { main0_out out = {}; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _313 = as_type(as_type(in.vs_in_attr3.y)); uint _321 = as_type(in.vs_in_attr4.z); uint _351 = 35u + buf6_dword_off; uint _355 = 96u + buf6_dword_off; uint _383 = 83u + buf6_dword_off; uint _387 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; float _398 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _399 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _400 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _418 = spvFSub(as_type(cbuf_20.data[97u + buf6_dword_off]), as_type(cbuf_20.data[_355])); uint _423 = ((0u + (_387 * 16u)) + buf7_off) >> 2u; uint4 _436 = uint4(cbuf_16.data[_423 + 0u], cbuf_16.data[_423 + 1u], cbuf_16.data[_423 + 2u], cbuf_16.data[_423 + 3u]); uint _437 = _436.x; uint _438 = _436.y; uint _439 = _436.z; uint _444 = ((0u + ((_387 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _457 = uint4(cbuf_16.data[_444 + 0u], cbuf_16.data[_444 + 1u], cbuf_16.data[_444 + 2u], cbuf_16.data[_444 + 3u]); uint _458 = _457.x; uint _459 = _457.y; uint _460 = _457.z; uint _465 = ((0u + ((_387 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _478 = uint4(cbuf_16.data[_465 + 0u], cbuf_16.data[_465 + 1u], cbuf_16.data[_465 + 2u], cbuf_16.data[_465 + 3u]); uint _479 = _478.x; uint _480 = _478.y; uint _481 = _478.z; float _499 = fma(as_type(_437), in.vs_in_attr0.x, fma(as_type(_438), in.vs_in_attr0.y, fma(as_type(_439), in.vs_in_attr0.z, as_type(_436.w)))); float _501 = fma(as_type(_458), in.vs_in_attr0.x, fma(as_type(_459), in.vs_in_attr0.y, fma(as_type(_460), in.vs_in_attr0.z, as_type(_457.w)))); float _503 = fma(as_type(_479), in.vs_in_attr0.x, fma(as_type(_480), in.vs_in_attr0.y, fma(as_type(_481), in.vs_in_attr0.z, as_type(_478.w)))); float _525 = sqrt(spvFAdd(spvFMul(_499, _499), spvFMul(_503, _503))); float _529 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[99u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[_351]), as_type(cbuf_20.data[98u + buf6_dword_off])))); float _534 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _529)))); float _539 = spvFAdd(-3.1415927410125732421875, (0.0 > _529) ? (-_534) : _534); float _555 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_539)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _539)))))), 0.5, 0.5))); float _566 = fma(spvFMul(spvFMul(_555, spvFMul(_555, _555)), fma(_555, spvFAdd(-15.0, spvFMul(6.0, _555)), 10.0)), _418, as_type(cbuf_20.data[_355])); float _568 = spvFMul(as_type(cbuf_20.data[32u + buf6_dword_off]), _566); float _571 = spvFMul(as_type(cbuf_20.data[33u + buf6_dword_off]), _566); float _573 = spvFMul(as_type(cbuf_20.data[34u + buf6_dword_off]), _566); float _576 = spvFSub(_499, as_type(cbuf_20.data[80u + buf6_dword_off])); float _579 = spvFSub(_501, as_type(cbuf_20.data[81u + buf6_dword_off])); float _581 = spvFSub(_503, as_type(cbuf_20.data[82u + buf6_dword_off])); float _584 = fma(_576, _576, fma(_579, _579, spvFMul(_581, _581))); bool _586 = 0.0 < _584; uint _589; if (_586) { _589 = as_type(sqrt(_584)); } else { _589 = as_type(_576); } uint _591; if (!_586) { _591 = 0u; } else { _591 = _589; } bool _593 = as_type(cbuf_20.data[_383]) > 0.0; uint _605; if (_593) { _605 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_591), 1.0 / fast::max(as_type(cbuf_20.data[_383]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _605 = _591; } uint _606; if (!_593) { _606 = 1065353216u; } else { _606 = _605; } bool _608 = as_type(cbuf_20.data[_351]) > 0.0; uint _682; uint _683; uint _684; uint _685; uint _686; if (_608) { bool _613 = 0.0 < fma(_568, _568, fma(_571, _571, spvFMul(_573, _573))); uint _617; if (_613) { _617 = as_type(spvFMul(_573, _573)); } else { _617 = as_type(_584); } uint _628; uint _629; uint _630; if (_613) { float _621 = rsqrt(fma(_568, _568, fma(_571, _571, as_type(_617)))); _628 = as_type(spvFMul(_571, _621)); _629 = as_type(spvFMul(_568, _621)); _630 = as_type(spvFMul(_573, _621)); } else { _628 = 0u; _629 = _313; _630 = as_type(_418); } uint _632; uint _633; uint _634; if (!_613) { _632 = 0u; _633 = 0u; _634 = 0u; } else { _632 = _629; _633 = _628; _634 = _630; } float _644 = fma(spvFMul(as_type(cbuf_20.data[_351]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), fma(as_type(_632), _499, fma(as_type(_633), _501, spvFMul(_503, as_type(_634)))))); float _648 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _644)))); float _651 = (0.0 > _644) ? (-_648) : _648; float _661 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_651)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _651)))))); float _671 = spvFMul(_573, _661); float _673 = fma(_661, 0.5, 0.5); _682 = as_type(fma(spvFMul(_568, _661), as_type(_606), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_568, as_type(_606)))), _673))); _683 = as_type(fma(_671, as_type(_606), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_573, as_type(_606)))), _673))); _684 = _633; _685 = as_type(_671); _686 = _632; } else { _682 = 0u; _683 = as_type(_568); _684 = 0u; _685 = as_type(_573); _686 = _313; } uint _687; uint _688; if (!_608) { _687 = 0u; _688 = 0u; } else { _687 = _682; _688 = _683; } uint _690 = 100u + buf6_dword_off; uint _718 = 39u + buf6_dword_off; float _726 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[103u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[_718]), as_type(cbuf_20.data[102u + buf6_dword_off])))); float _730 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _726)))); float _734 = spvFAdd(-3.1415927410125732421875, (0.0 > _726) ? (-_730) : _730); uint _755 = 87u + buf6_dword_off; float _763 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_734)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _734)))))), 0.5, 0.5))); float _768 = spvFSub(_503, as_type(cbuf_20.data[86u + buf6_dword_off])); float _772 = spvFSub(_501, as_type(cbuf_20.data[85u + buf6_dword_off])); float _779 = spvFSub(_499, as_type(cbuf_20.data[84u + buf6_dword_off])); float _782 = fma(spvFMul(spvFMul(_763, spvFMul(_763, _763)), fma(_763, spvFAdd(-15.0, spvFMul(6.0, _763)), 10.0)), spvFSub(as_type(cbuf_20.data[101u + buf6_dword_off]), as_type(cbuf_20.data[_690])), as_type(cbuf_20.data[_690])); float _783 = fma(_779, _779, fma(_772, _772, spvFMul(_768, _768))); float _786 = spvFMul(as_type(cbuf_20.data[36u + buf6_dword_off]), _782); float _789 = spvFMul(as_type(cbuf_20.data[37u + buf6_dword_off]), _782); float _791 = spvFMul(as_type(cbuf_20.data[38u + buf6_dword_off]), _782); bool _792 = 0.0 < _783; uint _795; if (_792) { _795 = as_type(sqrt(_783)); } else { _795 = as_type(_783); } uint _797; if (!_792) { _797 = 0u; } else { _797 = _795; } bool _799 = as_type(cbuf_20.data[_755]) > 0.0; uint _810; if (_799) { _810 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_797), 1.0 / fast::max(as_type(cbuf_20.data[_755]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _810 = _797; } uint _811; if (!_799) { _811 = 1065353216u; } else { _811 = _810; } bool _813 = as_type(cbuf_20.data[_718]) > 0.0; uint _888; uint _889; uint _890; uint _891; uint _892; if (_813) { bool _818 = 0.0 < fma(_786, _786, fma(_789, _789, spvFMul(_791, _791))); uint _822; if (_818) { _822 = as_type(spvFMul(_791, _791)); } else { _822 = _686; } uint _833; uint _834; uint _835; if (_818) { float _826 = rsqrt(fma(_786, _786, fma(_789, _789, as_type(_822)))); _833 = as_type(spvFMul(_789, _826)); _834 = as_type(spvFMul(_791, _826)); _835 = as_type(spvFMul(_786, _826)); } else { _833 = _437; _834 = _684; _835 = _685; } uint _837; uint _838; uint _839; if (!_818) { _837 = 0u; _838 = 0u; _839 = 0u; } else { _837 = _835; _838 = _833; _839 = _834; } float _845 = fma(as_type(_837), _499, fma(as_type(_838), _501, spvFMul(_503, as_type(_839)))); float _850 = fma(spvFMul(as_type(cbuf_20.data[_718]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), _845)); float _854 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _850)))); float _857 = (0.0 > _850) ? (-_854) : _854; float _867 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_857)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _857)))))); float _875 = spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_791, as_type(_811)))); float _879 = fma(_867, 0.5, 0.5); _888 = _838; _889 = as_type(_845); _890 = as_type(_875); _891 = as_type(fma(spvFMul(_791, _867), as_type(_811), spvFMul(_875, _879))); _892 = as_type(fma(spvFMul(_786, _867), as_type(_811), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_786, as_type(_811)))), _879))); } else { _888 = _437; _889 = _684; _890 = _686; _891 = as_type(_786); _892 = _685; } uint _893; uint _894; if (!_813) { _893 = 0u; _894 = 0u; } else { _893 = _891; _894 = _892; } uint _895 = 104u + buf6_dword_off; uint _923 = 43u + buf6_dword_off; float _937 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[107u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[_923]), as_type(cbuf_20.data[106u + buf6_dword_off])))); float _941 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _937)))); float _945 = spvFAdd(-3.1415927410125732421875, (0.0 > _937) ? (-_941) : _941); uint _966 = 91u + buf6_dword_off; float _974 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_945)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _945)))))), 0.5, 0.5))); float _979 = spvFSub(_503, as_type(cbuf_20.data[90u + buf6_dword_off])); float _983 = spvFSub(_501, as_type(cbuf_20.data[89u + buf6_dword_off])); float _990 = spvFSub(_499, as_type(cbuf_20.data[88u + buf6_dword_off])); float _993 = fma(spvFMul(spvFMul(_974, spvFMul(_974, _974)), fma(_974, spvFAdd(-15.0, spvFMul(6.0, _974)), 10.0)), spvFSub(as_type(cbuf_20.data[105u + buf6_dword_off]), as_type(cbuf_20.data[_895])), as_type(cbuf_20.data[_895])); float _994 = fma(_990, _990, fma(_983, _983, spvFMul(_979, _979))); float _997 = spvFMul(as_type(cbuf_20.data[40u + buf6_dword_off]), _993); float _1000 = spvFMul(as_type(cbuf_20.data[41u + buf6_dword_off]), _993); float _1002 = spvFMul(as_type(cbuf_20.data[42u + buf6_dword_off]), _993); bool _1003 = 0.0 < _994; uint _1006; if (_1003) { _1006 = as_type(sqrt(_994)); } else { _1006 = as_type(_994); } uint _1008; if (!_1003) { _1008 = 0u; } else { _1008 = _1006; } bool _1010 = as_type(cbuf_20.data[_966]) > 0.0; uint _1021; if (_1010) { _1021 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_1008), 1.0 / fast::max(as_type(cbuf_20.data[_966]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _1021 = _1008; } uint _1022; if (!_1010) { _1022 = 1065353216u; } else { _1022 = _1021; } bool _1024 = as_type(cbuf_20.data[_923]) > 0.0; uint _1099; uint _1100; uint _1101; uint _1102; uint _1103; uint _1104; if (_1024) { bool _1029 = 0.0 < fma(_997, _997, fma(_1000, _1000, spvFMul(_1002, _1002))); uint _1033; if (_1029) { _1033 = as_type(spvFMul(_1002, _1002)); } else { _1033 = _890; } uint _1044; uint _1045; uint _1046; if (_1029) { float _1037 = rsqrt(fma(_997, _997, fma(_1000, _1000, as_type(_1033)))); _1044 = as_type(spvFMul(_1000, _1037)); _1045 = as_type(spvFMul(_997, _1037)); _1046 = as_type(spvFMul(_1002, _1037)); } else { _1044 = _888; _1045 = _687; _1046 = _889; } uint _1048; uint _1049; uint _1050; if (!_1029) { _1048 = 0u; _1049 = 0u; _1050 = 0u; } else { _1048 = _1045; _1049 = _1044; _1050 = _1046; } float _1056 = fma(as_type(_1048), _499, fma(as_type(_1049), _501, spvFMul(_503, as_type(_1050)))); float _1061 = fma(spvFMul(as_type(cbuf_20.data[_923]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), _1056)); float _1065 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1061)))); float _1068 = (0.0 > _1061) ? (-_1065) : _1065; float _1078 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1068)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1068)))))); float _1086 = spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1002, as_type(_1022)))); float _1090 = fma(_1078, 0.5, 0.5); _1099 = _1049; _1100 = _1048; _1101 = as_type(_1056); _1102 = as_type(_1086); _1103 = as_type(fma(spvFMul(_997, _1078), as_type(_1022), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_997, as_type(_1022)))), _1090))); _1104 = as_type(fma(spvFMul(_1002, _1078), as_type(_1022), spvFMul(_1086, _1090))); } else { _1099 = _888; _1100 = _687; _1101 = _889; _1102 = _890; _1103 = 0u; _1104 = as_type(_997); } uint _1105; uint _1106; if (!_1024) { _1105 = 0u; _1106 = 0u; } else { _1105 = _1104; _1106 = _1103; } uint _1108 = 108u + buf6_dword_off; uint _1136 = 47u + buf6_dword_off; float _1148 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[111u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[_1136]), as_type(cbuf_20.data[110u + buf6_dword_off])))); float _1152 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1148)))); float _1156 = spvFAdd(-3.1415927410125732421875, (0.0 > _1148) ? (-_1152) : _1152); uint _1177 = 95u + buf6_dword_off; float _1185 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1156)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1156)))))), 0.5, 0.5))); float _1190 = spvFSub(_503, as_type(cbuf_20.data[94u + buf6_dword_off])); float _1194 = spvFSub(_501, as_type(cbuf_20.data[93u + buf6_dword_off])); float _1201 = spvFSub(_499, as_type(cbuf_20.data[92u + buf6_dword_off])); float _1204 = fma(spvFMul(spvFMul(_1185, spvFMul(_1185, _1185)), fma(_1185, spvFAdd(-15.0, spvFMul(6.0, _1185)), 10.0)), spvFSub(as_type(cbuf_20.data[109u + buf6_dword_off]), as_type(cbuf_20.data[_1108])), as_type(cbuf_20.data[_1108])); float _1205 = fma(_1201, _1201, fma(_1194, _1194, spvFMul(_1190, _1190))); float _1208 = spvFMul(as_type(cbuf_20.data[44u + buf6_dword_off]), _1204); float _1211 = spvFMul(as_type(cbuf_20.data[45u + buf6_dword_off]), _1204); float _1213 = spvFMul(as_type(cbuf_20.data[46u + buf6_dword_off]), _1204); bool _1214 = 0.0 < _1205; uint _1217; if (_1214) { _1217 = as_type(sqrt(_1205)); } else { _1217 = as_type(_1205); } uint _1219; if (!_1214) { _1219 = 0u; } else { _1219 = _1217; } bool _1221 = as_type(cbuf_20.data[_1177]) > 0.0; uint _1232; if (_1221) { _1232 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_1219), 1.0 / fast::max(as_type(cbuf_20.data[_1177]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _1232 = _1219; } uint _1233; if (!_1221) { _1233 = 1065353216u; } else { _1233 = _1232; } bool _1235 = as_type(cbuf_20.data[_1136]) > 0.0; uint _1309; uint _1310; uint _1311; uint _1312; if (_1235) { bool _1240 = 0.0 < fma(_1208, _1208, fma(_1211, _1211, spvFMul(_1213, _1213))); uint _1244; if (_1240) { _1244 = as_type(spvFMul(_1213, _1213)); } else { _1244 = _1102; } uint _1255; uint _1256; uint _1257; if (_1240) { float _1248 = rsqrt(fma(_1208, _1208, fma(_1211, _1211, as_type(_1244)))); _1255 = as_type(spvFMul(_1211, _1248)); _1256 = as_type(spvFMul(_1208, _1248)); _1257 = as_type(spvFMul(_1213, _1248)); } else { _1255 = as_type(in.vs_in_attr4.x); _1256 = _1100; _1257 = _1101; } uint _1259; uint _1260; uint _1261; if (!_1240) { _1259 = 0u; _1260 = 0u; _1261 = 0u; } else { _1259 = _1256; _1260 = _1255; _1261 = _1257; } float _1267 = fma(as_type(_1259), _499, fma(as_type(_1260), _501, spvFMul(_503, as_type(_1261)))); float _1272 = fma(spvFMul(as_type(cbuf_20.data[_1136]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), _1267)); float _1276 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1272)))); float _1279 = (0.0 > _1272) ? (-_1276) : _1276; float _1289 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1279)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1279)))))); float _1300 = fma(_1289, 0.5, 0.5); _1309 = as_type(_1267); _1310 = _1259; _1311 = as_type(fma(spvFMul(_1208, _1289), as_type(_1233), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1208, as_type(_1233)))), _1300))); _1312 = as_type(fma(spvFMul(_1213, _1289), as_type(_1233), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1213, as_type(_1233)))), _1300))); } else { _1309 = _1101; _1310 = _1100; _1311 = 0u; _1312 = as_type(_1208); } uint _1313; uint _1314; if (!_1235) { _1313 = 0u; _1314 = 0u; } else { _1313 = _1312; _1314 = _1311; } uint _1328 = 51u + buf6_dword_off; uint _1332 = 112u + buf6_dword_off; float _1356 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[115u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[114u + buf6_dword_off]), as_type(cbuf_20.data[_1328])))); float _1360 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1356)))); float _1364 = spvFAdd(-3.1415927410125732421875, (0.0 > _1356) ? (-_1360) : _1360); float _1377 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1364)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1364)))))), 0.5, 0.5))); float _1400 = fma(spvFMul(spvFMul(_1377, spvFMul(_1377, _1377)), fma(_1377, spvFAdd(-15.0, spvFMul(6.0, _1377)), 10.0)), spvFSub(as_type(cbuf_20.data[113u + buf6_dword_off]), as_type(cbuf_20.data[_1332])), as_type(cbuf_20.data[_1332])); float _1402 = spvFMul(as_type(cbuf_20.data[52u + buf6_dword_off]), _1400); uint _1403 = as_type(_1402); float _1405 = spvFMul(as_type(cbuf_20.data[53u + buf6_dword_off]), _1400); bool _1410 = as_type(cbuf_20.data[_1328]) > 0.0; uint _1575; uint _1576; uint _1577; uint _1578; uint _1579; uint _1580; uint _1581; if (_1410) { float _1413 = spvFSub(_499, as_type(cbuf_20.data[48u + buf6_dword_off])); float _1415 = spvFSub(_501, as_type(cbuf_20.data[49u + buf6_dword_off])); float _1418 = spvFSub(_503, as_type(cbuf_20.data[50u + buf6_dword_off])); float _1421 = fma(_1413, _1413, fma(_1415, _1415, spvFMul(_1418, _1418))); bool _1423 = 0.0 < _1421; uint _1426; if (_1423) { _1426 = as_type(sqrt(_1421)); } else { _1426 = _1310; } uint _1434; uint _1435; if (_1423) { float _1429 = rsqrt(fma(_1413, _1413, spvFMul(_1418, _1418))); _1434 = as_type(spvFMul(_1413, _1429)); _1435 = as_type(spvFMul(_1418, _1429)); } else { _1434 = _1099; _1435 = as_type(_1421); } uint _1437; uint _1438; uint _1439; if (!_1423) { _1437 = 0u; _1438 = 0u; _1439 = 0u; } else { _1437 = _1426; _1438 = _1434; _1439 = _1435; } uint _1441 = 128u + buf6_dword_off; uint _1445 = 129u + buf6_dword_off; uint _1449 = 130u + buf6_dword_off; bool _1457 = as_type(cbuf_20.data[131u + buf6_dword_off]) > 0.0; uint _1501; uint _1502; uint _1503; uint _1504; uint _1505; if (_1457) { float _1467 = fma(as_type(cbuf_20.data[_1441]), as_type(cbuf_20.data[_1441]), fma(as_type(cbuf_20.data[_1445]), as_type(cbuf_20.data[_1445]), spvFMul(as_type(cbuf_20.data[_1449]), as_type(cbuf_20.data[_1449])))); bool _1469 = _1467 > 0.0; uint _1484; uint _1485; if (_1469) { float _1477 = rsqrt(fma(as_type(cbuf_20.data[_1441]), as_type(cbuf_20.data[_1441]), spvFMul(as_type(cbuf_20.data[_1449]), as_type(cbuf_20.data[_1449])))); _1484 = as_type(spvFMul(as_type(cbuf_20.data[_1441]), _1477)); _1485 = as_type(spvFMul(as_type(cbuf_20.data[_1449]), _1477)); } else { _1484 = _438; _1485 = as_type(_1467); } uint _1486; uint _1487; if (!_1469) { _1486 = 0u; _1487 = 0u; } else { _1486 = _1484; _1487 = _1485; } float _1494 = fma(as_type(_1486), as_type(_1438), spvFAdd(0.0, spvFMul(as_type(_1439), as_type(_1487)))); _1501 = 0u; _1502 = _1486; _1503 = _1487; _1504 = as_type(fast::clamp(fma(_1494, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _1505 = as_type(_1494); } else { _1501 = _321; _1502 = _438; _1503 = 0u; _1504 = as_type(_1415); _1505 = _1439; } uint _1506; uint _1507; uint _1508; if (!_1457) { _1506 = _1438; _1507 = _1505; _1508 = 1065353216u; } else { _1506 = _1502; _1507 = _1503; _1508 = _1504; } float _1517 = spvFMul(as_type(_1508), spvFSub(1.0, fast::clamp(spvFMul(as_type(_1437), 1.0 / fast::max(0.001000000047497451305389404296875, _1405)), 0.0, 1.0))); bool _1519 = 0.0 < _1517; uint _1520; if (_1519) { _1520 = 1092616192u; } else { _1520 = _1508; } uint _1568; uint _1569; uint _1570; uint _1571; if (_1519) { float _1527 = fma(-as_type(_1437), 2.0, spvFMul(as_type(cbuf_20.data[_1328]), as_type(_1520))); float _1531 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1527)))); float _1534 = (0.0 > _1527) ? (-_1531) : _1531; uint _1540 = as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1534)))); float _1544 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1534)) | _1540)); float _1553 = spvFMul(_1402, _1517); float _1558 = spvFSub(1.0, _1544); float _1560 = fma(spvFMul(as_type(cbuf_20.data[54u + buf6_dword_off]), _1400), _1558, _1544); float _1561 = fma(_1560, 0.5, 0.5); _1568 = as_type(_1558); _1569 = _1540; _1570 = as_type(fma(spvFMul(as_type(_1506), _1553), _1560, spvFMul(spvFMul(_1517, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1402, _1413)))), _1561))); _1571 = as_type(fma(spvFMul(as_type(_1507), _1553), _1560, spvFMul(spvFMul(_1517, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1402, _1418)))), _1561))); } else { _1568 = _1505; _1569 = _1437; _1570 = as_type(_1517); _1571 = _1403; } uint _1573; uint _1574; if (!_1519) { _1573 = 0u; _1574 = 0u; } else { _1573 = _1570; _1574 = _1571; } _1575 = _1568; _1576 = _1501; _1577 = _1569; _1578 = _1506; _1579 = _1438; _1580 = _1573; _1581 = _1574; } else { _1575 = _1309; _1576 = _321; _1577 = _1310; _1578 = _438; _1579 = _1099; _1580 = as_type(_1405); _1581 = _1403; } uint _1582; uint _1583; if (!_1410) { _1582 = 0u; _1583 = 0u; } else { _1582 = _1581; _1583 = _1580; } uint _1597 = 59u + buf6_dword_off; uint _1601 = 116u + buf6_dword_off; float _1625 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[119u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[118u + buf6_dword_off]), as_type(cbuf_20.data[_1597])))); float _1629 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1625)))); float _1633 = spvFAdd(-3.1415927410125732421875, (0.0 > _1625) ? (-_1629) : _1629); float _1646 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1633)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1633)))))), 0.5, 0.5))); float _1669 = fma(spvFMul(spvFMul(_1646, spvFMul(_1646, _1646)), fma(_1646, spvFAdd(-15.0, spvFMul(6.0, _1646)), 10.0)), spvFSub(as_type(cbuf_20.data[117u + buf6_dword_off]), as_type(cbuf_20.data[_1601])), as_type(cbuf_20.data[_1601])); float _1671 = spvFMul(as_type(cbuf_20.data[60u + buf6_dword_off]), _1669); uint _1672 = as_type(_1671); float _1674 = spvFMul(as_type(cbuf_20.data[61u + buf6_dword_off]), _1669); bool _1679 = as_type(cbuf_20.data[_1597]) > 0.0; uint _1840; uint _1841; uint _1842; uint _1843; uint _1844; uint _1845; uint _1846; if (_1679) { float _1682 = spvFSub(_499, as_type(cbuf_20.data[56u + buf6_dword_off])); float _1684 = spvFSub(_501, as_type(cbuf_20.data[57u + buf6_dword_off])); float _1687 = spvFSub(_503, as_type(cbuf_20.data[58u + buf6_dword_off])); float _1690 = fma(_1682, _1682, fma(_1684, _1684, spvFMul(_1687, _1687))); bool _1692 = 0.0 < _1690; uint _1695; if (_1692) { _1695 = as_type(sqrt(_1690)); } else { _1695 = _1577; } uint _1703; uint _1704; if (_1692) { float _1698 = rsqrt(fma(_1682, _1682, spvFMul(_1687, _1687))); _1703 = as_type(spvFMul(_1682, _1698)); _1704 = as_type(spvFMul(_1687, _1698)); } else { _1703 = _1579; _1704 = as_type(_1690); } uint _1706; uint _1707; uint _1708; if (!_1692) { _1706 = 0u; _1707 = 0u; _1708 = 0u; } else { _1706 = _1695; _1707 = _1703; _1708 = _1704; } uint _1710 = 132u + buf6_dword_off; uint _1714 = 133u + buf6_dword_off; uint _1718 = 134u + buf6_dword_off; bool _1726 = as_type(cbuf_20.data[135u + buf6_dword_off]) > 0.0; uint _1768; uint _1769; uint _1770; uint _1771; uint _1772; if (_1726) { float _1736 = fma(as_type(cbuf_20.data[_1710]), as_type(cbuf_20.data[_1710]), fma(as_type(cbuf_20.data[_1714]), as_type(cbuf_20.data[_1714]), spvFMul(as_type(cbuf_20.data[_1718]), as_type(cbuf_20.data[_1718])))); bool _1738 = _1736 > 0.0; uint _1753; uint _1754; if (_1738) { float _1746 = rsqrt(fma(as_type(cbuf_20.data[_1710]), as_type(cbuf_20.data[_1710]), spvFMul(as_type(cbuf_20.data[_1718]), as_type(cbuf_20.data[_1718])))); _1753 = as_type(spvFMul(as_type(cbuf_20.data[_1710]), _1746)); _1754 = as_type(spvFMul(as_type(cbuf_20.data[_1718]), _1746)); } else { _1753 = _1578; _1754 = as_type(_1736); } uint _1755; uint _1756; if (!_1738) { _1755 = 0u; _1756 = 0u; } else { _1755 = _1753; _1756 = _1754; } float _1763 = fma(as_type(_1755), as_type(_1707), spvFAdd(0.0, spvFMul(as_type(_1708), as_type(_1756)))); _1768 = 0u; _1769 = _1755; _1770 = _1756; _1771 = as_type(fast::clamp(fma(_1763, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _1772 = as_type(_1763); } else { _1768 = _1576; _1769 = _1578; _1770 = 0u; _1771 = as_type(_1684); _1772 = _1708; } uint _1773; uint _1774; uint _1775; if (!_1726) { _1773 = _1707; _1774 = _1772; _1775 = 1065353216u; } else { _1773 = _1769; _1774 = _1770; _1775 = _1771; } float _1783 = spvFMul(as_type(_1775), spvFSub(1.0, fast::clamp(spvFMul(as_type(_1706), 1.0 / fast::max(0.001000000047497451305389404296875, _1674)), 0.0, 1.0))); bool _1785 = 0.0 < _1783; uint _1786; if (_1785) { _1786 = 1092616192u; } else { _1786 = _1775; } uint _1833; uint _1834; uint _1835; uint _1836; if (_1785) { float _1792 = fma(-as_type(_1706), 2.0, spvFMul(as_type(cbuf_20.data[_1597]), as_type(_1786))); float _1796 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1792)))); float _1799 = (0.0 > _1792) ? (-_1796) : _1796; uint _1805 = as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1799)))); float _1809 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1799)) | _1805)); float _1818 = spvFMul(_1671, _1783); float _1823 = spvFSub(1.0, _1809); float _1825 = fma(spvFMul(as_type(cbuf_20.data[62u + buf6_dword_off]), _1669), _1823, _1809); float _1826 = fma(_1825, 0.5, 0.5); _1833 = as_type(_1823); _1834 = _1805; _1835 = as_type(fma(spvFMul(as_type(_1773), _1818), _1825, spvFMul(spvFMul(_1783, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1671, _1682)))), _1826))); _1836 = as_type(fma(spvFMul(as_type(_1774), _1818), _1825, spvFMul(spvFMul(_1783, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1671, _1687)))), _1826))); } else { _1833 = _1772; _1834 = _1706; _1835 = as_type(_1783); _1836 = _1672; } uint _1838; uint _1839; if (!_1785) { _1838 = 0u; _1839 = 0u; } else { _1838 = _1835; _1839 = _1836; } _1840 = _1833; _1841 = _1768; _1842 = _1834; _1843 = _1773; _1844 = _1707; _1845 = _1838; _1846 = _1839; } else { _1840 = _1575; _1841 = _1576; _1842 = _1577; _1843 = _1578; _1844 = _1579; _1845 = as_type(_1674); _1846 = _1672; } uint _1847; uint _1848; if (!_1679) { _1847 = 0u; _1848 = 0u; } else { _1847 = _1846; _1848 = _1845; } uint _1862 = 67u + buf6_dword_off; uint _1866 = 120u + buf6_dword_off; float _1890 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[123u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[122u + buf6_dword_off]), as_type(cbuf_20.data[_1862])))); float _1894 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1890)))); float _1898 = spvFAdd(-3.1415927410125732421875, (0.0 > _1890) ? (-_1894) : _1894); float _1911 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1898)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1898)))))), 0.5, 0.5))); float _1934 = fma(spvFMul(spvFMul(_1911, spvFMul(_1911, _1911)), fma(_1911, spvFAdd(-15.0, spvFMul(6.0, _1911)), 10.0)), spvFSub(as_type(cbuf_20.data[121u + buf6_dword_off]), as_type(cbuf_20.data[_1866])), as_type(cbuf_20.data[_1866])); float _1936 = spvFMul(as_type(cbuf_20.data[68u + buf6_dword_off]), _1934); uint _1937 = as_type(_1936); float _1939 = spvFMul(as_type(cbuf_20.data[69u + buf6_dword_off]), _1934); bool _1944 = as_type(cbuf_20.data[_1862]) > 0.0; uint _2104; uint _2105; uint _2106; uint _2107; uint _2108; if (_1944) { float _1947 = spvFSub(_499, as_type(cbuf_20.data[64u + buf6_dword_off])); float _1949 = spvFSub(_501, as_type(cbuf_20.data[65u + buf6_dword_off])); float _1952 = spvFSub(_503, as_type(cbuf_20.data[66u + buf6_dword_off])); float _1955 = fma(_1947, _1947, fma(_1949, _1949, spvFMul(_1952, _1952))); bool _1957 = 0.0 < _1955; uint _1960; if (_1957) { _1960 = as_type(sqrt(_1955)); } else { _1960 = _1842; } uint _1968; uint _1969; if (_1957) { float _1963 = rsqrt(fma(_1947, _1947, spvFMul(_1952, _1952))); _1968 = as_type(spvFMul(_1947, _1963)); _1969 = as_type(spvFMul(_1952, _1963)); } else { _1968 = _1844; _1969 = as_type(_1955); } uint _1971; uint _1972; uint _1973; if (!_1957) { _1971 = 0u; _1972 = 0u; _1973 = 0u; } else { _1971 = _1960; _1972 = _1968; _1973 = _1969; } uint _1975 = 136u + buf6_dword_off; uint _1979 = 137u + buf6_dword_off; uint _1983 = 138u + buf6_dword_off; bool _1991 = as_type(cbuf_20.data[139u + buf6_dword_off]) > 0.0; uint _2033; uint _2034; uint _2035; uint _2036; uint _2037; if (_1991) { float _2001 = fma(as_type(cbuf_20.data[_1975]), as_type(cbuf_20.data[_1975]), fma(as_type(cbuf_20.data[_1979]), as_type(cbuf_20.data[_1979]), spvFMul(as_type(cbuf_20.data[_1983]), as_type(cbuf_20.data[_1983])))); bool _2003 = _2001 > 0.0; uint _2018; uint _2019; if (_2003) { float _2011 = rsqrt(fma(as_type(cbuf_20.data[_1975]), as_type(cbuf_20.data[_1975]), spvFMul(as_type(cbuf_20.data[_1983]), as_type(cbuf_20.data[_1983])))); _2018 = as_type(spvFMul(as_type(cbuf_20.data[_1975]), _2011)); _2019 = as_type(spvFMul(as_type(cbuf_20.data[_1983]), _2011)); } else { _2018 = _1843; _2019 = as_type(_2001); } uint _2020; uint _2021; if (!_2003) { _2020 = 0u; _2021 = 0u; } else { _2020 = _2018; _2021 = _2019; } float _2028 = fma(as_type(_2020), as_type(_1972), spvFAdd(0.0, spvFMul(as_type(_1973), as_type(_2021)))); _2033 = 0u; _2034 = _2020; _2035 = _2021; _2036 = as_type(fast::clamp(fma(_2028, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _2037 = as_type(_2028); } else { _2033 = _1841; _2034 = _1843; _2035 = 0u; _2036 = as_type(_1949); _2037 = _1973; } uint _2038; uint _2039; uint _2040; if (!_1991) { _2038 = _1972; _2039 = _2037; _2040 = 1065353216u; } else { _2038 = _2034; _2039 = _2035; _2040 = _2036; } float _2048 = spvFMul(as_type(_2040), spvFSub(1.0, fast::clamp(spvFMul(as_type(_1971), 1.0 / fast::max(0.001000000047497451305389404296875, _1939)), 0.0, 1.0))); bool _2050 = 0.0 < _2048; uint _2051; if (_2050) { _2051 = 1092616192u; } else { _2051 = _2040; } uint _2098; uint _2099; uint _2100; if (_2050) { float _2057 = fma(-as_type(_1971), 2.0, spvFMul(as_type(cbuf_20.data[_1862]), as_type(_2051))); float _2061 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _2057)))); float _2064 = (0.0 > _2057) ? (-_2061) : _2061; float _2074 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_2064)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _2064)))))); float _2083 = spvFMul(_1936, _2048); float _2088 = spvFSub(1.0, _2074); float _2090 = fma(spvFMul(as_type(cbuf_20.data[70u + buf6_dword_off]), _1934), _2088, _2074); float _2091 = fma(_2090, 0.5, 0.5); _2098 = as_type(_2088); _2099 = as_type(fma(spvFMul(as_type(_2038), _2083), _2090, spvFMul(spvFMul(_2048, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1936, _1947)))), _2091))); _2100 = as_type(fma(spvFMul(as_type(_2039), _2083), _2090, spvFMul(spvFMul(_2048, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1936, _1952)))), _2091))); } else { _2098 = _2037; _2099 = as_type(_2048); _2100 = _1937; } uint _2102; uint _2103; if (!_2050) { _2102 = 0u; _2103 = 0u; } else { _2102 = _2099; _2103 = _2100; } _2104 = _2098; _2105 = _1972; _2106 = _2033; _2107 = _2102; _2108 = _2103; } else { _2104 = _1840; _2105 = _1844; _2106 = _1841; _2107 = as_type(_1939); _2108 = _1937; } uint _2109; uint _2110; if (!_1944) { _2109 = 0u; _2110 = 0u; } else { _2109 = _2108; _2110 = _2107; } uint _2124 = 75u + buf6_dword_off; uint _2128 = 124u + buf6_dword_off; float _2152 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[127u + buf6_dword_off]), _525, spvFMul(as_type(cbuf_20.data[126u + buf6_dword_off]), as_type(cbuf_20.data[_2124])))); float _2156 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _2152)))); float _2160 = spvFAdd(-3.1415927410125732421875, (0.0 > _2152) ? (-_2156) : _2156); float _2173 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_2160)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _2160)))))), 0.5, 0.5))); float _2196 = fma(spvFMul(spvFMul(_2173, spvFMul(_2173, _2173)), fma(_2173, spvFAdd(-15.0, spvFMul(6.0, _2173)), 10.0)), spvFSub(as_type(cbuf_20.data[125u + buf6_dword_off]), as_type(cbuf_20.data[_2128])), as_type(cbuf_20.data[_2128])); float _2198 = spvFMul(as_type(cbuf_20.data[76u + buf6_dword_off]), _2196); uint _2199 = as_type(_2198); float _2201 = spvFMul(as_type(cbuf_20.data[77u + buf6_dword_off]), _2196); bool _2206 = as_type(cbuf_20.data[_2124]) > 0.0; uint _2363; uint _2364; if (_2206) { float _2209 = spvFSub(_499, as_type(cbuf_20.data[72u + buf6_dword_off])); float _2211 = spvFSub(_501, as_type(cbuf_20.data[73u + buf6_dword_off])); float _2214 = spvFSub(_503, as_type(cbuf_20.data[74u + buf6_dword_off])); float _2217 = fma(_2209, _2209, fma(_2211, _2211, spvFMul(_2214, _2214))); bool _2219 = 0.0 < _2217; uint _2222; if (_2219) { _2222 = as_type(sqrt(_2217)); } else { _2222 = _2104; } uint _2230; uint _2231; if (_2219) { float _2225 = rsqrt(fma(_2209, _2209, spvFMul(_2214, _2214))); _2230 = as_type(spvFMul(_2209, _2225)); _2231 = as_type(spvFMul(_2214, _2225)); } else { _2230 = _2106; _2231 = as_type(_2217); } uint _2233; uint _2234; uint _2235; if (!_2219) { _2233 = 0u; _2234 = 0u; _2235 = 0u; } else { _2233 = _2222; _2234 = _2230; _2235 = _2231; } uint _2237 = 140u + buf6_dword_off; uint _2241 = 141u + buf6_dword_off; uint _2245 = 142u + buf6_dword_off; bool _2253 = as_type(cbuf_20.data[143u + buf6_dword_off]) > 0.0; uint _2295; uint _2296; uint _2297; uint _2298; if (_2253) { float _2263 = fma(as_type(cbuf_20.data[_2237]), as_type(cbuf_20.data[_2237]), fma(as_type(cbuf_20.data[_2241]), as_type(cbuf_20.data[_2241]), spvFMul(as_type(cbuf_20.data[_2245]), as_type(cbuf_20.data[_2245])))); bool _2265 = _2263 > 0.0; uint _2280; uint _2281; if (_2265) { float _2273 = rsqrt(fma(as_type(cbuf_20.data[_2237]), as_type(cbuf_20.data[_2237]), spvFMul(as_type(cbuf_20.data[_2245]), as_type(cbuf_20.data[_2245])))); _2280 = as_type(spvFMul(as_type(cbuf_20.data[_2237]), _2273)); _2281 = as_type(spvFMul(as_type(cbuf_20.data[_2245]), _2273)); } else { _2280 = _2105; _2281 = as_type(_2263); } uint _2282; uint _2283; if (!_2265) { _2282 = 0u; _2283 = 0u; } else { _2282 = _2280; _2283 = _2281; } float _2290 = fma(as_type(_2282), as_type(_2234), spvFAdd(0.0, spvFMul(as_type(_2235), as_type(_2283)))); _2295 = _2282; _2296 = _2283; _2297 = as_type(fast::clamp(fma(_2290, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _2298 = as_type(_2290); } else { _2295 = _2105; _2296 = 0u; _2297 = as_type(_2211); _2298 = _2235; } uint _2299; uint _2300; uint _2301; if (!_2253) { _2299 = _2234; _2300 = _2298; _2301 = 1065353216u; } else { _2299 = _2295; _2300 = _2296; _2301 = _2297; } float _2309 = spvFMul(as_type(_2301), spvFSub(1.0, fast::clamp(spvFMul(as_type(_2233), 1.0 / fast::max(0.001000000047497451305389404296875, _2201)), 0.0, 1.0))); bool _2311 = 0.0 < _2309; uint _2312; if (_2311) { _2312 = 1092616192u; } else { _2312 = _2301; } uint _2358; uint _2359; if (_2311) { float _2318 = fma(-as_type(_2233), 2.0, spvFMul(as_type(cbuf_20.data[_2124]), as_type(_2312))); float _2322 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _2318)))); float _2325 = (0.0 > _2318) ? (-_2322) : _2322; float _2335 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_2325)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _2325)))))); float _2344 = spvFMul(_2198, _2309); float _2350 = fma(spvFMul(as_type(cbuf_20.data[78u + buf6_dword_off]), _2196), spvFSub(1.0, _2335), _2335); float _2351 = fma(_2350, 0.5, 0.5); _2358 = as_type(fma(spvFMul(as_type(_2299), _2344), _2350, spvFMul(spvFMul(_2309, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_2198, _2209)))), _2351))); _2359 = as_type(fma(spvFMul(as_type(_2300), _2344), _2350, spvFMul(spvFMul(_2309, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_2198, _2214)))), _2351))); } else { _2358 = as_type(_2309); _2359 = _2199; } uint _2361; uint _2362; if (!_2311) { _2361 = 0u; _2362 = 0u; } else { _2361 = _2358; _2362 = _2359; } _2363 = _2361; _2364 = _2362; } else { _2363 = as_type(_2201); _2364 = _2199; } uint _2365; uint _2366; if (!_2206) { _2365 = 0u; _2366 = 0u; } else { _2365 = _2364; _2366 = _2363; } float _2368 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_687), as_type(_894)), as_type(_1106)), as_type(_1314)), as_type(_1583)), as_type(_1848)), as_type(_2110)), as_type(_2366)); float _2370 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_688), as_type(_893)), as_type(_1105)), as_type(_1313)), as_type(_1582)), as_type(_1847)), as_type(_2109)), as_type(_2365)); float _2376 = spvFMul(_2368, 1.0 / sqrt(fma(_2368, _2368, 1.0))); float _2446 = spvFMul(_2370, 1.0 / sqrt(fma(_2370, _2370, 1.0))); float _2466 = spvFSub(fma(_2446, in.vs_in_attr4.y, _503), as_type(cbuf_24.data[191u + buf8_dword_off])); float _2469 = spvFSub(fma(spvFAdd(-1.0, sqrt(fast::clamp(spvFAdd(-fma(_2446, _2446, spvFMul(_2376, _2376)), 1.0), 0.0, 1.0))), in.vs_in_attr4.y, _501), as_type(cbuf_24.data[187u + buf8_dword_off])); float _2483 = spvFSub(fma(_2376, in.vs_in_attr4.y, _499), as_type(cbuf_24.data[183u + buf8_dword_off])); float _2493 = fma(as_type(cbuf_24.data[200u + buf8_dword_off]), _2483, fma(as_type(cbuf_24.data[201u + buf8_dword_off]), _2469, fma(as_type(cbuf_24.data[202u + buf8_dword_off]), _2466, as_type(cbuf_24.data[203u + buf8_dword_off])))); float _2495 = fma(as_type(cbuf_24.data[204u + buf8_dword_off]), _2483, fma(as_type(cbuf_24.data[205u + buf8_dword_off]), _2469, fma(as_type(cbuf_24.data[206u + buf8_dword_off]), _2466, as_type(cbuf_24.data[207u + buf8_dword_off])))); float _2497 = fma(as_type(cbuf_24.data[208u + buf8_dword_off]), _2483, fma(as_type(cbuf_24.data[209u + buf8_dword_off]), _2469, fma(as_type(cbuf_24.data[210u + buf8_dword_off]), _2466, as_type(cbuf_24.data[211u + buf8_dword_off])))); float _2499 = fma(as_type(cbuf_24.data[212u + buf8_dword_off]), _2483, fma(as_type(cbuf_24.data[213u + buf8_dword_off]), _2469, fma(as_type(cbuf_24.data[214u + buf8_dword_off]), _2466, as_type(cbuf_24.data[215u + buf8_dword_off])))); out.gl_Position.x = _2493; out.gl_Position.y = _2495; out.gl_Position.z = _2497; out.gl_Position.w = _2499; out.out_attr0.x = fma(as_type(_437), _398, fma(as_type(_438), _399, spvFMul(as_type(_439), _400))); out.out_attr0.y = fma(as_type(_458), _398, fma(as_type(_459), _399, spvFMul(as_type(_460), _400))); out.out_attr0.z = fma(as_type(_479), _398, fma(as_type(_480), _399, spvFMul(as_type(_481), _400))); out.out_attr0.w = 0.0; out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = in.vs_in_attr2.z; out.out_attr1.w = in.vs_in_attr2.w; out.out_attr2.x = _2493; out.out_attr2.y = _2495; out.out_attr2.z = _2497; out.out_attr2.w = _2499; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf5_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(_313))), as_type(cbuf_8.data[3u + buf5_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[24]; }; constant uint _99 = {}; constant uint _100 = {}; constant uint _101 = {}; constant uint _102 = {}; constant uint _103 = {}; constant uint _104 = {}; constant uint _105 = {}; constant uint _106 = {}; constant uint _107 = {}; constant uint _108 = {}; constant uint _109 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], sampler fs_samp24 [[sampler(0)]], sampler fs_samp12 [[sampler(1)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _131 = uint(gl_FrontFacing); float _154 = 1.0 / in.fs_in_attr2.w; float _172 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float4 _177 = fs_img16.sample(fs_samp24, float2(spvFMul(0.25, spvFMul(as_type(cbuf_40.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr2.x), _154, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_40.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr2.y), _154, 0.5))))); float _179 = spvFMul(in.fs_in_attr0.x, _172); float _181 = spvFMul(in.fs_in_attr0.y, _172); float _182 = spvFMul(in.fs_in_attr0.z, _172); bool _184 = 0u == _131; uint _197; uint _198; uint _199; if (_184) { _197 = as_type(fast::max(-_182, -_182)); _198 = as_type(fast::max(-_179, -_179)); _199 = as_type(fast::max(-_181, -_181)); } else { _197 = as_type(_182); _198 = _131; _199 = as_type(_179); } uint _202; uint _203; if (!_184) { _202 = as_type(_181); _203 = _199; } else { _202 = _199; _203 = _198; } uint _221 = uint(in.fs_in_attr0.w) * 13u; float _233 = fma(in.fs_in_attr3.y, as_type(cbuf_28.data[1u + buf1_dword_off]), as_type(cbuf_28.data[3u + buf1_dword_off])); float4 _239 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr3.x, as_type(cbuf_28.data[0u + buf1_dword_off]), as_type(cbuf_28.data[2u + buf1_dword_off])), _233)); float _240 = _239.x; uint _241 = as_type(_240); float _242 = _239.y; uint _243 = as_type(_242); float _267 = spvFMul(_239.w, in.fs_in_attr1.w); float _269 = spvFMul(_267, as_type(cbuf_36.data[((12u + ((_221 + 7u) * 16u)) + buf2_off) >> 2u])); uint _270 = as_type(_269); uint _277 = _221 + 9u; uint _279 = _221 + 10u; bool _282 = (as_type(cbuf_32.data[20u + buf3_dword_off]) > fma(as_type(cbuf_32.data[21u + buf3_dword_off]), spvFAdd(-0.5, _177.w), _267)) || (_269 == 0.0); bool _283 = !_282; uint _487; uint _488; uint _489; uint _490; uint _491; uint _492; uint _493; uint _494; uint _495; uint _496; uint _497; uint _498; uint _499; uint _500; bool _501; uint _502; uint _503; if (!_282) { uint _288 = ((0u + (_277 * 16u)) + buf2_off) >> 2u; uint4 _301 = uint4(cbuf_36.data[_288 + 0u], cbuf_36.data[_288 + 1u], cbuf_36.data[_288 + 2u], cbuf_36.data[_288 + 3u]); uint _303 = _301.y; uint _304 = _301.z; uint _305 = _301.w; uint _309 = ((0u + (_279 * 16u)) + buf2_off) >> 2u; uint4 _322 = uint4(cbuf_36.data[_309 + 0u], cbuf_36.data[_309 + 1u], cbuf_36.data[_309 + 2u], cbuf_36.data[_309 + 3u]); uint _325 = _322.z; uint _326 = _322.w; uint _330 = ((0u + ((_221 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _343 = uint4(cbuf_36.data[_330 + 0u], cbuf_36.data[_330 + 1u], cbuf_36.data[_330 + 2u], cbuf_36.data[_330 + 3u]); uint _346 = _343.z; uint _347 = _343.w; float _399 = fast::max(0.0, spvFAdd(as_type(_305), fma(as_type(_197), as_type(_304), fma(as_type(_203), as_type(_301.x), spvFMul(as_type(_202), as_type(_303)))))); float _401 = fast::max(0.0, spvFAdd(as_type(_326), fma(as_type(_197), as_type(_325), fma(as_type(_203), as_type(_322.x), spvFMul(as_type(_202), as_type(_322.y)))))); bool _406 = _283 && (!_282); uint _407; if (_406) { _407 = 0u; } else { _407 = _326; } uint _454; uint _455; uint _456; uint _457; uint _458; uint _459; uint _460; uint _461; if (_406) { bool _413 = as_type(cbuf_32.data[22u + buf3_dword_off]) != 0.0; _454 = as_type(fma(0.5, as_type(_203), 0.500488758087158203125)); _455 = as_type(_413 ? _269 : 0.0); _456 = as_type(_413 ? _269 : 1.0); _457 = as_type(_413 ? _269 : as_type(cbuf_36.data[((12u + ((_221 + 8u) * 16u)) + buf2_off) >> 2u])); _458 = as_type(fma(0.5, as_type(_197), 0.500488758087158203125)); _459 = as_type(fma(0.5, as_type(_202), 0.500488758087158203125)); _460 = cbuf_36.data[((0u + ((_221 + 12u) * 16u)) + buf2_off) >> 2u]; _461 = as_type(_413 ? _269 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + ((_221 + 6u) * 16u)) + buf2_off) >> 2u]))); } else { _454 = _347; _455 = _346; _456 = _325; _457 = _305; _458 = _304; _459 = _303; _460 = _243; _461 = _241; } uint _472; uint _473; uint _474; uint _475; uint _476; uint _477; uint _478; uint _479; uint _480; uint _481; uint _482; uint _483; uint _484; uint _485; uint _486; if (_283 && (!_406)) { _472 = as_type(_399); _473 = as_type(_401); _474 = _109; _475 = as_type(_399); _476 = as_type(_399); _477 = as_type(_401); _478 = _203; _479 = as_type(_401); _480 = _203; _481 = _109; _482 = _203; _483 = as_type(_401); _484 = as_type(_401); _485 = _203; _486 = _109; } else { _472 = _454; _473 = _455; _474 = as_type(spvFMul(as_type(cbuf_32.data[1u + buf3_dword_off]), _242)); _475 = as_type(spvFMul(as_type(cbuf_32.data[0u + buf3_dword_off]), _240)); _476 = _407; _477 = _456; _478 = as_type(fast::max(0.0, spvFAdd(as_type(_347), fma(as_type(_197), as_type(_346), fma(as_type(_203), as_type(_343.x), spvFMul(as_type(_202), as_type(_343.y))))))); _479 = _457; _480 = _458; _481 = _459; _482 = _460; _483 = _461; _484 = _270; _485 = as_type(spvFMul(as_type(cbuf_32.data[2u + buf3_dword_off]), _239.z)); _486 = as_type(_401); } _487 = _480; _488 = _481; _489 = _472; _490 = _473; _491 = _482; _492 = _484; _493 = _485; _494 = _474; _495 = _475; _496 = _483; _497 = _477; _498 = _478; _499 = _486; _500 = as_type(_399); _501 = _283; _502 = _479; _503 = _476; } else { _487 = _107; _488 = _108; _489 = _99; _490 = _100; _491 = _243; _492 = _270; _493 = as_type(_233); _494 = _101; _495 = _102; _496 = _241; _497 = _104; _498 = _105; _499 = _279; _500 = _277; _501 = true; _502 = _106; _503 = _103; } if (!_501) { discard_fragment(); } out.frag_color5.x = as_type(_503); out.frag_color5.y = as_type(_503); out.frag_color5.z = as_type(_503); out.frag_color5.w = as_type(_502); if (!_501) { discard_fragment(); } out.frag_color4.x = as_type(_500); out.frag_color4.y = as_type(_499); out.frag_color4.z = as_type(_498); out.frag_color4.w = as_type(_497); if (!_501) { discard_fragment(); } out.frag_color3.x = as_type(_503); out.frag_color3.y = as_type(_503); out.frag_color3.z = as_type(_503); out.frag_color3.w = as_type(_496); if (!_501) { discard_fragment(); } out.frag_color2.x = as_type(_495); out.frag_color2.y = as_type(_494); out.frag_color2.z = as_type(_493); out.frag_color2.w = as_type(_492); if (!_501) { discard_fragment(); } out.frag_color1.x = as_type(_503); out.frag_color1.y = as_type(_503); out.frag_color1.z = as_type(_491); out.frag_color1.w = as_type(_490); if (_282) { discard_fragment(); } out.frag_color0.x = as_type(_489); out.frag_color0.y = as_type(_488); out.frag_color0.z = as_type(_487); out.frag_color0.w = as_type(_490); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x6a833138 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[216]; }; struct vs_cbuf_block_f32_1 { uint data[832]; }; struct vs_cbuf_block_f32_2 { uint data[192]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _245 = gl_InstanceIndex * 13u; float _260 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _261 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _262 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _270 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _271 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _272 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _291 = ((0u + ((_245 + 3u) * 16u)) + buf8_off) >> 2u; uint4 _304 = uint4(cbuf_12.data[_291 + 0u], cbuf_12.data[_291 + 1u], cbuf_12.data[_291 + 2u], cbuf_12.data[_291 + 3u]); uint _310 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + ((_245 + 5u) * 16u)) + buf8_off) >> 2u]) * 3u; uint _323 = ((0u + (_310 * 16u)) + buf9_off) >> 2u; uint4 _336 = uint4(cbuf_16.data[_323 + 0u], cbuf_16.data[_323 + 1u], cbuf_16.data[_323 + 2u], cbuf_16.data[_323 + 3u]); uint _337 = _336.x; uint _338 = _336.y; uint _339 = _336.z; uint _344 = ((0u + ((_310 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _357 = uint4(cbuf_16.data[_344 + 0u], cbuf_16.data[_344 + 1u], cbuf_16.data[_344 + 2u], cbuf_16.data[_344 + 3u]); uint _358 = _357.x; uint _359 = _357.y; uint _360 = _357.z; uint _365 = ((0u + ((_310 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _378 = uint4(cbuf_16.data[_365 + 0u], cbuf_16.data[_365 + 1u], cbuf_16.data[_365 + 2u], cbuf_16.data[_365 + 3u]); uint _379 = _378.x; uint _380 = _378.y; uint _381 = _378.z; float _405 = spvFSub(fma(as_type(_337), in.vs_in_attr0.x, fma(as_type(_338), in.vs_in_attr0.y, fma(as_type(_339), in.vs_in_attr0.z, as_type(_336.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _407 = spvFSub(fma(as_type(_358), in.vs_in_attr0.x, fma(as_type(_359), in.vs_in_attr0.y, fma(as_type(_360), in.vs_in_attr0.z, as_type(_357.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _409 = spvFSub(fma(as_type(_379), in.vs_in_attr0.x, fma(as_type(_380), in.vs_in_attr0.y, fma(as_type(_381), in.vs_in_attr0.z, as_type(_378.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _431 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _409, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _433 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _409, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _435 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _409, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _437 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _409, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _431; out.gl_Position.y = _433; out.gl_Position.z = _435; out.gl_Position.w = _437; out.out_attr4.x = _431; out.out_attr4.y = _433; out.out_attr4.z = _435; out.out_attr4.w = _437; out.out_attr0.x = fma(as_type(_337), _270, fma(as_type(_338), _271, spvFMul(as_type(_339), _272))); out.out_attr0.y = fma(as_type(_358), _270, fma(as_type(_359), _271, spvFMul(as_type(_360), _272))); out.out_attr0.z = fma(as_type(_379), _270, fma(as_type(_380), _271, spvFMul(as_type(_381), _272))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_337), _260, fma(as_type(_338), _261, spvFMul(as_type(_339), _262))); out.out_attr1.y = fma(as_type(_358), _260, fma(as_type(_359), _261, spvFMul(as_type(_360), _262))); out.out_attr1.z = fma(as_type(_379), _260, fma(as_type(_380), _261, spvFMul(as_type(_381), _262))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(_304.x), as_type(_304.z)); out.out_attr3.w = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(_304.y), as_type(_304.w)); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8aba0ecd [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7620368b [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[24]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _257 = (cbuf_12.data[20u + buf7_dword_off] + as_type(as_type(in.vs_in_attr1.w))) * 3u; float _270 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _271 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _272 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _280 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _281 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _282 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _298 = ((0u + (_257 * 16u)) + buf9_off) >> 2u; uint4 _311 = uint4(cbuf_16.data[_298 + 0u], cbuf_16.data[_298 + 1u], cbuf_16.data[_298 + 2u], cbuf_16.data[_298 + 3u]); uint _312 = _311.x; uint _313 = _311.y; uint _314 = _311.z; uint _319 = ((0u + ((_257 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _332 = uint4(cbuf_16.data[_319 + 0u], cbuf_16.data[_319 + 1u], cbuf_16.data[_319 + 2u], cbuf_16.data[_319 + 3u]); uint _333 = _332.x; uint _334 = _332.y; uint _335 = _332.z; uint _340 = ((0u + ((_257 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _353 = uint4(cbuf_16.data[_340 + 0u], cbuf_16.data[_340 + 1u], cbuf_16.data[_340 + 2u], cbuf_16.data[_340 + 3u]); uint _354 = _353.x; uint _355 = _353.y; uint _356 = _353.z; float _382 = spvFSub(fma(as_type(_312), in.vs_in_attr0.x, fma(as_type(_313), in.vs_in_attr0.y, fma(as_type(_314), in.vs_in_attr0.z, as_type(_311.w)))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _384 = spvFSub(fma(as_type(_333), in.vs_in_attr0.x, fma(as_type(_334), in.vs_in_attr0.y, fma(as_type(_335), in.vs_in_attr0.z, as_type(_332.w)))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _386 = spvFSub(fma(as_type(_354), in.vs_in_attr0.x, fma(as_type(_355), in.vs_in_attr0.y, fma(as_type(_356), in.vs_in_attr0.z, as_type(_353.w)))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _408 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _382, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _384, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _386, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _410 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _382, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _384, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _386, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _412 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _382, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _384, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _386, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _414 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _382, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _384, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _386, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _408; out.gl_Position.y = _410; out.gl_Position.z = _412; out.gl_Position.w = _414; out.out_attr4.x = _408; out.out_attr4.y = _410; out.out_attr4.z = _412; out.out_attr4.w = _414; out.out_attr1.x = fma(as_type(_312), _270, fma(as_type(_313), _271, spvFMul(as_type(_314), _272))); out.out_attr1.y = fma(as_type(_333), _270, fma(as_type(_334), _271, spvFMul(as_type(_335), _272))); out.out_attr1.z = fma(as_type(_354), _270, fma(as_type(_355), _271, spvFMul(as_type(_356), _272))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[12u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[14u + buf10_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[13u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[15u + buf10_dword_off])); out.out_attr0.x = fma(as_type(_312), _280, fma(as_type(_313), _281, spvFMul(as_type(_314), _282))); out.out_attr0.y = fma(as_type(_333), _280, fma(as_type(_334), _281, spvFMul(as_type(_335), _282))); out.out_attr0.z = fma(as_type(_354), _280, fma(as_type(_355), _281, spvFMul(as_type(_356), _282))); out.out_attr0.w = 0.0; out.out_attr5.x = fma(as_type(cbuf_12.data[12u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(cbuf_12.data[14u + buf7_dword_off])); out.out_attr5.y = fma(as_type(cbuf_12.data[13u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(cbuf_12.data[15u + buf7_dword_off])); out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[16]; }; struct fs_cbuf_block_f32_2 { uint data[216]; }; struct fs_cbuf_block_f32_3 { uint data[44]; }; struct fs_cbuf_block_f32_4 { uint data[104]; }; struct fs_cbuf_block_f32_5 { uint data[168]; }; struct fs_cbuf_block_f32_6 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_36 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_48 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_52 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_40 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_28 [[buffer(15)]], texture2d fs_img96 [[texture(0)]], texture2d fs_img80 [[texture(1)]], texture2d fs_img112 [[texture(2)]], texture2d fs_img104 [[texture(3)]], texture2d fs_img72 [[texture(4)]], texture2d fs_img64 [[texture(5)]], texture2d fs_img56 [[texture(6)]], texture2d fs_img88 [[texture(7)]], sampler fs_samp24 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp4 [[sampler(4)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _150 = uint(gl_FrontFacing); float4 _183 = fs_img96.sample(fs_samp24, float2(fma(in.fs_in_attr3.z, as_type(cbuf_32.data[56u + buf0_dword_off]), as_type(cbuf_32.data[58u + buf0_dword_off])), fma(in.fs_in_attr3.w, as_type(cbuf_32.data[57u + buf0_dword_off]), as_type(cbuf_32.data[59u + buf0_dword_off])))); float _266 = fma(as_type(cbuf_36.data[12u + buf1_dword_off]), _183.x, as_type(cbuf_36.data[14u + buf1_dword_off])); float _301 = (0.0 < _266) ? fma(-_266, spvFSub(0.0, in.fs_in_attr2.w), in.fs_in_attr2.w) : fma(_266, spvFSub(1.0, in.fs_in_attr2.w), in.fs_in_attr2.w); float _322 = fast::clamp(fast::max(_301, _301), 0.0, 1.0); float _335 = spvFMul(_322, _322); float _336 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _351 = 1.0 / fma(as_type(cbuf_48.data[32u + buf2_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[33u + buf2_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[34u + buf2_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[35u + buf2_dword_off]), in.fs_in_attr4.w)))); uint _356 = 40u + buf3_dword_off; uint _368 = 43u + buf3_dword_off; float _371 = spvFMul(in.fs_in_attr0.x, _336); float _373 = spvFMul(in.fs_in_attr0.y, _336); float _374 = spvFMul(in.fs_in_attr0.z, _336); float _376 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _377 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _378 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _381 = fma(-fma(as_type(cbuf_48.data[20u + buf2_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[21u + buf2_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[22u + buf2_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[23u + buf2_dword_off]), in.fs_in_attr4.w)))), _351, as_type(cbuf_48.data[183u + buf2_dword_off])); float _384 = fma(-fma(as_type(cbuf_48.data[24u + buf2_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[25u + buf2_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[26u + buf2_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[27u + buf2_dword_off]), in.fs_in_attr4.w)))), _351, as_type(cbuf_48.data[187u + buf2_dword_off])); float _387 = fma(-fma(as_type(cbuf_48.data[28u + buf2_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_48.data[29u + buf2_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_48.data[30u + buf2_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_48.data[31u + buf2_dword_off]), in.fs_in_attr4.w)))), _351, as_type(cbuf_48.data[191u + buf2_dword_off])); float _390 = fma(_335, 3.0, -spvFMul(spvFMul(_322, _335), 2.0)); bool _391 = 0u == _150; uint _404; uint _405; uint _406; if (_391) { _404 = as_type(fast::max(-_374, -_374)); _405 = as_type(fast::max(-_371, -_371)); _406 = as_type(fast::max(-_373, -_373)); } else { _404 = as_type(_374); _405 = _150; _406 = as_type(_371); } uint _409; uint _410; if (!_391) { _409 = _406; _410 = as_type(_373); } else { _409 = _405; _410 = _406; } float4 _443 = fs_img80.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[12u + buf0_dword_off]), as_type(cbuf_32.data[14u + buf0_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[13u + buf0_dword_off]), as_type(cbuf_32.data[15u + buf0_dword_off])))); float4 _451 = fs_img112.sample(fs_samp20, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float4 _490 = fs_img104.sample(fs_samp20, float2(in.fs_in_attr5.x, in.fs_in_attr5.y)); float _491 = _490.x; float _492 = _490.y; float _493 = _490.z; uint _495 = 12u + buf3_dword_off; float4 _508 = fs_img72.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[8u + buf0_dword_off]), as_type(cbuf_32.data[10u + buf0_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[9u + buf0_dword_off]), as_type(cbuf_32.data[11u + buf0_dword_off])))); float4 _546 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf0_dword_off])), fma(as_type(cbuf_32.data[5u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf0_dword_off])))); float _547 = _546.x; float _548 = _546.y; float _549 = _546.z; uint _551 = uint(in.fs_in_attr0.w) * 13u; float4 _571 = fs_img56.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[0u + buf0_dword_off]), as_type(cbuf_32.data[2u + buf0_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[1u + buf0_dword_off]), as_type(cbuf_32.data[3u + buf0_dword_off])))); float _572 = _571.x; float _573 = _571.y; float _574 = _571.z; float _575 = _571.w; float4 _580 = fs_img88.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[28u + buf0_dword_off]), as_type(cbuf_32.data[30u + buf0_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[29u + buf0_dword_off]), as_type(cbuf_32.data[31u + buf0_dword_off])))); float _609 = fma(2.0, _443.y, -1.0); float _610 = spvFMul(fma(2.0, _443.x, -1.0), fma(2.0, _443.w, -1.0)); float _611 = fma(2.0, _451.z, -1.0); float _615 = fma(2.0, _451.y, -1.0); float _622 = fma(2.0, _451.x, -1.0); float _632 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _634 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_610, _610), spvFMul(_609, _609)), 0.0, 1.0))); float _636 = rsqrt(fma(_622, _622, fma(_615, _615, spvFMul(_611, _611)))); float _638 = rsqrt(fma(_376, _376, fma(_377, _377, spvFMul(_378, _378)))); float _641 = rsqrt(fma(_381, _381, fma(_384, _384, spvFMul(_387, _387)))); float _642 = spvFMul(_611, _636); float _648 = spvFMul(_615, _636); float _649 = fma(_387, _641, _642); float _655 = fma(spvFMul(_378, _638), _610, fma(spvFMul(in.fs_in_attr1.z, _632), _609, spvFMul(as_type(_404), _634))); float _656 = spvFMul(_622, _636); float _659 = fast::clamp(spvFAdd(as_type(cbuf_52.data[41u + buf3_dword_off]), _451.w), 0.0, 1.0); float _660 = fma(_384, _641, _648); float _664 = fma(spvFMul(_377, _638), _610, fma(spvFMul(in.fs_in_attr1.y, _632), _609, spvFMul(as_type(_410), _634))); float _667 = fma(_381, _641, _656); float _669 = fma(spvFMul(_376, _638), _610, fma(spvFMul(in.fs_in_attr1.x, _632), _609, spvFMul(as_type(_409), _634))); float _673 = spvFMul(as_type(cbuf_40.data[8u + buf5_dword_off]), 0.00390625); float _678 = spvFMul(_508.x, _673); float _680 = rsqrt(fma(_667, _667, fma(_660, _660, spvFMul(_649, _649)))); float _690 = rsqrt(fma(_669, _669, fma(_664, _664, spvFMul(_655, _655)))); float _699 = spvFMul(_649, _680); float _700 = spvFMul(_655, _690); float _702 = exp2(spvFMul(13.0, _678)); float _704 = fma(fast::max(0.001000000047497451305389404296875, exp2(spvFMul(as_type(cbuf_52.data[42u + buf3_dword_off]), log2(_659)))), spvFSub(100.0, as_type(cbuf_52.data[_356])), as_type(cbuf_52.data[_356])); float _705 = spvFMul(_660, _680); float _707 = spvFMul(_664, _690); float _711 = spvFMul(_667, _680); float _716 = spvFMul(_669, _690); float _744 = fast::max(1.0, spvFMul(spvFMul(_702, _704), 1.0 / fma(_702, 0.01000213623046875, _704))); bool _756 = (_549 == 0.0) && (_548 == 0.0); float _757 = spvFMul(_491, spvFMul(as_type(cbuf_28.data[0u + buf6_dword_off]), _491)); float _758 = spvFMul(_492, spvFMul(as_type(cbuf_28.data[1u + buf6_dword_off]), _492)); float _759 = spvFMul(_493, spvFMul(as_type(cbuf_28.data[2u + buf6_dword_off]), _493)); float _764 = _756 ? _547 : _549; float _765 = _756 ? _547 : _548; float _774 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(spvFMul(_381, _641), _711, fma(spvFMul(_384, _641), _705, spvFMul(spvFMul(_387, _641), _699))), 0.0, 1.0))))); float _779 = spvFMul(_659, spvFMul(as_type(cbuf_52.data[_368]), _757)); float _780 = spvFMul(_659, spvFMul(as_type(cbuf_52.data[_368]), _758)); float _781 = spvFMul(_659, spvFMul(as_type(cbuf_52.data[_368]), _759)); float _783 = fast::clamp(fma(_656, _716, fma(_648, _707, spvFMul(_700, _642))), 0.0, 1.0); float _787 = spvFMul(exp2(spvFMul(_744, log2(fast::clamp(fma(_711, _716, fma(_705, _707, spvFMul(_700, _699))), 0.0, 1.0)))), fma(0.125, _744, 0.25)); float _843 = spvFMul(fma(_390, spvFSub(_580.w, _575), _575), as_type(cbuf_44.data[((12u + ((_551 + 7u) * 16u)) + buf4_off) >> 2u])); bool _847 = as_type(cbuf_40.data[22u + buf5_dword_off]) != 0.0; float _871 = _847 ? _843 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(-_547, _774, spvFAdd(_547, _774)), spvFMul(_779, _787)), spvFMul(as_type(cbuf_40.data[4u + buf5_dword_off]), as_type(cbuf_52.data[_495]))); out.frag_color5.y = spvFMul(spvFMul(fma(-_765, _774, spvFAdd(_765, _774)), spvFMul(_780, _787)), spvFMul(as_type(cbuf_40.data[5u + buf5_dword_off]), as_type(cbuf_52.data[_495]))); out.frag_color5.z = spvFMul(spvFMul(fma(-_764, _774, spvFAdd(_764, _774)), spvFMul(_781, _787)), spvFMul(as_type(cbuf_40.data[6u + buf5_dword_off]), as_type(cbuf_52.data[_495]))); out.frag_color5.w = _847 ? _843 : as_type(cbuf_44.data[((12u + ((_551 + 8u) * 16u)) + buf4_off) >> 2u]); if (false) { discard_fragment(); } out.frag_color4.x = spvFMul(fma(fma(-_547, _783, _783), _779, fma(as_type(cbuf_52.data[_368]), _757, -_779)), spvFSub(1.0, _547)); out.frag_color4.y = spvFMul(fma(fma(-_765, _783, _783), _780, fma(as_type(cbuf_52.data[_368]), _758, -_780)), spvFSub(1.0, _765)); out.frag_color4.z = spvFMul(fma(fma(-_764, _783, _783), _781, fma(as_type(cbuf_52.data[_368]), _759, -_781)), spvFSub(1.0, _764)); out.frag_color4.w = _847 ? _843 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_547); out.frag_color3.y = sqrt(_765); out.frag_color3.z = sqrt(_764); out.frag_color3.w = _847 ? _843 : spvFMul(0.0039215688593685626983642578125, float(cbuf_44.data[((0u + ((_551 + 6u) * 16u)) + buf4_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_40.data[0u + buf5_dword_off]), fma(_390, spvFSub(_580.x, _572), _572)); out.frag_color2.y = spvFMul(as_type(cbuf_40.data[1u + buf5_dword_off]), fma(_390, spvFSub(_580.y, _573), _573)); out.frag_color2.z = spvFMul(as_type(cbuf_40.data[2u + buf5_dword_off]), fma(_390, spvFSub(_580.z, _574), _574)); out.frag_color2.w = _843; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_673, _678); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_36.data[4u + buf1_dword_off]), in.fs_in_attr2.y)); out.frag_color1.z = _490.w; out.frag_color1.w = _871; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _716, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _707, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _700, 0.500488758087158203125); out.frag_color0.w = _871; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc829ee58 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr4.x; out.out_attr0.y = in.vs_in_attr4.y; out.out_attr0.z = in.vs_in_attr4.z; out.out_attr0.w = in.vs_in_attr4.w; uint _207 = (cbuf_12.data[20u + buf7_dword_off] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _213 = ((0u + ((_207 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _226 = uint4(cbuf_16.data[_213 + 0u], cbuf_16.data[_213 + 1u], cbuf_16.data[_213 + 2u], cbuf_16.data[_213 + 3u]); uint _227 = _226.x; uint _228 = _226.y; uint _229 = _226.z; uint _234 = ((0u + ((_207 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _247 = uint4(cbuf_16.data[_234 + 0u], cbuf_16.data[_234 + 1u], cbuf_16.data[_234 + 2u], cbuf_16.data[_234 + 3u]); uint _248 = _247.x; uint _249 = _247.y; uint _250 = _247.z; uint _255 = ((0u + (_207 * 16u)) + buf8_off) >> 2u; uint4 _268 = uint4(cbuf_16.data[_255 + 0u], cbuf_16.data[_255 + 1u], cbuf_16.data[_255 + 2u], cbuf_16.data[_255 + 3u]); uint _269 = _268.x; uint _270 = _268.y; uint _271 = _268.z; float _370 = spvFSub(fma(as_type(_227), in.vs_in_attr0.x, fma(as_type(_228), in.vs_in_attr0.y, fma(as_type(_229), in.vs_in_attr0.z, as_type(_226.w)))), as_type(cbuf_20.data[191u + buf9_dword_off])); float _374 = spvFSub(fma(as_type(_248), in.vs_in_attr0.x, fma(as_type(_249), in.vs_in_attr0.y, fma(as_type(_250), in.vs_in_attr0.z, as_type(_247.w)))), as_type(cbuf_20.data[187u + buf9_dword_off])); float _388 = spvFSub(fma(as_type(_269), in.vs_in_attr0.x, fma(as_type(_270), in.vs_in_attr0.y, fma(as_type(_271), in.vs_in_attr0.z, as_type(_268.w)))), as_type(cbuf_20.data[183u + buf9_dword_off])); float _398 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _370, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _400 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _370, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _402 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _370, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _404 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _388, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _374, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _370, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _398; out.gl_Position.y = _400; out.gl_Position.z = _402; out.gl_Position.w = _404; float _478 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _481 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _484 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _487 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _490 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _492 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _520 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _522 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _523 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr1.x = fma(as_type(_269), _523, fma(as_type(_270), _492, spvFMul(as_type(_271), _484))); out.out_attr1.y = fma(as_type(_248), _523, fma(as_type(_249), _492, spvFMul(as_type(_250), _484))); out.out_attr1.z = fma(as_type(_227), _523, fma(as_type(_228), _492, spvFMul(as_type(_229), _484))); out.out_attr1.w = 0.0; out.out_attr2.x = fma(as_type(_269), _520, fma(as_type(_270), _487, spvFMul(as_type(_271), _478))); out.out_attr2.y = fma(as_type(_248), _520, fma(as_type(_249), _487, spvFMul(as_type(_250), _478))); out.out_attr2.z = fma(as_type(_227), _520, fma(as_type(_228), _487, spvFMul(as_type(_229), _478))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(_269), _522, fma(as_type(_270), _490, spvFMul(as_type(_271), _481))); out.out_attr3.y = fma(as_type(_248), _522, fma(as_type(_249), _490, spvFMul(as_type(_250), _481))); out.out_attr3.z = fma(as_type(_227), _522, fma(as_type(_228), _490, spvFMul(as_type(_229), _481))); out.out_attr3.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr4.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr4.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr5.x = fma(as_type(cbuf_12.data[12u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_12.data[14u + buf7_dword_off])); out.out_attr5.y = fma(as_type(cbuf_12.data[13u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_12.data[15u + buf7_dword_off])); out.out_attr5.z = fma(as_type(cbuf_8.data[12u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[14u + buf10_dword_off])); out.out_attr5.w = fma(as_type(cbuf_8.data[13u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[15u + buf10_dword_off])); out.out_attr6.x = _398; out.out_attr6.y = _400; out.out_attr6.z = _402; out.out_attr6.w = _404; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x2140da2b [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x3deaa573 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint _185 = 20u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _194 = (cbuf_12.data[_185] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _195 = (cbuf_12.data[_185] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _200 = (cbuf_12.data[_185] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _204 = (cbuf_12.data[_185] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _211 = ((0u + ((_194 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _224 = uint4(cbuf_16.data[_211 + 0u], cbuf_16.data[_211 + 1u], cbuf_16.data[_211 + 2u], cbuf_16.data[_211 + 3u]); uint _232 = ((0u + ((_195 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _245 = uint4(cbuf_16.data[_232 + 0u], cbuf_16.data[_232 + 1u], cbuf_16.data[_232 + 2u], cbuf_16.data[_232 + 3u]); uint _253 = ((0u + ((_194 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _266 = uint4(cbuf_16.data[_253 + 0u], cbuf_16.data[_253 + 1u], cbuf_16.data[_253 + 2u], cbuf_16.data[_253 + 3u]); uint _274 = ((0u + ((_195 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _287 = uint4(cbuf_16.data[_274 + 0u], cbuf_16.data[_274 + 1u], cbuf_16.data[_274 + 2u], cbuf_16.data[_274 + 3u]); uint _295 = ((0u + (_194 * 16u)) + buf7_off) >> 2u; uint4 _308 = uint4(cbuf_16.data[_295 + 0u], cbuf_16.data[_295 + 1u], cbuf_16.data[_295 + 2u], cbuf_16.data[_295 + 3u]); uint _316 = ((0u + ((_200 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _329 = uint4(cbuf_16.data[_316 + 0u], cbuf_16.data[_316 + 1u], cbuf_16.data[_316 + 2u], cbuf_16.data[_316 + 3u]); uint _337 = ((0u + (_195 * 16u)) + buf7_off) >> 2u; uint4 _350 = uint4(cbuf_16.data[_337 + 0u], cbuf_16.data[_337 + 1u], cbuf_16.data[_337 + 2u], cbuf_16.data[_337 + 3u]); uint _358 = ((0u + ((_200 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _371 = uint4(cbuf_16.data[_358 + 0u], cbuf_16.data[_358 + 1u], cbuf_16.data[_358 + 2u], cbuf_16.data[_358 + 3u]); uint _379 = ((0u + ((_204 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _392 = uint4(cbuf_16.data[_379 + 0u], cbuf_16.data[_379 + 1u], cbuf_16.data[_379 + 2u], cbuf_16.data[_379 + 3u]); uint _400 = ((0u + (_200 * 16u)) + buf7_off) >> 2u; uint4 _413 = uint4(cbuf_16.data[_400 + 0u], cbuf_16.data[_400 + 1u], cbuf_16.data[_400 + 2u], cbuf_16.data[_400 + 3u]); uint _421 = ((0u + ((_204 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _434 = uint4(cbuf_16.data[_421 + 0u], cbuf_16.data[_421 + 1u], cbuf_16.data[_421 + 2u], cbuf_16.data[_421 + 3u]); uint _442 = ((0u + (_204 * 16u)) + buf7_off) >> 2u; uint4 _455 = uint4(cbuf_16.data[_442 + 0u], cbuf_16.data[_442 + 1u], cbuf_16.data[_442 + 2u], cbuf_16.data[_442 + 3u]); float _467 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _468 = spvFMul(in.vs_in_attr4.y, _467); float _469 = spvFMul(in.vs_in_attr4.x, _467); float _474 = spvFMul(in.vs_in_attr4.z, _467); float _553 = spvFMul(in.vs_in_attr4.w, _467); float _595 = fma(as_type(_392.z), _553, fma(as_type(_329.z), _474, fma(as_type(_245.z), _469, spvFMul(_468, as_type(_224.z))))); float _617 = fma(as_type(_434.z), _553, fma(as_type(_371.z), _474, fma(as_type(_287.z), _469, spvFMul(_468, as_type(_266.z))))); float _621 = fma(as_type(_392.y), _553, fma(as_type(_329.y), _474, fma(as_type(_245.y), _469, spvFMul(_468, as_type(_224.y))))); float _630 = fma(as_type(_455.z), _553, fma(as_type(_413.z), _474, fma(as_type(_350.z), _469, spvFMul(_468, as_type(_308.z))))); float _634 = fma(as_type(_434.y), _553, fma(as_type(_371.y), _474, fma(as_type(_287.y), _469, spvFMul(_468, as_type(_266.y))))); float _636 = fma(as_type(_392.x), _553, fma(as_type(_329.x), _474, fma(as_type(_245.x), _469, spvFMul(_468, as_type(_224.x))))); float _642 = fma(as_type(_455.y), _553, fma(as_type(_413.y), _474, fma(as_type(_350.y), _469, spvFMul(_468, as_type(_308.y))))); float _644 = fma(as_type(_434.x), _553, fma(as_type(_371.x), _474, fma(as_type(_287.x), _469, spvFMul(_468, as_type(_266.x))))); float _649 = fma(as_type(_455.x), _553, fma(as_type(_413.x), _474, fma(as_type(_350.x), _469, spvFMul(_468, as_type(_308.x))))); float _653 = spvFSub(fma(_636, in.vs_in_attr0.x, fma(_621, in.vs_in_attr0.y, fma(_595, in.vs_in_attr0.z, fma(as_type(_392.w), _553, fma(as_type(_329.w), _474, fma(as_type(_245.w), _469, spvFMul(_468, as_type(_224.w)))))))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _656 = spvFSub(fma(_644, in.vs_in_attr0.x, fma(_634, in.vs_in_attr0.y, fma(_617, in.vs_in_attr0.z, fma(as_type(_434.w), _553, fma(as_type(_371.w), _474, fma(as_type(_287.w), _469, spvFMul(_468, as_type(_266.w)))))))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _670 = spvFSub(fma(_649, in.vs_in_attr0.x, fma(_642, in.vs_in_attr0.y, fma(_630, in.vs_in_attr0.z, fma(as_type(_455.w), _553, fma(as_type(_413.w), _474, fma(as_type(_350.w), _469, spvFMul(_468, as_type(_308.w)))))))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _680 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _670, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _656, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _653, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _682 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _670, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _656, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _653, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _684 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _670, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _656, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _653, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _686 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _670, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _656, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _653, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _680; out.gl_Position.y = _682; out.gl_Position.z = _684; out.gl_Position.w = _686; float _729 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _732 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _735 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _737 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _749 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _750 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_649, _750, fma(_642, _737, spvFMul(_732, _630))); out.out_attr0.y = fma(_644, _750, fma(_634, _737, spvFMul(_732, _617))); out.out_attr0.z = fma(_636, _750, fma(_621, _737, spvFMul(_732, _595))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_649, _749, fma(_642, _735, spvFMul(_729, _630))); out.out_attr1.y = fma(_644, _749, fma(_634, _735, spvFMul(_729, _617))); out.out_attr1.z = fma(_636, _749, fma(_621, _735, spvFMul(_729, _595))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf9_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf9_dword_off])); out.out_attr4.x = _680; out.out_attr4.y = _682; out.out_attr4.z = _684; out.out_attr4.w = _686; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_28 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_4& cbuf_36 [[buffer(14)]], texture2d fs_img96 [[texture(0)]], texture2d fs_img104 [[texture(1)]], texture2d fs_img48 [[texture(2)]], texture2d fs_img72 [[texture(3)]], texture2d fs_img64 [[texture(4)]], texture2d fs_img112 [[texture(5)]], texture2d fs_img56 [[texture(6)]], texturecube fs_img88 [[texture(7)]], texturecube fs_img80 [[texture(8)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _148 = uint(gl_FrontFacing); float _250 = 1.0 / in.fs_in_attr4.w; float _309 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _324 = fma(as_type(cbuf_40.data[28u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_40.data[29u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_40.data[30u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_40.data[31u + buf0_dword_off]), in.fs_in_attr4.w)))); float _326 = 1.0 / fma(as_type(cbuf_40.data[32u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_40.data[33u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_40.data[34u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_40.data[35u + buf0_dword_off]), in.fs_in_attr4.w)))); float4 _331 = fs_img96.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_40.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr4.x), _250, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_40.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr4.y), _250, 0.5))))); float4 _337 = fs_img104.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _338 = _337.x; float _340 = _337.y; float _342 = _337.z; float _344 = _337.w; float _346 = spvFMul(in.fs_in_attr0.x, _309); float _347 = spvFMul(in.fs_in_attr0.y, _309); float _348 = spvFMul(in.fs_in_attr0.z, _309); float _350 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _351 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _353 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _356 = fma(-fma(as_type(cbuf_40.data[20u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_40.data[21u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_40.data[22u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_40.data[23u + buf0_dword_off]), in.fs_in_attr4.w)))), _326, as_type(cbuf_40.data[183u + buf0_dword_off])); float _359 = fma(-fma(as_type(cbuf_40.data[24u + buf0_dword_off]), in.fs_in_attr4.x, fma(as_type(cbuf_40.data[25u + buf0_dword_off]), in.fs_in_attr4.y, fma(as_type(cbuf_40.data[26u + buf0_dword_off]), in.fs_in_attr4.z, spvFMul(as_type(cbuf_40.data[27u + buf0_dword_off]), in.fs_in_attr4.w)))), _326, as_type(cbuf_40.data[187u + buf0_dword_off])); float _363 = fma(-_324, _326, as_type(cbuf_40.data[191u + buf0_dword_off])); bool _365 = 0u == _148; uint _378; uint _379; uint _380; if (_365) { _378 = as_type(fast::max(-_348, -_348)); _379 = as_type(fast::max(-_347, -_347)); _380 = as_type(fast::max(-_346, -_346)); } else { _378 = as_type(_348); _379 = as_type(_324); _380 = _148; } uint _384; uint _385; if (!_365) { _384 = as_type(_347); _385 = as_type(_346); } else { _384 = _379; _385 = _380; } float _386 = spvFAdd(-0.5, _331.w); uint _404 = uint(in.fs_in_attr0.w) * 13u; float _415 = fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_24.data[2u + buf1_dword_off])); float _419 = fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_24.data[3u + buf1_dword_off])); float4 _425 = fs_img48.sample(fs_samp4, float2(_415, _419)); float _426 = _425.x; float _428 = _425.y; float _430 = _425.z; uint _431 = as_type(_430); uint _437 = ((12u + ((_404 + 7u) * 16u)) + buf2_off) >> 2u; float _451 = spvFMul(_425.w, in.fs_in_attr2.w); float _453 = spvFMul(_451, as_type(cbuf_32.data[_437])); bool _459 = (as_type(cbuf_28.data[20u + buf3_dword_off]) > fma(as_type(cbuf_28.data[21u + buf3_dword_off]), _386, _451)) || (_453 == 0.0); bool _460 = !_459; uint _1043; uint _1044; uint _1045; uint _1046; uint _1047; uint _1048; uint _1049; uint _1050; uint _1051; uint _1052; uint _1053; uint _1054; uint _1055; uint _1056; uint _1057; uint _1058; uint _1059; uint _1060; uint _1061; bool _1062; uint _1063; uint _1064; uint _1065; uint _1066; if (!_459) { float4 _486 = fs_img72.sample(fs_samp16, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _515 = fs_img64.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _516 = _515.x; float4 _521 = fs_img112.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _523 = _521.y; float _528 = fma(2.0, _486.y, -1.0); float _529 = spvFMul(fma(2.0, _486.x, -1.0), fma(2.0, _486.w, -1.0)); float _540 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _542 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_529, _529), spvFMul(_528, _528)), 0.0, 1.0))); float _544 = rsqrt(fma(_350, _350, fma(_351, _351, spvFMul(_353, _353)))); float _557 = fma(spvFMul(_353, _544), _529, fma(spvFMul(in.fs_in_attr1.z, _540), _528, spvFMul(as_type(_378), _542))); float _574 = fma(spvFMul(_351, _544), _529, fma(spvFMul(in.fs_in_attr1.y, _540), _528, spvFMul(as_type(_384), _542))); float _577 = fma(spvFMul(_350, _544), _529, fma(spvFMul(in.fs_in_attr1.x, _540), _528, spvFMul(as_type(_385), _542))); uint _581 = 24u + buf3_dword_off; float _587 = rsqrt(fma(_356, _356, fma(_359, _359, spvFMul(_363, _363)))); float _588 = rsqrt(fma(_577, _577, fma(_574, _574, spvFMul(_557, _557)))); float _590 = spvFMul(_557, _588); float _592 = spvFMul(_574, _588); float _595 = spvFMul(_577, _588); float _605 = spvFMul(fma(_595, spvFMul(_356, _587), fma(_592, spvFMul(_359, _587), spvFMul(spvFMul(_363, _587), _590))), 2.0); float4 _611 = fs_img56.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _612 = _611.x; float _613 = _611.y; float _614 = _611.z; float _619 = spvFMul(as_type(cbuf_28.data[8u + buf3_dword_off]), 0.00390625); float _624 = spvFMul(fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_344, _516, _521.x), _516), _516), _619); float _626 = fma(-_356, _587, spvFMul(_595, _605)); float _628 = fma(-_359, _587, spvFMul(_592, _605)); float _630 = fma(-_363, _587, spvFMul(_590, _605)); float _641 = 1.0 / abs(1.0); float _643 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_624, 13.0), 0.5))); float _645 = fma(_628, _641, 1.5); float _646 = fma(_626, _641, 1.5); uint _650 = ((0u + ((_404 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _663 = uint4(cbuf_32.data[_650 + 0u], cbuf_32.data[_650 + 1u], cbuf_32.data[_650 + 2u], cbuf_32.data[_650 + 3u]); uint _664 = _663.x; uint _665 = _663.y; uint _666 = _663.z; float4 _674 = fs_img88.sample(fs_samp20, float3(spvFSub(_646, 1.5), spvFSub(_645, 1.5), _630), level(_643)); uint _681 = ((0u + ((_404 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _694 = uint4(cbuf_32.data[_681 + 0u], cbuf_32.data[_681 + 1u], cbuf_32.data[_681 + 2u], cbuf_32.data[_681 + 3u]); uint _702 = ((0u + ((_404 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _715 = uint4(cbuf_32.data[_702 + 0u], cbuf_32.data[_702 + 1u], cbuf_32.data[_702 + 2u], cbuf_32.data[_702 + 3u]); uint _723 = ((0u + ((_404 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _736 = uint4(cbuf_32.data[_723 + 0u], cbuf_32.data[_723 + 1u], cbuf_32.data[_723 + 2u], cbuf_32.data[_723 + 3u]); float4 _747 = fs_img80.sample(fs_samp20, float3(spvFSub(_646, 1.5), spvFSub(_645, 1.5), _630), level(_643)); float _748 = _747.x; float _749 = _747.y; float _750 = _747.z; float _758 = fast::clamp(spvFAdd(fma(_626, as_type(_385), fma(_628, as_type(_384), spvFMul(as_type(_378), _630))), 1.0), 0.0, 1.0); uint _759 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); bool _773 = (_614 == 0.0) && (_613 == 0.0); float _786 = _773 ? _612 : _614; float _787 = _773 ? _612 : _613; float _788 = spvFMul(_523, _523); float _800 = fast::clamp(spvFMul(sqrt(_426), as_type(cbuf_36.data[24u + buf5_dword_off])), 0.0, 1.0); float _803 = fast::clamp(spvFMul(sqrt(_428), as_type(cbuf_36.data[25u + buf5_dword_off])), 0.0, 1.0); float _806 = fast::clamp(spvFMul(sqrt(_430), as_type(cbuf_36.data[26u + buf5_dword_off])), 0.0, 1.0); float _814 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_344, _612, _788), _612), _612); float _817 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_344, _787, _788), _787), _787); float _820 = fma(as_type(cbuf_28.data[_581]), spvFSub(fma(_344, _786, _788), _786), _786); float _833 = spvFMul(_800, _800); float _834 = spvFMul(_803, _803); float _835 = spvFMul(_806, _806); float _871 = fma(_590, as_type(_736.z), fma(_595, as_type(_736.x), spvFMul(_592, as_type(_736.y)))); float _882 = spvFMul(_758, _758); float _890 = fma(as_type(cbuf_28.data[_581]), fma(-_800, _800, fma(_344, _833, _338)), _833); float _893 = fma(as_type(cbuf_28.data[_581]), fma(-_803, _803, fma(_344, _834, _340)), _834); float _896 = fma(as_type(cbuf_28.data[_581]), fma(-_806, _806, fma(_344, _835, _342)), _835); float _898 = spvFMul(spvFMul(_814, fma(as_type(_664), fma(-as_type(_665), _748, spvFMul(as_type(_666), _674.x)), spvFMul(as_type(_665), _748))), _882); float _900 = spvFMul(spvFMul(_817, fma(as_type(_664), fma(-as_type(_665), _749, spvFMul(as_type(_666), _674.y)), spvFMul(as_type(_665), _749))), _882); float _903 = fast::max(0.0, spvFAdd(as_type(_694.w), fma(_590, as_type(_694.z), fma(_595, as_type(_694.x), spvFMul(_592, as_type(_694.y)))))); float _904 = fast::max(0.0, spvFAdd(as_type(_715.w), fma(_590, as_type(_715.z), fma(_595, as_type(_715.x), spvFMul(_592, as_type(_715.y)))))); float _906 = fast::max(0.0, spvFAdd(as_type(_736.w), _871)); float _913 = spvFMul(as_type(cbuf_28.data[5u + buf3_dword_off]), as_type(cbuf_44.data[_759])); float _917 = spvFMul(as_type(cbuf_28.data[6u + buf3_dword_off]), as_type(cbuf_44.data[_759])); float _941 = spvFMul(spvFMul(spvFMul(_820, fma(as_type(_664), fma(-as_type(_665), _750, spvFMul(as_type(_666), _674.z)), spvFMul(as_type(_665), _750))), _882), _917); bool _944 = _460 && (!_459); uint _945; if (_944) { _945 = 0u; } else { _945 = as_type(_913); } uint _990; uint _991; uint _992; uint _993; uint _994; uint _995; uint _996; uint _997; uint _998; uint _999; uint _1000; uint _1001; uint _1002; if (_944) { bool _949 = as_type(cbuf_28.data[22u + buf3_dword_off]) != 0.0; _990 = as_type(spvFMul(_619, _624)); _991 = as_type(fma(0.5, _590, 0.500488758087158203125)); _992 = as_type(fma(0.5, _592, 0.500488758087158203125)); _993 = as_type(fma(0.5, _595, 0.500488758087158203125)); _994 = as_type(_949 ? _453 : 0.0); _995 = cbuf_32.data[((0u + ((_404 + 12u) * 16u)) + buf2_off) >> 2u]; _996 = as_type(_949 ? _453 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_404 + 6u) * 16u)) + buf2_off) >> 2u]))); _997 = as_type(sqrt(_814)); _998 = as_type(_453); _999 = as_type(sqrt(_820)); _1000 = as_type(sqrt(_817)); _1001 = as_type(_949 ? _453 : 1.0); _1002 = as_type(_949 ? _453 : as_type(_663.w)); } else { _990 = _431; _991 = as_type(_896); _992 = as_type(_893); _993 = as_type(_890); _994 = as_type(_814); _995 = as_type(_871); _996 = as_type(_917); _997 = as_type(_906); _998 = as_type(_904); _999 = as_type(_817); _1000 = as_type(_619); _1001 = as_type(_900); _1002 = as_type(_898); } uint _1022; uint _1023; uint _1024; uint _1025; uint _1026; uint _1027; uint _1028; uint _1029; uint _1030; uint _1031; uint _1032; uint _1033; uint _1034; uint _1035; uint _1036; uint _1037; uint _1038; uint _1039; uint _1040; uint _1041; uint _1042; if (_460 && (!_944)) { _1022 = as_type(_624); _1023 = as_type(_941); _1024 = as_type(_453); _1025 = as_type(_624); _1026 = as_type(_941); _1027 = as_type(_624); _1028 = as_type(_453); _1029 = as_type(_624); _1030 = as_type(_941); _1031 = as_type(_453); _1032 = as_type(_624); _1033 = _1002; _1034 = as_type(_941); _1035 = as_type(_453); _1036 = _1002; _1037 = as_type(_624); _1038 = _1002; _1039 = as_type(_941); _1040 = as_type(_453); _1041 = as_type(_453); _1042 = _1002; } else { _1022 = _990; _1023 = as_type(spvFMul(as_type(cbuf_28.data[2u + buf3_dword_off]), _896)); _1024 = as_type(spvFMul(as_type(cbuf_28.data[1u + buf3_dword_off]), _893)); _1025 = as_type(spvFMul(as_type(cbuf_28.data[0u + buf3_dword_off]), _890)); _1026 = as_type(fma(-_820, _906, _906)); _1027 = as_type(fma(-_814, _903, _903)); _1028 = as_type(spvFMul(_900, _913)); _1029 = as_type(spvFMul(_898, spvFMul(as_type(cbuf_28.data[4u + buf3_dword_off]), as_type(cbuf_44.data[_759])))); _1030 = _991; _1031 = _992; _1032 = _993; _1033 = _994; _1034 = _995; _1035 = _945; _1036 = _996; _1037 = _997; _1038 = _998; _1039 = _999; _1040 = _1000; _1041 = as_type(fma(-_817, _904, _904)); _1042 = _1001; } _1043 = _1030; _1044 = _1031; _1045 = _1032; _1046 = _1033; _1047 = _1034; _1048 = _1035; _1049 = _1022; _1050 = _1038; _1051 = _1023; _1052 = _1024; _1053 = _1025; _1054 = _1036; _1055 = _1039; _1056 = _1040; _1057 = _1037; _1058 = _1042; _1059 = _1026; _1060 = _1041; _1061 = _1027; _1062 = _460; _1063 = _1002; _1064 = as_type(_941); _1065 = _1028; _1066 = _1029; } else { _1043 = as_type(_419); _1044 = as_type(_415); _1045 = cbuf_32.data[_437]; _1046 = as_type(in.fs_in_attr3.x); _1047 = as_type(_359); _1048 = as_type(in.fs_in_attr1.z); _1049 = _431; _1050 = as_type(in.fs_in_attr3.z); _1051 = as_type(_428); _1052 = as_type(_426); _1053 = as_type(_344); _1054 = as_type(in.fs_in_attr1.x); _1055 = as_type(_351); _1056 = as_type(in.fs_in_attr3.y); _1057 = as_type(in.fs_in_attr3.w); _1058 = as_type(_386); _1059 = as_type(_342); _1060 = _384; _1061 = as_type(_340); _1062 = true; _1063 = as_type(_363); _1064 = _385; _1065 = as_type(_338); _1066 = as_type(in.fs_in_attr1.w); } if (!_1062) { discard_fragment(); } out.frag_color5.x = as_type(_1066); out.frag_color5.y = as_type(_1065); out.frag_color5.z = as_type(_1064); out.frag_color5.w = as_type(_1063); if (!_1062) { discard_fragment(); } out.frag_color4.x = as_type(_1061); out.frag_color4.y = as_type(_1060); out.frag_color4.z = as_type(_1059); out.frag_color4.w = as_type(_1058); if (!_1062) { discard_fragment(); } out.frag_color3.x = as_type(_1057); out.frag_color3.y = as_type(_1056); out.frag_color3.z = as_type(_1055); out.frag_color3.w = as_type(_1054); if (!_1062) { discard_fragment(); } out.frag_color2.x = as_type(_1053); out.frag_color2.y = as_type(_1052); out.frag_color2.z = as_type(_1051); out.frag_color2.w = as_type(_1050); if (!_1062) { discard_fragment(); } out.frag_color1.x = as_type(_1049); out.frag_color1.y = as_type(_1048); out.frag_color1.z = as_type(_1047); out.frag_color1.w = as_type(_1046); if (_459) { discard_fragment(); } out.frag_color0.x = as_type(_1045); out.frag_color0.y = as_type(_1044); out.frag_color0.z = as_type(_1043); out.frag_color0.w = as_type(_1046); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x2390c887 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x97f2d384 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _163 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _169 = ((0u + ((_163 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _182 = uint4(cbuf_16.data[_169 + 0u], cbuf_16.data[_169 + 1u], cbuf_16.data[_169 + 2u], cbuf_16.data[_169 + 3u]); uint _183 = _182.x; uint _184 = _182.y; uint _185 = _182.z; uint _190 = ((0u + ((_163 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _203 = uint4(cbuf_16.data[_190 + 0u], cbuf_16.data[_190 + 1u], cbuf_16.data[_190 + 2u], cbuf_16.data[_190 + 3u]); uint _204 = _203.x; uint _205 = _203.y; uint _206 = _203.z; uint _211 = ((0u + (_163 * 16u)) + buf7_off) >> 2u; uint4 _224 = uint4(cbuf_16.data[_211 + 0u], cbuf_16.data[_211 + 1u], cbuf_16.data[_211 + 2u], cbuf_16.data[_211 + 3u]); uint _225 = _224.x; uint _226 = _224.y; uint _227 = _224.z; float _326 = spvFSub(fma(as_type(_183), in.vs_in_attr0.x, fma(as_type(_184), in.vs_in_attr0.y, fma(as_type(_185), in.vs_in_attr0.z, as_type(_182.w)))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _330 = spvFSub(fma(as_type(_204), in.vs_in_attr0.x, fma(as_type(_205), in.vs_in_attr0.y, fma(as_type(_206), in.vs_in_attr0.z, as_type(_203.w)))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _344 = spvFSub(fma(as_type(_225), in.vs_in_attr0.x, fma(as_type(_226), in.vs_in_attr0.y, fma(as_type(_227), in.vs_in_attr0.z, as_type(_224.w)))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _354 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _326, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _356 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _326, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _358 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _326, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _360 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _326, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _354; out.gl_Position.y = _356; out.gl_Position.z = _358; out.gl_Position.w = _360; float _387 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _390 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _393 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _411 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _412 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_225), _412, fma(as_type(_226), _395, spvFMul(as_type(_227), _390))); out.out_attr0.y = fma(as_type(_204), _412, fma(as_type(_205), _395, spvFMul(as_type(_206), _390))); out.out_attr0.z = fma(as_type(_183), _412, fma(as_type(_184), _395, spvFMul(as_type(_185), _390))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_225), _411, fma(as_type(_226), _393, spvFMul(as_type(_227), _387))); out.out_attr1.y = fma(as_type(_204), _411, fma(as_type(_205), _393, spvFMul(as_type(_206), _387))); out.out_attr1.z = fma(as_type(_183), _411, fma(as_type(_184), _393, spvFMul(as_type(_185), _387))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _354; out.out_attr3.y = _356; out.out_attr3.z = _358; out.out_attr3.w = _360; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct fs_cbuf_block_f32_5 { uint data[12]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; float4 frag_color6 [[color(6)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_36 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_28 [[buffer(14)]], texture2d fs_img72 [[texture(0)]], texture2d fs_img64 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texturecube fs_img96 [[texture(3)]], texturecube fs_img88 [[texture(4)]], texture2d fs_img48 [[texture(5)]], texture2d fs_img80 [[texture(6)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _143 = uint(gl_FrontFacing); float _154 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _155 = spvFMul(in.fs_in_attr0.x, _154); float _157 = spvFMul(in.fs_in_attr0.y, _154); float _158 = spvFMul(in.fs_in_attr0.z, _154); float _170 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _172 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _174 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _178 = rsqrt(fma(_170, _170, fma(_172, _172, spvFMul(_174, _174)))); float _292 = 1.0 / fma(as_type(cbuf_40.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float _307 = fma(-fma(as_type(cbuf_40.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _292, as_type(cbuf_40.data[183u + buf0_dword_off])); float _310 = fma(-fma(as_type(cbuf_40.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))), _292, as_type(cbuf_40.data[187u + buf0_dword_off])); float _313 = fma(-fma(as_type(cbuf_40.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _292, as_type(cbuf_40.data[191u + buf0_dword_off])); bool _314 = 0u == _143; uint _327; uint _328; uint _329; if (_314) { _327 = as_type(fast::max(-_155, -_155)); _328 = as_type(fast::max(-_158, -_158)); _329 = as_type(fast::max(-_157, -_157)); } else { _327 = as_type(_155); _328 = as_type(_158); _329 = _143; } uint _332; if (!_314) { _332 = as_type(_157); } else { _332 = _329; } float4 _362 = fs_img72.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _391 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _397 = fma(2.0, _362.y, -1.0); float _398 = spvFMul(fma(2.0, _362.x, -1.0), fma(2.0, _362.w, -1.0)); float _407 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _408 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_398, _398), spvFMul(_397, _397)), 0.0, 1.0))); float _420 = fma(spvFMul(spvFMul(_174, _178), in.fs_in_attr1.w), _398, fma(spvFMul(in.fs_in_attr1.z, _407), _397, spvFMul(as_type(_328), _408))); float _423 = fma(spvFMul(spvFMul(_172, _178), in.fs_in_attr1.w), _398, fma(spvFMul(in.fs_in_attr1.y, _407), _397, spvFMul(as_type(_332), _408))); float _426 = fma(spvFMul(spvFMul(_170, _178), in.fs_in_attr1.w), _398, fma(spvFMul(in.fs_in_attr1.x, _407), _397, spvFMul(as_type(_327), _408))); float _458 = rsqrt(fma(_307, _307, fma(_310, _310, spvFMul(_313, _313)))); float _459 = rsqrt(fma(_426, _426, fma(_423, _423, spvFMul(_420, _420)))); float _464 = spvFMul(_420, _459); float _466 = spvFMul(_423, _459); float _469 = spvFMul(_426, _459); float _471 = fma(_469, spvFMul(_307, _458), fma(_466, spvFMul(_310, _458), spvFMul(spvFMul(_313, _458), _464))); float _482 = spvFMul(fast::max(_471, _471), 2.0); float _485 = spvFMul(as_type(cbuf_32.data[8u + buf2_dword_off]), 0.00390625); uint _489 = uint(in.fs_in_attr0.w) * 13u; float4 _494 = fs_img56.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _495 = _494.x; float _496 = _494.y; float _497 = _494.z; float _498 = spvFMul(_391.x, _485); float _500 = fma(-_307, _458, spvFMul(_469, _482)); float _502 = fma(-_310, _458, spvFMul(_466, _482)); float _504 = fma(-_313, _458, spvFMul(_464, _482)); float _528 = 1.0 / abs(1.0); float _530 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_498, 13.0), 0.5))); float _532 = fma(_502, _528, 1.5); float _533 = fma(_500, _528, 1.5); uint _539 = ((0u + ((_489 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _552 = uint4(cbuf_36.data[_539 + 0u], cbuf_36.data[_539 + 1u], cbuf_36.data[_539 + 2u], cbuf_36.data[_539 + 3u]); uint _553 = _552.x; uint _554 = _552.y; uint _555 = _552.z; float4 _563 = fs_img96.sample(fs_samp20, float3(spvFSub(_533, 1.5), spvFSub(_532, 1.5), _504), level(_530)); uint _570 = ((0u + ((_489 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _583 = uint4(cbuf_36.data[_570 + 0u], cbuf_36.data[_570 + 1u], cbuf_36.data[_570 + 2u], cbuf_36.data[_570 + 3u]); uint _591 = ((0u + ((_489 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _604 = uint4(cbuf_36.data[_591 + 0u], cbuf_36.data[_591 + 1u], cbuf_36.data[_591 + 2u], cbuf_36.data[_591 + 3u]); uint _612 = ((0u + ((_489 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _625 = uint4(cbuf_36.data[_612 + 0u], cbuf_36.data[_612 + 1u], cbuf_36.data[_612 + 2u], cbuf_36.data[_612 + 3u]); float4 _636 = fs_img88.sample(fs_samp20, float3(spvFSub(_533, 1.5), spvFSub(_532, 1.5), _504), level(_530)); float _637 = _636.x; float _638 = _636.y; float _639 = _636.z; float4 _650 = fs_img48.sample(fs_samp4, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); float4 _677 = fs_img80.sample(fs_samp20, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[24u + buf1_dword_off]), as_type(cbuf_24.data[26u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[25u + buf1_dword_off]), as_type(cbuf_24.data[27u + buf1_dword_off])))); uint _687 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _701 = fast::clamp(spvFAdd(fma(_500, as_type(_327), fma(_502, as_type(_332), spvFMul(as_type(_328), _504))), 1.0), 0.0, 1.0); float _715 = spvFAdd(1.0, _471); bool _734 = (_497 == 0.0) && (_496 == 0.0); float _736 = fast::clamp(spvFMul(_715, _715), 0.0, 1.0); float _737 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_471, _471), 0.0, 1.0))))); float _747 = spvFMul(_736, _737); float _748 = _734 ? _495 : _497; float _749 = _734 ? _495 : _496; float _794 = spvFMul(_498, _498); float _801 = spvFMul(_701, _701); float _825 = fast::max(0.0, spvFAdd(as_type(_583.w), fma(_464, as_type(_583.z), fma(_469, as_type(_583.x), spvFMul(_466, as_type(_583.y)))))); float _826 = fast::max(0.0, spvFAdd(as_type(_604.w), fma(_464, as_type(_604.z), fma(_469, as_type(_604.x), spvFMul(_466, as_type(_604.y)))))); float _827 = fast::max(0.0, spvFAdd(as_type(_625.w), fma(_464, as_type(_625.z), fma(_469, as_type(_625.x), spvFMul(_466, as_type(_625.y)))))); float _838 = spvFMul(spvFMul(_650.w, in.fs_in_attr2.w), as_type(cbuf_36.data[((12u + ((_489 + 7u) * 16u)) + buf3_off) >> 2u])); bool _842 = as_type(cbuf_32.data[22u + buf2_dword_off]) != 0.0; float _871 = _842 ? _838 : 0.0; if (false) { discard_fragment(); } out.frag_color6.x = spvFMul(as_type(cbuf_28.data[8u + buf5_dword_off]), _677.x); out.frag_color6.y = spvFMul(as_type(cbuf_28.data[9u + buf5_dword_off]), _677.y); out.frag_color6.z = spvFMul(as_type(cbuf_28.data[10u + buf5_dword_off]), _677.z); out.frag_color6.w = _842 ? _838 : as_type(cbuf_32.data[39u + buf2_dword_off]); if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_736, _737, -spvFMul(_495, _747)), _794, _495), spvFMul(fma(as_type(_553), fma(-as_type(_554), _637, spvFMul(as_type(_555), _563.x)), spvFMul(as_type(_554), _637)), _801)), spvFMul(as_type(cbuf_32.data[4u + buf2_dword_off]), as_type(cbuf_44.data[_687]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_736, _737, -spvFMul(_749, _747)), _794, _749), spvFMul(fma(as_type(_553), fma(-as_type(_554), _638, spvFMul(as_type(_555), _563.y)), spvFMul(as_type(_554), _638)), _801)), spvFMul(as_type(cbuf_32.data[5u + buf2_dword_off]), as_type(cbuf_44.data[_687]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_736, _737, -spvFMul(_748, _747)), _794, _748), spvFMul(fma(as_type(_553), fma(-as_type(_554), _639, spvFMul(as_type(_555), _563.z)), spvFMul(as_type(_554), _639)), _801)), spvFMul(as_type(cbuf_32.data[6u + buf2_dword_off]), as_type(cbuf_44.data[_687]))); out.frag_color5.w = _842 ? _838 : as_type(_552.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_495, _825, _825); out.frag_color4.y = fma(-_749, _826, _826); out.frag_color4.z = fma(-_748, _827, _827); out.frag_color4.w = _842 ? _838 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_495); out.frag_color3.y = sqrt(_749); out.frag_color3.z = sqrt(_748); out.frag_color3.w = _842 ? _838 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + ((_489 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_32.data[0u + buf2_dword_off]), _650.x); out.frag_color2.y = spvFMul(as_type(cbuf_32.data[1u + buf2_dword_off]), _650.y); out.frag_color2.z = spvFMul(as_type(cbuf_32.data[2u + buf2_dword_off]), _650.z); out.frag_color2.w = _838; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_485, _498); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_36.data[((0u + ((_489 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _871; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _469, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _466, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _464, 0.500488758087158203125); out.frag_color0.w = _871; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = gl_GlobalInvocationID.x + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device ushort* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 out_attr0; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], uint3 spvDispatchBase [[grid_origin]], device main0_out* spvOut [[buffer(26)]], const device uint* spvIndices [[buffer(27)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint gl_VertexIndex = spvIndices[gl_GlobalInvocationID.x] + spvDispatchBase.x; ((device float*)&out.gl_Position)[0u] = float(int(((1u & gl_VertexIndex) << 1u) + 4294967295u)); ((device float*)&out.gl_Position)[1u] = float(int((4294967294u & gl_VertexIndex) + 4294967295u)); ((device float*)&out.gl_Position)[2u] = 0.0; ((device float*)&out.gl_Position)[3u] = 1.0; ((device float*)&out.out_attr0)[0u] = 1.0; ((device float*)&out.out_attr0)[1u] = 1.0; ((device float*)&out.out_attr0)[2u] = 1.0; ((device float*)&out.out_attr0)[3u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_46; float4 m_47; float4 m_48; float4 m_49; float4 m_50; float4 gl_Position; }; struct main0_in { float4 m_27; float4 m_28; float4 m_29; float4 m_30; float4 m_31; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _72 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _75 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _78 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _86 = ((_72.x && _78.y) || (_72.y && _78.x)) ? (-1.0) : 1.0; bool _93 = (_75.x && _72.y) || (_75.y && _72.x); float _94 = _93 ? (-1.0) : 1.0; bool _101 = (_78.x && _75.y) || (_78.y && _75.x); float _102 = _101 ? (-1.0) : 1.0; bool _106 = gl_InvocationID == 3; int _108 = ((_93 ? 1 : (_101 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _106 ? ((gl_in[0].gl_Position * _86) + ((gl_in[1].gl_Position * _94) + (gl_in[2].gl_Position * _102))) : gl_in[_108].gl_Position; gl_out[gl_InvocationID].m_46 = _106 ? ((gl_in[0].m_27 * _86) + ((gl_in[1].m_27 * _94) + (gl_in[2].m_27 * _102))) : gl_in[_108].m_27; gl_out[gl_InvocationID].m_47 = _106 ? ((gl_in[0].m_28 * _86) + ((gl_in[1].m_28 * _94) + (gl_in[2].m_28 * _102))) : gl_in[_108].m_28; gl_out[gl_InvocationID].m_48 = _106 ? ((gl_in[0].m_29 * _86) + ((gl_in[1].m_29 * _94) + (gl_in[2].m_29 * _102))) : gl_in[_108].m_29; gl_out[gl_InvocationID].m_49 = _106 ? ((gl_in[0].m_30 * _86) + ((gl_in[1].m_30 * _94) + (gl_in[2].m_30 * _102))) : gl_in[_108].m_30; gl_out[gl_InvocationID].m_50 = _106 ? ((gl_in[0].m_31 * _86) + ((gl_in[1].m_31 * _94) + (gl_in[2].m_31 * _102))) : gl_in[_108].m_31; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_35 [[user(locn0)]]; float4 m_36 [[user(locn1)]]; float4 m_37 [[user(locn2)]]; float4 m_38 [[user(locn3)]]; float4 m_39 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 m_28; float4 m_29; float4 m_30; float4 m_31; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _51 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_51].gl_Position; out.m_35 = gl_in[_51].m_27; out.m_36 = gl_in[_51].m_28; out.m_37 = gl_in[_51].m_29; out.m_38 = gl_in[_51].m_30; out.m_39 = gl_in[_51].m_31; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xf7229091 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; float4 _64 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); out.frag_color0.x = _64.x; out.frag_color0.y = _64.y; out.frag_color0.z = _64.z; out.frag_color0.w = _64.w; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x83da8467 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[68]; }; struct fs_cbuf_block_f32_1 { uint data[64]; }; struct fs_cbuf_block_f32_2 { uint data[12]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_60 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_52 [[buffer(11)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], sampler fs_samp48 [[sampler(0)]], sampler fs_samp40 [[sampler(1)]], sampler fs_samp12 [[sampler(2)]], sampler fs_samp44 [[sampler(3)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; float4 _112 = fs_img4.sample(fs_samp48, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _113 = _112.x; uint _114 = 0u + buf0_dword_off; uint _117 = 1u + buf0_dword_off; uint _120 = 2u + buf0_dword_off; uint _124 = 3u + buf0_dword_off; uint _128 = 4u + buf0_dword_off; uint _132 = 5u + buf0_dword_off; uint _136 = 6u + buf0_dword_off; uint _140 = 7u + buf0_dword_off; uint _143 = 8u + buf0_dword_off; uint _147 = 9u + buf0_dword_off; uint _151 = 10u + buf0_dword_off; uint _155 = 11u + buf0_dword_off; uint _158 = 12u + buf0_dword_off; uint _162 = 13u + buf0_dword_off; uint _166 = 14u + buf0_dword_off; uint _170 = 15u + buf0_dword_off; float _176 = fma(-2.0, in.fs_in_attr0.y, 1.0); float4 _181 = fs_img16.sample(fs_samp40, float2(in.fs_in_attr0.x, in.fs_in_attr0.y)); float _190 = fma(2.0, in.fs_in_attr0.x, -1.0); float _211 = fma(as_type(cbuf_60.data[_143]), _190, fma(as_type(cbuf_60.data[_147]), _176, fma(as_type(cbuf_60.data[_151]), _113, as_type(cbuf_60.data[_155])))); float _212 = 1.0 / fma(as_type(cbuf_60.data[_158]), _190, fma(as_type(cbuf_60.data[_162]), _176, fma(as_type(cbuf_60.data[_166]), _113, as_type(cbuf_60.data[_170])))); float _214 = fma(as_type(cbuf_60.data[_114]), _190, fma(as_type(cbuf_60.data[_117]), _176, fma(as_type(cbuf_60.data[_120]), _113, as_type(cbuf_60.data[_124])))); float _216 = fma(as_type(cbuf_60.data[_128]), _190, fma(as_type(cbuf_60.data[_132]), _176, fma(as_type(cbuf_60.data[_136]), _113, as_type(cbuf_60.data[_140])))); float _217 = spvFMul(_211, _212); bool _218 = _113 == 1.0; uint _219; if (_218) { _219 = 1065353216u; } else { _219 = as_type(in.fs_in_attr0.y); } uint _693; if (!_218) { uint _229 = 18u + buf0_dword_off; uint _233 = 19u + buf0_dword_off; float4 _248 = fs_img24.sample(fs_samp12, float2(spvFMul(0.015625, spvFMul(as_type(cbuf_60.data[16u + buf0_dword_off]), in.fs_in_attr0.x)), spvFMul(0.015625, spvFMul(as_type(cbuf_60.data[17u + buf0_dword_off]), as_type(_219)))), level(0.0)); float _251 = fma(2.0, _181.z, -1.0); float _300 = fma(2.0, _181.y, -1.0); float _302 = fma(2.0, _181.x, -1.0); float _305 = rsqrt(fma(_302, _302, fma(_300, _300, spvFMul(_251, _251)))); float _306 = 1.0 / _217; float _307 = spvFMul(_251, _305); float _308 = spvFMul(_300, _305); float _317 = spvFMul(_302, _305); float _327 = fma(as_type(cbuf_60.data[20u + buf0_dword_off]), _317, fma(as_type(cbuf_60.data[21u + buf0_dword_off]), _308, spvFMul(as_type(cbuf_60.data[22u + buf0_dword_off]), _307))); float _329 = fma(as_type(cbuf_60.data[24u + buf0_dword_off]), _317, fma(as_type(cbuf_60.data[25u + buf0_dword_off]), _308, spvFMul(as_type(cbuf_60.data[26u + buf0_dword_off]), _307))); float _331 = fma(as_type(cbuf_60.data[28u + buf0_dword_off]), _317, fma(as_type(cbuf_60.data[29u + buf0_dword_off]), _308, spvFMul(as_type(cbuf_60.data[30u + buf0_dword_off]), _307))); float _333 = fast::max(as_type(cbuf_60.data[41u + buf0_dword_off]), fast::min(as_type(cbuf_60.data[42u + buf0_dword_off]), spvFMul(as_type(cbuf_60.data[40u + buf0_dword_off]), _306))); float _334 = fma(2.0, _248.x, -1.0); float _335 = fma(2.0, _248.y, -1.0); uint _354; uint _519; uint _520; uint _521; uint _336 = 0u; uint _337 = 0u; uint _338 = 8u; for (;;) { if (!(_338 > 0u)) { _521 = _336; break; } else { uint _342 = (_337 << 4u) >> 2u; uint _343 = _342 + buf1_dword_off; uint _347 = (_342 + 1u) + buf1_dword_off; _354 = _337 + 1u; float _360 = fma(as_type(cbuf_56.data[_343]), _335, spvFMul(as_type(cbuf_56.data[_347]), _334)); float _363 = fma(-_334, as_type(cbuf_56.data[_343]), spvFMul(as_type(cbuf_56.data[_347]), _335)); float _365 = spvFMul(as_type(cbuf_60.data[_229]), _333); float _367 = spvFMul(as_type(cbuf_60.data[_233]), _333); float _368 = fma(_365, _360, in.fs_in_attr0.x); float _370 = fma(_367, _363, as_type(_219)); float _372 = fma(-_360, _365, in.fs_in_attr0.x); float _375 = fma(-_363, _367, as_type(_219)); float4 _380 = fs_img4.sample(fs_samp48, float2(_368, _370), level(0.0)); float _381 = _380.x; float4 _386 = fs_img4.sample(fs_samp48, float2(_372, _375), level(0.0)); float _387 = _386.x; float _388 = fma(-2.0, _370, 1.0); float _389 = fma(-2.0, _375, 1.0); float _390 = fma(2.0, _368, -1.0); float _391 = fma(2.0, _372, -1.0); float _429 = 1.0 / fma(as_type(cbuf_60.data[_158]), _390, fma(as_type(cbuf_60.data[_162]), _388, fma(as_type(cbuf_60.data[_166]), _381, as_type(cbuf_60.data[_170])))); float _437 = 1.0 / fma(as_type(cbuf_60.data[_158]), _391, fma(as_type(cbuf_60.data[_162]), _389, fma(as_type(cbuf_60.data[_166]), _387, as_type(cbuf_60.data[_170])))); float _441 = fma(as_type(cbuf_60.data[_128]), _390, fma(as_type(cbuf_60.data[_132]), _388, fma(as_type(cbuf_60.data[_136]), _381, as_type(cbuf_60.data[_140])))); float _443 = spvFMul(fma(as_type(cbuf_60.data[_143]), _390, fma(as_type(cbuf_60.data[_147]), _388, fma(as_type(cbuf_60.data[_151]), _381, as_type(cbuf_60.data[_155])))), _429); float _448 = spvFMul(fma(as_type(cbuf_60.data[_143]), _391, fma(as_type(cbuf_60.data[_147]), _389, fma(as_type(cbuf_60.data[_151]), _387, as_type(cbuf_60.data[_155])))), _437); float _456 = fma(-_211, _212, _443); float _458 = fma(-_211, _212, _448); float _462 = fma(-_216, _212, spvFMul(_441, _429)); float _465 = fma(-_216, _212, spvFMul(fma(as_type(cbuf_60.data[_128]), _391, fma(as_type(cbuf_60.data[_132]), _389, fma(as_type(cbuf_60.data[_136]), _387, as_type(cbuf_60.data[_140])))), _437)); float _468 = fma(-_214, _212, spvFMul(fma(as_type(cbuf_60.data[_114]), _390, fma(as_type(cbuf_60.data[_117]), _388, fma(as_type(cbuf_60.data[_120]), _381, as_type(cbuf_60.data[_124])))), _429)); float _471 = fma(-_214, _212, spvFMul(fma(as_type(cbuf_60.data[_114]), _391, fma(as_type(cbuf_60.data[_117]), _389, fma(as_type(cbuf_60.data[_120]), _387, as_type(cbuf_60.data[_124])))), _437)); float _475 = rsqrt(fma(_468, _468, fma(_462, _462, spvFMul(_456, _456)))); float _476 = rsqrt(fma(_471, _471, fma(_465, _465, spvFMul(_458, _458)))); float _509 = spvFMul(spvFAdd(fast::clamp(spvFAdd(-fma(spvFMul(_468, _475), _327, fma(spvFMul(_462, _475), _329, spvFMul(_331, spvFMul(_456, _475)))), 1.0), 0.0, 1.0), fast::clamp(spvFAdd(-fma(spvFMul(_471, _476), _327, fma(spvFMul(_465, _476), _329, spvFMul(_331, spvFMul(_458, _476)))), 1.0), 0.0, 1.0)), 0.5); float _513 = fma(-_509, _509, 1.0); _519 = as_type(fma(as_type(cbuf_56.data[(_342 + 2u) + buf1_dword_off]), fma(fast::max(fast::clamp(spvFMul(spvFMul(_306, fma(_217, 0.89999997615814208984375, -_443)), 10.0), 0.0, 1.0), fast::clamp(spvFMul(spvFMul(_306, fma(_217, 0.89999997615814208984375, -_448)), 10.0), 0.0, 1.0)), _513, spvFMul(_509, _509)), as_type(_336))); _520 = _338 - 1u; if (true) { _336 = _519; _337 = _354; _338 = _520; continue; } else { _521 = _519; break; } } } float _610 = 1.0 / fma(as_type(cbuf_60.data[56u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_60.data[57u + buf0_dword_off]), as_type(_219), fma(as_type(cbuf_60.data[58u + buf0_dword_off]), _113, as_type(cbuf_60.data[59u + buf0_dword_off])))); float _611 = spvFMul(fma(as_type(cbuf_60.data[44u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_60.data[45u + buf0_dword_off]), as_type(_219), fma(as_type(cbuf_60.data[46u + buf0_dword_off]), _113, as_type(cbuf_60.data[47u + buf0_dword_off])))), _610); float _612 = spvFMul(fma(as_type(cbuf_60.data[48u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_60.data[49u + buf0_dword_off]), as_type(_219), fma(as_type(cbuf_60.data[50u + buf0_dword_off]), _113, as_type(cbuf_60.data[51u + buf0_dword_off])))), _610); float4 _617 = fs_img32.sample(fs_samp40, float2(_611, _612), level(0.0)); uint _633 = 2u + buf2_dword_off; float _655 = fma(as_type(cbuf_60.data[52u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_60.data[53u + buf0_dword_off]), as_type(_219), fma(as_type(cbuf_60.data[54u + buf0_dword_off]), _113, as_type(cbuf_60.data[55u + buf0_dword_off])))); float _662 = spvFMul(-as_type(cbuf_52.data[1u + buf2_dword_off]), 1.0 / fma(-_655, _610, as_type(cbuf_52.data[0u + buf2_dword_off]))); _693 = as_type(fma(spvFMul(as_type(cbuf_60.data[60u + buf0_dword_off]), (0.0 < _655) ? fma(-as_type(cbuf_60.data[61u + buf0_dword_off]), fast::clamp(spvFMul(abs(fma(as_type(cbuf_52.data[_633]), _662, -spvFMul(as_type(cbuf_52.data[_633]), fma(_617.w, 1.0, fma(_617.y, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _617.z)))))), 1.0 / spvFMul(as_type(cbuf_60.data[62u + buf0_dword_off]), spvFMul(as_type(cbuf_52.data[_633]), _662))), 0.0, 1.0), 1.0) : 0.0), spvFSub(fs_img32.sample(fs_samp44, float2(_611, _612), level(0.0)).x, as_type(_521)), as_type(_521))); } else { _693 = _219; } float _707 = spvFMul(_217, 1.0 / as_type(cbuf_52.data[2u + buf2_dword_off])); float _712 = fract(spvFMul(255.0, _707)); float _713 = fract(spvFMul(65025.0, _707)); if (false) { discard_fragment(); } out.frag_color0.x = fma(as_type(cbuf_60.data[36u + buf0_dword_off]), as_type(_693), as_type(cbuf_60.data[37u + buf0_dword_off])); out.frag_color0.y = _713; out.frag_color0.z = fma(_713, -0.0039215688593685626983642578125, _712); out.frag_color0.w = fma(_707, 1.0, -spvFMul(0.0039215688593685626983642578125, _712)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x149432ff [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[144]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _125 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _126 = _125.x; float4 _131 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _139 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _141 = _139.y; float4 _147 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _148 = _147.x; float _149 = _147.y; float _150 = _147.z; uint _220 = 3u + buf1_dword_off; float _249 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _126, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _251 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _126, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _255 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _126, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _258 = fma(-_249, _251, as_type(cbuf_56.data[2u + buf1_dword_off])); float _261 = fma(2.0, _131.z, -1.0); float _263 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _126, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _264 = spvFMul(_249, _251); float _267 = fma(-_255, _251, as_type(cbuf_56.data[1u + buf1_dword_off])); float _281 = fma(2.0, _131.y, -1.0); float _283 = spvFMul(_255, _251); float _289 = fma(-_263, _251, as_type(cbuf_56.data[0u + buf1_dword_off])); float _303 = fma(2.0, _131.x, -1.0); float _305 = spvFMul(_263, _251); float _326 = rsqrt(fma(_289, _289, fma(_267, _267, spvFMul(_258, _258)))); float _327 = rsqrt(fma(_303, _303, fma(_281, _281, spvFMul(_261, _261)))); float _329 = rsqrt(fma(-_305, -_305, fma(-_283, -_283, spvFMul(-_264, -_264)))); float _330 = spvFMul(_258, _326); float _332 = spvFMul(_261, _327); float _334 = spvFMul(_267, _326); float _337 = fma(-_264, _329, _330); uint _338 = 4u + buf1_dword_off; uint _341 = 5u + buf1_dword_off; uint _344 = 6u + buf1_dword_off; uint _347 = 7u + buf1_dword_off; float _350 = spvFMul(_281, _327); float _354 = spvFMul(_289, _326); float _357 = fma(-_283, _329, _334); float _359 = spvFMul(_303, _327); float _364 = rsqrt(fma(_305, _305, fma(_283, _283, spvFMul(_264, _264)))); float _366 = fma(-_305, _329, _354); float _374 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _359, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _350, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _332))); float _375 = spvFMul(_264, _364); float _380 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _359, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _350, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _332))); float _383 = spvFMul(_283, _364); float _387 = rsqrt(fma(_366, _366, fma(_357, _357, spvFMul(_337, _337)))); float _389 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _359, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _350, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _332))); float _390 = exp2(spvFMul(13.0, _139.x)); float _391 = spvFMul(_305, _364); float _407 = fma(_289, _289, fma(_267, _267, spvFMul(_258, _258))); float _420 = spvFMul(10.0, _141); float _422 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_391, _389, fma(-_383, _380, spvFMul(_374, -_375)))))); float _423 = fma(_389, _354, fma(_380, _334, spvFMul(_374, _330))); float _429 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_347]), _390), 1.0 / fma(_390, 0.01000213623046875, as_type(cbuf_56.data[_347])))); float4 _435 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _436 = _435.x; float _437 = spvFMul(_148, _148); float _438 = spvFMul(_149, _149); float _439 = spvFMul(_150, _150); bool _440 = _420 == 0.0; float _441 = fma(2.0, _420, 1.0); float _442 = spvFMul(_422, _422); float _444 = fast::clamp(fast::max(_423, _423), 0.0, 1.0); float _445 = fast::max(0.0, spvFSub(1.0 / _407, as_type(cbuf_56.data[_220]))); float _446 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_220]), _407), 0.0, 1.0)); uint _451; if (_440) { _451 = as_type(spvFMul(as_type(cbuf_56.data[_338]), _444)); } else { _451 = as_type(_354); } uint _463; uint _464; uint _465; if (_440) { _463 = as_type(spvFMul(_445, spvFMul(as_type(cbuf_56.data[_344]), _444))); _464 = as_type(spvFMul(_445, spvFMul(as_type(cbuf_56.data[_341]), _444))); _465 = as_type(spvFMul(_445, as_type(_451))); } else { _463 = as_type(_334); _464 = as_type(_330); _465 = _451; } uint _469; if (!_440) { _469 = as_type(fma(_141, 10.0, _423)); } else { _469 = as_type(_366); } uint _509; uint _510; uint _511; if (!_440) { float _499 = fma(_445, spvFMul(fast::max(0.0, as_type(_469)), 1.0 / _441), spvFMul(_420, spvFMul(_445, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_465), _391, fma(as_type(_463), _383, spvFMul(_375, as_type(_464)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _442))))); _509 = as_type(spvFMul(as_type(cbuf_56.data[_344]), _499)); _510 = as_type(spvFMul(as_type(cbuf_56.data[_341]), _499)); _511 = as_type(spvFMul(as_type(cbuf_56.data[_338]), _499)); } else { _509 = _463; _510 = _464; _511 = _465; } uint _522 = 19u + buf1_dword_off; float _526 = exp2(spvFMul(_429, log2(fast::clamp(fma(spvFMul(_366, _387), _389, fma(spvFMul(_357, _387), _380, spvFMul(_374, spvFMul(_337, _387)))), 0.0, 1.0)))); float _529 = exp2(spvFMul(0.0999755859375, log2(_444))); float _532 = fma(-_249, _251, as_type(cbuf_56.data[18u + buf1_dword_off])); float _535 = fma(-_255, _251, as_type(cbuf_56.data[17u + buf1_dword_off])); float _539 = fma(-_263, _251, as_type(cbuf_56.data[16u + buf1_dword_off])); float _542 = rsqrt(fma(_539, _539, fma(_535, _535, spvFMul(_532, _532)))); float _543 = spvFMul(_532, _542); float _545 = spvFMul(_535, _542); float _548 = fma(-_264, _329, _543); uint _549 = 20u + buf1_dword_off; uint _552 = 21u + buf1_dword_off; uint _555 = 22u + buf1_dword_off; uint _559 = 23u + buf1_dword_off; float _562 = spvFMul(_539, _542); float _565 = fma(-_283, _329, _545); float _568 = fma(-_305, _329, _562); float _580 = rsqrt(fma(_568, _568, fma(_565, _565, spvFMul(_548, _548)))); float _590 = fma(_389, _562, fma(_380, _545, spvFMul(_374, _543))); float _591 = fma(_539, _539, fma(_535, _535, spvFMul(_532, _532))); float _604 = fast::clamp(fast::max(_590, _590), 0.0, 1.0); float _617 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_559]), _390), 1.0 / fma(_390, 0.01000213623046875, as_type(cbuf_56.data[_559])))); float _620 = log2(_604); float _624 = fma(_429, 0.125, 0.25); float _628 = fast::max(0.0, spvFSub(1.0 / _591, as_type(cbuf_56.data[_522]))); float _629 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_522]), _591), 0.0, 1.0)); float _632 = fma(0.125, _617, 0.25); uint _636; if (_440) { _636 = as_type(spvFMul(as_type(cbuf_56.data[_549]), _604)); } else { _636 = as_type(_562); } uint _649; uint _650; uint _651; uint _652; if (_440) { float _640 = spvFMul(as_type(cbuf_56.data[_555]), _604); _649 = as_type(spvFMul(_628, spvFMul(as_type(cbuf_56.data[_552]), _604))); _650 = as_type(spvFMul(_628, as_type(_636))); _651 = as_type(_640); _652 = as_type(spvFMul(_628, _640)); } else { _649 = as_type(_620); _650 = as_type(_617); _651 = as_type(_545); _652 = as_type(_543); } uint _656; if (!_440) { _656 = as_type(fma(_141, 10.0, _590)); } else { _656 = _650; } uint _697; uint _698; uint _699; if (!_440) { float _687 = fma(_628, spvFMul(fast::max(0.0, as_type(_656)), 1.0 / _441), spvFMul(_420, spvFMul(_628, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_636), _391, fma(as_type(_651), _383, spvFMul(_375, as_type(_652)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _442))))); _697 = as_type(spvFMul(as_type(cbuf_56.data[_555]), _687)); _698 = as_type(spvFMul(as_type(cbuf_56.data[_552]), _687)); _699 = as_type(spvFMul(as_type(cbuf_56.data[_549]), _687)); } else { _697 = _652; _698 = _649; _699 = _656; } uint _722 = 35u + buf1_dword_off; uint _726 = 36u + buf1_dword_off; uint _730 = 37u + buf1_dword_off; uint _734 = 38u + buf1_dword_off; uint _738 = 39u + buf1_dword_off; float _741 = exp2(spvFMul(_617, log2(fast::clamp(fma(spvFMul(_568, _580), _389, fma(spvFMul(_565, _580), _380, spvFMul(_374, spvFMul(_548, _580)))), 0.0, 1.0)))); float _742 = exp2(spvFMul(0.0999755859375, _620)); float _772 = fma(-_263, _251, as_type(cbuf_56.data[32u + buf1_dword_off])); float _775 = fma(-_255, _251, as_type(cbuf_56.data[33u + buf1_dword_off])); float _778 = fma(-_249, _251, as_type(cbuf_56.data[34u + buf1_dword_off])); float _782 = rsqrt(fma(_772, _772, fma(_775, _775, spvFMul(_778, _778)))); float _783 = spvFMul(_772, _782); float _785 = spvFMul(_775, _782); float _787 = spvFMul(_778, _782); float _791 = fma(_389, _783, fma(_380, _785, spvFMul(_374, _787))); float _794 = fast::clamp(fast::max(_791, _791), 0.0, 1.0); float _798 = fma(_772, _772, fma(_775, _775, spvFMul(_778, _778))); float _802 = fast::max(0.0, spvFSub(1.0 / _798, as_type(cbuf_56.data[_722]))); float _806 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_722]), _798), 0.0, 1.0)); float _808 = fma(-_305, _329, _783); float _810 = fma(-_283, _329, _785); float _812 = fma(-_264, _329, _787); float _816 = rsqrt(fma(_808, _808, fma(_810, _810, spvFMul(_812, _812)))); float _826 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_738]), _390), 1.0 / fma(_390, 0.01000213623046875, as_type(cbuf_56.data[_738])))); float _835 = fma(0.125, _826, 0.25); uint _839; if (_440) { _839 = as_type(spvFMul(as_type(cbuf_56.data[_726]), _794)); } else { _839 = as_type(_787); } uint _852; uint _853; uint _854; uint _855; if (_440) { float _843 = spvFMul(as_type(cbuf_56.data[_734]), _794); _852 = as_type(spvFMul(_802, spvFMul(as_type(cbuf_56.data[_730]), _794))); _853 = as_type(_843); _854 = as_type(spvFMul(_802, _843)); _855 = as_type(spvFMul(_802, as_type(_839))); } else { _852 = as_type(_794); _853 = as_type(_785); _854 = as_type(_783); _855 = as_type(_791); } uint _860; if (!_440) { _860 = as_type(fma(_141, 10.0, as_type(_855))); } else { _860 = _855; } uint _901; uint _902; uint _903; if (!_440) { float _891 = fma(_802, spvFMul(fast::max(0.0, as_type(_860)), 1.0 / _441), spvFMul(_420, spvFMul(_802, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_854), _391, fma(as_type(_853), _383, spvFMul(_375, as_type(_839)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _442))))); _901 = as_type(spvFMul(as_type(cbuf_56.data[_734]), _891)); _902 = as_type(spvFMul(as_type(cbuf_56.data[_730]), _891)); _903 = as_type(spvFMul(as_type(cbuf_56.data[_726]), _891)); } else { _901 = _854; _902 = _852; _903 = _860; } uint _917 = 51u + buf1_dword_off; float _920 = exp2(spvFMul(_826, log2(fast::clamp(fma(spvFMul(_808, _816), _389, fma(spvFMul(_810, _816), _380, spvFMul(_374, spvFMul(_812, _816)))), 0.0, 1.0)))); float _921 = exp2(spvFMul(0.0999755859375, log2(_794))); float _928 = fma(-_249, _251, as_type(cbuf_56.data[50u + buf1_dword_off])); float _931 = fma(-_255, _251, as_type(cbuf_56.data[49u + buf1_dword_off])); float _935 = fma(-_263, _251, as_type(cbuf_56.data[48u + buf1_dword_off])); float _938 = rsqrt(fma(_935, _935, fma(_931, _931, spvFMul(_928, _928)))); float _939 = spvFMul(_928, _938); float _940 = spvFMul(_931, _938); float _942 = fma(-_264, _329, _939); uint _943 = 52u + buf1_dword_off; uint _947 = 53u + buf1_dword_off; uint _951 = 54u + buf1_dword_off; uint _955 = 55u + buf1_dword_off; float _958 = spvFMul(_935, _938); float _960 = fma(-_283, _329, _940); float _975 = fma(-_305, _329, _958); float _978 = rsqrt(fma(_975, _975, fma(_960, _960, spvFMul(_942, _942)))); float _994 = fma(_389, _958, fma(_380, _940, spvFMul(_374, _939))); float _995 = fma(_935, _935, fma(_931, _931, spvFMul(_928, _928))); float _1005 = fast::clamp(fast::max(_994, _994), 0.0, 1.0); float _1018 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_955]), _390), 1.0 / fma(_390, 0.01000213623046875, as_type(cbuf_56.data[_955])))); float _1027 = fast::max(0.0, spvFSub(1.0 / _995, as_type(cbuf_56.data[_917]))); float _1028 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_917]), _995), 0.0, 1.0)); float _1031 = fma(0.125, _1018, 0.25); uint _1035; if (_440) { _1035 = as_type(spvFMul(as_type(cbuf_56.data[_943]), _1005)); } else { _1035 = as_type(_1018); } uint _1048; uint _1049; uint _1050; uint _1051; if (_440) { float _1039 = spvFMul(as_type(cbuf_56.data[_951]), _1005); _1048 = as_type(_1039); _1049 = as_type(spvFMul(_1027, _1039)); _1050 = as_type(spvFMul(_1027, spvFMul(as_type(cbuf_56.data[_947]), _1005))); _1051 = as_type(spvFMul(_1027, as_type(_1035))); } else { _1048 = as_type(_383); _1049 = as_type(_391); _1050 = _1035; _1051 = as_type(_141); } uint _1056; if (!_440) { _1056 = as_type(fma(as_type(_1051), 10.0, _994)); } else { _1056 = _1050; } uint _1096; uint _1097; uint _1098; if (!_440) { float _1086 = fma(_1027, spvFMul(fast::max(0.0, as_type(_1056)), 1.0 / _441), spvFMul(_420, spvFMul(_1027, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_958, as_type(_1049), fma(_940, as_type(_1048), spvFMul(_375, _939))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _442))))); _1096 = as_type(spvFMul(as_type(cbuf_56.data[_951]), _1086)); _1097 = as_type(spvFMul(as_type(cbuf_56.data[_947]), _1086)); _1098 = as_type(spvFMul(as_type(cbuf_56.data[_943]), _1086)); } else { _1096 = _1049; _1097 = _1056; _1098 = _1051; } float _1111 = exp2(spvFMul(_1018, log2(fast::clamp(fma(spvFMul(_975, _978), _389, fma(spvFMul(_960, _978), _380, spvFMul(_374, spvFMul(_942, _978)))), 0.0, 1.0)))); float _1112 = exp2(spvFMul(0.0999755859375, log2(_1005))); float _1114 = spvFAdd(spvFAdd(spvFAdd(as_type(_511), as_type(_699)), as_type(_903)), as_type(_1098)); float _1116 = spvFAdd(spvFAdd(spvFAdd(as_type(_510), as_type(_698)), as_type(_902)), as_type(_1097)); float _1127 = spvFAdd(spvFAdd(spvFAdd(as_type(_509), as_type(_697)), as_type(_901)), as_type(_1096)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_437, spvFMul(_436, fma(spvFMul(_1028, spvFMul(_1112, spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1111))), _1031, fma(spvFMul(_806, spvFMul(_921, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _920))), _835, fma(spvFMul(_446, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _526), _529)), _624, spvFMul(_632, spvFMul(_629, spvFMul(_742, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _741))))))))); out.frag_color1.y = spvFMul(_438, spvFMul(_436, fma(spvFMul(_1028, spvFMul(_1112, spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1111))), _1031, fma(spvFMul(_806, spvFMul(_921, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _920))), _835, fma(spvFMul(_446, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _526), _529)), _624, spvFMul(_632, spvFMul(_629, spvFMul(_742, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _741))))))))); out.frag_color1.z = spvFMul(_439, spvFMul(_436, fma(spvFMul(_1028, spvFMul(_1112, spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1111))), _1031, fma(spvFMul(_806, spvFMul(_921, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _920))), _835, fma(spvFMul(_446, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _526), _529)), _624, spvFMul(_632, spvFMul(_629, spvFMul(_742, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _741))))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_436, spvFSub(_1114, spvFMul(spvFMul(_437, _1114), 0.5))); out.frag_color0.y = spvFMul(_436, spvFSub(_1116, spvFMul(spvFMul(_438, _1116), 0.5))); out.frag_color0.z = spvFMul(_436, spvFSub(_1127, spvFMul(spvFMul(_439, _1127), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x5de04266 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[180]; }; constant uint _114 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _134 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _135 = _134.x; float4 _140 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _148 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _150 = _148.y; float4 _156 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _157 = _156.x; float _158 = _156.y; float _159 = _156.z; uint _229 = 3u + buf1_dword_off; float _258 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _135, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _260 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _135, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _264 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _135, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _267 = fma(-_258, _260, as_type(cbuf_56.data[2u + buf1_dword_off])); float _270 = fma(2.0, _140.z, -1.0); float _272 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _135, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _273 = spvFMul(_258, _260); float _276 = fma(-_264, _260, as_type(cbuf_56.data[1u + buf1_dword_off])); float _290 = fma(2.0, _140.y, -1.0); float _292 = spvFMul(_264, _260); float _298 = fma(-_272, _260, as_type(cbuf_56.data[0u + buf1_dword_off])); float _312 = fma(2.0, _140.x, -1.0); float _314 = spvFMul(_272, _260); float _335 = rsqrt(fma(_298, _298, fma(_276, _276, spvFMul(_267, _267)))); float _336 = rsqrt(fma(_312, _312, fma(_290, _290, spvFMul(_270, _270)))); float _338 = rsqrt(fma(-_314, -_314, fma(-_292, -_292, spvFMul(-_273, -_273)))); float _339 = spvFMul(_267, _335); float _341 = spvFMul(_270, _336); float _343 = spvFMul(_276, _335); float _346 = fma(-_273, _338, _339); uint _347 = 4u + buf1_dword_off; uint _350 = 5u + buf1_dword_off; uint _353 = 6u + buf1_dword_off; uint _356 = 7u + buf1_dword_off; float _359 = spvFMul(_290, _336); float _363 = spvFMul(_298, _335); float _366 = fma(-_292, _338, _343); float _368 = spvFMul(_312, _336); float _373 = rsqrt(fma(_314, _314, fma(_292, _292, spvFMul(_273, _273)))); float _375 = fma(-_314, _338, _363); float _383 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _368, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _359, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _341))); float _384 = spvFMul(_273, _373); float _389 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _368, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _359, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _341))); float _392 = spvFMul(_292, _373); float _396 = rsqrt(fma(_375, _375, fma(_366, _366, spvFMul(_346, _346)))); float _398 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _368, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _359, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _341))); float _399 = exp2(spvFMul(13.0, _148.x)); float _400 = spvFMul(_314, _373); float _416 = fma(_298, _298, fma(_276, _276, spvFMul(_267, _267))); float _429 = spvFMul(10.0, _150); float _431 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_400, _398, fma(-_392, _389, spvFMul(_383, -_384)))))); float _432 = fma(_398, _363, fma(_389, _343, spvFMul(_383, _339))); float _438 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_356]), _399), 1.0 / fma(_399, 0.01000213623046875, as_type(cbuf_56.data[_356])))); float4 _444 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _445 = _444.x; float _446 = spvFMul(_157, _157); float _447 = spvFMul(_158, _158); float _448 = spvFMul(_159, _159); bool _449 = _429 == 0.0; float _450 = fma(2.0, _429, 1.0); float _451 = spvFMul(_431, _431); float _453 = fast::clamp(fast::max(_432, _432), 0.0, 1.0); float _454 = fast::max(0.0, spvFSub(1.0 / _416, as_type(cbuf_56.data[_229]))); float _455 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_229]), _416), 0.0, 1.0)); uint _460; if (_449) { _460 = as_type(spvFMul(as_type(cbuf_56.data[_347]), _453)); } else { _460 = as_type(_363); } uint _472; uint _473; uint _474; if (_449) { _472 = as_type(spvFMul(_454, as_type(_460))); _473 = as_type(spvFMul(_454, spvFMul(as_type(cbuf_56.data[_353]), _453))); _474 = as_type(spvFMul(_454, spvFMul(as_type(cbuf_56.data[_350]), _453))); } else { _472 = _114; _473 = as_type(_343); _474 = as_type(_339); } uint _478; if (!_449) { _478 = as_type(fma(_150, 10.0, _432)); } else { _478 = as_type(_375); } uint _519; uint _520; uint _521; uint _522; if (!_449) { float _508 = fma(_454, spvFMul(fast::max(0.0, as_type(_478)), 1.0 / _450), spvFMul(_429, spvFMul(_454, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_460), _400, fma(as_type(_473), _392, spvFMul(_384, as_type(_474)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _451))))); _519 = as_type(spvFMul(as_type(cbuf_56.data[_347]), _508)); _520 = as_type(spvFMul(as_type(cbuf_56.data[_353]), _508)); _521 = as_type(spvFMul(as_type(cbuf_56.data[_350]), _508)); _522 = as_type(_508); } else { _519 = _472; _520 = _473; _521 = _474; _522 = _460; } uint _533 = 19u + buf1_dword_off; float _537 = exp2(spvFMul(_438, log2(fast::clamp(fma(spvFMul(_375, _396), _398, fma(spvFMul(_366, _396), _389, spvFMul(_383, spvFMul(_346, _396)))), 0.0, 1.0)))); float _540 = exp2(spvFMul(0.0999755859375, log2(_453))); float _543 = fma(-_258, _260, as_type(cbuf_56.data[18u + buf1_dword_off])); float _546 = fma(-_264, _260, as_type(cbuf_56.data[17u + buf1_dword_off])); float _550 = fma(-_272, _260, as_type(cbuf_56.data[16u + buf1_dword_off])); float _553 = rsqrt(fma(_550, _550, fma(_546, _546, spvFMul(_543, _543)))); float _554 = spvFMul(_543, _553); float _556 = spvFMul(_546, _553); float _559 = fma(-_273, _338, _554); uint _560 = 20u + buf1_dword_off; uint _563 = 21u + buf1_dword_off; uint _566 = 22u + buf1_dword_off; uint _570 = 23u + buf1_dword_off; float _573 = spvFMul(_550, _553); float _576 = fma(-_292, _338, _556); float _579 = fma(-_314, _338, _573); float _591 = rsqrt(fma(_579, _579, fma(_576, _576, spvFMul(_559, _559)))); float _601 = fma(_398, _573, fma(_389, _556, spvFMul(_383, _554))); float _602 = fma(_550, _550, fma(_546, _546, spvFMul(_543, _543))); float _615 = fast::clamp(fast::max(_601, _601), 0.0, 1.0); float _628 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_570]), _399), 1.0 / fma(_399, 0.01000213623046875, as_type(cbuf_56.data[_570])))); float _634 = fma(_438, 0.125, 0.25); float _638 = fast::max(0.0, spvFSub(1.0 / _602, as_type(cbuf_56.data[_533]))); float _639 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_533]), _602), 0.0, 1.0)); float _642 = fma(0.125, _628, 0.25); uint _646; if (_449) { _646 = as_type(spvFMul(as_type(cbuf_56.data[_560]), _615)); } else { _646 = as_type(_573); } uint _659; uint _660; uint _661; uint _662; if (_449) { float _650 = spvFMul(as_type(cbuf_56.data[_566]), _615); _659 = as_type(spvFMul(_638, as_type(_646))); _660 = as_type(spvFMul(_638, spvFMul(as_type(cbuf_56.data[_563]), _615))); _661 = as_type(_650); _662 = as_type(spvFMul(_638, _650)); } else { _659 = _522; _660 = as_type(_628); _661 = as_type(_556); _662 = as_type(_554); } uint _666; if (!_449) { _666 = as_type(fma(_150, 10.0, _601)); } else { _666 = _660; } uint _707; uint _708; uint _709; if (!_449) { float _697 = fma(_638, spvFMul(fast::max(0.0, as_type(_666)), 1.0 / _450), spvFMul(_429, spvFMul(_638, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_646), _400, fma(as_type(_661), _392, spvFMul(_384, as_type(_662)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _451))))); _707 = as_type(spvFMul(as_type(cbuf_56.data[_566]), _697)); _708 = as_type(spvFMul(as_type(cbuf_56.data[_563]), _697)); _709 = as_type(spvFMul(as_type(cbuf_56.data[_560]), _697)); } else { _707 = _662; _708 = _666; _709 = _659; } uint _732 = 35u + buf1_dword_off; uint _736 = 36u + buf1_dword_off; uint _740 = 37u + buf1_dword_off; uint _744 = 38u + buf1_dword_off; uint _748 = 39u + buf1_dword_off; float _751 = exp2(spvFMul(_628, log2(fast::clamp(fma(spvFMul(_579, _591), _398, fma(spvFMul(_576, _591), _389, spvFMul(_383, spvFMul(_559, _591)))), 0.0, 1.0)))); float _752 = exp2(spvFMul(0.0999755859375, log2(_615))); float _782 = fma(-_272, _260, as_type(cbuf_56.data[32u + buf1_dword_off])); float _785 = fma(-_264, _260, as_type(cbuf_56.data[33u + buf1_dword_off])); float _788 = fma(-_258, _260, as_type(cbuf_56.data[34u + buf1_dword_off])); float _792 = rsqrt(fma(_782, _782, fma(_785, _785, spvFMul(_788, _788)))); float _793 = spvFMul(_782, _792); float _795 = spvFMul(_785, _792); float _797 = spvFMul(_788, _792); float _801 = fma(_398, _793, fma(_389, _795, spvFMul(_383, _797))); float _804 = fast::clamp(fast::max(_801, _801), 0.0, 1.0); float _808 = fma(_782, _782, fma(_785, _785, spvFMul(_788, _788))); float _812 = fast::max(0.0, spvFSub(1.0 / _808, as_type(cbuf_56.data[_732]))); float _816 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_732]), _808), 0.0, 1.0)); float _818 = fma(-_314, _338, _793); float _820 = fma(-_292, _338, _795); float _822 = fma(-_273, _338, _797); float _826 = rsqrt(fma(_818, _818, fma(_820, _820, spvFMul(_822, _822)))); float _836 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_748]), _399), 1.0 / fma(_399, 0.01000213623046875, as_type(cbuf_56.data[_748])))); float _845 = fma(0.125, _836, 0.25); uint _849; if (_449) { _849 = as_type(spvFMul(as_type(cbuf_56.data[_736]), _804)); } else { _849 = as_type(_797); } uint _862; uint _863; uint _864; uint _865; if (_449) { float _853 = spvFMul(as_type(cbuf_56.data[_744]), _804); _862 = as_type(spvFMul(_812, spvFMul(as_type(cbuf_56.data[_740]), _804))); _863 = as_type(_853); _864 = as_type(spvFMul(_812, _853)); _865 = as_type(spvFMul(_812, as_type(_849))); } else { _862 = as_type(_804); _863 = as_type(_795); _864 = as_type(_793); _865 = as_type(_801); } uint _870; if (!_449) { _870 = as_type(fma(_150, 10.0, as_type(_865))); } else { _870 = _865; } uint _911; uint _912; uint _913; if (!_449) { float _901 = fma(_812, spvFMul(fast::max(0.0, as_type(_870)), 1.0 / _450), spvFMul(_429, spvFMul(_812, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_864), _400, fma(as_type(_863), _392, spvFMul(_384, as_type(_849)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _451))))); _911 = as_type(spvFMul(as_type(cbuf_56.data[_744]), _901)); _912 = as_type(spvFMul(as_type(cbuf_56.data[_740]), _901)); _913 = as_type(spvFMul(as_type(cbuf_56.data[_736]), _901)); } else { _911 = _864; _912 = _862; _913 = _870; } uint _927 = 51u + buf1_dword_off; float _930 = exp2(spvFMul(_836, log2(fast::clamp(fma(spvFMul(_818, _826), _398, fma(spvFMul(_820, _826), _389, spvFMul(_383, spvFMul(_822, _826)))), 0.0, 1.0)))); float _931 = exp2(spvFMul(0.0999755859375, log2(_804))); float _938 = fma(-_258, _260, as_type(cbuf_56.data[50u + buf1_dword_off])); float _941 = fma(-_264, _260, as_type(cbuf_56.data[49u + buf1_dword_off])); float _945 = fma(-_272, _260, as_type(cbuf_56.data[48u + buf1_dword_off])); float _948 = rsqrt(fma(_945, _945, fma(_941, _941, spvFMul(_938, _938)))); float _949 = spvFMul(_938, _948); float _950 = spvFMul(_941, _948); float _952 = fma(-_273, _338, _949); uint _953 = 52u + buf1_dword_off; uint _957 = 53u + buf1_dword_off; uint _961 = 54u + buf1_dword_off; uint _965 = 55u + buf1_dword_off; float _968 = spvFMul(_945, _948); float _971 = fma(-_292, _338, _950); float _986 = fma(-_314, _338, _968); float _989 = rsqrt(fma(_986, _986, fma(_971, _971, spvFMul(_952, _952)))); float _1005 = fma(_398, _968, fma(_389, _950, spvFMul(_383, _949))); float _1006 = fma(_945, _945, fma(_941, _941, spvFMul(_938, _938))); float _1016 = fast::clamp(fast::max(_1005, _1005), 0.0, 1.0); float _1023 = spvFMul(_816, spvFMul(_931, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _930))); float _1031 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_965]), _399), 1.0 / fma(_399, 0.01000213623046875, as_type(cbuf_56.data[_965])))); float _1039 = fast::max(0.0, spvFSub(1.0 / _1006, as_type(cbuf_56.data[_927]))); float _1040 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_927]), _1006), 0.0, 1.0)); float _1043 = fma(0.125, _1031, 0.25); uint _1047; if (_449) { _1047 = as_type(spvFMul(as_type(cbuf_56.data[_953]), _1016)); } else { _1047 = _911; } uint _1060; uint _1061; uint _1062; uint _1063; if (_449) { float _1049 = spvFMul(as_type(cbuf_56.data[_957]), _1016); _1060 = as_type(spvFMul(_1039, as_type(_1047))); _1061 = as_type(spvFMul(_1039, spvFMul(as_type(cbuf_56.data[_961]), _1016))); _1062 = as_type(_1049); _1063 = as_type(spvFMul(_1039, _1049)); } else { _1060 = as_type(_1023); _1061 = as_type(_1016); _1062 = as_type(_968); _1063 = _1047; } uint _1067; if (!_449) { _1067 = as_type(fma(_150, 10.0, _1005)); } else { _1067 = _1063; } uint _1106; uint _1107; uint _1108; if (!_449) { float _1096 = fma(_1039, spvFMul(fast::max(0.0, as_type(_1067)), 1.0 / _450), spvFMul(_429, spvFMul(_1039, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1062), _400, fma(_950, _392, spvFMul(_384, _949))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _451))))); _1106 = as_type(spvFMul(as_type(cbuf_56.data[_961]), _1096)); _1107 = as_type(spvFMul(as_type(cbuf_56.data[_957]), _1096)); _1108 = as_type(spvFMul(as_type(cbuf_56.data[_953]), _1096)); } else { _1106 = _1061; _1107 = _1067; _1108 = _1060; } uint _1122 = 67u + buf1_dword_off; float _1125 = exp2(spvFMul(_1031, log2(fast::clamp(fma(spvFMul(_986, _989), _398, fma(spvFMul(_971, _989), _389, spvFMul(_383, spvFMul(_952, _989)))), 0.0, 1.0)))); float _1126 = exp2(spvFMul(0.0999755859375, log2(_1016))); float _1133 = fma(-_258, _260, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1136 = fma(-_264, _260, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1140 = fma(-_272, _260, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1143 = rsqrt(fma(_1140, _1140, fma(_1136, _1136, spvFMul(_1133, _1133)))); float _1144 = spvFMul(_1133, _1143); float _1145 = spvFMul(_1136, _1143); float _1147 = fma(-_273, _338, _1144); uint _1149 = 68u + buf1_dword_off; uint _1153 = 69u + buf1_dword_off; uint _1157 = 70u + buf1_dword_off; uint _1161 = 71u + buf1_dword_off; float _1164 = spvFMul(_1140, _1143); float _1166 = fma(-_292, _338, _1145); float _1181 = fma(-_314, _338, _1164); float _1184 = rsqrt(fma(_1181, _1181, fma(_1166, _1166, spvFMul(_1147, _1147)))); float _1200 = fma(_398, _1164, fma(_389, _1145, spvFMul(_383, _1144))); float _1201 = fma(_1140, _1140, fma(_1136, _1136, spvFMul(_1133, _1133))); float _1211 = fast::clamp(fast::max(_1200, _1200), 0.0, 1.0); float _1224 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1161]), _399), 1.0 / fma(_399, 0.01000213623046875, as_type(cbuf_56.data[_1161])))); float _1233 = fast::max(0.0, spvFSub(1.0 / _1201, as_type(cbuf_56.data[_1122]))); float _1234 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1122]), _1201), 0.0, 1.0)); float _1237 = fma(0.125, _1224, 0.25); uint _1241; if (_449) { _1241 = as_type(spvFMul(as_type(cbuf_56.data[_1149]), _1211)); } else { _1241 = as_type(_1224); } uint _1254; uint _1255; uint _1256; uint _1257; if (_449) { float _1245 = spvFMul(as_type(cbuf_56.data[_1157]), _1211); _1254 = as_type(_1245); _1255 = as_type(spvFMul(_1233, _1245)); _1256 = as_type(spvFMul(_1233, spvFMul(as_type(cbuf_56.data[_1153]), _1211))); _1257 = as_type(spvFMul(_1233, as_type(_1241))); } else { _1254 = as_type(_392); _1255 = as_type(_400); _1256 = _1241; _1257 = as_type(_150); } uint _1262; if (!_449) { _1262 = as_type(fma(as_type(_1257), 10.0, _1200)); } else { _1262 = _1256; } uint _1302; uint _1303; uint _1304; if (!_449) { float _1292 = fma(_1233, spvFMul(fast::max(0.0, as_type(_1262)), 1.0 / _450), spvFMul(_429, spvFMul(_1233, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1164, as_type(_1255), fma(_1145, as_type(_1254), spvFMul(_384, _1144))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _451))))); _1302 = as_type(spvFMul(as_type(cbuf_56.data[_1157]), _1292)); _1303 = as_type(spvFMul(as_type(cbuf_56.data[_1153]), _1292)); _1304 = as_type(spvFMul(as_type(cbuf_56.data[_1149]), _1292)); } else { _1302 = _1255; _1303 = _1262; _1304 = _1257; } float _1317 = exp2(spvFMul(_1224, log2(fast::clamp(fma(spvFMul(_1181, _1184), _398, fma(spvFMul(_1166, _1184), _389, spvFMul(_383, spvFMul(_1147, _1184)))), 0.0, 1.0)))); float _1318 = exp2(spvFMul(0.0999755859375, log2(_1211))); float _1320 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_519), as_type(_709)), as_type(_913)), as_type(_1108)), as_type(_1304)); float _1322 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_521), as_type(_708)), as_type(_912)), as_type(_1107)), as_type(_1303)); float _1333 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_520), as_type(_707)), as_type(_911)), as_type(_1106)), as_type(_1302)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_446, spvFMul(_445, fma(spvFMul(_1234, spvFMul(_1318, spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1317))), _1237, fma(spvFMul(_1040, spvFMul(_1126, spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1125))), _1043, fma(spvFMul(_816, spvFMul(_931, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _930))), _845, fma(spvFMul(_455, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _537), _540)), _634, spvFMul(_642, spvFMul(_639, spvFMul(_752, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _751)))))))))); out.frag_color1.y = spvFMul(_447, spvFMul(_445, fma(spvFMul(_1234, spvFMul(_1318, spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1317))), _1237, fma(spvFMul(_1040, spvFMul(_1126, spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1125))), _1043, fma(_1023, _845, fma(spvFMul(_455, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _537), _540)), _634, spvFMul(_642, spvFMul(_639, spvFMul(_752, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _751)))))))))); out.frag_color1.z = spvFMul(_448, spvFMul(_445, fma(spvFMul(_1234, spvFMul(_1318, spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1317))), _1237, fma(spvFMul(_1040, spvFMul(_1126, spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1125))), _1043, fma(spvFMul(_816, spvFMul(_931, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _930))), _845, fma(spvFMul(_455, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _537), _540)), _634, spvFMul(_642, spvFMul(_639, spvFMul(_752, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _751)))))))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_445, spvFSub(_1320, spvFMul(spvFMul(_446, _1320), 0.5))); out.frag_color0.y = spvFMul(_445, spvFSub(_1322, spvFMul(spvFMul(_447, _1322), 0.5))); out.frag_color0.z = spvFMul(_445, spvFSub(_1333, spvFMul(spvFMul(_448, _1333), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xdda49e89 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb28f5a56 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(13)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(14)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(15)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(16)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(17)]]) { main0_out out = {}; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr2.x; out.out_attr2.y = in.vs_in_attr2.y; out.out_attr2.z = in.vs_in_attr2.z; out.out_attr2.w = in.vs_in_attr2.w; uint _156 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _162 = ((0u + ((_156 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _175 = uint4(cbuf_16.data[_162 + 0u], cbuf_16.data[_162 + 1u], cbuf_16.data[_162 + 2u], cbuf_16.data[_162 + 3u]); uint _176 = _175.x; uint _177 = _175.y; uint _178 = _175.z; uint _183 = ((0u + ((_156 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _196 = uint4(cbuf_16.data[_183 + 0u], cbuf_16.data[_183 + 1u], cbuf_16.data[_183 + 2u], cbuf_16.data[_183 + 3u]); uint _197 = _196.x; uint _198 = _196.y; uint _199 = _196.z; uint _204 = ((0u + (_156 * 16u)) + buf5_off) >> 2u; uint4 _217 = uint4(cbuf_16.data[_204 + 0u], cbuf_16.data[_204 + 1u], cbuf_16.data[_204 + 2u], cbuf_16.data[_204 + 3u]); uint _218 = _217.x; uint _219 = _217.y; uint _220 = _217.z; float _313 = fma(as_type(_176), in.vs_in_attr0.x, fma(as_type(_177), in.vs_in_attr0.y, fma(as_type(_178), in.vs_in_attr0.z, as_type(_175.w)))); float _317 = fma(as_type(_197), in.vs_in_attr0.x, fma(as_type(_198), in.vs_in_attr0.y, fma(as_type(_199), in.vs_in_attr0.z, as_type(_196.w)))); float _319 = spvFSub(_313, as_type(cbuf_20.data[191u + buf6_dword_off])); float _321 = fma(as_type(_218), in.vs_in_attr0.x, fma(as_type(_219), in.vs_in_attr0.y, fma(as_type(_220), in.vs_in_attr0.z, as_type(_217.w)))); float _323 = spvFSub(_317, as_type(cbuf_20.data[187u + buf6_dword_off])); float _337 = spvFSub(_321, as_type(cbuf_20.data[183u + buf6_dword_off])); float _347 = fma(as_type(cbuf_20.data[200u + buf6_dword_off]), _337, fma(as_type(cbuf_20.data[201u + buf6_dword_off]), _323, fma(as_type(cbuf_20.data[202u + buf6_dword_off]), _319, as_type(cbuf_20.data[203u + buf6_dword_off])))); float _349 = fma(as_type(cbuf_20.data[204u + buf6_dword_off]), _337, fma(as_type(cbuf_20.data[205u + buf6_dword_off]), _323, fma(as_type(cbuf_20.data[206u + buf6_dword_off]), _319, as_type(cbuf_20.data[207u + buf6_dword_off])))); float _351 = fma(as_type(cbuf_20.data[208u + buf6_dword_off]), _337, fma(as_type(cbuf_20.data[209u + buf6_dword_off]), _323, fma(as_type(cbuf_20.data[210u + buf6_dword_off]), _319, as_type(cbuf_20.data[211u + buf6_dword_off])))); float _353 = fma(as_type(cbuf_20.data[212u + buf6_dword_off]), _337, fma(as_type(cbuf_20.data[213u + buf6_dword_off]), _323, fma(as_type(cbuf_20.data[214u + buf6_dword_off]), _319, as_type(cbuf_20.data[215u + buf6_dword_off])))); out.gl_Position.x = _347; out.gl_Position.y = _349; out.gl_Position.z = _351; out.gl_Position.w = _353; out.out_attr3.x = _347; out.out_attr3.y = _349; out.out_attr3.z = _351; out.out_attr3.w = _353; float _393 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _404 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_218), _404, fma(as_type(_219), _395, spvFMul(as_type(_220), _393))); out.out_attr0.y = fma(as_type(_197), _404, fma(as_type(_198), _395, spvFMul(as_type(_199), _393))); out.out_attr0.z = fma(as_type(_176), _404, fma(as_type(_177), _395, spvFMul(as_type(_178), _393))); out.out_attr0.w = 0.0; out.out_attr1.x = spvFSub(as_type(cbuf_24.data[12u + buf8_dword_off]), _321); out.out_attr1.y = spvFSub(as_type(cbuf_24.data[13u + buf8_dword_off]), _317); out.out_attr1.z = spvFSub(as_type(cbuf_24.data[14u + buf8_dword_off]), _313); out.out_attr1.w = 0.0; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf7_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf7_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[104]; }; struct fs_cbuf_block_f32_2 { uint data[24]; }; struct fs_cbuf_block_f32_3 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_20 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_28 [[buffer(12)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; float4 _135 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr4.x, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); uint _143 = ((0u + (((uint(in.fs_in_attr0.w) * 13u) + 7u) * 16u)) + buf1_off) >> 2u; uint4 _156 = uint4(cbuf_24.data[_143 + 0u], cbuf_24.data[_143 + 1u], cbuf_24.data[_143 + 2u], cbuf_24.data[_143 + 3u]); uint _157 = _156.x; uint _158 = _156.y; uint _159 = _156.z; uint _170 = 8u + buf3_dword_off; uint _178 = 10u + buf3_dword_off; float _182 = spvFMul(as_type(cbuf_20.data[1u + buf2_dword_off]), _135.y); float _199 = spvFMul(as_type(cbuf_20.data[0u + buf2_dword_off]), _135.x); float _201 = spvFMul(_182, as_type(_158)); uint _212 = 14u + buf3_dword_off; float _220 = spvFMul(as_type(cbuf_20.data[2u + buf2_dword_off]), _135.z); float _222 = spvFMul(_199, as_type(_157)); float _231 = spvFMul(_220, as_type(_159)); float _262 = spvFAdd(-1.0, fma(_231, 0.11448000371456146240234375, fma(_222, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _201)))); float _269 = fma(as_type(cbuf_28.data[7u + buf3_dword_off]), _262, 1.0); float _288 = fast::clamp(spvFAdd(as_type(cbuf_28.data[_170]), spvFMul(as_type(cbuf_28.data[_170]), -exp2(-fma(as_type(cbuf_28.data[_178]), sqrt(fma(-in.fs_in_attr1.x, -in.fs_in_attr1.x, spvFMul(-in.fs_in_attr1.z, -in.fs_in_attr1.z))), -spvFMul(as_type(cbuf_28.data[9u + buf3_dword_off]), as_type(cbuf_28.data[_178])))))), 0.0, 1.0); float _304 = fma(as_type(cbuf_28.data[19u + buf3_dword_off]), _262, 1.0); float _305 = fma(_288, fma(-_199, as_type(_157), spvFMul(as_type(cbuf_28.data[4u + buf3_dword_off]), _269)), _222); float _306 = fma(_288, fma(-_182, as_type(_158), spvFMul(as_type(cbuf_28.data[5u + buf3_dword_off]), _269)), _201); float _307 = fma(_288, fma(-_220, as_type(_159), spvFMul(as_type(cbuf_28.data[6u + buf3_dword_off]), _269)), _231); float _311 = fast::clamp(spvFMul(as_type(cbuf_28.data[12u + buf3_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_28.data[_212]), spvFSub(as_type(cbuf_28.data[15u + buf3_dword_off]), in.fs_in_attr1.y)), -spvFMul(as_type(cbuf_28.data[13u + buf3_dword_off]), as_type(cbuf_28.data[_212]))), 0.0, 1.0)), 0.0, 1.0); out.frag_color0.x = fma(_311, fma(as_type(cbuf_28.data[16u + buf3_dword_off]), _304, -_305), _305); out.frag_color0.y = fma(_311, fma(as_type(cbuf_28.data[17u + buf3_dword_off]), _304, -_306), _306); out.frag_color0.z = fma(_311, fma(as_type(cbuf_28.data[18u + buf3_dword_off]), _304, -_307), _307); out.frag_color0.w = spvFMul(spvFMul(_135.w, in.fs_in_attr2.w), as_type(_156.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x765450df [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb28f5a56 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(18)]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr2.x; out.out_attr2.y = in.vs_in_attr2.y; out.out_attr2.z = in.vs_in_attr2.z; out.out_attr2.w = in.vs_in_attr2.w; uint _156 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _162 = ((0u + ((_156 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _175 = uint4(cbuf_16.data[_162 + 0u], cbuf_16.data[_162 + 1u], cbuf_16.data[_162 + 2u], cbuf_16.data[_162 + 3u]); uint _176 = _175.x; uint _177 = _175.y; uint _178 = _175.z; uint _183 = ((0u + ((_156 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _196 = uint4(cbuf_16.data[_183 + 0u], cbuf_16.data[_183 + 1u], cbuf_16.data[_183 + 2u], cbuf_16.data[_183 + 3u]); uint _197 = _196.x; uint _198 = _196.y; uint _199 = _196.z; uint _204 = ((0u + (_156 * 16u)) + buf6_off) >> 2u; uint4 _217 = uint4(cbuf_16.data[_204 + 0u], cbuf_16.data[_204 + 1u], cbuf_16.data[_204 + 2u], cbuf_16.data[_204 + 3u]); uint _218 = _217.x; uint _219 = _217.y; uint _220 = _217.z; float _313 = fma(as_type(_176), in.vs_in_attr0.x, fma(as_type(_177), in.vs_in_attr0.y, fma(as_type(_178), in.vs_in_attr0.z, as_type(_175.w)))); float _317 = fma(as_type(_197), in.vs_in_attr0.x, fma(as_type(_198), in.vs_in_attr0.y, fma(as_type(_199), in.vs_in_attr0.z, as_type(_196.w)))); float _319 = spvFSub(_313, as_type(cbuf_20.data[191u + buf7_dword_off])); float _321 = fma(as_type(_218), in.vs_in_attr0.x, fma(as_type(_219), in.vs_in_attr0.y, fma(as_type(_220), in.vs_in_attr0.z, as_type(_217.w)))); float _323 = spvFSub(_317, as_type(cbuf_20.data[187u + buf7_dword_off])); float _337 = spvFSub(_321, as_type(cbuf_20.data[183u + buf7_dword_off])); float _347 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _337, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _323, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _319, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _349 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _337, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _323, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _319, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _351 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _337, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _323, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _319, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _353 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _337, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _323, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _319, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _347; out.gl_Position.y = _349; out.gl_Position.z = _351; out.gl_Position.w = _353; out.out_attr3.x = _347; out.out_attr3.y = _349; out.out_attr3.z = _351; out.out_attr3.w = _353; float _393 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _404 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_218), _404, fma(as_type(_219), _395, spvFMul(as_type(_220), _393))); out.out_attr0.y = fma(as_type(_197), _404, fma(as_type(_198), _395, spvFMul(as_type(_199), _393))); out.out_attr0.z = fma(as_type(_176), _404, fma(as_type(_177), _395, spvFMul(as_type(_178), _393))); out.out_attr0.w = 0.0; out.out_attr1.x = spvFSub(as_type(cbuf_24.data[12u + buf9_dword_off]), _321); out.out_attr1.y = spvFSub(as_type(cbuf_24.data[13u + buf9_dword_off]), _317); out.out_attr1.z = spvFSub(as_type(cbuf_24.data[14u + buf9_dword_off]), _313); out.out_attr1.w = 0.0; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[24]; }; struct fs_cbuf_block_f32_4 { uint data[56]; }; constant uint _90 = {}; constant uint _91 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_44 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], sampler fs_samp24 [[sampler(0)]], sampler fs_samp12 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; float _151 = 1.0 / in.fs_in_attr3.w; float4 _186 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr4.x, as_type(cbuf_28.data[0u + buf1_dword_off]), as_type(cbuf_28.data[2u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_28.data[1u + buf1_dword_off]), as_type(cbuf_28.data[3u + buf1_dword_off])))); float _188 = _186.y; uint _195 = ((0u + (((uint(in.fs_in_attr0.w) * 13u) + 7u) * 16u)) + buf2_off) >> 2u; uint4 _208 = uint4(cbuf_36.data[_195 + 0u], cbuf_36.data[_195 + 1u], cbuf_36.data[_195 + 2u], cbuf_36.data[_195 + 3u]); uint _209 = _208.x; uint _210 = _208.y; uint _211 = _208.z; float _224 = spvFMul(_186.w, in.fs_in_attr2.w); float _226 = spvFMul(_224, as_type(_208.w)); bool _232 = (as_type(cbuf_32.data[20u + buf3_dword_off]) > fma(as_type(cbuf_32.data[21u + buf3_dword_off]), spvFAdd(-0.5, fs_img16.sample(fs_samp24, float2(spvFMul(0.25, spvFMul(as_type(cbuf_44.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr3.x), _151, 0.5))), spvFMul(0.25, spvFMul(as_type(cbuf_44.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr3.y), _151, 0.5))))).w), _224)) || (_226 == 0.0); uint _394; uint _395; uint _396; if (!_232) { uint _243 = 8u + buf4_dword_off; uint _251 = 10u + buf4_dword_off; float _255 = spvFMul(as_type(cbuf_32.data[1u + buf3_dword_off]), _188); float _270 = spvFMul(as_type(cbuf_32.data[0u + buf3_dword_off]), _186.x); float _272 = spvFMul(_255, as_type(_210)); uint _283 = 14u + buf4_dword_off; float _291 = spvFMul(as_type(cbuf_32.data[2u + buf3_dword_off]), _186.z); float _293 = spvFMul(_270, as_type(_209)); float _302 = spvFMul(_291, as_type(_211)); float _333 = spvFAdd(-1.0, fma(_302, 0.11448000371456146240234375, fma(_293, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _272)))); float _339 = fma(as_type(cbuf_40.data[7u + buf4_dword_off]), _333, 1.0); float _358 = fast::clamp(spvFAdd(as_type(cbuf_40.data[_243]), spvFMul(as_type(cbuf_40.data[_243]), -exp2(-fma(as_type(cbuf_40.data[_251]), sqrt(fma(-in.fs_in_attr1.x, -in.fs_in_attr1.x, spvFMul(-in.fs_in_attr1.z, -in.fs_in_attr1.z))), -spvFMul(as_type(cbuf_40.data[9u + buf4_dword_off]), as_type(cbuf_40.data[_251])))))), 0.0, 1.0); float _372 = fma(as_type(cbuf_40.data[19u + buf4_dword_off]), _333, 1.0); float _373 = fma(_358, fma(-_270, as_type(_209), spvFMul(as_type(cbuf_40.data[4u + buf4_dword_off]), _339)), _293); float _374 = fma(_358, fma(-_255, as_type(_210), spvFMul(as_type(cbuf_40.data[5u + buf4_dword_off]), _339)), _272); float _375 = fma(_358, fma(-_291, as_type(_211), spvFMul(as_type(cbuf_40.data[6u + buf4_dword_off]), _339)), _302); float _378 = fast::clamp(spvFMul(as_type(cbuf_40.data[12u + buf4_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_40.data[_283]), spvFSub(as_type(cbuf_40.data[15u + buf4_dword_off]), in.fs_in_attr1.y)), -spvFMul(as_type(cbuf_40.data[13u + buf4_dword_off]), as_type(cbuf_40.data[_283]))), 0.0, 1.0)), 0.0, 1.0); _394 = as_type(fma(_378, fma(as_type(cbuf_40.data[18u + buf4_dword_off]), _372, -_375), _375)); _395 = as_type(fma(_378, fma(as_type(cbuf_40.data[17u + buf4_dword_off]), _372, -_374), _374)); _396 = as_type(fma(_378, fma(as_type(cbuf_40.data[16u + buf4_dword_off]), _372, -_373), _373)); } else { _394 = _90; _395 = as_type(_188); _396 = _91; } if (_232) { discard_fragment(); } out.frag_color0.x = as_type(_396); out.frag_color0.y = as_type(_395); out.frag_color0.z = as_type(_394); out.frag_color0.w = _226; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8a6c7657 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xe30b0480 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[192]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(20)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _175 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _181 = ((0u + ((_175 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _194 = uint4(cbuf_16.data[_181 + 0u], cbuf_16.data[_181 + 1u], cbuf_16.data[_181 + 2u], cbuf_16.data[_181 + 3u]); uint _195 = _194.x; uint _196 = _194.y; uint _197 = _194.z; uint _202 = ((0u + ((_175 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _215 = uint4(cbuf_16.data[_202 + 0u], cbuf_16.data[_202 + 1u], cbuf_16.data[_202 + 2u], cbuf_16.data[_202 + 3u]); uint _216 = _215.x; uint _217 = _215.y; uint _218 = _215.z; uint _223 = ((0u + (_175 * 16u)) + buf8_off) >> 2u; uint4 _236 = uint4(cbuf_16.data[_223 + 0u], cbuf_16.data[_223 + 1u], cbuf_16.data[_223 + 2u], cbuf_16.data[_223 + 3u]); uint _237 = _236.x; uint _238 = _236.y; uint _239 = _236.z; float _332 = fma(as_type(_195), in.vs_in_attr0.x, fma(as_type(_196), in.vs_in_attr0.y, fma(as_type(_197), in.vs_in_attr0.z, as_type(_194.w)))); float _336 = fma(as_type(_216), in.vs_in_attr0.x, fma(as_type(_217), in.vs_in_attr0.y, fma(as_type(_218), in.vs_in_attr0.z, as_type(_215.w)))); float _338 = spvFSub(_332, as_type(cbuf_20.data[191u + buf9_dword_off])); float _340 = fma(as_type(_237), in.vs_in_attr0.x, fma(as_type(_238), in.vs_in_attr0.y, fma(as_type(_239), in.vs_in_attr0.z, as_type(_236.w)))); float _342 = spvFSub(_336, as_type(cbuf_20.data[187u + buf9_dword_off])); float _356 = spvFSub(_340, as_type(cbuf_20.data[183u + buf9_dword_off])); float _366 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _356, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _342, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _338, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _368 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _356, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _342, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _338, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _370 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _356, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _342, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _338, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _372 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _356, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _342, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _338, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _366; out.gl_Position.y = _368; out.gl_Position.z = _370; out.gl_Position.w = _372; out.out_attr4.x = _366; out.out_attr4.y = _368; out.out_attr4.z = _370; out.out_attr4.w = _372; float _479 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _482 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _485 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _487 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _515 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _516 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_237), _516, fma(as_type(_238), _487, spvFMul(as_type(_239), _482))); out.out_attr0.y = fma(as_type(_216), _516, fma(as_type(_217), _487, spvFMul(as_type(_218), _482))); out.out_attr0.z = fma(as_type(_195), _516, fma(as_type(_196), _487, spvFMul(as_type(_197), _482))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_237), _515, fma(as_type(_238), _485, spvFMul(as_type(_239), _479))); out.out_attr1.y = fma(as_type(_216), _515, fma(as_type(_217), _485, spvFMul(as_type(_218), _479))); out.out_attr1.z = fma(as_type(_195), _515, fma(as_type(_196), _485, spvFMul(as_type(_197), _479))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_20.data[84u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[85u + buf9_dword_off]), _336, fma(as_type(cbuf_20.data[86u + buf9_dword_off]), _332, as_type(cbuf_20.data[87u + buf9_dword_off])))); out.out_attr3.y = fma(as_type(cbuf_20.data[88u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[89u + buf9_dword_off]), _336, fma(as_type(cbuf_20.data[90u + buf9_dword_off]), _332, as_type(cbuf_20.data[91u + buf9_dword_off])))); out.out_attr3.z = fma(as_type(cbuf_20.data[92u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[93u + buf9_dword_off]), _336, fma(as_type(cbuf_20.data[94u + buf9_dword_off]), _332, as_type(cbuf_20.data[95u + buf9_dword_off])))); out.out_attr3.w = fma(as_type(cbuf_20.data[96u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[97u + buf9_dword_off]), _336, fma(as_type(cbuf_20.data[98u + buf9_dword_off]), _332, as_type(cbuf_20.data[99u + buf9_dword_off])))); out.out_attr5.x = spvFSub(as_type(cbuf_24.data[12u + buf11_dword_off]), _340); out.out_attr5.y = spvFSub(as_type(cbuf_24.data[13u + buf11_dword_off]), _336); out.out_attr5.z = spvFSub(as_type(cbuf_24.data[14u + buf11_dword_off]), _332); out.out_attr5.w = 1.0; out.out_attr6.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr6.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr6.z = 0.0; out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[72]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_32 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_56 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_48 [[buffer(15)]], texture2d fs_img124 [[texture(0)]], texture2d fs_img84 [[texture(1)]], texture2d fs_img76 [[texture(2)]], texture2d fs_img68 [[texture(3)]], texture2d fs_img116 [[texture(4)]], depth2d fs_img108 [[texture(5)]], texturecube fs_img100 [[texture(6)]], texture2d fs_img132 [[texture(7)]], texturecube fs_img92 [[texture(8)]], texture2d fs_img60 [[texture(9)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp28 [[sampler(3)]], sampler fs_samp24 [[sampler(4)]], sampler fs_samp4 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _162 = uint(gl_FrontFacing); float _190 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _196 = 1.0 / in.fs_in_attr4.w; float _199 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _201 = spvFMul(in.fs_in_attr4.x, _196); float _202 = spvFMul(in.fs_in_attr4.y, _196); float _205 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _208 = fma(0.5, _201, 0.5); float _210 = fma(-0.5, _202, 0.5); float _218 = rsqrt(fma(_205, _205, fma(_199, _199, spvFMul(_190, _190)))); float _222 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float4 _232 = fs_img124.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_52.data[4u + buf0_dword_off]), _208)), spvFMul(0.25, spvFMul(as_type(cbuf_52.data[5u + buf0_dword_off]), _210)))); float _234 = spvFMul(in.fs_in_attr0.x, _222); float _236 = spvFMul(in.fs_in_attr0.y, _222); float _238 = spvFMul(in.fs_in_attr0.z, _222); bool _242 = 0u == _162; uint _255; uint _256; uint _257; if (_242) { _255 = as_type(fast::max(-_236, -_236)); _256 = as_type(fast::max(-_234, -_234)); _257 = as_type(fast::max(-_238, -_238)); } else { _255 = as_type(_236); _256 = _162; _257 = as_type(_234); } uint _260; uint _261; if (!_242) { _260 = _257; _261 = as_type(_238); } else { _260 = _256; _261 = _257; } float _354 = spvFMul(in.fs_in_attr4.z, _196); float4 _359 = fs_img84.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf1_dword_off]), in.fs_in_attr6.x, as_type(cbuf_32.data[14u + buf1_dword_off])), fma(as_type(cbuf_32.data[13u + buf1_dword_off]), in.fs_in_attr6.y, as_type(cbuf_32.data[15u + buf1_dword_off])))); float _389 = 1.0 / fma(as_type(cbuf_52.data[48u + buf0_dword_off]), _201, fma(as_type(cbuf_52.data[49u + buf0_dword_off]), _202, fma(as_type(cbuf_52.data[50u + buf0_dword_off]), _354, as_type(cbuf_52.data[51u + buf0_dword_off])))); float _390 = spvFMul(fma(as_type(cbuf_52.data[44u + buf0_dword_off]), _201, fma(as_type(cbuf_52.data[45u + buf0_dword_off]), _202, fma(as_type(cbuf_52.data[46u + buf0_dword_off]), _354, as_type(cbuf_52.data[47u + buf0_dword_off])))), _389); uint _408 = ((((as_type((as_type(cbuf_52.data[176u + buf0_dword_off]) < _390) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_390 > as_type(cbuf_52.data[177u + buf0_dword_off]))) + uint(abs(int(0u)))) + uint(_390 > as_type(cbuf_52.data[178u + buf0_dword_off]))) << 2u; uint _435 = ((0u + ((_408 + 28u) * 16u)) + buf0_off) >> 2u; uint4 _448 = uint4(cbuf_52.data[_435 + 0u], cbuf_52.data[_435 + 1u], cbuf_52.data[_435 + 2u], cbuf_52.data[_435 + 3u]); uint _456 = ((0u + ((_408 + 29u) * 16u)) + buf0_off) >> 2u; uint4 _469 = uint4(cbuf_52.data[_456 + 0u], cbuf_52.data[_456 + 1u], cbuf_52.data[_456 + 2u], cbuf_52.data[_456 + 3u]); uint _477 = ((0u + ((_408 + 31u) * 16u)) + buf0_off) >> 2u; uint4 _490 = uint4(cbuf_52.data[_477 + 0u], cbuf_52.data[_477 + 1u], cbuf_52.data[_477 + 2u], cbuf_52.data[_477 + 3u]); uint _498 = ((0u + ((_408 + 30u) * 16u)) + buf0_off) >> 2u; uint4 _511 = uint4(cbuf_52.data[_498 + 0u], cbuf_52.data[_498 + 1u], cbuf_52.data[_498 + 2u], cbuf_52.data[_498 + 3u]); float4 _526 = fs_img76.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf1_dword_off]), in.fs_in_attr6.x, as_type(cbuf_32.data[10u + buf1_dword_off])), fma(as_type(cbuf_32.data[9u + buf1_dword_off]), in.fs_in_attr6.y, as_type(cbuf_32.data[11u + buf1_dword_off])))); float _532 = fma(2.0, _359.y, -1.0); float _533 = spvFMul(fma(2.0, _359.x, -1.0), fma(2.0, _359.w, -1.0)); float _542 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _543 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_533, _533), spvFMul(_532, _532)), 0.0, 1.0))); float _557 = fma(spvFMul(spvFMul(_190, _218), in.fs_in_attr1.w), _533, fma(spvFMul(in.fs_in_attr1.z, _542), _532, spvFMul(as_type(_261), _543))); float _562 = fma(spvFMul(spvFMul(_199, _218), in.fs_in_attr1.w), _533, fma(spvFMul(in.fs_in_attr1.y, _542), _532, spvFMul(as_type(_255), _543))); float _567 = fma(spvFMul(spvFMul(_205, _218), in.fs_in_attr1.w), _533, fma(spvFMul(in.fs_in_attr1.x, _542), _532, spvFMul(as_type(_260), _543))); float _600 = rsqrt(fma(in.fs_in_attr5.x, in.fs_in_attr5.x, fma(in.fs_in_attr5.y, in.fs_in_attr5.y, spvFMul(in.fs_in_attr5.z, in.fs_in_attr5.z)))); float _601 = rsqrt(fma(_567, _567, fma(_562, _562, spvFMul(_557, _557)))); uint _606 = 73u + buf0_dword_off; uint _610 = 74u + buf0_dword_off; uint _614 = 75u + buf0_dword_off; float _617 = spvFMul(in.fs_in_attr5.z, _600); float _618 = spvFMul(_557, _601); float _619 = spvFMul(in.fs_in_attr5.y, _600); float _620 = spvFMul(_562, _601); float _622 = spvFMul(in.fs_in_attr5.x, _600); float _623 = spvFMul(_567, _601); float _636 = fma(_623, _622, fma(_620, _619, spvFMul(_617, _618))); float _648 = spvFMul(fast::max(_636, _636), 2.0); uint _652 = uint(in.fs_in_attr0.w) * 13u; float _656 = fma(as_type(_448.x), _201, fma(as_type(_448.y), _202, fma(as_type(_448.z), _354, as_type(_448.w)))); float _658 = fma(as_type(_469.x), _201, fma(as_type(_469.y), _202, fma(as_type(_469.z), _354, as_type(_469.w)))); float _660 = fma(as_type(_490.x), _201, fma(as_type(_490.y), _202, fma(as_type(_490.z), _354, as_type(_490.w)))); float _667 = spvFMul(_526.x, spvFMul(as_type(cbuf_36.data[8u + buf2_dword_off]), 0.00390625)); float _676 = 1.0 / _660; float _683 = spvFMul(13.0, _667); float _685 = fma(-in.fs_in_attr5.x, _600, spvFMul(_623, _648)); float _687 = fma(-in.fs_in_attr5.y, _600, spvFMul(_620, _648)); float _689 = fma(-in.fs_in_attr5.z, _600, spvFMul(_618, _648)); float _696 = spvFMul(fma(as_type(_511.x), _201, fma(as_type(_511.y), _202, fma(as_type(_511.z), _354, as_type(_511.w)))), _676); float4 _703 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf1_dword_off]), in.fs_in_attr6.x, as_type(cbuf_32.data[6u + buf1_dword_off])), fma(as_type(cbuf_32.data[5u + buf1_dword_off]), in.fs_in_attr6.y, as_type(cbuf_32.data[7u + buf1_dword_off])))); float _704 = _703.x; float _705 = _703.y; float _706 = _703.z; float _733 = 1.0 / abs(1.0); float _749 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_683, _683), 0.5))); float _751 = fma(_687, _733, 1.5); float _752 = fma(_685, _733, 1.5); uint _758 = ((0u + ((_652 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _771 = uint4(cbuf_40.data[_758 + 0u], cbuf_40.data[_758 + 1u], cbuf_40.data[_758 + 2u], cbuf_40.data[_758 + 3u]); uint _779 = ((0u + ((_652 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _792 = uint4(cbuf_40.data[_779 + 0u], cbuf_40.data[_779 + 1u], cbuf_40.data[_779 + 2u], cbuf_40.data[_779 + 3u]); uint _800 = ((0u + ((_652 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _813 = uint4(cbuf_40.data[_800 + 0u], cbuf_40.data[_800 + 1u], cbuf_40.data[_800 + 2u], cbuf_40.data[_800 + 3u]); uint _828 = ((0u + ((_652 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _841 = uint4(cbuf_40.data[_828 + 0u], cbuf_40.data[_828 + 1u], cbuf_40.data[_828 + 2u], cbuf_40.data[_828 + 3u]); uint _842 = _841.x; uint _843 = _841.y; uint _844 = _841.z; uint _845 = _841.w; float4 _852 = fs_img100.sample(fs_samp20, float3(spvFSub(_752, 1.5), spvFSub(_751, 1.5), _689), level(_749)); float4 _860 = fs_img132.sample(fs_samp24, float2(_208, _210), level(_749)); uint _868 = ((0u + ((_652 + 12u) * 16u)) + buf3_off) >> 2u; float4 _884 = fs_img92.sample(fs_samp20, float3(spvFSub(_752, 1.5), spvFSub(_751, 1.5), _689), level(_749)); float4 _898 = fs_img60.sample(fs_samp4, float2(fma(in.fs_in_attr6.x, as_type(cbuf_32.data[0u + buf1_dword_off]), as_type(cbuf_32.data[2u + buf1_dword_off])), fma(in.fs_in_attr6.y, as_type(cbuf_32.data[1u + buf1_dword_off]), as_type(cbuf_32.data[3u + buf1_dword_off])))); uint _903 = 12u + buf2_dword_off; float _923 = spvFMul(fma(as_type(cbuf_52.data[40u + buf0_dword_off]), _201, fma(as_type(cbuf_52.data[41u + buf0_dword_off]), _202, fma(as_type(cbuf_52.data[42u + buf0_dword_off]), _354, as_type(cbuf_52.data[43u + buf0_dword_off])))), _389); uint _925 = 0u + buf4_dword_off; uint _928 = 1u + buf4_dword_off; uint _931 = 2u + buf4_dword_off; uint _934 = 3u + buf4_dword_off; uint _937 = 4u + buf4_dword_off; uint _940 = 5u + buf4_dword_off; uint _943 = 6u + buf4_dword_off; uint _946 = 7u + buf4_dword_off; float _949 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _950 = spvFMul(fma(as_type(cbuf_52.data[36u + buf0_dword_off]), _201, fma(as_type(cbuf_52.data[37u + buf0_dword_off]), _202, fma(as_type(cbuf_52.data[38u + buf0_dword_off]), _354, as_type(cbuf_52.data[39u + buf0_dword_off])))), _389); float _975 = fast::clamp(spvFAdd(fma(_685, as_type(_260), fma(_687, as_type(_255), spvFMul(as_type(_261), _689))), 1.0), 0.0, 1.0); float _986 = fma(fma(as_type(cbuf_36.data[_903]), fs_img116.sample(fs_samp20, float2(_208, _210)).x, 1.0), _949, -spvFMul(as_type(cbuf_36.data[_903]), _949)); float _988 = spvFAdd(_636, _986); bool _998 = (_706 == 0.0) && (0.0 == _705); float _999 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_636, _636), 0.0, 1.0))))); float _1026 = fast::clamp(spvFAdd(fma(_988, _988, _986), -1.0), 0.0, 1.0); float _1059 = spvFMul(as_type(cbuf_40.data[_868]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_52.data[72u + buf0_dword_off]), as_type(cbuf_52.data[_606])), -spvFMul(as_type(cbuf_52.data[_606]), sqrt(fma(_950, _950, fma(_923, _923, spvFMul(_390, _390)))))), 0.0, 1.0)); float _1061 = spvFMul(as_type(cbuf_44.data[_943]), _618); float _1062 = _998 ? _704 : _706; float _1063 = _998 ? _704 : _705; float _1064 = spvFMul(_999, _1026); float _1087 = spvFSub(1.0, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_660, as_type(cbuf_52.data[_614]), _656), _676), spvFMul(fma(as_type(cbuf_52.data[_610]), _660, _658), _676)), _696, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_660, as_type(cbuf_52.data[_610]), _656), _676), spvFMul(fma(-_660, as_type(cbuf_52.data[_614]), _658), _676)), _696, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_660, as_type(cbuf_52.data[_610]), _656), _676), spvFMul(fma(_660, as_type(cbuf_52.data[_614]), _658), _676)), _696, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_660, as_type(cbuf_52.data[_614]), _656), _676), spvFMul(fma(-_660, as_type(cbuf_52.data[_610]), _658), _676)), _696, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1095 = spvFMul(as_type(cbuf_44.data[_931]), _618); float _1113 = spvFMul(_986, spvFMul(spvFMul(_975, _975), spvFSub(1.0, _860.w))); float _1116 = fma(-_1087, spvFMul(as_type(cbuf_52.data[76u + buf0_dword_off]), _1059), as_type(cbuf_40.data[_868])); float _1119 = fma(-_1087, spvFMul(as_type(cbuf_52.data[77u + buf0_dword_off]), _1059), as_type(cbuf_40.data[_868])); float _1122 = fma(-_1087, spvFMul(as_type(cbuf_52.data[78u + buf0_dword_off]), _1059), as_type(cbuf_40.data[_868])); float _1127 = fast::clamp(fma(as_type(cbuf_44.data[_937]), _623, fma(as_type(cbuf_44.data[_940]), _620, _1061)), 0.0, 1.0); float _1134 = spvFMul(_667, _667); float _1135 = fast::max(0.0, spvFAdd(as_type(_771.w), fma(_618, as_type(_771.z), fma(_623, as_type(_771.x), spvFMul(_620, as_type(_771.y)))))); float _1136 = fast::max(0.0, spvFAdd(as_type(_792.w), fma(_618, as_type(_792.z), fma(_623, as_type(_792.x), spvFMul(_620, as_type(_792.y)))))); float _1137 = fast::max(0.0, spvFAdd(as_type(_813.w), fma(_618, as_type(_813.z), fma(_623, as_type(_813.x), spvFMul(_620, as_type(_813.y)))))); float _1146 = fast::clamp(fma(as_type(cbuf_44.data[_925]), _623, fma(as_type(cbuf_44.data[_928]), _620, _1095)), 0.0, 1.0); uint _1192 = 64u + buf4_dword_off; uint _1196 = 65u + buf4_dword_off; float _1199 = spvFMul(_898.w, in.fs_in_attr2.w); float _1213 = spvFMul(as_type(cbuf_40.data[_868]), fma(as_type(_845), spvFAdd(-1.0, _1116), 1.0)); float _1216 = spvFMul(as_type(cbuf_40.data[_868]), fma(as_type(_845), spvFAdd(-1.0, _1119), 1.0)); float _1218 = spvFMul(as_type(cbuf_40.data[_868]), fma(as_type(_845), spvFAdd(-1.0, _1122), 1.0)); float _1219 = fma(spvFMul(as_type(cbuf_44.data[16u + buf4_dword_off]), _1116), fma(-_704, _1146, _1146), spvFMul(as_type(cbuf_44.data[20u + buf4_dword_off]), fma(-_704, _1127, _1127))); float _1221 = fma(spvFMul(as_type(cbuf_44.data[17u + buf4_dword_off]), _1119), fma(-_1063, _1146, _1146), spvFMul(as_type(cbuf_44.data[21u + buf4_dword_off]), fma(-_1063, _1127, _1127))); float _1223 = fma(spvFMul(as_type(cbuf_44.data[18u + buf4_dword_off]), _1122), fma(-_1062, _1146, _1146), spvFMul(as_type(cbuf_44.data[22u + buf4_dword_off]), fma(-_1062, _1127, _1127))); uint _1270; uint _1271; uint _1272; if (cbuf_44.data[_1192] > 0u) { float _1252 = fma(0.5, fma(as_type(cbuf_44.data[8u + buf4_dword_off]), _623, fma(as_type(cbuf_44.data[9u + buf4_dword_off]), _620, spvFMul(as_type(cbuf_44.data[10u + buf4_dword_off]), _618))), 0.5); float _1254 = fast::clamp(spvFMul(_1252, _1252), 0.0, 1.0); _1270 = as_type(fma(as_type(cbuf_44.data[26u + buf4_dword_off]), fma(-_1062, _1254, _1254), _1223)); _1271 = as_type(fma(as_type(cbuf_44.data[25u + buf4_dword_off]), fma(-_1063, _1254, _1254), _1221)); _1272 = as_type(fma(as_type(cbuf_44.data[24u + buf4_dword_off]), fma(-_704, _1254, _1254), _1219)); } else { _1270 = as_type(_1223); _1271 = as_type(_1221); _1272 = as_type(_1219); } uint _1319; uint _1320; uint _1321; if (cbuf_44.data[_1196] > 0u) { float _1298 = fma(0.5, fma(as_type(cbuf_44.data[12u + buf4_dword_off]), _623, fma(as_type(cbuf_44.data[13u + buf4_dword_off]), _620, spvFMul(as_type(cbuf_44.data[14u + buf4_dword_off]), _618))), 0.5); float _1300 = fast::clamp(spvFMul(_1298, _1298), 0.0, 1.0); _1319 = as_type(fma(as_type(cbuf_44.data[30u + buf4_dword_off]), fma(-_1062, _1300, _1300), as_type(_1270))); _1320 = as_type(fma(as_type(cbuf_44.data[29u + buf4_dword_off]), fma(-_1063, _1300, _1300), as_type(_1271))); _1321 = as_type(fma(as_type(cbuf_44.data[28u + buf4_dword_off]), fma(-_704, _1300, _1300), as_type(_1272))); } else { _1319 = _1270; _1320 = _1271; _1321 = _1272; } float _1323 = fma(in.fs_in_attr5.z, _600, as_type(cbuf_44.data[_943])); float _1325 = fma(in.fs_in_attr5.z, _600, as_type(cbuf_44.data[_931])); float _1327 = fma(in.fs_in_attr5.y, _600, as_type(cbuf_44.data[_940])); float _1330 = fma(in.fs_in_attr5.y, _600, as_type(cbuf_44.data[_928])); float _1333 = fma(in.fs_in_attr5.x, _600, as_type(cbuf_44.data[_937])); float _1336 = fma(in.fs_in_attr5.x, _600, as_type(cbuf_44.data[_925])); float _1340 = rsqrt(fma(_1333, _1333, fma(_1327, _1327, spvFMul(_1323, _1323)))); float _1341 = rsqrt(fma(_1336, _1336, fma(_1330, _1330, spvFMul(_1325, _1325)))); float _1342 = spvFMul(_1323, _1340); float _1343 = exp2(_683); float _1344 = spvFMul(_1325, _1341); float _1345 = spvFMul(_1327, _1340); float _1368 = spvFMul(_1330, _1341); float _1369 = spvFMul(_1333, _1340); float _1376 = spvFMul(_1336, _1341); float _1400 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_946]), _1343), 1.0 / fma(_1343, 0.01000213623046875, as_type(cbuf_44.data[_946])))); float _1406 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_934]), _1343), 1.0 / fma(_1343, 0.01000213623046875, as_type(cbuf_44.data[_934])))); float _1412 = fma(_1400, 0.125, 0.25); float _1424 = exp2(spvFMul(_1400, log2(fast::clamp(fma(_1369, _623, fma(_1345, _620, spvFMul(_618, _1342))), 0.0, 1.0)))); float _1426 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_622, _1369, fma(_619, _1345, spvFMul(_617, _1342))), 0.0, 1.0))))); float _1427 = fma(0.125, _1406, 0.25); float _1436 = exp2(spvFMul(_1406, log2(fast::clamp(fma(_1376, _623, fma(_1368, _620, spvFMul(_618, _1344))), 0.0, 1.0)))); float _1437 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_622, _1376, fma(_619, _1368, spvFMul(_617, _1344))), 0.0, 1.0))))); float _1443 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_937]), _623, fma(as_type(cbuf_44.data[_940]), _620, _1061)), 16.0), 0.0, 1.0); float _1460 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_925]), _623, fma(as_type(cbuf_44.data[_928]), _620, _1095)), 16.0), 0.0, 1.0); float _1479 = fma(spvFMul(_1460, spvFMul(_1436, spvFMul(spvFMul(as_type(cbuf_44.data[32u + buf4_dword_off]), _1116), _1427))), fma(-_704, _1437, spvFAdd(_704, _1437)), spvFMul(fma(-_704, _1426, spvFAdd(_704, _1426)), spvFMul(_1443, spvFMul(_1424, spvFMul(as_type(cbuf_44.data[36u + buf4_dword_off]), _1412))))); float _1481 = fma(spvFMul(_1460, spvFMul(_1436, spvFMul(spvFMul(as_type(cbuf_44.data[33u + buf4_dword_off]), _1119), _1427))), fma(-_1063, _1437, spvFAdd(_1063, _1437)), spvFMul(fma(-_1063, _1426, spvFAdd(_1063, _1426)), spvFMul(_1443, spvFMul(_1424, spvFMul(as_type(cbuf_44.data[37u + buf4_dword_off]), _1412))))); float _1483 = fma(spvFMul(_1460, spvFMul(_1436, spvFMul(spvFMul(as_type(cbuf_44.data[34u + buf4_dword_off]), _1122), _1427))), fma(-_1062, _1437, spvFAdd(_1062, _1437)), spvFMul(fma(-_1062, _1426, spvFAdd(_1062, _1426)), spvFMul(_1443, spvFMul(_1424, spvFMul(as_type(cbuf_44.data[38u + buf4_dword_off]), _1412))))); uint _1573; uint _1574; uint _1575; if (cbuf_44.data[_1192] > 0u) { uint _1501 = 11u + buf4_dword_off; float _1514 = fma(in.fs_in_attr5.x, _600, as_type(cbuf_44.data[8u + buf4_dword_off])); float _1516 = fma(in.fs_in_attr5.y, _600, as_type(cbuf_44.data[9u + buf4_dword_off])); float _1518 = fma(in.fs_in_attr5.z, _600, as_type(cbuf_44.data[10u + buf4_dword_off])); float _1522 = rsqrt(fma(_1514, _1514, fma(_1516, _1516, spvFMul(_1518, _1518)))); float _1523 = spvFMul(_1514, _1522); float _1524 = spvFMul(_1516, _1522); float _1525 = spvFMul(_1518, _1522); float _1536 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1501]), _1343), 1.0 / fma(_1343, 0.01000213623046875, as_type(cbuf_44.data[_1501])))); float _1539 = exp2(spvFMul(_1536, log2(fast::clamp(fma(_1523, _623, fma(_1524, _620, spvFMul(_618, _1525))), 0.0, 1.0)))); float _1547 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_622, _1523, fma(_619, _1524, spvFMul(_617, _1525))), 0.0, 1.0))))); float _1557 = fma(0.125, _1536, 0.25); _1573 = as_type(fma(spvFMul(_1539, spvFMul(as_type(cbuf_44.data[42u + buf4_dword_off]), _1557)), fma(-_1062, _1547, spvFAdd(_1062, _1547)), _1483)); _1574 = as_type(fma(spvFMul(_1539, spvFMul(as_type(cbuf_44.data[41u + buf4_dword_off]), _1557)), fma(-_1063, _1547, spvFAdd(_1063, _1547)), _1481)); _1575 = as_type(fma(spvFMul(_1539, spvFMul(as_type(cbuf_44.data[40u + buf4_dword_off]), _1557)), fma(-_704, _1547, spvFAdd(_704, _1547)), _1479)); } else { _1573 = as_type(_1483); _1574 = as_type(_1481); _1575 = as_type(_1479); } uint _1661; uint _1662; uint _1663; if (cbuf_44.data[_1196] > 0u) { uint _1586 = 15u + buf4_dword_off; float _1599 = fma(in.fs_in_attr5.x, _600, as_type(cbuf_44.data[12u + buf4_dword_off])); float _1601 = fma(in.fs_in_attr5.y, _600, as_type(cbuf_44.data[13u + buf4_dword_off])); float _1603 = fma(in.fs_in_attr5.z, _600, as_type(cbuf_44.data[14u + buf4_dword_off])); float _1607 = rsqrt(fma(_1599, _1599, fma(_1601, _1601, spvFMul(_1603, _1603)))); float _1608 = spvFMul(_1599, _1607); float _1609 = spvFMul(_1601, _1607); float _1610 = spvFMul(_1603, _1607); float _1621 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1586]), _1343), 1.0 / fma(_1343, 0.01000213623046875, as_type(cbuf_44.data[_1586])))); float _1624 = exp2(spvFMul(_1621, log2(fast::clamp(fma(_1608, _623, fma(_1609, _620, spvFMul(_618, _1610))), 0.0, 1.0)))); float _1632 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_622, _1608, fma(_619, _1609, spvFMul(_617, _1610))), 0.0, 1.0))))); float _1642 = fma(0.125, _1621, 0.25); _1661 = as_type(fma(spvFMul(_1624, spvFMul(as_type(cbuf_44.data[46u + buf4_dword_off]), _1642)), fma(-_1062, _1632, spvFAdd(_1062, _1632)), as_type(_1573))); _1662 = as_type(fma(spvFMul(_1624, spvFMul(as_type(cbuf_44.data[44u + buf4_dword_off]), _1642)), fma(-_704, _1632, spvFAdd(_704, _1632)), as_type(_1575))); _1663 = as_type(fma(spvFMul(_1624, spvFMul(as_type(cbuf_44.data[45u + buf4_dword_off]), _1642)), fma(-_1063, _1632, spvFAdd(_1063, _1632)), as_type(_1574))); } else { _1661 = _1573; _1662 = _1575; _1663 = _1574; } uint _1664 = _652 + 7u; float _1666 = fma(spvFMul(fma(fma(_999, _1026, -spvFMul(_1063, _1064)), _1134, _1063), fma(_986, _860.y, spvFMul(fma(as_type(_842), fma(-as_type(_843), _884.y, spvFMul(as_type(_844), _852.y)), spvFMul(as_type(_843), _884.y)), _1113))), _1216, as_type(_1663)); uint _1675 = ((0u + (_1664 * 16u)) + buf3_off) >> 2u; uint4 _1688 = uint4(cbuf_40.data[_1675 + 0u], cbuf_40.data[_1675 + 1u], cbuf_40.data[_1675 + 2u], cbuf_40.data[_1675 + 3u]); uint _1689 = _1688.x; uint _1690 = _1688.y; uint _1691 = _1688.z; float _1704 = spvFMul(_1199, as_type(_1688.w)); bool _1706 = (as_type(cbuf_36.data[20u + buf2_dword_off]) > fma(as_type(cbuf_36.data[21u + buf2_dword_off]), spvFAdd(-0.5, _232.w), _1199)) || (_1704 == 0.0); uint _1865; uint _1866; uint _1867; if (!_1706) { uint _1717 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); uint _1720 = 8u + buf6_dword_off; uint _1726 = 10u + buf6_dword_off; float _1740 = fma(spvFMul(as_type(cbuf_36.data[1u + buf2_dword_off]), _898.y), fma(spvFMul(_986, fma(-_1063, _1136, _1136)), _1216, as_type(_1320)), spvFMul(_1666, spvFMul(as_type(cbuf_36.data[5u + buf2_dword_off]), as_type(cbuf_56.data[_1717])))); float _1754 = fma(spvFMul(as_type(cbuf_36.data[0u + buf2_dword_off]), _898.x), fma(spvFMul(_986, fma(-_704, _1135, _1135)), _1213, as_type(_1321)), spvFMul(fma(spvFMul(fma(fma(_999, _1026, -spvFMul(_704, _1064)), _1134, _704), fma(_986, _860.x, spvFMul(fma(as_type(_842), fma(-as_type(_843), _884.x, spvFMul(as_type(_844), _852.x)), spvFMul(as_type(_843), _884.x)), _1113))), _1213, as_type(_1662)), spvFMul(as_type(cbuf_36.data[4u + buf2_dword_off]), as_type(cbuf_56.data[_1717])))); float _1756 = spvFMul(_1740, as_type(_1690)); uint _1763 = 14u + buf6_dword_off; float _1769 = fma(spvFMul(as_type(cbuf_36.data[2u + buf2_dword_off]), _898.z), fma(spvFMul(_986, fma(-_1062, _1137, _1137)), _1218, as_type(_1319)), spvFMul(fma(spvFMul(fma(fma(_999, _1026, -spvFMul(_1062, _1064)), _1134, _1062), fma(_986, _860.z, spvFMul(fma(as_type(_842), fma(-as_type(_843), _884.z, spvFMul(as_type(_844), _852.z)), spvFMul(as_type(_843), _884.z)), _1113))), _1218, as_type(_1661)), spvFMul(as_type(cbuf_36.data[6u + buf2_dword_off]), as_type(cbuf_56.data[_1717])))); float _1771 = spvFMul(_1754, as_type(_1689)); float _1778 = spvFMul(_1769, as_type(_1691)); float _1806 = spvFAdd(-1.0, fma(_1778, 0.11448000371456146240234375, fma(_1771, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1756)))); float _1810 = fma(as_type(cbuf_48.data[7u + buf6_dword_off]), _1806, 1.0); float _1829 = fast::clamp(spvFAdd(as_type(cbuf_48.data[_1720]), spvFMul(as_type(cbuf_48.data[_1720]), -exp2(-fma(as_type(cbuf_48.data[_1726]), sqrt(fma(-in.fs_in_attr5.x, -in.fs_in_attr5.x, spvFMul(-in.fs_in_attr5.z, -in.fs_in_attr5.z))), -spvFMul(as_type(cbuf_48.data[9u + buf6_dword_off]), as_type(cbuf_48.data[_1726])))))), 0.0, 1.0); float _1843 = fma(as_type(cbuf_48.data[19u + buf6_dword_off]), _1806, 1.0); float _1844 = fma(_1829, fma(-_1754, as_type(_1689), spvFMul(as_type(cbuf_48.data[4u + buf6_dword_off]), _1810)), _1771); float _1845 = fma(_1829, fma(-_1740, as_type(_1690), spvFMul(as_type(cbuf_48.data[5u + buf6_dword_off]), _1810)), _1756); float _1846 = fma(_1829, fma(-_1769, as_type(_1691), spvFMul(as_type(cbuf_48.data[6u + buf6_dword_off]), _1810)), _1778); float _1849 = fast::clamp(spvFMul(as_type(cbuf_48.data[12u + buf6_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_48.data[_1763]), spvFSub(as_type(cbuf_48.data[15u + buf6_dword_off]), in.fs_in_attr5.y)), -spvFMul(as_type(cbuf_48.data[13u + buf6_dword_off]), as_type(cbuf_48.data[_1763]))), 0.0, 1.0)), 0.0, 1.0); _1865 = as_type(fma(_1849, fma(as_type(cbuf_48.data[18u + buf6_dword_off]), _1843, -_1846), _1846)); _1866 = as_type(fma(_1849, fma(as_type(cbuf_48.data[17u + buf6_dword_off]), _1843, -_1845), _1845)); _1867 = as_type(fma(_1849, fma(as_type(cbuf_48.data[16u + buf6_dword_off]), _1843, -_1844), _1844)); } else { _1865 = _1664; _1866 = as_type(_1666); _1867 = as_type(_1213); } if (_1706) { discard_fragment(); } out.frag_color0.x = as_type(_1867); out.frag_color0.y = as_type(_1866); out.frag_color0.z = as_type(_1865); out.frag_color0.w = _1704; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x228a5307 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[3228]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(14)]]) { main0_out out = {}; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _137 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); uint _142 = (cbuf_12.data[_137] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _143 = (cbuf_12.data[_137] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _148 = (cbuf_12.data[_137] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _152 = (cbuf_12.data[_137] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _159 = ((0u + ((_142 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _172 = uint4(cbuf_16.data[_159 + 0u], cbuf_16.data[_159 + 1u], cbuf_16.data[_159 + 2u], cbuf_16.data[_159 + 3u]); uint _180 = ((0u + ((_143 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _193 = uint4(cbuf_16.data[_180 + 0u], cbuf_16.data[_180 + 1u], cbuf_16.data[_180 + 2u], cbuf_16.data[_180 + 3u]); uint _201 = ((0u + ((_142 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _214 = uint4(cbuf_16.data[_201 + 0u], cbuf_16.data[_201 + 1u], cbuf_16.data[_201 + 2u], cbuf_16.data[_201 + 3u]); uint _222 = ((0u + ((_143 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _235 = uint4(cbuf_16.data[_222 + 0u], cbuf_16.data[_222 + 1u], cbuf_16.data[_222 + 2u], cbuf_16.data[_222 + 3u]); uint _243 = ((0u + (_142 * 16u)) + buf3_off) >> 2u; uint4 _256 = uint4(cbuf_16.data[_243 + 0u], cbuf_16.data[_243 + 1u], cbuf_16.data[_243 + 2u], cbuf_16.data[_243 + 3u]); uint _264 = ((0u + ((_148 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _277 = uint4(cbuf_16.data[_264 + 0u], cbuf_16.data[_264 + 1u], cbuf_16.data[_264 + 2u], cbuf_16.data[_264 + 3u]); uint _285 = ((0u + (_143 * 16u)) + buf3_off) >> 2u; uint4 _298 = uint4(cbuf_16.data[_285 + 0u], cbuf_16.data[_285 + 1u], cbuf_16.data[_285 + 2u], cbuf_16.data[_285 + 3u]); uint _306 = ((0u + ((_148 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _319 = uint4(cbuf_16.data[_306 + 0u], cbuf_16.data[_306 + 1u], cbuf_16.data[_306 + 2u], cbuf_16.data[_306 + 3u]); uint _327 = ((0u + ((_152 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _340 = uint4(cbuf_16.data[_327 + 0u], cbuf_16.data[_327 + 1u], cbuf_16.data[_327 + 2u], cbuf_16.data[_327 + 3u]); uint _348 = ((0u + (_148 * 16u)) + buf3_off) >> 2u; uint4 _361 = uint4(cbuf_16.data[_348 + 0u], cbuf_16.data[_348 + 1u], cbuf_16.data[_348 + 2u], cbuf_16.data[_348 + 3u]); uint _369 = ((0u + ((_152 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _382 = uint4(cbuf_16.data[_369 + 0u], cbuf_16.data[_369 + 1u], cbuf_16.data[_369 + 2u], cbuf_16.data[_369 + 3u]); uint _390 = ((0u + (_152 * 16u)) + buf3_off) >> 2u; uint4 _403 = uint4(cbuf_16.data[_390 + 0u], cbuf_16.data[_390 + 1u], cbuf_16.data[_390 + 2u], cbuf_16.data[_390 + 3u]); float _415 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _416 = spvFMul(in.vs_in_attr2.y, _415); float _417 = spvFMul(in.vs_in_attr2.x, _415); float _422 = spvFMul(in.vs_in_attr2.z, _415); float _501 = spvFMul(in.vs_in_attr2.w, _415); float _601 = spvFSub(fma(fma(as_type(_340.x), _501, fma(as_type(_277.x), _422, fma(as_type(_193.x), _417, spvFMul(_416, as_type(_172.x))))), in.vs_in_attr0.x, fma(fma(as_type(_340.y), _501, fma(as_type(_277.y), _422, fma(as_type(_193.y), _417, spvFMul(_416, as_type(_172.y))))), in.vs_in_attr0.y, fma(fma(as_type(_340.z), _501, fma(as_type(_277.z), _422, fma(as_type(_193.z), _417, spvFMul(_416, as_type(_172.z))))), in.vs_in_attr0.z, fma(as_type(_340.w), _501, fma(as_type(_277.w), _422, fma(as_type(_193.w), _417, spvFMul(_416, as_type(_172.w)))))))), as_type(cbuf_20.data[191u + buf4_dword_off])); float _604 = spvFSub(fma(fma(as_type(_382.x), _501, fma(as_type(_319.x), _422, fma(as_type(_235.x), _417, spvFMul(_416, as_type(_214.x))))), in.vs_in_attr0.x, fma(fma(as_type(_382.y), _501, fma(as_type(_319.y), _422, fma(as_type(_235.y), _417, spvFMul(_416, as_type(_214.y))))), in.vs_in_attr0.y, fma(fma(as_type(_382.z), _501, fma(as_type(_319.z), _422, fma(as_type(_235.z), _417, spvFMul(_416, as_type(_214.z))))), in.vs_in_attr0.z, fma(as_type(_382.w), _501, fma(as_type(_319.w), _422, fma(as_type(_235.w), _417, spvFMul(_416, as_type(_214.w)))))))), as_type(cbuf_20.data[187u + buf4_dword_off])); float _618 = spvFSub(fma(fma(as_type(_403.x), _501, fma(as_type(_361.x), _422, fma(as_type(_298.x), _417, spvFMul(_416, as_type(_256.x))))), in.vs_in_attr0.x, fma(fma(as_type(_403.y), _501, fma(as_type(_361.y), _422, fma(as_type(_298.y), _417, spvFMul(_416, as_type(_256.y))))), in.vs_in_attr0.y, fma(fma(as_type(_403.z), _501, fma(as_type(_361.z), _422, fma(as_type(_298.z), _417, spvFMul(_416, as_type(_256.z))))), in.vs_in_attr0.z, fma(as_type(_403.w), _501, fma(as_type(_361.w), _422, fma(as_type(_298.w), _417, spvFMul(_416, as_type(_256.w)))))))), as_type(cbuf_20.data[183u + buf4_dword_off])); float _632 = fma(as_type(cbuf_20.data[208u + buf4_dword_off]), _618, fma(as_type(cbuf_20.data[209u + buf4_dword_off]), _604, fma(as_type(cbuf_20.data[210u + buf4_dword_off]), _601, as_type(cbuf_20.data[211u + buf4_dword_off])))); float _634 = fma(as_type(cbuf_20.data[212u + buf4_dword_off]), _618, fma(as_type(cbuf_20.data[213u + buf4_dword_off]), _604, fma(as_type(cbuf_20.data[214u + buf4_dword_off]), _601, as_type(cbuf_20.data[215u + buf4_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf4_dword_off]), _618, fma(as_type(cbuf_20.data[201u + buf4_dword_off]), _604, fma(as_type(cbuf_20.data[202u + buf4_dword_off]), _601, as_type(cbuf_20.data[203u + buf4_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf4_dword_off]), _618, fma(as_type(cbuf_20.data[205u + buf4_dword_off]), _604, fma(as_type(cbuf_20.data[206u + buf4_dword_off]), _601, as_type(cbuf_20.data[207u + buf4_dword_off])))); out.gl_Position.z = _632; out.gl_Position.w = _634; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _632; out.out_attr1.y = _634; out.out_attr1.z = fma(as_type(cbuf_8.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf5_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf5_dword_off])); out.out_attr2.x = 0.0; out.out_attr2.y = 0.0; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _109 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.z, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.w, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _121 = spvFMul(_109.w, in.fs_in_attr0.w); float _134 = spvFMul(in.fs_in_attr1.x, 1.0 / in.fs_in_attr1.y); float _139 = fract(spvFMul(255.0, _134)); bool _141 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _121)) || (_121 == 0.0); float _142 = fract(spvFMul(65025.0, _134)); float _144 = spvFMul(0.0039215688593685626983642578125, _139); uint _153; uint _154; if (!_141) { _153 = as_type(fma(_134, 1.0, -_144)); _154 = as_type(fma(_142, -0.0039215688593685626983642578125, _139)); } else { _153 = as_type(_144); _154 = as_type(_139); } if (_141) { discard_fragment(); } frag_color0.x = _142; frag_color0.y = as_type(_154); frag_color0.z = as_type(_153); frag_color0.w = _121; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x28136121 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x92a2cb3a [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[3228]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(20)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint _189 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _198 = (cbuf_12.data[_189] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _199 = (cbuf_12.data[_189] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _204 = (cbuf_12.data[_189] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _208 = (cbuf_12.data[_189] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _215 = ((0u + ((_198 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _228 = uint4(cbuf_16.data[_215 + 0u], cbuf_16.data[_215 + 1u], cbuf_16.data[_215 + 2u], cbuf_16.data[_215 + 3u]); uint _236 = ((0u + ((_199 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _249 = uint4(cbuf_16.data[_236 + 0u], cbuf_16.data[_236 + 1u], cbuf_16.data[_236 + 2u], cbuf_16.data[_236 + 3u]); uint _257 = ((0u + ((_198 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _270 = uint4(cbuf_16.data[_257 + 0u], cbuf_16.data[_257 + 1u], cbuf_16.data[_257 + 2u], cbuf_16.data[_257 + 3u]); uint _278 = ((0u + ((_199 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _291 = uint4(cbuf_16.data[_278 + 0u], cbuf_16.data[_278 + 1u], cbuf_16.data[_278 + 2u], cbuf_16.data[_278 + 3u]); uint _299 = ((0u + (_198 * 16u)) + buf8_off) >> 2u; uint4 _312 = uint4(cbuf_16.data[_299 + 0u], cbuf_16.data[_299 + 1u], cbuf_16.data[_299 + 2u], cbuf_16.data[_299 + 3u]); uint _320 = ((0u + ((_204 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _333 = uint4(cbuf_16.data[_320 + 0u], cbuf_16.data[_320 + 1u], cbuf_16.data[_320 + 2u], cbuf_16.data[_320 + 3u]); uint _341 = ((0u + (_199 * 16u)) + buf8_off) >> 2u; uint4 _354 = uint4(cbuf_16.data[_341 + 0u], cbuf_16.data[_341 + 1u], cbuf_16.data[_341 + 2u], cbuf_16.data[_341 + 3u]); uint _362 = ((0u + ((_204 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _375 = uint4(cbuf_16.data[_362 + 0u], cbuf_16.data[_362 + 1u], cbuf_16.data[_362 + 2u], cbuf_16.data[_362 + 3u]); uint _383 = ((0u + ((_208 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _396 = uint4(cbuf_16.data[_383 + 0u], cbuf_16.data[_383 + 1u], cbuf_16.data[_383 + 2u], cbuf_16.data[_383 + 3u]); uint _404 = ((0u + (_204 * 16u)) + buf8_off) >> 2u; uint4 _417 = uint4(cbuf_16.data[_404 + 0u], cbuf_16.data[_404 + 1u], cbuf_16.data[_404 + 2u], cbuf_16.data[_404 + 3u]); uint _425 = ((0u + ((_208 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _438 = uint4(cbuf_16.data[_425 + 0u], cbuf_16.data[_425 + 1u], cbuf_16.data[_425 + 2u], cbuf_16.data[_425 + 3u]); uint _446 = ((0u + (_208 * 16u)) + buf8_off) >> 2u; uint4 _459 = uint4(cbuf_16.data[_446 + 0u], cbuf_16.data[_446 + 1u], cbuf_16.data[_446 + 2u], cbuf_16.data[_446 + 3u]); float _471 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _472 = spvFMul(in.vs_in_attr4.y, _471); float _473 = spvFMul(in.vs_in_attr4.x, _471); float _478 = spvFMul(in.vs_in_attr4.z, _471); float _557 = spvFMul(in.vs_in_attr4.w, _471); float _599 = fma(as_type(_396.z), _557, fma(as_type(_333.z), _478, fma(as_type(_249.z), _473, spvFMul(_472, as_type(_228.z))))); float _621 = fma(as_type(_438.z), _557, fma(as_type(_375.z), _478, fma(as_type(_291.z), _473, spvFMul(_472, as_type(_270.z))))); float _625 = fma(as_type(_396.y), _557, fma(as_type(_333.y), _478, fma(as_type(_249.y), _473, spvFMul(_472, as_type(_228.y))))); float _634 = fma(as_type(_459.z), _557, fma(as_type(_417.z), _478, fma(as_type(_354.z), _473, spvFMul(_472, as_type(_312.z))))); float _638 = fma(as_type(_438.y), _557, fma(as_type(_375.y), _478, fma(as_type(_291.y), _473, spvFMul(_472, as_type(_270.y))))); float _640 = fma(as_type(_396.x), _557, fma(as_type(_333.x), _478, fma(as_type(_249.x), _473, spvFMul(_472, as_type(_228.x))))); float _646 = fma(as_type(_459.y), _557, fma(as_type(_417.y), _478, fma(as_type(_354.y), _473, spvFMul(_472, as_type(_312.y))))); float _648 = fma(as_type(_438.x), _557, fma(as_type(_375.x), _478, fma(as_type(_291.x), _473, spvFMul(_472, as_type(_270.x))))); float _651 = fma(_640, in.vs_in_attr0.x, fma(_625, in.vs_in_attr0.y, fma(_599, in.vs_in_attr0.z, fma(as_type(_396.w), _557, fma(as_type(_333.w), _478, fma(as_type(_249.w), _473, spvFMul(_472, as_type(_228.w)))))))); float _653 = fma(as_type(_459.x), _557, fma(as_type(_417.x), _478, fma(as_type(_354.x), _473, spvFMul(_472, as_type(_312.x))))); float _655 = fma(_648, in.vs_in_attr0.x, fma(_638, in.vs_in_attr0.y, fma(_621, in.vs_in_attr0.z, fma(as_type(_438.w), _557, fma(as_type(_375.w), _478, fma(as_type(_291.w), _473, spvFMul(_472, as_type(_270.w)))))))); float _657 = spvFSub(_651, as_type(cbuf_20.data[191u + buf9_dword_off])); float _658 = fma(_653, in.vs_in_attr0.x, fma(_646, in.vs_in_attr0.y, fma(_634, in.vs_in_attr0.z, fma(as_type(_459.w), _557, fma(as_type(_417.w), _478, fma(as_type(_354.w), _473, spvFMul(_472, as_type(_312.w)))))))); float _660 = spvFSub(_655, as_type(cbuf_20.data[187u + buf9_dword_off])); float _674 = spvFSub(_658, as_type(cbuf_20.data[183u + buf9_dword_off])); float _684 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _674, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _660, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _657, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _686 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _674, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _660, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _657, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _688 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _674, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _660, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _657, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _690 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _674, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _660, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _657, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _684; out.gl_Position.y = _686; out.gl_Position.z = _688; out.gl_Position.w = _690; out.out_attr4.x = _684; out.out_attr4.y = _686; out.out_attr4.z = _688; out.out_attr4.w = _690; float _797 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _800 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _803 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _805 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _827 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _828 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_653, _828, fma(_646, _805, spvFMul(_634, _800))); out.out_attr0.y = fma(_648, _828, fma(_638, _805, spvFMul(_621, _800))); out.out_attr0.z = fma(_640, _828, fma(_625, _805, spvFMul(_599, _800))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_653, _827, fma(_646, _803, spvFMul(_634, _797))); out.out_attr1.y = fma(_648, _827, fma(_638, _803, spvFMul(_621, _797))); out.out_attr1.z = fma(_640, _827, fma(_625, _803, spvFMul(_599, _797))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_20.data[84u + buf9_dword_off]), _658, fma(as_type(cbuf_20.data[85u + buf9_dword_off]), _655, fma(as_type(cbuf_20.data[86u + buf9_dword_off]), _651, as_type(cbuf_20.data[87u + buf9_dword_off])))); out.out_attr3.y = fma(as_type(cbuf_20.data[88u + buf9_dword_off]), _658, fma(as_type(cbuf_20.data[89u + buf9_dword_off]), _655, fma(as_type(cbuf_20.data[90u + buf9_dword_off]), _651, as_type(cbuf_20.data[91u + buf9_dword_off])))); out.out_attr3.z = fma(as_type(cbuf_20.data[92u + buf9_dword_off]), _658, fma(as_type(cbuf_20.data[93u + buf9_dword_off]), _655, fma(as_type(cbuf_20.data[94u + buf9_dword_off]), _651, as_type(cbuf_20.data[95u + buf9_dword_off])))); out.out_attr3.w = fma(as_type(cbuf_20.data[96u + buf9_dword_off]), _658, fma(as_type(cbuf_20.data[97u + buf9_dword_off]), _655, fma(as_type(cbuf_20.data[98u + buf9_dword_off]), _651, as_type(cbuf_20.data[99u + buf9_dword_off])))); out.out_attr5.x = spvFSub(as_type(cbuf_24.data[12u + buf11_dword_off]), _658); out.out_attr5.y = spvFSub(as_type(cbuf_24.data[13u + buf11_dword_off]), _655); out.out_attr5.z = spvFSub(as_type(cbuf_24.data[14u + buf11_dword_off]), _651); out.out_attr5.w = 1.0; out.out_attr6.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr6.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr6.z = 0.0; out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[72]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_52 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_56 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_48 [[buffer(15)]], texture2d fs_img84 [[texture(0)]], texture2d fs_img76 [[texture(1)]], texture2d fs_img68 [[texture(2)]], texture2d fs_img116 [[texture(3)]], depth2d fs_img108 [[texture(4)]], texturecube fs_img100 [[texture(5)]], texture2d fs_img124 [[texture(6)]], texturecube fs_img92 [[texture(7)]], texture2d fs_img60 [[texture(8)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp28 [[sampler(3)]], sampler fs_samp24 [[sampler(4)]], sampler fs_samp4 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf1_dword_off = buf1_off >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _161 = uint(gl_FrontFacing); float _172 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _173 = spvFMul(in.fs_in_attr0.x, _172); float _175 = spvFMul(in.fs_in_attr0.y, _172); float _176 = spvFMul(in.fs_in_attr0.z, _172); float _188 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _190 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _192 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _196 = rsqrt(fma(_188, _188, fma(_190, _190, spvFMul(_192, _192)))); float _213 = 1.0 / in.fs_in_attr4.w; float _214 = spvFMul(in.fs_in_attr4.x, _213); float _215 = spvFMul(in.fs_in_attr4.y, _213); float _217 = fma(0.5, _214, 0.5); float _219 = fma(-0.5, _215, 0.5); bool _220 = 0u == _161; uint _225; if (_220) { _225 = as_type(fast::max(-_173, -_173)); } else { _225 = _161; } uint _234; uint _235; if (_220) { _234 = as_type(fast::max(-_176, -_176)); _235 = as_type(fast::max(-_175, -_175)); } else { _234 = as_type(_173); _235 = as_type(_176); } uint _238; uint _239; uint _240; if (!_220) { _238 = _234; _239 = as_type(_175); _240 = _235; } else { _238 = _225; _239 = _235; _240 = _234; } float _332 = spvFMul(in.fs_in_attr4.z, _213); float4 _337 = fs_img84.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf0_dword_off]), in.fs_in_attr6.x, as_type(cbuf_32.data[14u + buf0_dword_off])), fma(as_type(cbuf_32.data[13u + buf0_dword_off]), in.fs_in_attr6.y, as_type(cbuf_32.data[15u + buf0_dword_off])))); float _367 = 1.0 / fma(as_type(cbuf_52.data[48u + buf1_dword_off]), _214, fma(as_type(cbuf_52.data[49u + buf1_dword_off]), _215, fma(as_type(cbuf_52.data[50u + buf1_dword_off]), _332, as_type(cbuf_52.data[51u + buf1_dword_off])))); float _368 = spvFMul(fma(as_type(cbuf_52.data[44u + buf1_dword_off]), _214, fma(as_type(cbuf_52.data[45u + buf1_dword_off]), _215, fma(as_type(cbuf_52.data[46u + buf1_dword_off]), _332, as_type(cbuf_52.data[47u + buf1_dword_off])))), _367); uint _386 = ((((as_type((as_type(cbuf_52.data[176u + buf1_dword_off]) < _368) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_368 > as_type(cbuf_52.data[177u + buf1_dword_off]))) + uint(abs(int(0u)))) + uint(_368 > as_type(cbuf_52.data[178u + buf1_dword_off]))) << 2u; uint _413 = ((0u + ((_386 + 28u) * 16u)) + buf1_off) >> 2u; uint4 _426 = uint4(cbuf_52.data[_413 + 0u], cbuf_52.data[_413 + 1u], cbuf_52.data[_413 + 2u], cbuf_52.data[_413 + 3u]); uint _434 = ((0u + ((_386 + 29u) * 16u)) + buf1_off) >> 2u; uint4 _447 = uint4(cbuf_52.data[_434 + 0u], cbuf_52.data[_434 + 1u], cbuf_52.data[_434 + 2u], cbuf_52.data[_434 + 3u]); uint _455 = ((0u + ((_386 + 31u) * 16u)) + buf1_off) >> 2u; uint4 _468 = uint4(cbuf_52.data[_455 + 0u], cbuf_52.data[_455 + 1u], cbuf_52.data[_455 + 2u], cbuf_52.data[_455 + 3u]); uint _476 = ((0u + ((_386 + 30u) * 16u)) + buf1_off) >> 2u; uint4 _489 = uint4(cbuf_52.data[_476 + 0u], cbuf_52.data[_476 + 1u], cbuf_52.data[_476 + 2u], cbuf_52.data[_476 + 3u]); float4 _504 = fs_img76.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf0_dword_off]), in.fs_in_attr6.x, as_type(cbuf_32.data[10u + buf0_dword_off])), fma(as_type(cbuf_32.data[9u + buf0_dword_off]), in.fs_in_attr6.y, as_type(cbuf_32.data[11u + buf0_dword_off])))); float _510 = fma(2.0, _337.y, -1.0); float _511 = spvFMul(fma(2.0, _337.x, -1.0), fma(2.0, _337.w, -1.0)); float _520 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _521 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_511, _511), spvFMul(_510, _510)), 0.0, 1.0))); float _535 = fma(spvFMul(spvFMul(_192, _196), in.fs_in_attr1.w), _511, fma(spvFMul(in.fs_in_attr1.z, _520), _510, spvFMul(as_type(_240), _521))); float _540 = fma(spvFMul(spvFMul(_190, _196), in.fs_in_attr1.w), _511, fma(spvFMul(in.fs_in_attr1.y, _520), _510, spvFMul(as_type(_239), _521))); float _545 = fma(spvFMul(spvFMul(_188, _196), in.fs_in_attr1.w), _511, fma(spvFMul(in.fs_in_attr1.x, _520), _510, spvFMul(as_type(_238), _521))); float _580 = rsqrt(fma(in.fs_in_attr5.x, in.fs_in_attr5.x, fma(in.fs_in_attr5.y, in.fs_in_attr5.y, spvFMul(in.fs_in_attr5.z, in.fs_in_attr5.z)))); float _581 = rsqrt(fma(_545, _545, fma(_540, _540, spvFMul(_535, _535)))); uint _586 = 73u + buf1_dword_off; uint _590 = 74u + buf1_dword_off; uint _594 = 75u + buf1_dword_off; float _597 = spvFMul(in.fs_in_attr5.z, _580); float _598 = spvFMul(_535, _581); float _599 = spvFMul(in.fs_in_attr5.y, _580); float _600 = spvFMul(_540, _581); float _602 = spvFMul(in.fs_in_attr5.x, _580); float _603 = spvFMul(_545, _581); float _616 = fma(_603, _602, fma(_600, _599, spvFMul(_597, _598))); float _628 = spvFMul(fast::max(_616, _616), 2.0); uint _632 = uint(in.fs_in_attr0.w) * 13u; float _636 = fma(as_type(_426.x), _214, fma(as_type(_426.y), _215, fma(as_type(_426.z), _332, as_type(_426.w)))); float _638 = fma(as_type(_447.x), _214, fma(as_type(_447.y), _215, fma(as_type(_447.z), _332, as_type(_447.w)))); float _640 = fma(as_type(_468.x), _214, fma(as_type(_468.y), _215, fma(as_type(_468.z), _332, as_type(_468.w)))); float _647 = spvFMul(_504.x, spvFMul(as_type(cbuf_36.data[8u + buf2_dword_off]), 0.00390625)); float _656 = 1.0 / _640; float _663 = spvFMul(13.0, _647); float _665 = fma(-in.fs_in_attr5.x, _580, spvFMul(_603, _628)); float _667 = fma(-in.fs_in_attr5.y, _580, spvFMul(_600, _628)); float _669 = fma(-in.fs_in_attr5.z, _580, spvFMul(_598, _628)); float _676 = spvFMul(fma(as_type(_489.x), _214, fma(as_type(_489.y), _215, fma(as_type(_489.z), _332, as_type(_489.w)))), _656); float4 _683 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf0_dword_off]), in.fs_in_attr6.x, as_type(cbuf_32.data[6u + buf0_dword_off])), fma(as_type(cbuf_32.data[5u + buf0_dword_off]), in.fs_in_attr6.y, as_type(cbuf_32.data[7u + buf0_dword_off])))); float _684 = _683.x; float _685 = _683.y; float _686 = _683.z; float _713 = 1.0 / abs(1.0); float _729 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_663, _663), 0.5))); float _731 = fma(_667, _713, 1.5); float _732 = fma(_665, _713, 1.5); uint _738 = ((0u + ((_632 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _751 = uint4(cbuf_40.data[_738 + 0u], cbuf_40.data[_738 + 1u], cbuf_40.data[_738 + 2u], cbuf_40.data[_738 + 3u]); uint _759 = ((0u + ((_632 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _772 = uint4(cbuf_40.data[_759 + 0u], cbuf_40.data[_759 + 1u], cbuf_40.data[_759 + 2u], cbuf_40.data[_759 + 3u]); uint _780 = ((0u + ((_632 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _793 = uint4(cbuf_40.data[_780 + 0u], cbuf_40.data[_780 + 1u], cbuf_40.data[_780 + 2u], cbuf_40.data[_780 + 3u]); uint _808 = ((0u + ((_632 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _821 = uint4(cbuf_40.data[_808 + 0u], cbuf_40.data[_808 + 1u], cbuf_40.data[_808 + 2u], cbuf_40.data[_808 + 3u]); uint _822 = _821.x; uint _823 = _821.y; uint _824 = _821.z; uint _825 = _821.w; float4 _832 = fs_img100.sample(fs_samp20, float3(spvFSub(_732, 1.5), spvFSub(_731, 1.5), _669), level(_729)); float4 _840 = fs_img124.sample(fs_samp24, float2(_217, _219), level(_729)); uint _848 = ((0u + ((_632 + 12u) * 16u)) + buf3_off) >> 2u; float4 _864 = fs_img92.sample(fs_samp20, float3(spvFSub(_732, 1.5), spvFSub(_731, 1.5), _669), level(_729)); float4 _878 = fs_img60.sample(fs_samp4, float2(fma(as_type(cbuf_32.data[0u + buf0_dword_off]), in.fs_in_attr6.x, as_type(cbuf_32.data[2u + buf0_dword_off])), fma(as_type(cbuf_32.data[1u + buf0_dword_off]), in.fs_in_attr6.y, as_type(cbuf_32.data[3u + buf0_dword_off])))); uint _883 = 12u + buf2_dword_off; float _903 = spvFMul(fma(as_type(cbuf_52.data[40u + buf1_dword_off]), _214, fma(as_type(cbuf_52.data[41u + buf1_dword_off]), _215, fma(as_type(cbuf_52.data[42u + buf1_dword_off]), _332, as_type(cbuf_52.data[43u + buf1_dword_off])))), _367); uint _905 = 0u + buf4_dword_off; uint _908 = 1u + buf4_dword_off; uint _911 = 2u + buf4_dword_off; uint _914 = 3u + buf4_dword_off; uint _917 = 4u + buf4_dword_off; uint _920 = 5u + buf4_dword_off; uint _923 = 6u + buf4_dword_off; uint _926 = 7u + buf4_dword_off; float _929 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _930 = spvFMul(fma(as_type(cbuf_52.data[36u + buf1_dword_off]), _214, fma(as_type(cbuf_52.data[37u + buf1_dword_off]), _215, fma(as_type(cbuf_52.data[38u + buf1_dword_off]), _332, as_type(cbuf_52.data[39u + buf1_dword_off])))), _367); float _955 = fast::clamp(spvFAdd(fma(_665, as_type(_238), fma(_667, as_type(_239), spvFMul(as_type(_240), _669))), 1.0), 0.0, 1.0); float _966 = fma(fma(as_type(cbuf_36.data[_883]), fs_img116.sample(fs_samp20, float2(_217, _219)).x, 1.0), _929, -spvFMul(as_type(cbuf_36.data[_883]), _929)); float _968 = spvFAdd(_616, _966); bool _979 = (_686 == 0.0) && (0.0 == _685); float _980 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_616, _616), 0.0, 1.0))))); float _1007 = fast::clamp(spvFAdd(fma(_968, _968, _966), -1.0), 0.0, 1.0); float _1040 = spvFMul(as_type(cbuf_40.data[_848]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_52.data[72u + buf1_dword_off]), as_type(cbuf_52.data[_586])), -spvFMul(as_type(cbuf_52.data[_586]), sqrt(fma(_930, _930, fma(_903, _903, spvFMul(_368, _368)))))), 0.0, 1.0)); float _1042 = spvFMul(as_type(cbuf_44.data[_923]), _598); float _1043 = _979 ? _684 : _686; float _1044 = _979 ? _684 : _685; float _1045 = spvFMul(_980, _1007); float _1068 = spvFSub(1.0, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_640, as_type(cbuf_52.data[_594]), _636), _656), spvFMul(fma(as_type(cbuf_52.data[_590]), _640, _638), _656)), _676, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_640, as_type(cbuf_52.data[_590]), _636), _656), spvFMul(fma(-_640, as_type(cbuf_52.data[_594]), _638), _656)), _676, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_640, as_type(cbuf_52.data[_590]), _636), _656), spvFMul(fma(_640, as_type(cbuf_52.data[_594]), _638), _656)), _676, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_640, as_type(cbuf_52.data[_594]), _636), _656), spvFMul(fma(-_640, as_type(cbuf_52.data[_590]), _638), _656)), _676, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1076 = spvFMul(as_type(cbuf_44.data[_911]), _598); float _1094 = spvFMul(_966, spvFMul(spvFMul(_955, _955), spvFSub(1.0, _840.w))); float _1097 = fma(-_1068, spvFMul(as_type(cbuf_52.data[76u + buf1_dword_off]), _1040), as_type(cbuf_40.data[_848])); float _1100 = fma(-_1068, spvFMul(as_type(cbuf_52.data[77u + buf1_dword_off]), _1040), as_type(cbuf_40.data[_848])); float _1103 = fma(-_1068, spvFMul(as_type(cbuf_52.data[78u + buf1_dword_off]), _1040), as_type(cbuf_40.data[_848])); float _1108 = fast::clamp(fma(as_type(cbuf_44.data[_917]), _603, fma(as_type(cbuf_44.data[_920]), _600, _1042)), 0.0, 1.0); float _1115 = spvFMul(_647, _647); float _1116 = fast::max(0.0, spvFAdd(as_type(_751.w), fma(_598, as_type(_751.z), fma(_603, as_type(_751.x), spvFMul(_600, as_type(_751.y)))))); float _1117 = fast::max(0.0, spvFAdd(as_type(_772.w), fma(_598, as_type(_772.z), fma(_603, as_type(_772.x), spvFMul(_600, as_type(_772.y)))))); float _1118 = fast::max(0.0, spvFAdd(as_type(_793.w), fma(_598, as_type(_793.z), fma(_603, as_type(_793.x), spvFMul(_600, as_type(_793.y)))))); float _1127 = fast::clamp(fma(as_type(cbuf_44.data[_905]), _603, fma(as_type(cbuf_44.data[_908]), _600, _1076)), 0.0, 1.0); uint _1173 = 64u + buf4_dword_off; uint _1177 = 65u + buf4_dword_off; float _1194 = spvFMul(as_type(cbuf_40.data[_848]), fma(as_type(_825), spvFAdd(-1.0, _1097), 1.0)); float _1196 = spvFMul(as_type(cbuf_40.data[_848]), fma(as_type(_825), spvFAdd(-1.0, _1100), 1.0)); float _1198 = spvFMul(as_type(cbuf_40.data[_848]), fma(as_type(_825), spvFAdd(-1.0, _1103), 1.0)); float _1199 = fma(spvFMul(as_type(cbuf_44.data[16u + buf4_dword_off]), _1097), fma(-_684, _1127, _1127), spvFMul(as_type(cbuf_44.data[20u + buf4_dword_off]), fma(-_684, _1108, _1108))); float _1201 = fma(spvFMul(as_type(cbuf_44.data[17u + buf4_dword_off]), _1100), fma(-_1044, _1127, _1127), spvFMul(as_type(cbuf_44.data[21u + buf4_dword_off]), fma(-_1044, _1108, _1108))); float _1203 = fma(spvFMul(as_type(cbuf_44.data[18u + buf4_dword_off]), _1103), fma(-_1043, _1127, _1127), spvFMul(as_type(cbuf_44.data[22u + buf4_dword_off]), fma(-_1043, _1108, _1108))); uint _1250; uint _1251; uint _1252; if (cbuf_44.data[_1173] > 0u) { float _1232 = fma(0.5, fma(as_type(cbuf_44.data[8u + buf4_dword_off]), _603, fma(as_type(cbuf_44.data[9u + buf4_dword_off]), _600, spvFMul(as_type(cbuf_44.data[10u + buf4_dword_off]), _598))), 0.5); float _1234 = fast::clamp(spvFMul(_1232, _1232), 0.0, 1.0); _1250 = as_type(fma(as_type(cbuf_44.data[26u + buf4_dword_off]), fma(-_1043, _1234, _1234), _1203)); _1251 = as_type(fma(as_type(cbuf_44.data[25u + buf4_dword_off]), fma(-_1044, _1234, _1234), _1201)); _1252 = as_type(fma(as_type(cbuf_44.data[24u + buf4_dword_off]), fma(-_684, _1234, _1234), _1199)); } else { _1250 = as_type(_1203); _1251 = as_type(_1201); _1252 = as_type(_1199); } uint _1299; uint _1300; uint _1301; if (cbuf_44.data[_1177] > 0u) { float _1278 = fma(0.5, fma(as_type(cbuf_44.data[12u + buf4_dword_off]), _603, fma(as_type(cbuf_44.data[13u + buf4_dword_off]), _600, spvFMul(as_type(cbuf_44.data[14u + buf4_dword_off]), _598))), 0.5); float _1280 = fast::clamp(spvFMul(_1278, _1278), 0.0, 1.0); _1299 = as_type(fma(as_type(cbuf_44.data[30u + buf4_dword_off]), fma(-_1043, _1280, _1280), as_type(_1250))); _1300 = as_type(fma(as_type(cbuf_44.data[29u + buf4_dword_off]), fma(-_1044, _1280, _1280), as_type(_1251))); _1301 = as_type(fma(as_type(cbuf_44.data[28u + buf4_dword_off]), fma(-_684, _1280, _1280), as_type(_1252))); } else { _1299 = _1250; _1300 = _1251; _1301 = _1252; } float _1303 = fma(in.fs_in_attr5.z, _580, as_type(cbuf_44.data[_923])); float _1305 = fma(in.fs_in_attr5.z, _580, as_type(cbuf_44.data[_911])); float _1307 = fma(in.fs_in_attr5.y, _580, as_type(cbuf_44.data[_920])); float _1310 = fma(in.fs_in_attr5.y, _580, as_type(cbuf_44.data[_908])); float _1313 = fma(in.fs_in_attr5.x, _580, as_type(cbuf_44.data[_917])); float _1316 = fma(in.fs_in_attr5.x, _580, as_type(cbuf_44.data[_905])); float _1320 = rsqrt(fma(_1313, _1313, fma(_1307, _1307, spvFMul(_1303, _1303)))); float _1321 = rsqrt(fma(_1316, _1316, fma(_1310, _1310, spvFMul(_1305, _1305)))); float _1322 = spvFMul(_1303, _1320); float _1323 = exp2(_663); float _1324 = spvFMul(_1305, _1321); float _1325 = spvFMul(_1307, _1320); float _1348 = spvFMul(_1310, _1321); float _1349 = spvFMul(_1313, _1320); float _1356 = spvFMul(_1316, _1321); float _1380 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_926]), _1323), 1.0 / fma(_1323, 0.01000213623046875, as_type(cbuf_44.data[_926])))); float _1386 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_914]), _1323), 1.0 / fma(_1323, 0.01000213623046875, as_type(cbuf_44.data[_914])))); float _1392 = fma(_1380, 0.125, 0.25); float _1404 = exp2(spvFMul(_1380, log2(fast::clamp(fma(_1349, _603, fma(_1325, _600, spvFMul(_598, _1322))), 0.0, 1.0)))); float _1406 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_602, _1349, fma(_599, _1325, spvFMul(_597, _1322))), 0.0, 1.0))))); float _1407 = fma(0.125, _1386, 0.25); float _1416 = exp2(spvFMul(_1386, log2(fast::clamp(fma(_1356, _603, fma(_1348, _600, spvFMul(_598, _1324))), 0.0, 1.0)))); float _1417 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_602, _1356, fma(_599, _1348, spvFMul(_597, _1324))), 0.0, 1.0))))); float _1423 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_917]), _603, fma(as_type(cbuf_44.data[_920]), _600, _1042)), 16.0), 0.0, 1.0); float _1440 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_905]), _603, fma(as_type(cbuf_44.data[_908]), _600, _1076)), 16.0), 0.0, 1.0); float _1459 = fma(spvFMul(_1440, spvFMul(_1416, spvFMul(spvFMul(as_type(cbuf_44.data[32u + buf4_dword_off]), _1097), _1407))), fma(-_684, _1417, spvFAdd(_684, _1417)), spvFMul(fma(-_684, _1406, spvFAdd(_684, _1406)), spvFMul(_1423, spvFMul(_1404, spvFMul(as_type(cbuf_44.data[36u + buf4_dword_off]), _1392))))); float _1461 = fma(spvFMul(_1440, spvFMul(_1416, spvFMul(spvFMul(as_type(cbuf_44.data[33u + buf4_dword_off]), _1100), _1407))), fma(-_1044, _1417, spvFAdd(_1044, _1417)), spvFMul(fma(-_1044, _1406, spvFAdd(_1044, _1406)), spvFMul(_1423, spvFMul(_1404, spvFMul(as_type(cbuf_44.data[37u + buf4_dword_off]), _1392))))); float _1463 = fma(spvFMul(_1440, spvFMul(_1416, spvFMul(spvFMul(as_type(cbuf_44.data[34u + buf4_dword_off]), _1103), _1407))), fma(-_1043, _1417, spvFAdd(_1043, _1417)), spvFMul(fma(-_1043, _1406, spvFAdd(_1043, _1406)), spvFMul(_1423, spvFMul(_1404, spvFMul(as_type(cbuf_44.data[38u + buf4_dword_off]), _1392))))); uint _1553; uint _1554; uint _1555; if (cbuf_44.data[_1173] > 0u) { uint _1481 = 11u + buf4_dword_off; float _1494 = fma(in.fs_in_attr5.x, _580, as_type(cbuf_44.data[8u + buf4_dword_off])); float _1496 = fma(in.fs_in_attr5.y, _580, as_type(cbuf_44.data[9u + buf4_dword_off])); float _1498 = fma(in.fs_in_attr5.z, _580, as_type(cbuf_44.data[10u + buf4_dword_off])); float _1502 = rsqrt(fma(_1494, _1494, fma(_1496, _1496, spvFMul(_1498, _1498)))); float _1503 = spvFMul(_1494, _1502); float _1504 = spvFMul(_1496, _1502); float _1505 = spvFMul(_1498, _1502); float _1516 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1481]), _1323), 1.0 / fma(_1323, 0.01000213623046875, as_type(cbuf_44.data[_1481])))); float _1519 = exp2(spvFMul(_1516, log2(fast::clamp(fma(_1503, _603, fma(_1504, _600, spvFMul(_598, _1505))), 0.0, 1.0)))); float _1527 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_602, _1503, fma(_599, _1504, spvFMul(_597, _1505))), 0.0, 1.0))))); float _1537 = fma(0.125, _1516, 0.25); _1553 = as_type(fma(spvFMul(_1519, spvFMul(as_type(cbuf_44.data[42u + buf4_dword_off]), _1537)), fma(-_1043, _1527, spvFAdd(_1043, _1527)), _1463)); _1554 = as_type(fma(spvFMul(_1519, spvFMul(as_type(cbuf_44.data[41u + buf4_dword_off]), _1537)), fma(-_1044, _1527, spvFAdd(_1044, _1527)), _1461)); _1555 = as_type(fma(spvFMul(_1519, spvFMul(as_type(cbuf_44.data[40u + buf4_dword_off]), _1537)), fma(-_684, _1527, spvFAdd(_684, _1527)), _1459)); } else { _1553 = as_type(_1463); _1554 = as_type(_1461); _1555 = as_type(_1459); } uint _1641; uint _1642; uint _1643; if (cbuf_44.data[_1177] > 0u) { uint _1566 = 15u + buf4_dword_off; float _1579 = fma(in.fs_in_attr5.x, _580, as_type(cbuf_44.data[12u + buf4_dword_off])); float _1581 = fma(in.fs_in_attr5.y, _580, as_type(cbuf_44.data[13u + buf4_dword_off])); float _1583 = fma(in.fs_in_attr5.z, _580, as_type(cbuf_44.data[14u + buf4_dword_off])); float _1587 = rsqrt(fma(_1579, _1579, fma(_1581, _1581, spvFMul(_1583, _1583)))); float _1588 = spvFMul(_1579, _1587); float _1589 = spvFMul(_1581, _1587); float _1590 = spvFMul(_1583, _1587); float _1601 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1566]), _1323), 1.0 / fma(_1323, 0.01000213623046875, as_type(cbuf_44.data[_1566])))); float _1604 = exp2(spvFMul(_1601, log2(fast::clamp(fma(_1588, _603, fma(_1589, _600, spvFMul(_598, _1590))), 0.0, 1.0)))); float _1612 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_602, _1588, fma(_599, _1589, spvFMul(_597, _1590))), 0.0, 1.0))))); float _1622 = fma(0.125, _1601, 0.25); _1641 = as_type(fma(spvFMul(_1604, spvFMul(as_type(cbuf_44.data[46u + buf4_dword_off]), _1622)), fma(-_1043, _1612, spvFAdd(_1043, _1612)), as_type(_1553))); _1642 = as_type(fma(spvFMul(_1604, spvFMul(as_type(cbuf_44.data[44u + buf4_dword_off]), _1622)), fma(-_684, _1612, spvFAdd(_684, _1612)), as_type(_1555))); _1643 = as_type(fma(spvFMul(_1604, spvFMul(as_type(cbuf_44.data[45u + buf4_dword_off]), _1622)), fma(-_1044, _1612, spvFAdd(_1044, _1612)), as_type(_1554))); } else { _1641 = _1553; _1642 = _1555; _1643 = _1554; } uint _1663 = ((0u + ((_632 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _1676 = uint4(cbuf_40.data[_1663 + 0u], cbuf_40.data[_1663 + 1u], cbuf_40.data[_1663 + 2u], cbuf_40.data[_1663 + 3u]); uint _1677 = _1676.x; uint _1678 = _1676.y; uint _1679 = _1676.z; uint _1681 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); uint _1684 = 8u + buf6_dword_off; uint _1690 = 10u + buf6_dword_off; float _1704 = fma(spvFMul(as_type(cbuf_36.data[1u + buf2_dword_off]), _878.y), fma(spvFMul(_966, fma(-_1044, _1117, _1117)), _1196, as_type(_1300)), spvFMul(fma(spvFMul(fma(fma(_980, _1007, -spvFMul(_1044, _1045)), _1115, _1044), fma(_966, _840.y, spvFMul(fma(as_type(_822), fma(-as_type(_823), _864.y, spvFMul(as_type(_824), _832.y)), spvFMul(as_type(_823), _864.y)), _1094))), _1196, as_type(_1643)), spvFMul(as_type(cbuf_36.data[5u + buf2_dword_off]), as_type(cbuf_56.data[_1681])))); float _1718 = fma(spvFMul(as_type(cbuf_36.data[0u + buf2_dword_off]), _878.x), fma(spvFMul(_966, fma(-_684, _1116, _1116)), _1194, as_type(_1301)), spvFMul(fma(spvFMul(fma(fma(_980, _1007, -spvFMul(_684, _1045)), _1115, _684), fma(_966, _840.x, spvFMul(fma(as_type(_822), fma(-as_type(_823), _864.x, spvFMul(as_type(_824), _832.x)), spvFMul(as_type(_823), _864.x)), _1094))), _1194, as_type(_1642)), spvFMul(as_type(cbuf_36.data[4u + buf2_dword_off]), as_type(cbuf_56.data[_1681])))); float _1719 = fma(spvFMul(as_type(cbuf_36.data[2u + buf2_dword_off]), _878.z), fma(spvFMul(_966, fma(-_1043, _1118, _1118)), _1198, as_type(_1299)), spvFMul(fma(spvFMul(fma(fma(_980, _1007, -spvFMul(_1043, _1045)), _1115, _1043), fma(_966, _840.z, spvFMul(fma(as_type(_822), fma(-as_type(_823), _864.z, spvFMul(as_type(_824), _832.z)), spvFMul(as_type(_823), _864.z)), _1094))), _1198, as_type(_1641)), spvFMul(as_type(cbuf_36.data[6u + buf2_dword_off]), as_type(cbuf_56.data[_1681])))); float _1721 = spvFMul(_1704, as_type(_1678)); uint _1728 = 14u + buf6_dword_off; float _1735 = spvFMul(_1718, as_type(_1677)); float _1742 = spvFMul(_1719, as_type(_1679)); float _1770 = spvFAdd(-1.0, fma(_1742, 0.11448000371456146240234375, fma(_1735, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1721)))); float _1774 = fma(as_type(cbuf_48.data[7u + buf6_dword_off]), _1770, 1.0); float _1793 = fast::clamp(spvFAdd(as_type(cbuf_48.data[_1684]), spvFMul(as_type(cbuf_48.data[_1684]), -exp2(-fma(as_type(cbuf_48.data[_1690]), sqrt(fma(-in.fs_in_attr5.x, -in.fs_in_attr5.x, spvFMul(-in.fs_in_attr5.z, -in.fs_in_attr5.z))), -spvFMul(as_type(cbuf_48.data[9u + buf6_dword_off]), as_type(cbuf_48.data[_1690])))))), 0.0, 1.0); float _1807 = fma(as_type(cbuf_48.data[19u + buf6_dword_off]), _1770, 1.0); float _1808 = fma(_1793, fma(-_1718, as_type(_1677), spvFMul(as_type(cbuf_48.data[4u + buf6_dword_off]), _1774)), _1735); float _1809 = fma(_1793, fma(-_1704, as_type(_1678), spvFMul(as_type(cbuf_48.data[5u + buf6_dword_off]), _1774)), _1721); float _1810 = fma(_1793, fma(-_1719, as_type(_1679), spvFMul(as_type(cbuf_48.data[6u + buf6_dword_off]), _1774)), _1742); float _1813 = fast::clamp(spvFMul(as_type(cbuf_48.data[12u + buf6_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_48.data[_1728]), spvFSub(as_type(cbuf_48.data[15u + buf6_dword_off]), in.fs_in_attr5.y)), -spvFMul(as_type(cbuf_48.data[13u + buf6_dword_off]), as_type(cbuf_48.data[_1728]))), 0.0, 1.0)), 0.0, 1.0); if (false) { discard_fragment(); } out.frag_color0.x = fma(_1813, fma(as_type(cbuf_48.data[16u + buf6_dword_off]), _1807, -_1808), _1808); out.frag_color0.y = fma(_1813, fma(as_type(cbuf_48.data[17u + buf6_dword_off]), _1807, -_1809), _1809); out.frag_color0.z = fma(_1813, fma(as_type(cbuf_48.data[18u + buf6_dword_off]), _1807, -_1810), _1810); out.frag_color0.w = spvFMul(spvFMul(_878.w, in.fs_in_attr2.w), as_type(_1676.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0xa954e79d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wunused-variable" #include #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[1]; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], device cs_cbuf_block_f32& ssbo_8 [[buffer(9)]], device cs_cbuf_block_f32& ssbo_0 [[buffer(10)]], texture_buffer texbuf_4 [[texture(0)]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint _86 = gl_LocalInvocationID.x + ((gl_LocalInvocationID.z << 5u) + (gl_LocalInvocationID.y << 5u)); uint2 _96 = uint2(0u); uint _105 = (((4u + (_96.x * 12u)) + _96.y) + buf0_off) >> 2u; uint _108 = ssbo_8.data[_105 + 0u]; uint _111 = ssbo_8.data[_105 + 1u]; uint2 _112 = uint2(_108, _111); uint _117 = (as_type(float4(as_type(texbuf_4.read(uint(((0u << extract_bits(push_data.buf_offsets0[0u], 22u, 2u)) + extract_bits(push_data.buf_offsets0[0u], 16u, 6u))))).x, 0.0, 0.0, 0.0).x) + 31u) >> 5u; uint2 _118 = uint2(0u); uint3 _119 = uint3(_117, _112); uint _126 = (((0u + (_118.x * 12u)) + _118.y) + buf0_off) >> 2u; ssbo_8.data[_126 + 0u] = _119.x; ssbo_8.data[_126 + 1u] = _119.y; ssbo_8.data[_126 + 2u] = _119.z; uint2 _136 = uint2(0u); uint3 _137 = uint3(_117, 1u, _112.y); uint _144 = (((0u + (_136.x * 12u)) + _136.y) + buf0_off) >> 2u; ssbo_8.data[_144 + 0u] = _137.x; ssbo_8.data[_144 + 1u] = _137.y; ssbo_8.data[_144 + 2u] = _137.z; uint2 _154 = uint2(0u); uint3 _155 = uint3(_117, 1u, 1u); uint _162 = (((0u + (_154.x * 12u)) + _154.y) + buf0_off) >> 2u; ssbo_8.data[_162 + 0u] = _155.x; ssbo_8.data[_162 + 1u] = _155.y; ssbo_8.data[_162 + 2u] = _155.z; bool _175; uint _180; bool _172 = true; uint _173 = _86; for (;;) { _175 = _172 && (_117 > _173); if (!_175) { break; } else { uint _178 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[8u], 1, memory_order_relaxed); _180 = _173 + 32u; if (true) { _172 = _175; _173 = _180; continue; } else { break; } } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x2da7fe60 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wunused-variable" #include #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct cs_cbuf_block_f32 { uint data[1]; }; struct cs_cbuf_block_f32_1 { uint data[276]; }; struct cs_cbuf_block_f32_2 { uint data[872]; }; constant uint _1205 = {}; constant uint _1206 = {}; constant uint _1207 = {}; constant uint _1208 = {}; constant uint _1209 = {}; constant uint _1210 = {}; constant uint _1211 = {}; constant uint _1212 = {}; constant uint _1213 = {}; constant uint _1214 = {}; constant uint _1215 = {}; constant uint _1216 = {}; constant uint _1217 = {}; constant uint _1218 = {}; constant uint _1219 = {}; constant uint _1220 = {}; constant uint _1221 = {}; constant uint _1222 = {}; constant uint _1223 = {}; constant uint _1224 = {}; constant uint _1225 = {}; constant uint _1226 = {}; constant uint _1227 = {}; constant uint _1228 = {}; constant uint _1229 = {}; constant uint _1230 = {}; kernel void main0(constant AuxData& push_data [[buffer(8)]], device cs_cbuf_block_f32& ssbo_0 [[buffer(9)]], const device cs_cbuf_block_f32& ssbo_44 [[buffer(10)]], constant cs_cbuf_block_f32_1& cbuf_52 [[buffer(11)]], constant cs_cbuf_block_f32_2& cbuf_56 [[buffer(12)]], device cs_cbuf_block_f32& ssbo_48 [[buffer(13)]], texture_buffer texbuf_32 [[texture(0)]], texture2d cs_img4 [[texture(1)]], texture2d cs_img36 [[texture(2)]], texture2d cs_img16 [[texture(3)]], texture2d cs_img24 [[texture(4)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf3_dword_off = buf3_off >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint _1272 = (gl_WorkGroupID.x << 5u) + gl_LocalInvocationID.x; uint _1276 = gl_LocalInvocationID.x + ((gl_LocalInvocationID.z << 5u) + (gl_LocalInvocationID.y << 5u)); bool _1286 = _1272 < as_type(float4(as_type(texbuf_32.read(uint(((0u << extract_bits(push_data.buf_offsets0[1u], 14u, 2u)) + extract_bits(push_data.buf_offsets0[1u], 8u, 6u))))).x, 0.0, 0.0, 0.0).x); if (!_1286) { } if (_1286) { if (!_1286) { } uint _1290 = atomic_fetch_sub_explicit((device atomic_uint*)&ssbo_0.data[8u], 1, memory_order_relaxed); uint _1292 = (_1290 - 0u) - 1u; uint _1297 = ((0u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1300 = ssbo_44.data[_1297 + 0u]; uint _1303 = ssbo_44.data[_1297 + 1u]; uint _1306 = ssbo_44.data[_1297 + 2u]; uint _1310 = ssbo_44.data[_1297 + 3u]; uint4 _1311 = uint4(_1300, _1303, _1306, _1310); uint _1312 = _1311.x; uint _1313 = _1311.y; uint _1314 = _1311.z; uint _1315 = _1311.w; uint _1319 = ((16u + (_1292 * 176u)) + buf1_off) >> 2u; uint3 _1329 = uint3(ssbo_44.data[_1319 + 0u], ssbo_44.data[_1319 + 1u], ssbo_44.data[_1319 + 2u]); uint _1337 = ((32u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1340 = ssbo_44.data[_1337 + 0u]; uint _1343 = ssbo_44.data[_1337 + 1u]; uint _1346 = ssbo_44.data[_1337 + 2u]; uint _1349 = ssbo_44.data[_1337 + 3u]; uint4 _1350 = uint4(_1340, _1343, _1346, _1349); uint _1351 = _1350.x; uint _1352 = _1350.y; uint _1353 = _1350.z; uint _1354 = _1350.w; uint _1359 = ((48u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1362 = ssbo_44.data[_1359 + 0u]; uint _1365 = ssbo_44.data[_1359 + 1u]; uint _1368 = ssbo_44.data[_1359 + 2u]; uint _1371 = ssbo_44.data[_1359 + 3u]; uint4 _1372 = uint4(_1362, _1365, _1368, _1371); uint _1373 = _1372.x; uint _1374 = _1372.y; uint _1375 = _1372.z; uint _1376 = _1372.w; uint _1381 = ((64u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1384 = ssbo_44.data[_1381 + 0u]; uint _1387 = ssbo_44.data[_1381 + 1u]; uint _1390 = ssbo_44.data[_1381 + 2u]; uint _1393 = ssbo_44.data[_1381 + 3u]; uint4 _1394 = uint4(_1384, _1387, _1390, _1393); uint _1395 = _1394.x; uint _1396 = _1394.y; uint _1402 = ((80u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1405 = ssbo_44.data[_1402 + 0u]; uint _1408 = ssbo_44.data[_1402 + 1u]; uint2 _1409 = uint2(_1405, _1408); uint _1410 = _1409.x; uint _1411 = _1409.y; uint _1416 = ((108u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1418 = ssbo_44.data[_1416]; uint _1423 = ((112u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1426 = ssbo_44.data[_1423 + 0u]; uint _1429 = ssbo_44.data[_1423 + 1u]; uint2 _1430 = uint2(_1426, _1429); uint _1431 = _1430.x; uint _1432 = _1430.y; uint _1437 = ((120u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1440 = ssbo_44.data[_1437 + 0u]; uint _1443 = ssbo_44.data[_1437 + 1u]; uint _1446 = ssbo_44.data[_1437 + 2u]; uint _1449 = ssbo_44.data[_1437 + 3u]; uint4 _1450 = uint4(_1440, _1443, _1446, _1449); uint _1451 = _1450.x; uint _1452 = _1450.y; uint _1453 = _1450.z; uint _1454 = _1450.w; uint _1459 = ((136u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1462 = ssbo_44.data[_1459 + 0u]; uint _1465 = ssbo_44.data[_1459 + 1u]; uint _1468 = ssbo_44.data[_1459 + 2u]; uint _1471 = ssbo_44.data[_1459 + 3u]; uint4 _1472 = uint4(_1462, _1465, _1468, _1471); uint _1473 = _1472.x; uint _1474 = _1472.y; uint _1475 = _1472.z; uint _1476 = _1472.w; uint _1481 = ((152u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1484 = ssbo_44.data[_1481 + 0u]; uint _1487 = ssbo_44.data[_1481 + 1u]; uint2 _1488 = uint2(_1484, _1487); uint _1489 = _1488.x; uint _1490 = _1488.y; uint _1495 = ((160u + (_1292 * 176u)) + buf1_off) >> 2u; uint _1498 = ssbo_44.data[_1495 + 0u]; uint _1501 = ssbo_44.data[_1495 + 1u]; uint _1504 = ssbo_44.data[_1495 + 2u]; uint _1507 = ssbo_44.data[_1495 + 3u]; uint4 _1508 = uint4(_1498, _1501, _1504, _1507); uint _1509 = _1508.x; uint _1510 = _1508.y; uint _1511 = _1508.z; float _1515 = float(as_type(ushort(_1353))); uint _1516 = as_type(_1515); float _1527 = float(as_type(ushort(_1354 >> 16u))); float _1541 = float(as_type(ushort(_1396 >> 16u))); uint _1542 = as_type(_1541); uint _1543 = _1431 >> 16u; float _1550 = float(as_type(ushort(_1489 >> 16u))); uint _1551 = as_type(_1550); uint _1555 = extract_bits(_1509, 0u, 16u); uint _1556 = _1510 >> 16u; float _1560 = float(as_type(ushort(_1351 >> 16u))); float _1563 = float(as_type(ushort(_1352))); uint _1564 = 0u + buf2_dword_off; uint _1567 = 1u + buf2_dword_off; float _1571 = spvFAdd(as_type(cbuf_52.data[_1564]), _1563); uint _1572 = as_type(_1571); float _1577 = fast::clamp(spvFMul(_1571, 1.0 / _1560), 0.0, 1.0); uint _1578 = 24u + buf2_dword_off; uint _1582 = 26u + buf2_dword_off; uint _1590 = cbuf_52.data[_1582] + 4294967295u; float _1606 = spvFMul(0.449999988079071044921875, _1560); float _1609 = fast::max(0.0, _1606); float _1610 = spvFSub(_1609, fast::max(0.0, fast::min(fma(_1560, -0.550000011920928955078125, _1571), _1606))); float _1615 = 1.0 / spvFMul(_1609, _1609); float _1617 = spvFSub(1.0, _1577); float _1636 = 1.0 / _1609; bool _1642 = cbuf_52.data[196u + buf2_dword_off] == 0u; uint _1801; uint _1802; uint _1803; uint _1804; uint _1805; uint _1806; uint _1807; uint _1808; uint _1809; uint _1810; uint _1811; uint _1812; uint _1813; uint _1814; uint _1815; uint _1816; uint _1817; uint _1818; uint _1819; uint _1820; uint _1821; uint _1822; if (_1642) { uint _1650 = uint(int(spvFMul(_1577, float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint4 _1698 = as_type(cs_img4.read(uint2(uint2(0u, _1650)), 0u)); uint4 _1704 = as_type(cs_img4.read(uint2(uint2(1u, _1650)), 0u)); uint _1708 = _1704.w; uint4 _1712 = as_type(cs_img4.read(uint2(uint2(2u, _1650)), 0u)); uint4 _1719 = as_type(cs_img4.read(uint2(uint2(3u, _1650)), 0u)); uint4 _1727 = as_type(cs_img4.read(uint2(uint2(4u, _1650)), 0u)); float _1755 = fma(_1617, float(as_type(ushort(_1453))), as_type(_1712.x)); float _1758 = fma(_1617, float(as_type(ushort(_1453 >> 16u))), as_type(_1712.y)); _1801 = as_type(_1755); _1802 = _1708; _1803 = _1698.z; _1804 = as_type(fast::max(0.0, fma(_1617, float(as_type(ushort(_1476 >> 16u))), as_type(_1727.w)))); _1805 = as_type(fast::max(0.0, fma(_1617, float(as_type(ushort(_1476))), as_type(_1727.z)))); _1806 = as_type(fast::max(0.0, fma(_1617, float(as_type(ushort(_1475 >> 16u))), as_type(_1727.y)))); _1807 = as_type(fast::max(0.0, fma(_1617, float(as_type(ushort(_1475))), as_type(_1727.x)))); _1808 = _1698.y; _1809 = as_type(fma(_1617, float(as_type(ushort(_1454))), as_type(_1712.z))); _1810 = as_type(_1758); _1811 = as_type(_1755); _1812 = as_type(fma(_1617, float(as_type(ushort(_1474))), as_type(_1719.z))); _1813 = as_type(fma(_1617, float(as_type(ushort(_1473 >> 16u))), as_type(_1719.y))); _1814 = as_type(fma(_1617, float(as_type(ushort(_1473))), as_type(_1719.x))); _1815 = _1708; _1816 = as_type(fma(_1617, float(as_type(ushort(_1452))), as_type(_1704.z))); _1817 = as_type(fma(_1617, float(as_type(ushort(_1451 >> 16u))), as_type(_1704.y))); _1818 = as_type(fma(_1617, float(as_type(ushort(_1451))), as_type(_1704.x))); _1819 = as_type(exp2(spvFMul(1.44269502162933349609375, spvFMul(as_type(cbuf_52.data[_1564]), -as_type(as_type(cs_img4.read(uint2(uint2(7u, _1650)), 0u)).x))))); _1820 = as_type(cs_img4.read(uint2(uint2(8u, _1650)), 0u)).x; _1821 = as_type(_1758); _1822 = as_type(cs_img4.read(uint2(uint2(6u, _1650)), 0u)).x; } else { _1801 = _1206; _1802 = _1207; _1803 = _1208; _1804 = _1209; _1805 = _1210; _1806 = _1211; _1807 = _1212; _1808 = _1213; _1809 = _1214; _1810 = _1215; _1811 = _1216; _1812 = _1217; _1813 = _1218; _1814 = _1219; _1815 = _1220; _1816 = _1221; _1817 = _1222; _1818 = _1223; _1819 = as_type(_1615); _1820 = as_type(_1636); _1821 = _1230; _1822 = as_type(_1617); } uint _2145; uint _2146; uint _2147; uint _2148; uint _2149; uint _2150; uint _2151; uint _2152; uint _2153; uint _2154; uint _2155; uint _2156; uint _2157; uint _2158; uint _2159; uint _2160; uint _2161; uint _2162; uint _2163; uint _2164; uint _2165; uint _2166; if (!_1642) { uint _1828 = uint(int(spvFMul(_1577, float(int(cbuf_52.data[197u + buf2_dword_off]))))); uint _1831 = uint(int(spvFMul(_1577, float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint4 _1836 = as_type(cs_img36.read(uint2(uint2(10u, _1828)), 0u)); uint _1837 = _1836.x; uint4 _1841 = as_type(cs_img4.read(uint2(uint2(0u, _1831)), 0u)); uint _1842 = _1841.y; uint _1843 = _1841.z; uint4 _1850 = as_type(cs_img36.read(uint2(uint2(0u, _1828)), 0u)); uint4 _1856 = as_type(cs_img4.read(uint2(uint2(1u, _1831)), 0u)); uint _1857 = _1856.x; uint _1858 = _1856.y; uint _1859 = _1856.z; uint _1860 = _1856.w; uint4 _1883 = as_type(cs_img36.read(uint2(uint2(1u, _1828)), 0u)); uint4 _1921 = as_type(cs_img4.read(uint2(uint2(2u, _1831)), 0u)); uint _1922 = _1921.x; uint _1923 = _1921.y; uint _1924 = _1921.z; uint4 _1928 = as_type(cs_img36.read(uint2(uint2(2u, _1828)), 0u)); uint4 _1969 = as_type(cs_img4.read(uint2(uint2(3u, _1831)), 0u)); uint _1970 = _1969.x; uint _1971 = _1969.y; uint _1972 = _1969.z; uint4 _1976 = as_type(cs_img36.read(uint2(uint2(3u, _1828)), 0u)); uint4 _2017 = as_type(cs_img4.read(uint2(uint2(4u, _1831)), 0u)); uint _2018 = _2017.x; uint _2019 = _2017.y; uint _2020 = _2017.z; uint _2021 = _2017.w; uint4 _2025 = as_type(cs_img36.read(uint2(uint2(4u, _1828)), 0u)); float _2060 = float(as_type(ushort(_1475 >> 16u))); float _2064 = float(as_type(ushort(_1476))); uint4 _2085 = as_type(cs_img4.read(uint2(uint2(6u, _1831)), 0u)); uint _2086 = _2085.x; uint4 _2106 = as_type(cs_img4.read(uint2(uint2(8u, _1831)), 0u)); uint _2107 = _2106.x; float _2113 = exp2(spvFMul(1.44269502162933349609375, spvFMul(as_type(cbuf_52.data[_1564]), -as_type(as_type(cs_img4.read(uint2(uint2(7u, _1831)), 0u)).x)))); _2145 = as_type(_2060); _2146 = as_type(_2113); _2147 = as_type(fma(as_type(_1837), spvFSub(as_type(_1850.z), as_type(_1843)), as_type(_1843))); _2148 = as_type(fast::max(0.0, fma(as_type(_1822), float(as_type(ushort(_1476 >> 16u))), fma(as_type(_1837), spvFSub(as_type(_2025.w), as_type(_2021)), as_type(_2021))))); _2149 = as_type(fast::max(0.0, fma(as_type(_1822), _2064, fma(as_type(_1837), spvFSub(as_type(_2025.z), as_type(_2020)), as_type(_2020))))); _2150 = as_type(fast::max(0.0, fma(as_type(_1822), _2060, fma(as_type(_1837), spvFSub(as_type(_2025.y), as_type(_2019)), as_type(_2019))))); _2151 = as_type(fast::max(0.0, fma(as_type(_1822), float(as_type(ushort(_1475))), fma(as_type(_1837), spvFSub(as_type(_2025.x), as_type(_2018)), as_type(_2018))))); _2152 = as_type(fma(as_type(_1837), spvFSub(as_type(_1850.y), as_type(_1842)), as_type(_1842))); _2153 = as_type(fma(as_type(_1822), float(as_type(ushort(_1454))), fma(as_type(_1837), spvFSub(as_type(_1928.z), as_type(_1924)), as_type(_1924)))); _2154 = as_type(fma(as_type(_1822), float(as_type(ushort(_1453 >> 16u))), fma(as_type(_1837), spvFSub(as_type(_1928.y), as_type(_1923)), as_type(_1923)))); _2155 = as_type(fma(as_type(_1822), float(as_type(ushort(_1453))), fma(as_type(_1837), spvFSub(as_type(_1928.x), as_type(_1922)), as_type(_1922)))); _2156 = as_type(fma(as_type(_1822), float(as_type(ushort(_1474))), fma(as_type(_1837), spvFSub(as_type(_1976.z), as_type(_1972)), as_type(_1972)))); _2157 = as_type(fma(as_type(_1822), float(as_type(ushort(_1473 >> 16u))), fma(as_type(_1837), spvFSub(as_type(_1976.y), as_type(_1971)), as_type(_1971)))); _2158 = as_type(fma(as_type(_1822), float(as_type(ushort(_1473))), fma(as_type(_1837), spvFSub(as_type(_1976.x), as_type(_1970)), as_type(_1970)))); _2159 = as_type(fma(as_type(_1837), spvFSub(as_type(_1883.w), as_type(_1860)), as_type(_1860))); _2160 = as_type(fma(as_type(_1822), float(as_type(ushort(_1452))), fma(as_type(_1837), spvFSub(as_type(_1883.z), as_type(_1859)), as_type(_1859)))); _2161 = as_type(fma(as_type(_1822), float(as_type(ushort(_1451 >> 16u))), fma(as_type(_1837), spvFSub(as_type(_1883.y), as_type(_1858)), as_type(_1858)))); _2162 = as_type(fma(as_type(_1822), float(as_type(ushort(_1451))), fma(as_type(_1837), spvFSub(as_type(_1883.x), as_type(_1857)), as_type(_1857)))); _2163 = as_type(_2113); _2164 = as_type(fma(as_type(_1837), spvFSub(as_type(as_type(cs_img36.read(uint2(uint2(8u, _1828)), 0u)).x), as_type(_2107)), as_type(_2107))); _2165 = as_type(fma(as_type(_1837), spvFSub(as_type(as_type(cs_img36.read(uint2(uint2(6u, _1828)), 0u)).x), as_type(_2086)), as_type(_2086))); _2166 = as_type(_2064); } else { _2145 = _1801; _2146 = _1802; _2147 = _1803; _2148 = _1804; _2149 = _1805; _2150 = _1806; _2151 = _1807; _2152 = _1808; _2153 = _1809; _2154 = _1810; _2155 = _1811; _2156 = _1812; _2157 = _1813; _2158 = _1814; _2159 = _1815; _2160 = _1816; _2161 = _1817; _2162 = _1818; _2163 = _1819; _2164 = _1820; _2165 = _1822; _2166 = _1821; } float _2167 = float(int(cbuf_52.data[27u + buf2_dword_off])); bool _2171 = _1286 && (0.949999988079071044921875 <= _2167); uint _2396; uint _2397; uint _2398; uint _2399; uint _2400; uint _2401; uint _2402; if (_2171) { uint4 _2182 = as_type(cs_img4.read(uint2(uint2(9u, uint(int(spvFMul(_1577, float(int(cbuf_52.data[31u + buf2_dword_off]))))))), 0u)); uint _2183 = _2182.x; bool _2189 = _2171 && (float(int(_1510 >> 16u)) > as_type(_2183)); uint _2190; if (_2189) { _2190 = 0u; } else { _2190 = _1555; } uint _2195; uint _2196; if (_2189) { _2195 = _2190; _2196 = (cbuf_52.data[_1582] + extract_bits(_1509, 0u, 16u)) - (_1510 >> 16u); } else { _2195 = _1556; _2196 = _2190; } uint _2198 = uint(max(int(cbuf_52.data[_1582]), int(0u - cbuf_52.data[_1582]))); uint _2203 = uint(spvFMul(4294967296.0, 1.0 / float(_2198))); uint _2205 = _2198 * _2203; bool _2212 = 0u != (spvMulExtended(_2198, _2203))._m1; uint _2218 = uint(int(spvFSub(spvFAdd(as_type(_2183), float(int(_2196))), float(int(_2195))))); uint _2220 = (spvMulExtended(as_type(_2212 ? as_type(_2205) : as_type(0u - _2205)), _2203))._m1; uint _2224 = uint(max(int(_2218), int(0u - _2218))); uint _2228 = as_type(_2212 ? as_type(_2203 - _2220) : as_type(_2203 + _2220)); uint _2231 = (spvMulExtended(_2228, _2224))._m1 * _2198; uint _2232 = _2224 - _2231; bool _2233 = _2224 >= _2231; float _2239 = (_2233 && (_2232 >= _2198)) ? as_type(_2232 - _2198) : as_type(_2232); bool _2244 = 0u != _2198; float _2246 = _2244 ? (_2233 ? _2239 : as_type(_2198 + as_type(_2239))) : as_type(0xffffffffu /* nan */); uint _2252 = as_type((int(0u) > int(_2218)) ? as_type(0u - as_type(_2246)) : _2246); uint _2253 = _2252 + 1u; uint _2255 = uint(max(int(_2253), int(0u - _2253))); uint _2258 = (spvMulExtended(_2228, _2255))._m1 * _2198; uint _2259 = _2255 - _2258; bool _2260 = _2255 >= _2258; uint _2263 = uint(max(int(cbuf_52.data[_1578]), int(0u - cbuf_52.data[_1578]))); float _2270 = (_2260 && (_2259 >= _2198)) ? as_type(_2259 - _2198) : as_type(_2259); uint _2274 = uint(spvFMul(4294967296.0, 1.0 / float(_2263))); uint _2277 = _2263 * _2274; float _2280 = _2244 ? (_2260 ? _2270 : as_type(_2198 + as_type(_2270))) : as_type(0xffffffffu /* nan */); bool _2283 = 0u != (spvMulExtended(_2263, _2274))._m1; uint _2292 = as_type((int(0u) > int(_2253)) ? as_type(0u - as_type(_2280)) : _2280); uint _2294 = (spvMulExtended(as_type(_2283 ? as_type(_2277) : as_type(0u - _2277)), _2274))._m1; uint _2299 = uint(max(int(_2252), int(0u - _2252))); uint _2303 = as_type(_2283 ? as_type(_2274 - _2294) : as_type(_2274 + _2294)); uint _2304 = uint(max(int(_2292), int(0u - _2292))); uint _2308 = (spvMulExtended(_2303, _2304))._m1; uint _2309 = (spvMulExtended(_2303, _2299))._m1 * _2263; uint _2310 = _2308 * _2263; uint _2311 = _2299 - _2309; uint _2312 = _2304 - _2310; bool _2313 = _2299 >= _2309; bool _2315 = _2304 >= _2310; bool _2320 = _2315 && (_2312 >= _2263); float _2324 = (_2313 && (_2311 >= _2263)) ? as_type(_2311 - _2263) : as_type(_2311); float _2328 = _2320 ? as_type(_2312 - _2263) : as_type(_2312); bool _2335 = 0u != _2263; uint _2340 = 188u + buf2_dword_off; uint _2344 = 189u + buf2_dword_off; float _2351 = _2335 ? (_2315 ? (_2320 ? as_type(_2308 + 1u) : as_type(_2308)) : as_type(_2308 + 4294967295u)) : as_type(0xffffffffu /* nan */); float _2354 = _2335 ? (_2313 ? _2324 : as_type(_2263 + as_type(_2324))) : as_type(0xffffffffu /* nan */); float _2357 = _2335 ? (_2315 ? _2328 : as_type(_2263 + as_type(_2328))) : as_type(0xffffffffu /* nan */); _2396 = as_type(spvFMul(as_type(cbuf_52.data[_2344]), trunc(float(int(as_type((int(cbuf_52.data[_1578] ^ _2292) < int(0u)) ? as_type(0u - as_type(_2351)) : _2351)))))); _2397 = as_type(spvFMul(as_type(cbuf_52.data[_2340]), float(int(as_type((int(0u) > int(_2292)) ? as_type(0u - as_type(_2357)) : _2357))))); _2398 = as_type(spvFMul(as_type(cbuf_52.data[_2344]), trunc(spvFMul(float(int(_2252)), 1.0 / float(int(cbuf_52.data[_1578])))))); _2399 = as_type(spvFMul(as_type(cbuf_52.data[_2340]), float(int(as_type((int(_2252) < int(0u)) ? as_type(0u - as_type(_2354)) : _2354))))); _2400 = uint(int(as_type(_2183))); _2401 = _2218; _2402 = _2182.y; } else { _2396 = _2166; _2397 = _2145; _2398 = _2146; _2399 = as_type(_2167); _2400 = _1556; _2401 = _1555; _2402 = as_type(spvFMul(_1577, float(int(uint(max(int(_1590), int(1u))))))); } uint _2531; uint _2532; uint _2533; uint _2534; uint _2535; if (_1286 && (!_2171)) { uint _2406 = uint(max(int(cbuf_52.data[_1578]), int(0u - cbuf_52.data[_1578]))); uint _2412 = uint(spvFMul(4294967296.0, 1.0 / float(_2406))); uint _2413 = uint(int(trunc(as_type(_2402)))); uint _2414 = _2406 * _2412; bool _2419 = 0u != (spvMulExtended(_2406, _2412))._m1; uint _2420 = uint(min(int(_1590), int(_2413 + 1u))); uint _2425 = uint(max(int(1u), int(_2420))); uint _2427 = (spvMulExtended(as_type(_2419 ? as_type(_2414) : as_type(0u - _2414)), _2412))._m1; uint _2432 = uint(max(int(_2413), int(0u - _2413))); uint _2436 = as_type(_2419 ? as_type(_2412 - _2427) : as_type(_2412 + _2427)); uint _2438 = uint(max(int(_2420), int(uint(max(int(1u), int(0u - _2425)))))); uint _2442 = (spvMulExtended(_2436, _2438))._m1; uint _2443 = (spvMulExtended(_2436, _2432))._m1 * _2406; uint _2444 = _2442 * _2406; uint _2445 = _2432 - _2443; uint _2446 = _2438 - _2444; bool _2447 = _2432 >= _2443; bool _2449 = _2438 >= _2444; bool _2454 = _2449 && (_2446 >= _2406); float _2458 = (_2447 && (_2445 >= _2406)) ? as_type(_2445 - _2406) : as_type(_2445); float _2462 = _2454 ? as_type(_2446 - _2406) : as_type(_2446); bool _2469 = 0u != _2406; uint _2473 = 188u + buf2_dword_off; uint _2476 = 189u + buf2_dword_off; float _2483 = _2469 ? (_2449 ? (_2454 ? as_type(_2442 + 1u) : as_type(_2442)) : as_type(_2442 + 4294967295u)) : as_type(0xffffffffu /* nan */); float _2486 = _2469 ? (_2447 ? _2458 : as_type(_2406 + as_type(_2458))) : as_type(0xffffffffu /* nan */); float _2489 = _2469 ? (_2449 ? _2462 : as_type(_2406 + as_type(_2462))) : as_type(0xffffffffu /* nan */); float _2493 = float(int(_2413)); _2531 = as_type(spvFMul(as_type(cbuf_52.data[_2476]), trunc(float(int(as_type((int(cbuf_52.data[_1578] ^ _2425) < int(0u)) ? as_type(0u - as_type(_2483)) : _2483)))))); _2532 = as_type(spvFMul(as_type(cbuf_52.data[_2473]), float(int(as_type((int(0u) > int(_2425)) ? as_type(0u - as_type(_2489)) : _2489))))); _2533 = as_type(spvFMul(as_type(cbuf_52.data[_2476]), trunc(spvFMul(_2493, 1.0 / float(int(cbuf_52.data[_1578])))))); _2534 = as_type(spvFMul(as_type(cbuf_52.data[_2473]), float(int(as_type((int(_2413) < int(0u)) ? as_type(0u - as_type(_2486)) : _2486))))); _2535 = as_type(fast::clamp(spvFAdd(as_type(_2402), -_2493), 0.0, 1.0)); } else { _2531 = _2396; _2532 = _2397; _2533 = _2398; _2534 = _2399; _2535 = _2402; } uint _2536 = uint(spvFMul(10.0, as_type(_1312))); uint _2537 = uint(spvFMul(10.0, as_type(_1313))); uint _2538 = uint(spvFMul(10.0, as_type(_1314))); uint _2560 = uint(fma(as_type(cbuf_52.data[_1567]), 10.0, float(_2536))); uint _2563 = uint(fma(as_type(cbuf_52.data[_1567]), 10.0, float(_2537))); uint _2566 = uint(fma(as_type(cbuf_52.data[_1567]), 10.0, float(_2538))); uint _2570 = 264u + buf2_dword_off; uint _2580 = uint(fma(as_type(cbuf_52.data[_1567]), 10.0, float((_1272 + _2536) + 7001u))); uint _2583 = uint(fma(as_type(cbuf_52.data[_1567]), 10.0, float((_1272 + _2537) + 8001u))); uint _2586 = uint(fma(as_type(cbuf_52.data[_1567]), 10.0, float((_1272 + _2538) + 7777u))); uint _2602 = (spvMulExtended(_2586, 274877907u))._m1 >> 6u; float _2638 = spvFAdd(as_type(cbuf_52.data[265u + buf2_dword_off]), as_type(cbuf_52.data[_2570])); uint _2644 = 0u + buf3_dword_off; float _2647 = float(_1272 + 1547u); float _2648 = sqrt(fma(as_type(_1312), as_type(_1312), spvFMul(as_type(_1314), as_type(_1314)))); float _2649 = float(_1272 + 1107u); float _2650 = float(_1272 + 253u); float _2652 = spvFAdd(0.0500000007450580596923828125, fma(spvFMul(0.001000000047497451305389404296875, float(_2560 - (((spvMulExtended(_2560, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, spvFSub(as_type(_1312), as_type(_1329.x)))); float _2655 = fma(_2638, spvFMul(0.001000000047497451305389404296875, float(_2580 - (((spvMulExtended(_2580, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_52.data[_2570])); float _2656 = spvFAdd(0.0500000007450580596923828125, fma(spvFMul(0.001000000047497451305389404296875, float(_2563 - (((spvMulExtended(_2563, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, spvFSub(as_type(_1313), as_type(_1329.y)))); float _2659 = fma(_2638, spvFMul(0.001000000047497451305389404296875, float(_2583 - (((spvMulExtended(_2583, 274877907u))._m1 >> 6u) * 1000u))), -as_type(cbuf_52.data[_2570])); float _2660 = spvFAdd(0.0500000007450580596923828125, fma(spvFMul(0.001000000047497451305389404296875, float(_2566 - (((spvMulExtended(_2566, 274877907u))._m1 >> 6u) * 1000u))), -0.039999999105930328369140625, spvFSub(as_type(_1314), as_type(_1329.z)))); float _2663 = fma(_2638, spvFMul(0.001000000047497451305389404296875, float(_2586 - (_2602 * 1000u))), -as_type(cbuf_52.data[_2570])); uint _2664 = as_type(float(as_type(ushort(_1489)))); uint _2665 = as_type(float(as_type(ushort(_1490)))); uint _2666 = as_type(_1550); uint _6666; bool _2708; uint _3084; uint _3085; uint _3086; uint _3087; uint _3088; uint _3089; uint _3090; uint _3091; uint _3092; uint _3093; uint _3094; uint _3095; uint _3096; uint _6644; uint _6645; uint _6646; uint _6647; uint _6648; uint _6649; uint _6650; uint _6651; uint _6652; uint _6653; uint _6654; uint _6655; uint _6656; uint _6657; uint _6658; uint _6659; uint _6660; uint _6661; uint _6662; uint _6663; uint _6664; uint _6665; uint _6667; uint _6668; uint _6669; uint _6670; uint _6671; uint _6672; uint _6673; uint _6674; uint _6675; uint _6676; uint _6677; uint _6678; uint _2667; uint _2668 = 0u; uint _2669 = 0u; uint _2670 = 0u; uint _2671 = 0u; uint _2672 = 0u; uint _2673 = 0u; uint _2674 = _2665; uint _2675 = _2666; uint _2676 = _2664; uint _2677; uint _2678; uint _2679 = _2602; uint _2680; uint _2681; uint _2682; uint _2683 = _2602; uint _2684; uint _2685; uint _2686 = _2602; uint _2687; uint _2688; uint _2689 = _2602; uint _2690 = _2602; uint _2691 = _2602; uint _2692 = _2602; uint _2693; uint _2694; uint _2695 = _2602; uint _2696; uint _2697; uint _2698 = 1065353216u; uint _2699 = 0u; uint _2700 = _1551; uint _2701; bool _2702 = _1286; uint _2703 = 0u; for (;;) { if (int(cbuf_56.data[_2644]) <= int(_2703)) { bool _2706 = _2702 && (!_1286); if (!_2706) { _6667 = _2667; _6668 = _2674; _6669 = _2675; _6670 = _2676; _6671 = _2668; _6672 = _2671; _6673 = _2669; _6674 = _2672; _6675 = _2670; _6676 = _2673; _6677 = _2698; _6678 = _2699; break; } else { _2708 = _2706; } } else { _2708 = _2702; } uint _2714 = ((0u + ((_2703 + 65u) * 16u)) + buf3_off) >> 2u; uint3 _2724 = uint3(cbuf_56.data[_2714 + 0u], cbuf_56.data[_2714 + 1u], cbuf_56.data[_2714 + 2u]); uint _2725 = _2724.x; uint _2726 = _2724.y; uint _2727 = _2724.z; uint _2733 = ((0u + ((_2703 + 57u) * 16u)) + buf3_off) >> 2u; bool _2736 = 0u == cbuf_56.data[_2733]; bool _2737 = _1286 && _2736; uint _2738; if (_2737) { _2738 = 1u; } else { _2738 = _2700; } uint _2739; uint _2740; uint _2741; if (_2737) { _2739 = 0u; _2740 = 0u; _2741 = 0u; } else { _2739 = _2696; _2740 = _2697; _2741 = _2701; } bool _2743 = _1286 && (!_2737); bool _2745; if (_2743) { _2745 = 1u == cbuf_56.data[_2733]; } else { _2745 = _2736; } uint _3083; uint _3097; uint _3098; uint _3099; if (_2743) { bool _2746 = _2743 && _2745; uint _2751; if (_2746) { _2751 = as_type(spvFSub(as_type(_2725), as_type(_1312))); } else { _2751 = _2741; } uint _2777; uint _2778; uint _2779; uint _2780; bool _2781; if (_2746) { float _2754 = spvFSub(as_type(_2726), as_type(_1313)); float _2757 = spvFSub(as_type(_2727), as_type(_1314)); bool _2773 = as_type(cbuf_56.data[((0u + ((_2703 + 73u) * 16u)) + buf3_off) >> 2u]) > sqrt(fma(as_type(_2751), as_type(_2751), fma(_2754, _2754, spvFMul(_2757, _2757)))); _2777 = _2727; _2778 = _2726; _2779 = _2725; _2780 = as_type(_2773 ? 1.4012984643248170709237295832899e-45 : 0.0); _2781 = _2773; } else { _2777 = _2739; _2778 = _2740; _2779 = _2751; _2780 = _2738; _2781 = _2745; } bool _2783 = _2743 && (!_2746); bool _2785; if (_2783) { _2785 = 2u == cbuf_56.data[_2733]; } else { _2785 = _2781; } uint _3066; uint _3067; uint _3068; uint _3069; uint _3070; uint _3071; uint _3072; uint _3073; uint _3074; uint _3075; uint _3076; uint _3077; uint _3078; uint _3079; uint _3080; uint _3081; uint _3082; if (_2783) { bool _2786 = _2783 && _2785; uint _2954; uint _2955; uint _2956; uint _2957; uint _2958; uint _2959; uint _2960; uint _2961; uint _2962; uint _2963; uint _2964; uint _2965; uint _2966; uint _2967; uint _2968; uint _2969; uint _2970; bool _2971; if (_2786) { uint _2787 = _2703 << 2u; uint _2793 = ((0u + ((_2787 + 105u) * 16u)) + buf3_off) >> 2u; uint3 _2803 = uint3(cbuf_56.data[_2793 + 0u], cbuf_56.data[_2793 + 1u], cbuf_56.data[_2793 + 2u]); uint _2804 = _2803.x; uint _2805 = _2803.y; uint _2806 = _2803.z; uint _2812 = ((0u + ((_2787 + 106u) * 16u)) + buf3_off) >> 2u; uint3 _2822 = uint3(cbuf_56.data[_2812 + 0u], cbuf_56.data[_2812 + 1u], cbuf_56.data[_2812 + 2u]); uint _2823 = _2822.x; uint _2824 = _2822.y; uint _2825 = _2822.z; uint _2831 = ((0u + ((_2787 + 107u) * 16u)) + buf3_off) >> 2u; uint3 _2841 = uint3(cbuf_56.data[_2831 + 0u], cbuf_56.data[_2831 + 1u], cbuf_56.data[_2831 + 2u]); uint _2842 = _2841.x; uint _2843 = _2841.y; uint _2844 = _2841.z; uint _2850 = ((0u + ((_2703 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _2860 = uint3(cbuf_56.data[_2850 + 0u], cbuf_56.data[_2850 + 1u], cbuf_56.data[_2850 + 2u]); uint _2861 = _2860.x; uint _2862 = _2860.y; uint _2863 = _2860.z; float _2868 = spvFMul(spvFAdd(as_type(_2725), as_type(_2861)), 0.5); float _2872 = spvFMul(spvFAdd(as_type(_2726), as_type(_2862)), 0.5); float _2876 = spvFMul(spvFAdd(as_type(_2727), as_type(_2863)), 0.5); float _2878 = spvFSub(as_type(_2861), _2868); float _2884 = spvFSub(as_type(_2862), _2872); float _2889 = spvFSub(as_type(_2863), _2876); float _2894 = spvFSub(as_type(_1312), _2868); float _2897 = spvFSub(as_type(_1313), _2872); float _2899 = spvFSub(as_type(_1314), _2876); bool _2908 = abs(fma(_2894, as_type(_2804), fma(_2897, as_type(_2805), spvFMul(as_type(_2806), _2899)))) > abs(_2878); bool _2909 = _2786 && _2908; uint _2910; if (_2909) { _2910 = 4294967295u; } else { _2910 = _2780; } bool _2912 = _2786 && (!_2909); uint _2916; if (_2912) { _2916 = as_type(spvFMul(as_type(_2825), _2899)); } else { _2916 = as_type(_2878); } uint _2946; bool _2947; if (_2912) { float _2921 = fma(_2894, as_type(_2823), fma(_2897, as_type(_2824), as_type(_2916))); bool _2925 = abs(_2921) > abs(_2884); bool _2926 = _2912 && _2925; uint _2927; if (_2926) { _2927 = 4294967295u; } else { _2927 = _2910; } bool _2929 = _2912 && (!_2926); uint _2933; if (_2929) { _2933 = as_type(spvFMul(as_type(_2844), _2899)); } else { _2933 = as_type(_2921); } uint _2944; bool _2945; if (_2929) { bool _2941 = abs(fma(_2894, as_type(_2842), fma(_2897, as_type(_2843), as_type(_2933)))) > abs(_2889); _2944 = as_type(_2941 ? as_type(0xffffffffu /* nan */) : 1.4012984643248170709237295832899e-45); _2945 = _2941; } else { _2944 = _2927; _2945 = _2925; } _2946 = _2944; _2947 = _2945; } else { _2946 = _2910; _2947 = _2908; } _2954 = as_type(_2894); _2955 = _2806; _2956 = _2805; _2957 = _2804; _2958 = _2825; _2959 = _2824; _2960 = _2823; _2961 = _2844; _2962 = _2843; _2963 = _2842; _2964 = as_type(fast::max(abs(_2878), abs(_2878))); _2965 = as_type(fast::max(abs(_2884), abs(_2884))); _2966 = as_type(fast::max(abs(_2889), abs(_2889))); _2967 = as_type(_2876); _2968 = as_type(_2872); _2969 = as_type(_2868); _2970 = _2946; _2971 = _2947; } else { _2954 = _2667; _2955 = _2681; _2956 = _2682; _2957 = _2683; _2958 = _2684; _2959 = _2685; _2960 = _2686; _2961 = _2687; _2962 = _2688; _2963 = _2689; _2964 = _2690; _2965 = _2691; _2966 = _2692; _2967 = _2777; _2968 = _2778; _2969 = _2779; _2970 = _2780; _2971 = _2785; } bool _2973 = _2783 && (!_2786); bool _2975; if (_2973) { _2975 = 3u == cbuf_56.data[_2733]; } else { _2975 = _2971; } uint _3062; uint _3063; uint _3064; uint _3065; if (_2973) { bool _2976 = _2973 && _2975; uint _3052; uint _3053; uint _3054; uint _3055; if (_2976) { uint _2981 = ((0u + ((_2703 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _2991 = uint3(cbuf_56.data[_2981 + 0u], cbuf_56.data[_2981 + 1u], cbuf_56.data[_2981 + 2u]); float _2997 = spvFSub(as_type(_2991.x), as_type(_2725)); float _3000 = spvFSub(as_type(_2991.y), as_type(_2726)); float _3003 = spvFSub(as_type(_2991.z), as_type(_2727)); float _3021 = fast::clamp(spvFMul(fma(spvFSub(as_type(_1312), as_type(_2725)), _2997, fma(spvFSub(as_type(_1313), as_type(_2726)), _3000, spvFMul(_3003, spvFSub(as_type(_1314), as_type(_2727))))), 1.0 / fma(_2997, _2997, fma(_3000, _3000, spvFMul(_3003, _3003)))), 0.0, 1.0); float _3023 = fma(_2997, _3021, as_type(_2725)); float _3026 = fma(_3000, _3021, as_type(_2726)); float _3029 = fma(_3003, _3021, as_type(_2727)); float _3032 = spvFSub(as_type(_1312), _3023); float _3034 = spvFSub(as_type(_1313), _3026); float _3036 = spvFSub(as_type(_1314), _3029); _3052 = as_type(_3029); _3053 = as_type(_3026); _3054 = as_type(_3023); _3055 = as_type((as_type(cbuf_56.data[((0u + ((_2703 + 73u) * 16u)) + buf3_off) >> 2u]) >= sqrt(fma(_3032, _3032, fma(_3034, _3034, spvFMul(_3036, _3036))))) ? 1.4012984643248170709237295832899e-45 : 0.0); } else { _3052 = _2967; _3053 = _2968; _3054 = _2969; _3055 = _2970; } uint _3058; uint _3059; uint _3060; uint _3061; if (_2973 && (!_2976)) { _3058 = _2727; _3059 = _2726; _3060 = _2725; _3061 = 0u; } else { _3058 = _3052; _3059 = _3053; _3060 = _3054; _3061 = _3055; } _3062 = _3058; _3063 = _3059; _3064 = _3060; _3065 = _3061; } else { _3062 = _2967; _3063 = _2968; _3064 = _2969; _3065 = _2970; } _3066 = _2954; _3067 = _2955; _3068 = _2956; _3069 = _2957; _3070 = _2958; _3071 = _2959; _3072 = _2960; _3073 = _2961; _3074 = _2962; _3075 = _2963; _3076 = _2964; _3077 = _2965; _3078 = _2966; _3079 = _3062; _3080 = _3063; _3081 = _3064; _3082 = _3065; } else { _3066 = _2667; _3067 = _2681; _3068 = _2682; _3069 = _2683; _3070 = _2684; _3071 = _2685; _3072 = _2686; _3073 = _2687; _3074 = _2688; _3075 = _2689; _3076 = _2690; _3077 = _2691; _3078 = _2692; _3079 = _2777; _3080 = _2778; _3081 = _2779; _3082 = _2780; } _3083 = _3066; _3084 = _3067; _3085 = _3068; _3086 = _3069; _3087 = _3070; _3088 = _3071; _3089 = _3072; _3090 = _3073; _3091 = _3074; _3092 = _3075; _3093 = _3076; _3094 = _3077; _3095 = _3078; _3096 = _3079; _3097 = _3080; _3098 = _3081; _3099 = _3082; } else { _3083 = _2667; _3084 = _2681; _3085 = _2682; _3086 = _2683; _3087 = _2684; _3088 = _2685; _3089 = _2686; _3090 = _2687; _3091 = _2688; _3092 = _2689; _3093 = _2690; _3094 = _2691; _3095 = _2692; _3096 = _2739; _3097 = _2740; _3098 = _2741; _3099 = _2738; } bool _3101 = _1286 && (int(0u) < int(_3099)); if (_3101) { uint _3107 = ((0u + ((_2703 + 137u) * 16u)) + buf3_off) >> 2u; uint4 _3120 = uint4(cbuf_56.data[_3107 + 0u], cbuf_56.data[_3107 + 1u], cbuf_56.data[_3107 + 2u], cbuf_56.data[_3107 + 3u]); uint _3121 = _3120.x; uint _3131 = ((0u + ((_2703 + 25u) * 16u)) + buf3_off) >> 2u; uint4 _3144 = uint4(cbuf_56.data[_3131 + 0u], cbuf_56.data[_3131 + 1u], cbuf_56.data[_3131 + 2u], cbuf_56.data[_3131 + 3u]); uint _3145 = _3144.x; uint _3146 = _3144.y; uint _3147 = _3144.z; uint _3148 = _3144.w; uint _3152 = ((0u + ((_2703 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _3165 = uint4(cbuf_56.data[_3152 + 0u], cbuf_56.data[_3152 + 1u], cbuf_56.data[_3152 + 2u], cbuf_56.data[_3152 + 3u]); uint _3166 = _3165.x; uint _3167 = _3165.z; uint _3174 = ((0u + ((_2703 + 33u) * 16u)) + buf3_off) >> 2u; uint3 _3184 = uint3(cbuf_56.data[_3174 + 0u], cbuf_56.data[_3174 + 1u], cbuf_56.data[_3174 + 2u]); uint _3185 = _3184.x; uint _3186 = _3184.y; uint _3187 = _3184.z; float _3194 = spvFMul(0.0055555556900799274444580078125, fma(_2648, as_type(_3120.w), spvFMul(as_type(cbuf_52.data[_1567]), as_type(_3120.z)))); float _3202 = spvFMul(6.283052921295166015625, fract(abs(spvFMul(0.159158289432525634765625, _3194)))); uint _3204 = uint(spvFAdd(_2647, as_type(_3145))); float _3210 = spvFAdd(-3.1415264606475830078125, (0.0 > _3194) ? (-_3202) : _3202); bool _3223 = _3167 == 2u; bool _3226 = _3167 == 5u; float _3240 = fma(as_type(_3148), spvFMul(0.001000000047497451305389404296875, float(_3204 - (((spvMulExtended(_3204, 274877907u))._m1 >> 6u) * 1000u))), as_type(_3145)); float _3242 = fma(fast::clamp(fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_3210)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _3210)))))), 0.5, 0.5), 0.0, 1.0), spvFSub(as_type(_3120.y), as_type(_3121)), as_type(_3121)); float _3246 = spvFAdd(1.0, as_type(_2699)); bool _3260 = _3101 && ((((_3167 == 1u) || (_3167 == 4u)) || _3223) || _3226); uint _3265; if (_3260) { _3265 = as_type(spvFSub(as_type(_1312), as_type(_3098))); } else { _3265 = as_type(_3242); } uint _3363; uint _3364; uint _3365; uint _3366; if (_3260) { float _3268 = spvFSub(as_type(_1313), as_type(_3097)); float _3272 = spvFSub(as_type(_1314), as_type(_3096)); uint _3324; uint _3325; uint _3326; if (_3260 && (_3223 || _3226)) { uint _3281 = ((0u + ((_2703 + 97u) * 16u)) + buf3_off) >> 2u; uint2 _3288 = uint2(cbuf_56.data[_3281 + 0u], cbuf_56.data[_3281 + 1u]); float _3301 = rsqrt(fma(as_type(_3265), as_type(_3265), fma(_3268, _3268, spvFMul(_3272, _3272)))); float _3310 = fma(fast::clamp(spvFMul(fast::max(0.0, spvFSub(sqrt(fma(as_type(_3265), as_type(_3265), spvFMul(_3272, _3272))), as_type(_3288.x))), 1.0 / as_type(_3288.y)), 0.0, 1.0), -0.89999997615814208984375, 1.0); float _3311 = spvFMul(_3268, _3301); _3324 = as_type(spvFMul(_3310, spvFMul(as_type(_3265), _3301))); _3325 = as_type(spvFAdd(1.0, spvFSub(fma(-_3311, _3310, _3311), _3310))); _3326 = as_type(spvFMul(_3310, spvFMul(_3272, _3301))); } else { _3324 = _3265; _3325 = as_type(_3268); _3326 = as_type(_3272); } float _3336 = rsqrt(fma(as_type(_3324), as_type(_3324), fma(as_type(_3325), as_type(_3325), spvFMul(as_type(_3326), as_type(_3326))))); uint _3345 = uint(spvFAdd(_2649, as_type(_3145))); float _3355 = fma(as_type(_3148), spvFMul(0.001000000047497451305389404296875, float(_3345 - (((spvMulExtended(_3345, 274877907u))._m1 >> 6u) * 1000u))), as_type(_3145)); _3363 = as_type(spvFMul(spvFMul(as_type(_3326), _3336), _3355)); _3364 = as_type(spvFMul(spvFMul(as_type(_3324), _3336), _3355)); _3365 = as_type(_3355); _3366 = as_type(spvFMul(spvFMul(as_type(_3325), _3336), _3355)); } else { _3363 = as_type(spvFMul(as_type(_3187), _3240)); _3364 = _3265; _3365 = as_type(spvFMul(as_type(_3186), _3240)); _3366 = as_type(spvFMul(as_type(_3185), _3240)); } uint _3369; uint _3370; if (_3101 && (!_3260)) { _3369 = _3365; _3370 = _3366; } else { _3369 = _3366; _3370 = _3364; } bool _3372 = _3101 && (int(0u) < int(_3165.w)); uint _6166; uint _6167; uint _6168; uint _6169; uint _6170; uint _6171; uint _6172; uint _6173; if (_3372) { bool _3375 = (_3167 == 0u) || (3u == _3167); bool _3376 = _3372 && _3375; bool _3378; if (_3376) { _3378 = 1u == cbuf_56.data[_2733]; } else { _3378 = _3375; } uint _6131; uint _6132; uint _6133; uint _6134; uint _6135; uint _6136; uint _6137; uint _6138; uint _6139; if (_3376) { bool _3379 = _3376 && _3378; uint _3510; uint _3511; uint _3512; uint _3513; uint _3514; uint _3515; uint _3516; uint _3517; bool _3518; if (_3379) { uint _3384 = ((0u + ((_2703 + 73u) * 16u)) + buf3_off) >> 2u; float _3391 = spvFMul(fast::max(as_type(cbuf_56.data[_3384]), as_type(cbuf_56.data[_3384])), 4.0); float _3395 = fma(-as_type(_3185), _3391, as_type(_1312)); float _3399 = fma(-as_type(_3186), _3391, as_type(_1313)); float _3403 = fma(-as_type(_3187), _3391, as_type(_1314)); float _3405 = spvFMul(as_type(_3185), _3391); float _3408 = spvFMul(as_type(_3186), _3391); float _3411 = spvFMul(as_type(_3187), _3391); float _3413 = spvFSub(_3395, as_type(_3098)); float _3416 = spvFSub(_3399, as_type(_3097)); float _3418 = spvFSub(_3403, as_type(_3096)); float _3421 = fma(_3413, _3405, fma(_3416, _3408, spvFMul(_3411, _3418))); float _3428 = fma(-as_type(cbuf_56.data[_3384]), as_type(cbuf_56.data[_3384]), fma(_3413, _3413, fma(_3416, _3416, spvFMul(_3418, _3418)))); bool _3433 = _3379 && ((_3421 > 0.0) && (0.0 < _3428)); uint _3434; uint _3435; if (_3433) { _3434 = 0u; _3435 = _2695; } else { _3434 = as_type(_3413); _3435 = as_type(_3405); } bool _3437 = _3379 && (!_3433); uint _3441; if (_3437) { _3441 = as_type(fma(_3421, _3421, -_3428)); } else { _3441 = as_type(_3428); } uint _3467; uint _3468; uint _3469; uint _3470; if (_3437) { bool _3444 = _3437 && (0.0 > as_type(_3441)); uint _3445; uint _3446; if (_3444) { _3445 = 0u; _3446 = _2695; } else { _3445 = _3434; _3446 = _3435; } bool _3448 = _3437 && (!_3444); uint _3449; if (_3448) { _3449 = 1u; } else { _3449 = _3445; } uint _3464; uint _3465; uint _3466; if (_3448) { float _3454 = spvFAdd(-_3421, -sqrt(as_type(_3441))); float _3456 = (0.0 <= _3454) ? _3454 : 0.0; _3464 = as_type(fma(_3456, _3411, _3403)); _3465 = as_type(fma(_3456, _3408, _3399)); _3466 = as_type(fma(_3456, as_type(_3446), _3395)); } else { _3464 = _2693; _3465 = _2694; _3466 = _3446; } _3467 = _3464; _3468 = _3465; _3469 = _3466; _3470 = _3449; } else { _3467 = _2693; _3468 = _2694; _3469 = _3435; _3470 = _3434; } bool _3471 = 0u == _3470; bool _3474 = _3379 && (!(_3379 && _3471)); bool _3477; if (_3474) { _3477 = 0.0 >= as_type(_3146); } else { _3477 = _3471; } uint _3508; uint _3509; if (_3474) { bool _3478 = _3474 && _3477; uint _3479; if (_3478) { _3479 = 0u; } else { _3479 = 1065353216u; } bool _3481 = _3474 && (!_3478); uint _3486; if (_3481) { _3486 = as_type(spvFSub(as_type(_1312), as_type(_3469))); } else { _3486 = _2695; } uint _3506; uint _3507; if (_3481) { float _3489 = spvFSub(as_type(_1313), as_type(_3468)); float _3492 = spvFSub(as_type(_1314), as_type(_3467)); float _3500 = 1.0 / as_type(_3146); _3506 = as_type(_3500); _3507 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_3486), as_type(_3486), fma(_3489, _3489, spvFMul(_3492, _3492)))), _3500), 0.0, 1.0))); } else { _3506 = _3146; _3507 = _3479; } _3508 = _3506; _3509 = _3507; } else { _3508 = _3146; _3509 = 1065353216u; } _3510 = _3467; _3511 = _3468; _3512 = _3469; _3513 = _3508; _3514 = _3470; _3515 = as_type(_3408); _3516 = _3469; _3517 = _3509; _3518 = _3477; } else { _3510 = _2693; _3511 = _2694; _3512 = _2695; _3513 = _3146; _3514 = _3187; _3515 = _3186; _3516 = _3185; _3517 = _3365; _3518 = _3378; } bool _3520 = _3376 && (!_3379); bool _3522; if (_3520) { _3522 = 2u == cbuf_56.data[_2733]; } else { _3522 = _3518; } uint _6125; uint _6126; uint _6127; uint _6128; uint _6129; uint _6130; if (_3520) { bool _3523 = _3520 && _3522; uint _3528; if (_3523) { _3528 = as_type(fast::max(as_type(_3095), as_type(_3094))); } else { _3528 = _3517; } uint _5844; uint _5845; uint _5846; uint _5847; uint _5848; uint _5849; bool _5850; if (_3523) { float _3533 = spvFMul(3.0, fast::max(as_type(_3093), as_type(_3528))); float _3537 = fma(-as_type(_3516), _3533, as_type(_1312)); float _3541 = fma(-as_type(_3515), _3533, as_type(_1313)); float _3545 = fma(-as_type(_3514), _3533, as_type(_1314)); float _3551 = spvFMul(as_type(_3093), as_type(_3085)); float _3555 = spvFMul(as_type(_3093), as_type(_3084)); float _3559 = spvFMul(as_type(_3094), as_type(_3089)); float _3567 = fma(as_type(_3093), as_type(_3086), as_type(_3098)); float _3571 = fma(as_type(_3093), as_type(_3085), as_type(_3097)); float _3575 = fma(as_type(_3093), as_type(_3084), as_type(_3096)); float _3581 = fma(as_type(_3094), as_type(_3088), _3571); float _3584 = fma(as_type(_3094), as_type(_3087), _3575); float _3587 = fma(as_type(_3095), as_type(_3092), fma(as_type(_3094), as_type(_3089), _3567)); float _3590 = fma(as_type(_3095), as_type(_3091), _3581); float _3594 = fma(as_type(_3095), as_type(_3090), _3584); float _3599 = fma(-as_type(_3093), as_type(_3086), as_type(_3098)); float _3604 = fma(-as_type(_3093), as_type(_3085), as_type(_3097)); float _3609 = fma(-as_type(_3093), as_type(_3084), as_type(_3096)); float _3612 = fma(as_type(_3094), as_type(_3089), _3599); float _3616 = fma(as_type(_3094), as_type(_3088), _3604); float _3619 = fma(as_type(_3094), as_type(_3087), _3609); float _3622 = fma(as_type(_3095), as_type(_3092), _3612); float _3625 = fma(as_type(_3095), as_type(_3091), _3616); float _3628 = fma(as_type(_3095), as_type(_3090), _3619); float _3641 = fma(-as_type(_3094), as_type(_3089), fma(as_type(_3095), as_type(_3092), _3567)); float _3646 = fma(-as_type(_3094), as_type(_3088), fma(as_type(_3095), as_type(_3091), _3571)); float _3663 = fma(-as_type(_3094), as_type(_3089), fma(as_type(_3095), as_type(_3092), _3599)); float _3667 = fma(-as_type(_3094), as_type(_3088), fma(as_type(_3095), as_type(_3091), _3604)); float _3671 = fma(-as_type(_3094), as_type(_3087), fma(as_type(_3095), as_type(_3090), _3609)); float _3672 = spvFSub(_3641, _3587); uint _3673 = as_type(_3672); float _3674 = spvFSub(_3646, _3590); float _3675 = spvFSub(fma(-as_type(_3094), as_type(_3087), fma(as_type(_3095), as_type(_3090), _3575)), _3594); float _3677 = spvFSub(_3663, _3587); float _3679 = spvFSub(_3667, _3590); float _3680 = spvFSub(_3671, _3594); float _3682 = spvFSub(_3537, as_type(_1312)); float _3684 = spvFSub(_3541, as_type(_1313)); float _3686 = spvFSub(_3545, as_type(_1314)); float _3691 = fma(_3674, _3680, -spvFMul(_3675, _3679)); float _3694 = fma(_3675, _3677, -spvFMul(_3672, _3680)); float _3697 = fma(_3672, _3679, -spvFMul(_3674, _3677)); float _3700 = fma(_3682, _3691, fma(_3684, _3694, spvFMul(_3686, _3697))); bool _3702 = _3523 && (0.0 >= _3700); uint _3703; uint _3704; uint _3705; uint _3706; if (_3702) { _3703 = 0u; _3704 = 0u; _3705 = 0u; _3706 = 0u; } else { _3703 = as_type(_3675); _3704 = as_type(_3677); _3705 = as_type(_3694); _3706 = as_type(_3691); } bool _3708 = _3523 && (!_3702); uint _3711; if (_3708) { _3711 = as_type(spvFSub(_3537, _3587)); } else { _3711 = _2680; } uint _3823; uint _3824; uint _3825; uint _3826; uint _3827; if (_3708) { float _3712 = spvFSub(_3541, _3590); float _3713 = spvFSub(_3545, _3594); float _3719 = fma(as_type(_3711), as_type(_3706), fma(_3712, as_type(_3705), spvFMul(_3697, _3713))); bool _3720 = 0.0 > _3719; bool _3721 = _3708 && _3720; uint _3722; uint _3723; uint _3724; uint _3725; if (_3721) { _3722 = 0u; _3723 = 0u; _3724 = 0u; _3725 = 0u; } else { _3722 = _3705; _3723 = _3703; _3724 = _3706; _3725 = _3704; } bool _3727 = _3708 && (!_3721); bool _3729; if (_3727) { _3729 = _3719 > _3700; } else { _3729 = _3720; } uint _3818; uint _3819; uint _3820; uint _3821; uint _3822; if (_3727) { bool _3730 = _3727 && _3729; uint _3731; uint _3732; uint _3733; uint _3734; if (_3730) { _3731 = 0u; _3732 = 0u; _3733 = 0u; _3734 = 0u; } else { _3731 = _3722; _3732 = _3723; _3733 = _3724; _3734 = _3725; } bool _3736 = _3727 && (!_3730); uint _3740; if (_3736) { _3740 = as_type(spvFMul(_3684, as_type(_3711))); } else { _3740 = _3733; } uint _3813; uint _3814; uint _3815; uint _3816; uint _3817; if (_3736) { float _3744 = fma(_3682, _3712, -as_type(_3740)); float _3749 = fma(_3686, as_type(_3711), -spvFMul(_3682, _3713)); float _3753 = fma(_3684, _3713, -spvFMul(_3686, _3712)); float _3756 = fma(as_type(_3734), _3753, fma(_3679, _3749, spvFMul(_3680, _3744))); bool _3760 = _3736 && ((_3756 > _3700) || (_3756 < 0.0)); uint _3761; uint _3762; uint _3763; uint _3764; if (_3760) { _3761 = 0u; _3762 = 0u; _3763 = 0u; _3764 = 0u; } else { _3761 = _3734; _3762 = as_type(_3749); _3763 = as_type(_3744); _3764 = _3732; } bool _3766 = _3736 && (!_3760); uint _3771; if (_3766) { _3771 = as_type(spvFMul(as_type(_3764), as_type(_3763))); } else { _3771 = _3764; } uint _3808; uint _3809; uint _3810; uint _3811; uint _3812; if (_3766) { float _3775 = fma(_3672, _3753, fma(_3674, as_type(_3762), as_type(_3771))); float _3777 = spvFSub(_3756, _3775); bool _3783 = _3766 && ((_3777 > _3700) || (0.0 > (-_3775))); uint _3784; uint _3785; uint _3786; uint _3787; if (_3783) { _3784 = 0u; _3785 = 0u; _3786 = 0u; _3787 = 0u; } else { _3784 = _3763; _3785 = _3761; _3786 = as_type(_3775); _3787 = _3762; } bool _3789 = _3766 && (!_3783); uint _3790; if (_3789) { _3790 = 1u; } else { _3790 = _3787; } uint _3805; uint _3806; uint _3807; if (_3789) { float _3792 = spvFMul(_3719, 1.0 / _3700); _3805 = as_type(fma(_3792, spvFSub(as_type(_1312), _3537), _3537)); _3806 = as_type(fma(_3792, spvFSub(as_type(_1314), _3545), _3545)); _3807 = as_type(fma(_3792, spvFSub(as_type(_1313), _3541), _3541)); } else { _3805 = _3784; _3806 = _3785; _3807 = _3786; } _3808 = _3805; _3809 = _3806; _3810 = _3807; _3811 = as_type(_3777); _3812 = _3790; } else { _3808 = _3763; _3809 = _3761; _3810 = _3771; _3811 = _3673; _3812 = _3762; } _3813 = _3808; _3814 = _3809; _3815 = _3810; _3816 = _3811; _3817 = _3812; } else { _3813 = _3740; _3814 = _3734; _3815 = _3732; _3816 = _3673; _3817 = _3731; } _3818 = _3813; _3819 = _3814; _3820 = _3815; _3821 = _3816; _3822 = _3817; } else { _3818 = _3724; _3819 = _3725; _3820 = _3723; _3821 = _3673; _3822 = _3722; } _3823 = _3818; _3824 = _3819; _3825 = _3820; _3826 = _3821; _3827 = _3822; } else { _3823 = _3706; _3824 = _3704; _3825 = _3703; _3826 = _3673; _3827 = _3705; } bool _3831 = _3523 && (!(_3523 && (int(0u) < int(_3827)))); uint _3834; if (_3831) { _3834 = as_type(spvFSub(_3622, _3663)); } else { _3834 = _3826; } uint _3982; uint _3983; uint _3984; uint _3985; uint _3986; if (_3831) { float _3835 = spvFSub(_3625, _3667); float _3836 = spvFSub(_3628, _3671); float _3838 = spvFSub(_3587, _3663); float _3840 = spvFSub(_3590, _3667); float _3841 = spvFSub(_3594, _3671); float _3848 = fma(_3835, _3841, -spvFMul(_3836, _3840)); float _3851 = fma(_3836, _3838, -spvFMul(as_type(_3834), _3841)); float _3854 = fma(as_type(_3834), _3840, -spvFMul(_3835, _3838)); float _3857 = fma(_3682, _3848, fma(_3684, _3851, spvFMul(_3686, _3854))); bool _3859 = _3831 && (0.0 >= _3857); uint _3860; uint _3861; uint _3862; uint _3863; if (_3859) { _3860 = 0u; _3861 = 0u; _3862 = 0u; _3863 = 0u; } else { _3860 = as_type(_3836); _3861 = as_type(_3841); _3862 = as_type(_3838); _3863 = as_type(_3848); } bool _3865 = _3831 && (!_3859); uint _3868; if (_3865) { _3868 = as_type(spvFSub(_3537, _3663)); } else { _3868 = _3711; } uint _3977; uint _3978; uint _3979; uint _3980; if (_3865) { float _3869 = spvFSub(_3541, _3667); float _3870 = spvFSub(_3545, _3671); float _3875 = fma(as_type(_3868), as_type(_3863), fma(_3869, _3851, spvFMul(_3854, _3870))); bool _3876 = 0.0 > _3875; bool _3877 = _3865 && _3876; uint _3878; uint _3879; uint _3880; uint _3881; if (_3877) { _3878 = 0u; _3879 = 0u; _3880 = 0u; _3881 = 0u; } else { _3878 = _3860; _3879 = _3863; _3880 = _3861; _3881 = _3862; } bool _3883 = _3865 && (!_3877); bool _3885; if (_3883) { _3885 = _3875 > _3857; } else { _3885 = _3876; } uint _3973; uint _3974; uint _3975; uint _3976; if (_3883) { bool _3886 = _3883 && _3885; uint _3887; uint _3888; uint _3889; uint _3890; if (_3886) { _3887 = 0u; _3888 = 0u; _3889 = 0u; _3890 = 0u; } else { _3887 = _3878; _3888 = _3879; _3889 = _3880; _3890 = _3881; } bool _3892 = _3883 && (!_3886); uint _3896; if (_3892) { _3896 = as_type(spvFMul(_3684, as_type(_3868))); } else { _3896 = _3888; } uint _3969; uint _3970; uint _3971; uint _3972; if (_3892) { float _3900 = fma(_3682, _3869, -as_type(_3896)); float _3905 = fma(_3686, as_type(_3868), -spvFMul(_3682, _3870)); float _3909 = fma(_3684, _3870, -spvFMul(_3686, _3869)); float _3912 = fma(as_type(_3890), _3909, fma(_3840, _3905, spvFMul(as_type(_3889), _3900))); bool _3917 = _3892 && ((_3912 > _3857) || (_3912 < 0.0)); uint _3918; uint _3919; uint _3920; uint _3921; if (_3917) { _3918 = 0u; _3919 = 0u; _3920 = 0u; _3921 = 0u; } else { _3918 = _3890; _3919 = as_type(_3912); _3920 = as_type(_3900); _3921 = _3887; } bool _3923 = _3892 && (!_3917); uint _3928; if (_3923) { _3928 = as_type(spvFMul(as_type(_3921), as_type(_3920))); } else { _3928 = _3921; } uint _3965; uint _3966; uint _3967; uint _3968; if (_3923) { float _3932 = fma(as_type(_3834), _3909, fma(_3835, _3905, as_type(_3928))); bool _3940 = _3923 && ((spvFSub(as_type(_3919), _3932) > _3857) || (0.0 > (-_3932))); uint _3941; uint _3942; uint _3943; uint _3944; if (_3940) { _3941 = 0u; _3942 = 0u; _3943 = 0u; _3944 = 0u; } else { _3941 = _3920; _3942 = _3918; _3943 = as_type(_3932); _3944 = _3919; } bool _3946 = _3923 && (!_3940); uint _3947; if (_3946) { _3947 = 1u; } else { _3947 = _3944; } uint _3962; uint _3963; uint _3964; if (_3946) { float _3949 = spvFMul(_3875, 1.0 / _3857); _3962 = as_type(fma(_3949, spvFSub(as_type(_1312), _3537), _3537)); _3963 = as_type(fma(_3949, spvFSub(as_type(_1314), _3545), _3545)); _3964 = as_type(fma(_3949, spvFSub(as_type(_1313), _3541), _3541)); } else { _3962 = _3941; _3963 = _3942; _3964 = _3943; } _3965 = _3962; _3966 = _3963; _3967 = _3964; _3968 = _3947; } else { _3965 = _3920; _3966 = _3918; _3967 = _3928; _3968 = _3919; } _3969 = _3965; _3970 = _3966; _3971 = _3967; _3972 = _3968; } else { _3969 = _3896; _3970 = _3890; _3971 = _3887; _3972 = _3889; } _3973 = _3969; _3974 = _3970; _3975 = _3971; _3976 = _3972; } else { _3973 = _3879; _3974 = _3881; _3975 = _3878; _3976 = _3880; } _3977 = _3973; _3978 = _3974; _3979 = _3975; _3980 = _3976; } else { _3977 = _3863; _3978 = _3862; _3979 = _3860; _3980 = _3861; } _3982 = _3868; _3983 = _3978; _3984 = _3979; _3985 = _3977; _3986 = uint(max(int(0u), int(_3980))); } else { _3982 = _3711; _3983 = _3824; _3984 = _3825; _3985 = _3823; _3986 = _3827; } float _3996 = fma(as_type(_3091), 0.00999999977648258209228515625, as_type(_3984)); float _4000 = fma(as_type(_3090), 0.00999999977648258209228515625, as_type(_3983)); bool _4003 = _3523 && (!(_3523 && (int(0u) < int(_3986)))); uint _4009; if (_4003) { _4009 = as_type(fma(-as_type(_3095), as_type(_3092), _3612)); } else { _4009 = as_type(_3612); } uint _5797; uint _5798; uint _5799; uint _5800; uint _5801; uint _5802; uint _5803; uint _5804; if (_4003) { float _4013 = fma(-as_type(_3095), as_type(_3091), _3616); float _4017 = fma(-as_type(_3095), as_type(_3090), _3619); float _4025 = fma(-as_type(_3095), as_type(_3091), _3581); float _4029 = fma(-as_type(_3095), as_type(_3090), _3584); float _4054 = fma(-as_type(_3095), as_type(_3092), spvFAdd(as_type(_3098), fma(-as_type(_3094), as_type(_3089), -spvFMul(as_type(_3093), as_type(_3086))))); float _4059 = fma(-as_type(_3095), as_type(_3091), spvFAdd(as_type(_3097), fma(-as_type(_3094), as_type(_3088), -_3551))); uint _4060 = as_type(_4059); float _4064 = fma(-as_type(_3095), as_type(_3090), spvFAdd(as_type(_3096), fma(-as_type(_3094), as_type(_3087), -_3555))); uint _4065 = as_type(_4064); float _4087 = fma(-as_type(_3095), as_type(_3092), spvFAdd(as_type(_3098), fma(as_type(_3093), as_type(_3086), -_3559))); uint _4088 = as_type(_4087); float _4092 = fma(-as_type(_3095), as_type(_3091), spvFAdd(as_type(_3097), fma(as_type(_3093), as_type(_3085), -_4000))); float _4096 = fma(-as_type(_3095), as_type(_3090), spvFAdd(as_type(_3096), fma(as_type(_3093), as_type(_3084), -spvFMul(as_type(_3094), as_type(_3087))))); float _4098 = spvFSub(_4054, as_type(_4009)); uint _4099 = as_type(_4098); float _4100 = spvFSub(_4059, _4013); float _4101 = spvFSub(_4064, _4017); float _4104 = spvFSub(_4087, as_type(_4009)); float _4106 = spvFSub(_4092, _4013); float _4107 = spvFSub(_4096, _4017); float _4112 = fma(_4100, _4107, -spvFMul(_4101, _4106)); float _4115 = fma(_4101, _4104, -spvFMul(_4098, _4107)); float _4118 = fma(_4098, _4106, -spvFMul(_4100, _4104)); float _4121 = fma(_3682, _4112, fma(_3684, _4115, spvFMul(_3686, _4118))); bool _4123 = _4003 && (0.0 >= _4121); uint _4124; uint _4125; uint _4126; uint _4127; if (_4123) { _4124 = 0u; _4125 = 0u; _4126 = 0u; _4127 = 0u; } else { _4124 = as_type(_4101); _4125 = as_type(_4104); _4126 = as_type(_4115); _4127 = as_type(_4112); } bool _4129 = _4003 && (!_4123); uint _4133; if (_4129) { _4133 = as_type(spvFSub(_3537, as_type(_4009))); } else { _4133 = _3982; } uint _4245; uint _4246; uint _4247; uint _4248; uint _4249; if (_4129) { float _4134 = spvFSub(_3541, _4013); float _4135 = spvFSub(_3545, _4017); float _4141 = fma(as_type(_4133), as_type(_4127), fma(_4134, as_type(_4126), spvFMul(_4118, _4135))); bool _4142 = 0.0 > _4141; bool _4143 = _4129 && _4142; uint _4144; uint _4145; uint _4146; uint _4147; if (_4143) { _4144 = 0u; _4145 = 0u; _4146 = 0u; _4147 = 0u; } else { _4144 = _4126; _4145 = _4124; _4146 = _4127; _4147 = _4125; } bool _4149 = _4129 && (!_4143); bool _4151; if (_4149) { _4151 = _4141 > _4121; } else { _4151 = _4142; } uint _4240; uint _4241; uint _4242; uint _4243; uint _4244; if (_4149) { bool _4152 = _4149 && _4151; uint _4153; uint _4154; uint _4155; uint _4156; if (_4152) { _4153 = 0u; _4154 = 0u; _4155 = 0u; _4156 = 0u; } else { _4153 = _4144; _4154 = _4145; _4155 = _4146; _4156 = _4147; } bool _4158 = _4149 && (!_4152); uint _4162; if (_4158) { _4162 = as_type(spvFMul(_3684, as_type(_4133))); } else { _4162 = _4155; } uint _4235; uint _4236; uint _4237; uint _4238; uint _4239; if (_4158) { float _4166 = fma(_3682, _4134, -as_type(_4162)); float _4171 = fma(_3686, as_type(_4133), -spvFMul(_3682, _4135)); float _4175 = fma(_3684, _4135, -spvFMul(_3686, _4134)); float _4178 = fma(as_type(_4156), _4175, fma(_4106, _4171, spvFMul(_4107, _4166))); bool _4182 = _4158 && ((_4178 > _4121) || (_4178 < 0.0)); uint _4183; uint _4184; uint _4185; uint _4186; if (_4182) { _4183 = 0u; _4184 = 0u; _4185 = 0u; _4186 = 0u; } else { _4183 = _4156; _4184 = as_type(_4171); _4185 = as_type(_4166); _4186 = _4154; } bool _4188 = _4158 && (!_4182); uint _4193; if (_4188) { _4193 = as_type(spvFMul(as_type(_4186), as_type(_4185))); } else { _4193 = _4186; } uint _4230; uint _4231; uint _4232; uint _4233; uint _4234; if (_4188) { float _4197 = fma(_4098, _4175, fma(_4100, as_type(_4184), as_type(_4193))); float _4199 = spvFSub(_4178, _4197); bool _4205 = _4188 && ((_4199 > _4121) || (0.0 > (-_4197))); uint _4206; uint _4207; uint _4208; uint _4209; if (_4205) { _4206 = 0u; _4207 = 0u; _4208 = 0u; _4209 = 0u; } else { _4206 = _4185; _4207 = _4183; _4208 = as_type(_4197); _4209 = _4184; } bool _4211 = _4188 && (!_4205); uint _4212; if (_4211) { _4212 = 1u; } else { _4212 = _4209; } uint _4227; uint _4228; uint _4229; if (_4211) { float _4214 = spvFMul(_4141, 1.0 / _4121); _4227 = as_type(fma(_4214, spvFSub(as_type(_1312), _3537), _3537)); _4228 = as_type(fma(_4214, spvFSub(as_type(_1314), _3545), _3545)); _4229 = as_type(fma(_4214, spvFSub(as_type(_1313), _3541), _3541)); } else { _4227 = _4206; _4228 = _4207; _4229 = _4208; } _4230 = _4227; _4231 = _4228; _4232 = _4229; _4233 = as_type(_4199); _4234 = _4212; } else { _4230 = _4185; _4231 = _4183; _4232 = _4193; _4233 = _4099; _4234 = _4184; } _4235 = _4230; _4236 = _4231; _4237 = _4232; _4238 = _4233; _4239 = _4234; } else { _4235 = _4162; _4236 = _4156; _4237 = _4154; _4238 = _4099; _4239 = _4153; } _4240 = _4235; _4241 = _4236; _4242 = _4237; _4243 = _4238; _4244 = _4239; } else { _4240 = _4146; _4241 = _4147; _4242 = _4145; _4243 = _4099; _4244 = _4144; } _4245 = _4240; _4246 = _4241; _4247 = _4242; _4248 = _4243; _4249 = _4244; } else { _4245 = _4127; _4246 = _4125; _4247 = _4124; _4248 = _4099; _4249 = _4126; } bool _4253 = _4003 && (!(_4003 && (int(0u) < int(_4249)))); uint _4256; if (_4253) { _4256 = as_type(spvFSub(fma(-as_type(_3095), as_type(_3092), _3996), _4087)); } else { _4256 = _4248; } uint _4410; uint _4411; uint _4412; uint _4413; uint _4414; uint _4415; if (_4253) { float _4257 = spvFSub(_4025, _4092); float _4258 = spvFSub(_4029, _4096); float _4261 = spvFSub(as_type(_4009), _4087); float _4263 = spvFSub(_4013, _4092); float _4264 = spvFSub(_4017, _4096); float _4271 = fma(_4257, _4264, -spvFMul(_4258, _4263)); float _4274 = fma(_4258, _4261, -spvFMul(as_type(_4256), _4264)); float _4277 = fma(as_type(_4256), _4263, -spvFMul(_4257, _4261)); float _4280 = fma(_3682, _4271, fma(_3684, _4274, spvFMul(_3686, _4277))); bool _4282 = _4253 && (0.0 >= _4280); uint _4283; uint _4284; uint _4285; uint _4286; if (_4282) { _4283 = 0u; _4284 = 0u; _4285 = 0u; _4286 = 0u; } else { _4283 = as_type(_4258); _4284 = as_type(_4264); _4285 = as_type(_4261); _4286 = as_type(_4271); } bool _4288 = _4253 && (!_4282); uint _4291; if (_4288) { _4291 = as_type(spvFSub(_3537, _4087)); } else { _4291 = _4133; } uint _4404; uint _4405; uint _4406; uint _4407; uint _4408; if (_4288) { float _4292 = spvFSub(_3541, _4092); float _4293 = spvFSub(_3545, _4096); float _4298 = fma(as_type(_4291), as_type(_4286), fma(_4292, _4274, spvFMul(_4277, _4293))); bool _4299 = 0.0 > _4298; bool _4300 = _4288 && _4299; uint _4301; uint _4302; uint _4303; uint _4304; if (_4300) { _4301 = 0u; _4302 = 0u; _4303 = 0u; _4304 = 0u; } else { _4301 = _4283; _4302 = _4286; _4303 = _4284; _4304 = _4285; } bool _4306 = _4288 && (!_4300); bool _4308; if (_4306) { _4308 = _4298 > _4280; } else { _4308 = _4299; } uint _4399; uint _4400; uint _4401; uint _4402; uint _4403; if (_4306) { bool _4309 = _4306 && _4308; uint _4310; uint _4311; uint _4312; uint _4313; if (_4309) { _4310 = 0u; _4311 = 0u; _4312 = 0u; _4313 = 0u; } else { _4310 = _4301; _4311 = _4302; _4312 = _4303; _4313 = _4304; } bool _4315 = _4306 && (!_4309); uint _4319; if (_4315) { _4319 = as_type(spvFMul(_3684, as_type(_4291))); } else { _4319 = _4311; } uint _4394; uint _4395; uint _4396; uint _4397; uint _4398; if (_4315) { float _4323 = fma(_3682, _4292, -as_type(_4319)); float _4328 = fma(_3686, as_type(_4291), -spvFMul(_3682, _4293)); float _4332 = fma(_3684, _4293, -spvFMul(_3686, _4292)); float _4335 = fma(as_type(_4313), _4332, fma(_4263, _4328, spvFMul(as_type(_4312), _4323))); bool _4340 = _4315 && ((_4335 > _4280) || (_4335 < 0.0)); uint _4341; uint _4342; uint _4343; uint _4344; if (_4340) { _4341 = 0u; _4342 = 0u; _4343 = 0u; _4344 = 0u; } else { _4341 = _4313; _4342 = as_type(_4335); _4343 = as_type(_4323); _4344 = _4310; } bool _4346 = _4315 && (!_4340); uint _4351; if (_4346) { _4351 = as_type(spvFMul(as_type(_4344), as_type(_4343))); } else { _4351 = _4344; } uint _4389; uint _4390; uint _4391; uint _4392; uint _4393; if (_4346) { float _4355 = fma(as_type(_4256), _4332, fma(_4257, _4328, as_type(_4351))); float _4358 = spvFSub(as_type(_4342), _4355); bool _4364 = _4346 && ((_4358 > _4280) || (0.0 > (-_4355))); uint _4365; uint _4366; uint _4367; uint _4368; if (_4364) { _4365 = 0u; _4366 = 0u; _4367 = 0u; _4368 = 0u; } else { _4365 = _4343; _4366 = _4341; _4367 = as_type(_4355); _4368 = _4342; } bool _4370 = _4346 && (!_4364); uint _4371; if (_4370) { _4371 = 1u; } else { _4371 = _4368; } uint _4386; uint _4387; uint _4388; if (_4370) { float _4373 = spvFMul(_4298, 1.0 / _4280); _4386 = as_type(fma(_4373, spvFSub(as_type(_1312), _3537), _3537)); _4387 = as_type(fma(_4373, spvFSub(as_type(_1314), _3545), _3545)); _4388 = as_type(fma(_4373, spvFSub(as_type(_1313), _3541), _3541)); } else { _4386 = _4365; _4387 = _4366; _4388 = _4367; } _4389 = as_type(_4358); _4390 = _4386; _4391 = _4387; _4392 = _4388; _4393 = _4371; } else { _4389 = _4256; _4390 = _4343; _4391 = _4341; _4392 = _4351; _4393 = _4342; } _4394 = _4389; _4395 = _4390; _4396 = _4391; _4397 = _4392; _4398 = _4393; } else { _4394 = _4256; _4395 = _4319; _4396 = _4313; _4397 = _4310; _4398 = _4312; } _4399 = _4394; _4400 = _4395; _4401 = _4396; _4402 = _4397; _4403 = _4398; } else { _4399 = _4256; _4400 = _4302; _4401 = _4304; _4402 = _4301; _4403 = _4303; } _4404 = _4399; _4405 = _4400; _4406 = _4401; _4407 = _4402; _4408 = _4403; } else { _4404 = _4256; _4405 = _4286; _4406 = _4285; _4407 = _4283; _4408 = _4284; } _4410 = _4291; _4411 = _4404; _4412 = _4406; _4413 = _4407; _4414 = _4405; _4415 = uint(max(int(0u), int(_4408))); } else { _4410 = _4133; _4411 = _4256; _4412 = _4246; _4413 = _4247; _4414 = _4245; _4415 = _4249; } float _4425 = fma(as_type(_3091), -0.00999999977648258209228515625, as_type(_4413)); bool _4432 = _4003 && (!(_4003 && (int(0u) < int(_4415)))); uint _4436; if (_4432) { _4436 = as_type(spvFSub(as_type(_4009), _3622)); } else { _4436 = _4411; } uint _5789; uint _5790; uint _5791; uint _5792; uint _5793; uint _5794; uint _5795; uint _5796; if (_4432) { float _4437 = spvFSub(_4013, _3625); float _4438 = spvFSub(_4017, _3628); float _4440 = spvFSub(_4425, _3622); float _4442 = spvFSub(_4025, _3625); float _4443 = spvFSub(_4029, _3628); float _4449 = fma(_4437, _4443, -spvFMul(_4438, _4442)); float _4452 = fma(_4438, _4440, -spvFMul(as_type(_4436), _4443)); float _4456 = fma(as_type(_4436), _4442, -spvFMul(_4437, _4440)); float _4459 = fma(_3682, _4449, fma(_3684, _4452, spvFMul(_3686, _4456))); bool _4461 = _4432 && (0.0 >= _4459); uint _4462; uint _4463; uint _4464; uint _4465; if (_4461) { _4462 = 0u; _4463 = 0u; _4464 = 0u; _4465 = 0u; } else { _4462 = as_type(_4438); _4463 = as_type(_4440); _4464 = as_type(_4452); _4465 = as_type(_4449); } bool _4467 = _4432 && (!_4461); uint _4470; if (_4467) { _4470 = as_type(spvFSub(_3537, _3622)); } else { _4470 = _4410; } uint _4583; uint _4584; uint _4585; uint _4586; uint _4587; if (_4467) { float _4471 = spvFSub(_3541, _3625); float _4472 = spvFSub(_3545, _3628); float _4478 = fma(as_type(_4470), as_type(_4465), fma(_4471, as_type(_4464), spvFMul(_4456, _4472))); bool _4479 = 0.0 > _4478; bool _4480 = _4467 && _4479; uint _4481; uint _4482; uint _4483; uint _4484; if (_4480) { _4481 = 0u; _4482 = 0u; _4483 = 0u; _4484 = 0u; } else { _4481 = _4464; _4482 = _4462; _4483 = _4465; _4484 = _4463; } bool _4486 = _4467 && (!_4480); bool _4488; if (_4486) { _4488 = _4478 > _4459; } else { _4488 = _4479; } uint _4578; uint _4579; uint _4580; uint _4581; uint _4582; if (_4486) { bool _4489 = _4486 && _4488; uint _4490; uint _4491; uint _4492; uint _4493; if (_4489) { _4490 = 0u; _4491 = 0u; _4492 = 0u; _4493 = 0u; } else { _4490 = _4481; _4491 = _4482; _4492 = _4483; _4493 = _4484; } bool _4495 = _4486 && (!_4489); uint _4499; if (_4495) { _4499 = as_type(spvFMul(_3684, as_type(_4470))); } else { _4499 = _4492; } uint _4573; uint _4574; uint _4575; uint _4576; uint _4577; if (_4495) { float _4503 = fma(_3682, _4471, -as_type(_4499)); float _4508 = fma(_3686, as_type(_4470), -spvFMul(_3682, _4472)); float _4512 = fma(_3684, _4472, -spvFMul(_3686, _4471)); float _4515 = fma(as_type(_4493), _4512, fma(_4442, _4508, spvFMul(_4443, _4503))); bool _4519 = _4495 && ((_4515 > _4459) || (_4515 < 0.0)); uint _4520; uint _4521; uint _4522; uint _4523; if (_4519) { _4520 = 0u; _4521 = 0u; _4522 = 0u; _4523 = 0u; } else { _4520 = _4493; _4521 = as_type(_4508); _4522 = as_type(_4503); _4523 = _4491; } bool _4525 = _4495 && (!_4519); uint _4530; if (_4525) { _4530 = as_type(spvFMul(as_type(_4523), as_type(_4522))); } else { _4530 = _4523; } uint _4568; uint _4569; uint _4570; uint _4571; uint _4572; if (_4525) { float _4535 = fma(as_type(_4436), _4512, fma(_4437, as_type(_4521), as_type(_4530))); float _4537 = spvFSub(_4515, _4535); bool _4543 = _4525 && ((_4537 > _4459) || (0.0 > (-_4535))); uint _4544; uint _4545; uint _4546; uint _4547; if (_4543) { _4544 = 0u; _4545 = 0u; _4546 = 0u; _4547 = 0u; } else { _4544 = _4522; _4545 = _4520; _4546 = as_type(_4535); _4547 = _4521; } bool _4549 = _4525 && (!_4543); uint _4550; if (_4549) { _4550 = 1u; } else { _4550 = _4547; } uint _4565; uint _4566; uint _4567; if (_4549) { float _4552 = spvFMul(_4478, 1.0 / _4459); _4565 = as_type(fma(_4552, spvFSub(as_type(_1312), _3537), _3537)); _4566 = as_type(fma(_4552, spvFSub(as_type(_1314), _3545), _3545)); _4567 = as_type(fma(_4552, spvFSub(as_type(_1313), _3541), _3541)); } else { _4565 = _4544; _4566 = _4545; _4567 = _4546; } _4568 = _4565; _4569 = _4566; _4570 = _4567; _4571 = as_type(_4537); _4572 = _4550; } else { _4568 = _4522; _4569 = _4520; _4570 = _4530; _4571 = _4436; _4572 = _4521; } _4573 = _4568; _4574 = _4569; _4575 = _4570; _4576 = _4571; _4577 = _4572; } else { _4573 = _4499; _4574 = _4493; _4575 = _4491; _4576 = _4436; _4577 = _4490; } _4578 = _4573; _4579 = _4574; _4580 = _4575; _4581 = _4576; _4582 = _4577; } else { _4578 = _4483; _4579 = _4484; _4580 = _4482; _4581 = _4436; _4582 = _4481; } _4583 = _4578; _4584 = _4579; _4585 = _4580; _4586 = _4581; _4587 = _4582; } else { _4583 = _4465; _4584 = _4463; _4585 = _4462; _4586 = _4436; _4587 = _4464; } bool _4591 = _4432 && (!(_4432 && (int(0u) < int(_4587)))); uint _4594; if (_4591) { _4594 = as_type(spvFSub(_3587, _4425)); } else { _4594 = _4586; } uint _4747; uint _4748; uint _4749; uint _4750; uint _4751; uint _4752; if (_4591) { float _4595 = spvFSub(_3590, _4025); float _4596 = spvFSub(_3594, _4029); float _4598 = spvFSub(_3622, _4425); float _4600 = spvFSub(_3625, _4025); float _4601 = spvFSub(_3628, _4029); float _4608 = fma(_4595, _4601, -spvFMul(_4596, _4600)); float _4611 = fma(_4596, _4598, -spvFMul(as_type(_4594), _4601)); float _4614 = fma(as_type(_4594), _4600, -spvFMul(_4595, _4598)); float _4617 = fma(_3682, _4608, fma(_3684, _4611, spvFMul(_3686, _4614))); bool _4619 = _4591 && (0.0 >= _4617); uint _4620; uint _4621; uint _4622; uint _4623; if (_4619) { _4620 = 0u; _4621 = 0u; _4622 = 0u; _4623 = 0u; } else { _4620 = as_type(_4596); _4621 = as_type(_4601); _4622 = as_type(_4598); _4623 = as_type(_4608); } bool _4625 = _4591 && (!_4619); uint _4628; if (_4625) { _4628 = as_type(spvFSub(_3537, _4425)); } else { _4628 = _4470; } uint _4741; uint _4742; uint _4743; uint _4744; uint _4745; if (_4625) { float _4629 = spvFSub(_3541, _4025); float _4630 = spvFSub(_3545, _4029); float _4635 = fma(as_type(_4628), as_type(_4623), fma(_4629, _4611, spvFMul(_4614, _4630))); bool _4636 = 0.0 > _4635; bool _4637 = _4625 && _4636; uint _4638; uint _4639; uint _4640; uint _4641; if (_4637) { _4638 = 0u; _4639 = 0u; _4640 = 0u; _4641 = 0u; } else { _4638 = _4620; _4639 = _4623; _4640 = _4621; _4641 = _4622; } bool _4643 = _4625 && (!_4637); bool _4645; if (_4643) { _4645 = _4635 > _4617; } else { _4645 = _4636; } uint _4736; uint _4737; uint _4738; uint _4739; uint _4740; if (_4643) { bool _4646 = _4643 && _4645; uint _4647; uint _4648; uint _4649; uint _4650; if (_4646) { _4647 = 0u; _4648 = 0u; _4649 = 0u; _4650 = 0u; } else { _4647 = _4638; _4648 = _4639; _4649 = _4640; _4650 = _4641; } bool _4652 = _4643 && (!_4646); uint _4656; if (_4652) { _4656 = as_type(spvFMul(_3684, as_type(_4628))); } else { _4656 = _4648; } uint _4731; uint _4732; uint _4733; uint _4734; uint _4735; if (_4652) { float _4660 = fma(_3682, _4629, -as_type(_4656)); float _4665 = fma(_3686, as_type(_4628), -spvFMul(_3682, _4630)); float _4669 = fma(_3684, _4630, -spvFMul(_3686, _4629)); float _4672 = fma(as_type(_4650), _4669, fma(_4600, _4665, spvFMul(as_type(_4649), _4660))); bool _4677 = _4652 && ((_4672 > _4617) || (_4672 < 0.0)); uint _4678; uint _4679; uint _4680; uint _4681; if (_4677) { _4678 = 0u; _4679 = 0u; _4680 = 0u; _4681 = 0u; } else { _4678 = _4650; _4679 = as_type(_4672); _4680 = as_type(_4660); _4681 = _4647; } bool _4683 = _4652 && (!_4677); uint _4688; if (_4683) { _4688 = as_type(spvFMul(as_type(_4681), as_type(_4680))); } else { _4688 = _4681; } uint _4726; uint _4727; uint _4728; uint _4729; uint _4730; if (_4683) { float _4692 = fma(as_type(_4594), _4669, fma(_4595, _4665, as_type(_4688))); float _4695 = spvFSub(as_type(_4679), _4692); bool _4701 = _4683 && ((_4695 > _4617) || (0.0 > (-_4692))); uint _4702; uint _4703; uint _4704; uint _4705; if (_4701) { _4702 = 0u; _4703 = 0u; _4704 = 0u; _4705 = 0u; } else { _4702 = _4680; _4703 = _4678; _4704 = as_type(_4692); _4705 = _4679; } bool _4707 = _4683 && (!_4701); uint _4708; if (_4707) { _4708 = 1u; } else { _4708 = _4705; } uint _4723; uint _4724; uint _4725; if (_4707) { float _4710 = spvFMul(_4635, 1.0 / _4617); _4723 = as_type(fma(_4710, spvFSub(as_type(_1312), _3537), _3537)); _4724 = as_type(fma(_4710, spvFSub(as_type(_1314), _3545), _3545)); _4725 = as_type(fma(_4710, spvFSub(as_type(_1313), _3541), _3541)); } else { _4723 = _4702; _4724 = _4703; _4725 = _4704; } _4726 = as_type(_4695); _4727 = _4723; _4728 = _4724; _4729 = _4725; _4730 = _4708; } else { _4726 = _4594; _4727 = _4680; _4728 = _4678; _4729 = _4688; _4730 = _4679; } _4731 = _4726; _4732 = _4727; _4733 = _4728; _4734 = _4729; _4735 = _4730; } else { _4731 = _4594; _4732 = _4656; _4733 = _4650; _4734 = _4647; _4735 = _4649; } _4736 = _4731; _4737 = _4732; _4738 = _4733; _4739 = _4734; _4740 = _4735; } else { _4736 = _4594; _4737 = _4639; _4738 = _4641; _4739 = _4638; _4740 = _4640; } _4741 = _4736; _4742 = _4737; _4743 = _4738; _4744 = _4739; _4745 = _4740; } else { _4741 = _4594; _4742 = _4623; _4743 = _4622; _4744 = _4620; _4745 = _4621; } _4747 = _4628; _4748 = _4741; _4749 = _4743; _4750 = _4744; _4751 = _4742; _4752 = uint(max(int(0u), int(_4745))); } else { _4747 = _4470; _4748 = _4594; _4749 = _4584; _4750 = _4585; _4751 = _4583; _4752 = _4587; } float _4757 = fma(as_type(_3089), 0.00999999977648258209228515625, as_type(_4751)); float _4765 = fma(as_type(_3087), 0.00999999977648258209228515625, as_type(_4749)); bool _4768 = _4432 && (!(_4432 && (int(0u) < int(_4752)))); uint _4771; if (_4768) { _4771 = as_type(spvFSub(_3663, _4054)); } else { _4771 = _4748; } uint _5781; uint _5782; uint _5783; uint _5784; uint _5785; uint _5786; uint _5787; uint _5788; if (_4768) { float _4772 = spvFSub(_3667, _4059); float _4773 = spvFSub(_3671, _4064); float _4775 = spvFSub(_3641, _4054); float _4777 = spvFSub(_3646, _4059); float _4778 = spvFSub(_4757, _4064); float _4784 = fma(_4772, _4778, -spvFMul(_4773, _4777)); float _4787 = fma(_4773, _4775, -spvFMul(as_type(_4771), _4778)); float _4791 = fma(as_type(_4771), _4777, -spvFMul(_4772, _4775)); float _4794 = fma(_3682, _4784, fma(_3684, _4787, spvFMul(_3686, _4791))); bool _4796 = _4768 && (0.0 >= _4794); uint _4797; uint _4798; uint _4799; uint _4800; if (_4796) { _4797 = 0u; _4798 = 0u; _4799 = 0u; _4800 = 0u; } else { _4797 = as_type(_4773); _4798 = as_type(_4775); _4799 = as_type(_4787); _4800 = as_type(_4784); } bool _4802 = _4768 && (!_4796); uint _4805; if (_4802) { _4805 = as_type(spvFSub(_3537, _4054)); } else { _4805 = _4747; } uint _4918; uint _4919; uint _4920; uint _4921; uint _4922; if (_4802) { float _4806 = spvFSub(_3541, _4059); float _4807 = spvFSub(_3545, _4064); float _4813 = fma(as_type(_4805), as_type(_4800), fma(_4806, as_type(_4799), spvFMul(_4791, _4807))); bool _4814 = 0.0 > _4813; bool _4815 = _4802 && _4814; uint _4816; uint _4817; uint _4818; uint _4819; if (_4815) { _4816 = 0u; _4817 = 0u; _4818 = 0u; _4819 = 0u; } else { _4816 = _4799; _4817 = _4797; _4818 = _4800; _4819 = _4798; } bool _4821 = _4802 && (!_4815); bool _4823; if (_4821) { _4823 = _4813 > _4794; } else { _4823 = _4814; } uint _4913; uint _4914; uint _4915; uint _4916; uint _4917; if (_4821) { bool _4824 = _4821 && _4823; uint _4825; uint _4826; uint _4827; uint _4828; if (_4824) { _4825 = 0u; _4826 = 0u; _4827 = 0u; _4828 = 0u; } else { _4825 = _4816; _4826 = _4817; _4827 = _4818; _4828 = _4819; } bool _4830 = _4821 && (!_4824); uint _4834; if (_4830) { _4834 = as_type(spvFMul(_3684, as_type(_4805))); } else { _4834 = _4827; } uint _4908; uint _4909; uint _4910; uint _4911; uint _4912; if (_4830) { float _4838 = fma(_3682, _4806, -as_type(_4834)); float _4843 = fma(_3686, as_type(_4805), -spvFMul(_3682, _4807)); float _4847 = fma(_3684, _4807, -spvFMul(_3686, _4806)); float _4850 = fma(as_type(_4828), _4847, fma(_4777, _4843, spvFMul(_4778, _4838))); bool _4854 = _4830 && ((_4850 > _4794) || (_4850 < 0.0)); uint _4855; uint _4856; uint _4857; uint _4858; if (_4854) { _4855 = 0u; _4856 = 0u; _4857 = 0u; _4858 = 0u; } else { _4855 = _4828; _4856 = as_type(_4843); _4857 = as_type(_4838); _4858 = _4826; } bool _4860 = _4830 && (!_4854); uint _4865; if (_4860) { _4865 = as_type(spvFMul(as_type(_4858), as_type(_4857))); } else { _4865 = _4858; } uint _4903; uint _4904; uint _4905; uint _4906; uint _4907; if (_4860) { float _4870 = fma(as_type(_4771), _4847, fma(_4772, as_type(_4856), as_type(_4865))); float _4872 = spvFSub(_4850, _4870); bool _4878 = _4860 && ((_4872 > _4794) || (0.0 > (-_4870))); uint _4879; uint _4880; uint _4881; uint _4882; if (_4878) { _4879 = 0u; _4880 = 0u; _4881 = 0u; _4882 = 0u; } else { _4879 = _4857; _4880 = _4855; _4881 = as_type(_4870); _4882 = _4856; } bool _4884 = _4860 && (!_4878); uint _4885; if (_4884) { _4885 = 1u; } else { _4885 = _4882; } uint _4900; uint _4901; uint _4902; if (_4884) { float _4887 = spvFMul(_4813, 1.0 / _4794); _4900 = as_type(fma(_4887, spvFSub(as_type(_1312), _3537), _3537)); _4901 = as_type(fma(_4887, spvFSub(as_type(_1314), _3545), _3545)); _4902 = as_type(fma(_4887, spvFSub(as_type(_1313), _3541), _3541)); } else { _4900 = _4879; _4901 = _4880; _4902 = _4881; } _4903 = _4900; _4904 = _4901; _4905 = _4902; _4906 = as_type(_4872); _4907 = _4885; } else { _4903 = _4857; _4904 = _4855; _4905 = _4865; _4906 = _4771; _4907 = _4856; } _4908 = _4903; _4909 = _4904; _4910 = _4905; _4911 = _4906; _4912 = _4907; } else { _4908 = _4834; _4909 = _4828; _4910 = _4826; _4911 = _4771; _4912 = _4825; } _4913 = _4908; _4914 = _4909; _4915 = _4910; _4916 = _4911; _4917 = _4912; } else { _4913 = _4818; _4914 = _4819; _4915 = _4817; _4916 = _4771; _4917 = _4816; } _4918 = _4913; _4919 = _4914; _4920 = _4915; _4921 = _4916; _4922 = _4917; } else { _4918 = _4800; _4919 = _4798; _4920 = _4797; _4921 = _4771; _4922 = _4799; } bool _4926 = _4768 && (!(_4768 && (int(0u) < int(_4922)))); uint _4929; if (_4926) { _4929 = as_type(spvFSub(_4087, _3641)); } else { _4929 = _4921; } uint _5077; uint _5078; uint _5079; uint _5080; uint _5081; if (_4926) { float _4930 = spvFSub(_4765, _3646); float _4931 = spvFSub(_4096, _4757); float _4933 = spvFSub(_4054, _3641); float _4935 = spvFSub(_4059, _3646); float _4936 = spvFSub(_4064, _4757); float _4943 = fma(_4930, _4936, -spvFMul(_4931, _4935)); float _4946 = fma(_4931, _4933, -spvFMul(as_type(_4929), _4936)); float _4949 = fma(as_type(_4929), _4935, -spvFMul(_4930, _4933)); float _4952 = fma(_3682, _4943, fma(_3684, _4946, spvFMul(_3686, _4949))); bool _4954 = _4926 && (0.0 >= _4952); uint _4955; uint _4956; uint _4957; uint _4958; if (_4954) { _4955 = 0u; _4956 = 0u; _4957 = 0u; _4958 = 0u; } else { _4955 = as_type(_4931); _4956 = as_type(_4936); _4957 = as_type(_4933); _4958 = as_type(_4943); } bool _4960 = _4926 && (!_4954); uint _4963; if (_4960) { _4963 = as_type(spvFSub(_3537, _3641)); } else { _4963 = _4805; } uint _5072; uint _5073; uint _5074; uint _5075; if (_4960) { float _4964 = spvFSub(_3541, _3646); float _4965 = spvFSub(_3545, _4757); float _4970 = fma(as_type(_4963), as_type(_4958), fma(_4964, _4946, spvFMul(_4949, _4965))); bool _4971 = 0.0 > _4970; bool _4972 = _4960 && _4971; uint _4973; uint _4974; uint _4975; uint _4976; if (_4972) { _4973 = 0u; _4974 = 0u; _4975 = 0u; _4976 = 0u; } else { _4973 = _4955; _4974 = _4958; _4975 = _4956; _4976 = _4957; } bool _4978 = _4960 && (!_4972); bool _4980; if (_4978) { _4980 = _4970 > _4952; } else { _4980 = _4971; } uint _5068; uint _5069; uint _5070; uint _5071; if (_4978) { bool _4981 = _4978 && _4980; uint _4982; uint _4983; uint _4984; uint _4985; if (_4981) { _4982 = 0u; _4983 = 0u; _4984 = 0u; _4985 = 0u; } else { _4982 = _4973; _4983 = _4974; _4984 = _4975; _4985 = _4976; } bool _4987 = _4978 && (!_4981); uint _4991; if (_4987) { _4991 = as_type(spvFMul(_3684, as_type(_4963))); } else { _4991 = _4983; } uint _5064; uint _5065; uint _5066; uint _5067; if (_4987) { float _4995 = fma(_3682, _4964, -as_type(_4991)); float _5000 = fma(_3686, as_type(_4963), -spvFMul(_3682, _4965)); float _5004 = fma(_3684, _4965, -spvFMul(_3686, _4964)); float _5007 = fma(as_type(_4985), _5004, fma(_4935, _5000, spvFMul(as_type(_4984), _4995))); bool _5012 = _4987 && ((_5007 > _4952) || (_5007 < 0.0)); uint _5013; uint _5014; uint _5015; uint _5016; if (_5012) { _5013 = 0u; _5014 = 0u; _5015 = 0u; _5016 = 0u; } else { _5013 = _4985; _5014 = as_type(_5007); _5015 = as_type(_4995); _5016 = _4982; } bool _5018 = _4987 && (!_5012); uint _5023; if (_5018) { _5023 = as_type(spvFMul(as_type(_5016), as_type(_5015))); } else { _5023 = _5016; } uint _5060; uint _5061; uint _5062; uint _5063; if (_5018) { float _5027 = fma(as_type(_4929), _5004, fma(_4930, _5000, as_type(_5023))); bool _5035 = _5018 && ((spvFSub(as_type(_5014), _5027) > _4952) || (0.0 > (-_5027))); uint _5036; uint _5037; uint _5038; uint _5039; if (_5035) { _5036 = 0u; _5037 = 0u; _5038 = 0u; _5039 = 0u; } else { _5036 = _5015; _5037 = _5013; _5038 = as_type(_5027); _5039 = _5014; } bool _5041 = _5018 && (!_5035); uint _5042; if (_5041) { _5042 = 1u; } else { _5042 = _5039; } uint _5057; uint _5058; uint _5059; if (_5041) { float _5044 = spvFMul(_4970, 1.0 / _4952); _5057 = as_type(fma(_5044, spvFSub(as_type(_1312), _3537), _3537)); _5058 = as_type(fma(_5044, spvFSub(as_type(_1314), _3545), _3545)); _5059 = as_type(fma(_5044, spvFSub(as_type(_1313), _3541), _3541)); } else { _5057 = _5036; _5058 = _5037; _5059 = _5038; } _5060 = _5057; _5061 = _5058; _5062 = _5059; _5063 = _5042; } else { _5060 = _5015; _5061 = _5013; _5062 = _5023; _5063 = _5014; } _5064 = _5060; _5065 = _5061; _5066 = _5062; _5067 = _5063; } else { _5064 = _4991; _5065 = _4985; _5066 = _4982; _5067 = _4984; } _5068 = _5064; _5069 = _5065; _5070 = _5066; _5071 = _5067; } else { _5068 = _4974; _5069 = _4976; _5070 = _4973; _5071 = _4975; } _5072 = _5068; _5073 = _5069; _5074 = _5070; _5075 = _5071; } else { _5072 = _4958; _5073 = _4957; _5074 = _4955; _5075 = _4956; } _5077 = _4963; _5078 = _5073; _5079 = _5074; _5080 = _5072; _5081 = uint(max(int(0u), int(_5075))); } else { _5077 = _4805; _5078 = _4919; _5079 = _4920; _5080 = _4918; _5081 = _4922; } float _5086 = fma(as_type(_3089), -0.00999999977648258209228515625, as_type(_5080)); uint _5087 = as_type(_5086); float _5090 = fma(as_type(_3088), -0.00999999977648258209228515625, as_type(_5079)); float _5094 = fma(as_type(_3087), -0.00999999977648258209228515625, as_type(_5078)); bool _5097 = _4768 && (!(_4768 && (int(0u) < int(_5081)))); uint _5100; if (_5097) { _5100 = as_type(spvFSub(_4087, _5090)); } else { _5100 = _4088; } uint _5773; uint _5774; uint _5775; uint _5776; uint _5777; uint _5778; uint _5779; uint _5780; if (_5097) { float _5101 = spvFSub(_5094, _4025); float _5102 = spvFSub(_4096, _4029); float _5104 = spvFSub(_3641, _5090); float _5105 = spvFSub(_3646, _4025); float _5106 = spvFSub(_5086, _4029); float _5112 = fma(_5101, _5106, -spvFMul(_5102, _5105)); float _5115 = fma(_5102, _5104, -spvFMul(as_type(_5100), _5106)); float _5118 = fma(as_type(_5100), _5105, -spvFMul(_5101, _5104)); float _5121 = fma(_3682, _5112, fma(_3684, _5115, spvFMul(_3686, _5118))); bool _5123 = _5097 && (0.0 >= _5121); uint _5124; uint _5125; uint _5126; uint _5127; if (_5123) { _5124 = 0u; _5125 = 0u; _5126 = 0u; _5127 = 0u; } else { _5124 = _5100; _5125 = as_type(_5102); _5126 = _5081; _5127 = as_type(_5112); } bool _5129 = _5097 && (!_5123); uint _5132; if (_5129) { _5132 = as_type(spvFSub(_3537, _5090)); } else { _5132 = _5126; } uint _5241; uint _5242; uint _5243; uint _5244; uint _5245; if (_5129) { float _5133 = spvFSub(_3541, _4025); float _5134 = spvFSub(_3545, _4029); float _5139 = fma(as_type(_5132), as_type(_5127), fma(_5133, _5115, spvFMul(_5134, _5118))); bool _5140 = 0.0 > _5139; bool _5141 = _5129 && _5140; uint _5142; uint _5143; uint _5144; uint _5145; if (_5141) { _5142 = 0u; _5143 = 0u; _5144 = 0u; _5145 = 0u; } else { _5142 = _5124; _5143 = _5125; _5144 = _5132; _5145 = _5127; } bool _5147 = _5129 && (!_5141); bool _5149; if (_5147) { _5149 = _5139 > _5121; } else { _5149 = _5140; } uint _5236; uint _5237; uint _5238; uint _5239; uint _5240; if (_5147) { bool _5150 = _5147 && _5149; uint _5151; uint _5152; uint _5153; uint _5154; if (_5150) { _5151 = 0u; _5152 = 0u; _5153 = 0u; _5154 = 0u; } else { _5151 = _5142; _5152 = _5143; _5153 = _5144; _5154 = _5145; } bool _5156 = _5147 && (!_5150); uint _5159; if (_5156) { _5159 = as_type(spvFMul(_3686, _5133)); } else { _5159 = _5154; } uint _5231; uint _5232; uint _5233; uint _5234; uint _5235; if (_5156) { float _5165 = fma(_3684, _5134, -as_type(_5159)); float _5169 = fma(_3686, as_type(_5153), -spvFMul(_3682, _5134)); float _5171 = fma(_3682, _5133, -spvFMul(_3684, as_type(_5153))); float _5175 = fma(_5104, _5165, fma(_5105, _5169, spvFMul(_5171, _5106))); bool _5179 = _5156 && ((_5175 > _5121) || (_5175 < 0.0)); uint _5180; uint _5181; uint _5182; uint _5183; if (_5179) { _5180 = 0u; _5181 = 0u; _5182 = 0u; _5183 = 0u; } else { _5180 = _5153; _5181 = as_type(_5165); _5182 = _5151; _5183 = _5152; } bool _5185 = _5156 && (!_5179); uint _5189; if (_5185) { _5189 = as_type(spvFMul(_5171, as_type(_5183))); } else { _5189 = _5183; } uint _5227; uint _5228; uint _5229; uint _5230; if (_5185) { float _5194 = fma(as_type(_5182), as_type(_5181), fma(_5101, _5169, as_type(_5189))); float _5196 = spvFSub(_5175, _5194); bool _5202 = _5185 && ((_5196 > _5121) || (0.0 > (-_5194))); uint _5203; uint _5204; uint _5205; uint _5206; if (_5202) { _5203 = 0u; _5204 = 0u; _5205 = 0u; _5206 = 0u; } else { _5203 = _5181; _5204 = as_type(_5194); _5205 = as_type(_5196); _5206 = _5180; } bool _5208 = _5185 && (!_5202); uint _5209; if (_5208) { _5209 = 1u; } else { _5209 = _5206; } uint _5224; uint _5225; uint _5226; if (_5208) { float _5211 = spvFMul(_5139, 1.0 / _5121); _5224 = as_type(fma(_5211, spvFSub(as_type(_1312), _3537), _3537)); _5225 = as_type(fma(_5211, spvFSub(as_type(_1313), _3541), _3541)); _5226 = as_type(fma(_5211, spvFSub(as_type(_1314), _3545), _3545)); } else { _5224 = _5203; _5225 = _5204; _5226 = _5205; } _5227 = _5224; _5228 = _5225; _5229 = _5226; _5230 = _5209; } else { _5227 = _5181; _5228 = _5189; _5229 = _5182; _5230 = _5180; } _5231 = as_type(_5171); _5232 = _5227; _5233 = _5228; _5234 = _5229; _5235 = _5230; } else { _5231 = _5077; _5232 = _5159; _5233 = _5152; _5234 = _5151; _5235 = _5153; } _5236 = _5231; _5237 = _5232; _5238 = _5233; _5239 = _5234; _5240 = _5235; } else { _5236 = _5077; _5237 = _5145; _5238 = _5143; _5239 = _5142; _5240 = _5144; } _5241 = _5236; _5242 = _5237; _5243 = _5238; _5244 = _5239; _5245 = _5240; } else { _5241 = _5077; _5242 = _5127; _5243 = _5125; _5244 = _5124; _5245 = _5132; } bool _5249 = _5097 && (!(_5097 && (int(0u) < int(_5245)))); uint _5252; if (_5249) { _5252 = as_type(spvFSub(_3587, _3641)); } else { _5252 = _5244; } uint _5401; uint _5402; uint _5403; uint _5404; uint _5405; if (_5249) { float _5253 = spvFSub(_3590, _3646); float _5254 = spvFSub(_3594, _5086); float _5256 = spvFSub(_5090, _3641); float _5257 = spvFSub(_4025, _3646); float _5258 = spvFSub(_4029, _5086); float _5264 = fma(_5253, _5258, -spvFMul(_5254, _5257)); float _5267 = fma(_5254, _5256, -spvFMul(as_type(_5252), _5258)); uint _5268 = as_type(_5267); float _5271 = fma(as_type(_5252), _5257, -spvFMul(_5253, _5256)); float _5274 = fma(_3682, _5264, fma(_3684, _5267, spvFMul(_3686, _5271))); bool _5276 = _5249 && (0.0 >= _5274); uint _5277; uint _5278; uint _5279; uint _5280; if (_5276) { _5277 = 0u; _5278 = 0u; _5279 = 0u; _5280 = 0u; } else { _5277 = _5242; _5278 = _5252; _5279 = as_type(_5254); _5280 = _5087; } bool _5282 = _5249 && (!_5276); uint _5285; if (_5282) { _5285 = as_type(spvFSub(_3537, _3641)); } else { _5285 = as_type(_3641); } uint _5395; uint _5396; uint _5397; uint _5398; uint _5399; if (_5282) { float _5286 = spvFSub(_3541, _3646); float _5288 = spvFSub(_3545, as_type(_5280)); float _5293 = fma(as_type(_5285), _5264, fma(_5286, _5267, spvFMul(_5288, _5271))); bool _5294 = 0.0 > _5293; bool _5295 = _5282 && _5294; uint _5296; uint _5297; uint _5298; uint _5299; if (_5295) { _5296 = 0u; _5297 = 0u; _5298 = 0u; _5299 = 0u; } else { _5296 = _5277; _5297 = _5278; _5298 = _5279; _5299 = as_type(_5288); } bool _5301 = _5282 && (!_5295); bool _5303; if (_5301) { _5303 = _5293 > _5274; } else { _5303 = _5294; } uint _5390; uint _5391; uint _5392; uint _5393; uint _5394; if (_5301) { bool _5304 = _5301 && _5303; uint _5305; uint _5306; uint _5307; uint _5308; if (_5304) { _5305 = 0u; _5306 = 0u; _5307 = 0u; _5308 = 0u; } else { _5305 = _5296; _5306 = _5297; _5307 = _5298; _5308 = _5299; } bool _5310 = _5301 && (!_5304); uint _5313; if (_5310) { _5313 = as_type(spvFMul(_3686, _5286)); } else { _5313 = as_type(_5264); } uint _5385; uint _5386; uint _5387; uint _5388; uint _5389; if (_5310) { float _5321 = fma(_3684, as_type(_5308), -as_type(_5313)); float _5324 = fma(_3686, as_type(_5285), -spvFMul(_3682, as_type(_5308))); float _5327 = fma(_3682, _5286, -spvFMul(_3684, as_type(_5285))); float _5330 = fma(_5256, _5321, fma(_5257, _5324, spvFMul(_5327, _5258))); bool _5334 = _5310 && ((_5330 > _5274) || (_5330 < 0.0)); uint _5335; uint _5336; uint _5337; uint _5338; if (_5334) { _5335 = 0u; _5336 = 0u; _5337 = 0u; _5338 = 0u; } else { _5335 = _5305; _5336 = _5308; _5337 = _5306; _5338 = _5307; } bool _5340 = _5310 && (!_5334); uint _5344; if (_5340) { _5344 = as_type(spvFMul(_5327, as_type(_5338))); } else { _5344 = _5338; } uint _5381; uint _5382; uint _5383; uint _5384; if (_5340) { float _5348 = fma(as_type(_5337), _5321, fma(_5253, _5324, as_type(_5344))); float _5350 = spvFSub(_5330, _5348); bool _5356 = _5340 && ((_5350 > _5274) || (0.0 > (-_5348))); uint _5357; uint _5358; uint _5359; uint _5360; if (_5356) { _5357 = 0u; _5358 = 0u; _5359 = 0u; _5360 = 0u; } else { _5357 = _5335; _5358 = as_type(_5348); _5359 = as_type(_5350); _5360 = _5336; } bool _5362 = _5340 && (!_5356); uint _5363; if (_5362) { _5363 = 1u; } else { _5363 = _5360; } uint _5378; uint _5379; uint _5380; if (_5362) { float _5365 = spvFMul(_5293, 1.0 / _5274); _5378 = as_type(fma(_5365, spvFSub(as_type(_1312), _3537), _3537)); _5379 = as_type(fma(_5365, spvFSub(as_type(_1313), _3541), _3541)); _5380 = as_type(fma(_5365, spvFSub(as_type(_1314), _3545), _3545)); } else { _5378 = _5357; _5379 = _5358; _5380 = _5359; } _5381 = _5378; _5382 = _5379; _5383 = _5380; _5384 = _5363; } else { _5381 = _5335; _5382 = _5344; _5383 = _5337; _5384 = _5336; } _5385 = as_type(_5324); _5386 = _5381; _5387 = _5382; _5388 = _5383; _5389 = _5384; } else { _5385 = _5268; _5386 = _5305; _5387 = _5307; _5388 = _5306; _5389 = _5308; } _5390 = _5385; _5391 = _5386; _5392 = _5387; _5393 = _5388; _5394 = _5389; } else { _5390 = _5268; _5391 = _5296; _5392 = _5298; _5393 = _5297; _5394 = _5299; } _5395 = _5390; _5396 = _5391; _5397 = _5392; _5398 = _5393; _5399 = _5394; } else { _5395 = _5268; _5396 = _5277; _5397 = _5279; _5398 = _5278; _5399 = _5280; } _5401 = _5395; _5402 = _5398; _5403 = _5397; _5404 = _5396; _5405 = uint(max(int(0u), int(_5399))); } else { _5401 = as_type(_3590); _5402 = _5252; _5403 = _5243; _5404 = _5242; _5405 = _5245; } bool _5421 = _5097 && (!(_5097 && (int(0u) < int(_5405)))); uint _5424; if (_5421) { _5424 = as_type(spvFSub(_3663, _3622)); } else { _5424 = _5402; } uint _5766; uint _5767; uint _5768; uint _5769; uint _5770; uint _5771; uint _5772; if (_5421) { float _5425 = spvFSub(_3667, _3625); float _5427 = spvFSub(_3671, _3628); float _5429 = spvFSub(_4054, _3622); float _5430 = spvFSub(_4059, _3625); float _5431 = spvFSub(_4064, _3628); float _5438 = fma(_5425, _5431, -spvFMul(_5427, _5430)); float _5441 = fma(_5427, _5429, -spvFMul(as_type(_5424), _5431)); float _5444 = fma(as_type(_5424), _5430, -spvFMul(_5425, _5429)); float _5447 = fma(_3682, _5438, fma(_3684, _5441, spvFMul(_3686, _5444))); bool _5449 = _5421 && (0.0 >= _5447); uint _5450; uint _5451; uint _5452; uint _5453; if (_5449) { _5450 = 0u; _5451 = 0u; _5452 = 0u; _5453 = 0u; } else { _5450 = _5405; _5451 = as_type(_5425); _5452 = as_type(_5431); _5453 = as_type(_5438); } bool _5455 = _5421 && (!_5449); uint _5458; if (_5455) { _5458 = as_type(spvFSub(_3537, _3622)); } else { _5458 = _5401; } uint _5569; uint _5570; uint _5571; uint _5572; uint _5573; if (_5455) { float _5459 = spvFSub(_3541, _3625); float _5460 = spvFSub(_3545, _3628); float _5465 = fma(as_type(_5458), as_type(_5453), fma(_5459, _5441, spvFMul(_5460, _5444))); bool _5466 = 0.0 > _5465; bool _5467 = _5455 && _5466; uint _5468; uint _5469; uint _5470; uint _5471; if (_5467) { _5468 = 0u; _5469 = 0u; _5470 = 0u; _5471 = 0u; } else { _5468 = _5450; _5469 = _5451; _5470 = _5453; _5471 = _5452; } bool _5473 = _5455 && (!_5467); bool _5475; if (_5473) { _5475 = _5465 > _5447; } else { _5475 = _5466; } uint _5564; uint _5565; uint _5566; uint _5567; uint _5568; if (_5473) { bool _5476 = _5473 && _5475; uint _5477; uint _5478; uint _5479; uint _5480; if (_5476) { _5477 = 0u; _5478 = 0u; _5479 = 0u; _5480 = 0u; } else { _5477 = _5468; _5478 = _5469; _5479 = _5470; _5480 = _5471; } bool _5482 = _5473 && (!_5476); uint _5485; if (_5482) { _5485 = as_type(spvFMul(_3686, _5459)); } else { _5485 = _5479; } uint _5559; uint _5560; uint _5561; uint _5562; uint _5563; if (_5482) { float _5491 = fma(_3684, _5460, -as_type(_5485)); float _5495 = fma(_3686, as_type(_5458), -spvFMul(_3682, _5460)); float _5497 = fma(_3682, _5459, -spvFMul(_3684, as_type(_5458))); float _5501 = fma(_5429, _5491, fma(_5430, _5495, spvFMul(_5497, as_type(_5480)))); bool _5506 = _5482 && ((_5501 > _5447) || (_5501 < 0.0)); uint _5507; uint _5508; uint _5509; uint _5510; if (_5506) { _5507 = 0u; _5508 = 0u; _5509 = 0u; _5510 = 0u; } else { _5507 = _5477; _5508 = as_type(_5491); _5509 = as_type(_5501); _5510 = _5478; } bool _5512 = _5482 && (!_5506); uint _5515; if (_5512) { _5515 = as_type(spvFMul(_5497, _5427)); } else { _5515 = as_type(_5427); } uint _5554; uint _5555; uint _5556; uint _5557; uint _5558; if (_5512) { float _5521 = fma(as_type(_5424), as_type(_5508), fma(as_type(_5510), _5495, as_type(_5515))); float _5523 = spvFSub(as_type(_5509), _5521); bool _5529 = _5512 && ((_5523 > _5447) || (0.0 > (-_5521))); uint _5530; uint _5531; uint _5532; uint _5533; if (_5529) { _5530 = 0u; _5531 = 0u; _5532 = 0u; _5533 = 0u; } else { _5530 = _5508; _5531 = _5509; _5532 = _5510; _5533 = _5507; } bool _5535 = _5512 && (!_5529); uint _5536; if (_5535) { _5536 = 1u; } else { _5536 = _5533; } uint _5551; uint _5552; uint _5553; if (_5535) { float _5538 = spvFMul(_5465, 1.0 / _5447); _5551 = as_type(fma(_5538, spvFSub(as_type(_1313), _3541), _3541)); _5552 = as_type(fma(_5538, spvFSub(as_type(_1312), _3537), _3537)); _5553 = as_type(fma(_5538, spvFSub(as_type(_1314), _3545), _3545)); } else { _5551 = _5530; _5552 = _5531; _5553 = _5532; } _5554 = _5551; _5555 = _5552; _5556 = _5553; _5557 = as_type(_5523); _5558 = _5536; } else { _5554 = _5508; _5555 = _5509; _5556 = _5510; _5557 = _5424; _5558 = _5507; } _5559 = _5554; _5560 = _5555; _5561 = _5556; _5562 = _5557; _5563 = _5558; } else { _5559 = _5485; _5560 = _5480; _5561 = _5478; _5562 = _5424; _5563 = _5477; } _5564 = _5559; _5565 = _5560; _5566 = _5561; _5567 = _5562; _5568 = _5563; } else { _5564 = _5470; _5565 = _5471; _5566 = _5469; _5567 = _5424; _5568 = _5468; } _5569 = _5564; _5570 = _5565; _5571 = _5566; _5572 = _5567; _5573 = _5568; } else { _5569 = _5453; _5570 = _5452; _5571 = _5451; _5572 = _5424; _5573 = _5450; } bool _5577 = _5421 && (!(_5421 && (int(0u) < int(_5573)))); uint _5581; if (_5577) { _5581 = as_type(spvFSub(as_type(_4009), _4054)); } else { _5581 = _5572; } uint _5747; uint _5748; uint _5749; uint _5750; uint _5751; uint _5752; uint _5753; if (_5577) { float _5582 = spvFSub(_4013, _4059); float _5584 = spvFSub(_4017, _4064); float _5586 = spvFSub(_3622, _4054); float _5587 = spvFSub(_3625, _4059); float _5588 = spvFSub(_3628, _4064); float _5595 = fma(_5582, _5588, -spvFMul(_5584, _5587)); float _5598 = fma(_5584, _5586, -spvFMul(as_type(_5581), _5588)); float _5601 = fma(as_type(_5581), _5587, -spvFMul(_5582, _5586)); float _5604 = fma(_3682, _5595, fma(_3684, _5598, spvFMul(_3686, _5601))); bool _5606 = _5577 && (0.0 >= _5604); uint _5607; uint _5608; uint _5609; uint _5610; if (_5606) { _5607 = 0u; _5608 = 0u; _5609 = 0u; _5610 = 0u; } else { _5607 = as_type(_5582); _5608 = as_type(_5584); _5609 = as_type(_5588); _5610 = as_type(_5595); } bool _5612 = _5577 && (!_5606); uint _5615; if (_5612) { _5615 = as_type(spvFSub(_3537, _4054)); } else { _5615 = as_type(_4054); } uint _5739; uint _5740; uint _5741; uint _5742; uint _5743; uint _5744; uint _5745; if (_5612) { float _5616 = spvFSub(_3541, _4059); uint _5617 = as_type(_5616); float _5618 = spvFSub(_3545, _4064); uint _5619 = as_type(_5618); float _5624 = fma(as_type(_5615), as_type(_5610), fma(_5616, _5598, spvFMul(_5618, _5601))); bool _5625 = 0.0 > _5624; bool _5626 = _5612 && _5625; uint _5627; uint _5628; uint _5629; uint _5630; if (_5626) { _5627 = 0u; _5628 = 0u; _5629 = 0u; _5630 = 0u; } else { _5627 = _5607; _5628 = _5608; _5629 = _5610; _5630 = _5609; } bool _5632 = _5612 && (!_5626); bool _5634; if (_5632) { _5634 = _5624 > _5604; } else { _5634 = _5625; } uint _5732; uint _5733; uint _5734; uint _5735; uint _5736; uint _5737; uint _5738; if (_5632) { bool _5635 = _5632 && _5634; uint _5636; uint _5637; uint _5638; uint _5639; if (_5635) { _5636 = 0u; _5637 = 0u; _5638 = 0u; _5639 = 0u; } else { _5636 = _5627; _5637 = _5628; _5638 = _5629; _5639 = _5630; } bool _5641 = _5632 && (!_5635); uint _5644; if (_5641) { _5644 = as_type(spvFMul(_3686, _5616)); } else { _5644 = _5638; } uint _5725; uint _5726; uint _5727; uint _5728; uint _5729; uint _5730; uint _5731; if (_5641) { float _5650 = fma(_3684, _5618, -as_type(_5644)); float _5654 = fma(_3686, as_type(_5615), -spvFMul(_3682, _5618)); float _5656 = fma(_3682, _5616, -spvFMul(_3684, as_type(_5615))); float _5660 = fma(_5586, _5650, fma(_5587, _5654, spvFMul(_5656, as_type(_5639)))); bool _5664 = _5641 && ((_5660 > _5604) || (_5660 < 0.0)); uint _5665; uint _5666; uint _5667; uint _5668; if (_5664) { _5665 = 0u; _5666 = 0u; _5667 = 0u; _5668 = 0u; } else { _5665 = _5639; _5666 = as_type(_5650); _5667 = _5636; _5668 = _5637; } bool _5670 = _5641 && (!_5664); uint _5674; if (_5670) { _5674 = as_type(spvFMul(_5656, as_type(_5668))); } else { _5674 = _5617; } uint _5718; uint _5719; uint _5720; uint _5721; uint _5722; uint _5723; uint _5724; if (_5670) { float _5680 = fma(as_type(_5581), as_type(_5666), fma(as_type(_5667), _5654, as_type(_5674))); bool _5687 = _5670 && ((spvFSub(_5660, _5680) > _5604) || (0.0 > (-_5680))); uint _5688; uint _5689; uint _5690; uint _5691; if (_5687) { _5688 = 0u; _5689 = 0u; _5690 = 0u; _5691 = 0u; } else { _5688 = _5666; _5689 = _5665; _5690 = _5667; _5691 = _5668; } bool _5693 = _5670 && (!_5687); uint _5694; if (_5693) { _5694 = 1u; } else { _5694 = _5691; } uint _5712; uint _5713; uint _5714; uint _5715; uint _5716; uint _5717; if (_5693) { float _5696 = spvFMul(_5624, 1.0 / _5604); float _5699 = spvFSub(as_type(_1312), _3537); float _5702 = spvFSub(as_type(_1313), _3541); _5712 = as_type(_5702); _5713 = as_type(_5699); _5714 = as_type(_5696); _5715 = as_type(fma(_5696, _5702, _3541)); _5716 = as_type(fma(_5696, _5699, _3537)); _5717 = as_type(fma(_5696, spvFSub(as_type(_1314), _3545), _3545)); } else { _5712 = _5581; _5713 = _5619; _5714 = as_type(_5680); _5715 = _5688; _5716 = _5689; _5717 = _5690; } _5718 = _5712; _5719 = _5713; _5720 = _5714; _5721 = _5715; _5722 = _5716; _5723 = _5717; _5724 = _5694; } else { _5718 = _5581; _5719 = _5619; _5720 = _5674; _5721 = _5666; _5722 = _5665; _5723 = _5667; _5724 = _5668; } _5725 = _5718; _5726 = _5719; _5727 = _5720; _5728 = _5721; _5729 = _5722; _5730 = _5723; _5731 = _5724; } else { _5725 = _5581; _5726 = _5619; _5727 = _5617; _5728 = _5644; _5729 = _5639; _5730 = _5636; _5731 = _5637; } _5732 = _5725; _5733 = _5726; _5734 = _5727; _5735 = _5728; _5736 = _5729; _5737 = _5730; _5738 = _5731; } else { _5732 = _5581; _5733 = _5619; _5734 = _5617; _5735 = _5629; _5736 = _5630; _5737 = _5627; _5738 = _5628; } _5739 = _5732; _5740 = _5733; _5741 = _5734; _5742 = _5735; _5743 = _5736; _5744 = _5737; _5745 = _5738; } else { _5739 = _5581; _5740 = _4065; _5741 = _4060; _5742 = _5610; _5743 = _5609; _5744 = _5607; _5745 = _5608; } _5747 = _5739; _5748 = _5740; _5749 = _5741; _5750 = _5744; _5751 = _5742; _5752 = _5743; _5753 = uint(max(int(0u), int(_5745))); } else { _5747 = _5581; _5748 = _4065; _5749 = _4060; _5750 = _5571; _5751 = _5569; _5752 = _5570; _5753 = _5573; } _5766 = _5747; _5767 = _5748; _5768 = _5749; _5769 = as_type(fma(as_type(_3085), -0.00999999977648258209228515625, as_type(_5751))); _5770 = as_type(fma(as_type(_3084), -0.00999999977648258209228515625, as_type(_5750))); _5771 = as_type(fma(as_type(_3086), -0.00999999977648258209228515625, as_type(_5752))); _5772 = _5753; } else { _5766 = _5424; _5767 = _4065; _5768 = _4060; _5769 = as_type(fma(as_type(_3085), 0.00999999977648258209228515625, as_type(_5403))); _5770 = as_type(fma(as_type(_3084), 0.00999999977648258209228515625, as_type(_5402))); _5771 = as_type(fma(as_type(_3086), 0.00999999977648258209228515625, as_type(_5404))); _5772 = _5405; } _5773 = _5241; _5774 = _5766; _5775 = _5767; _5776 = _5768; _5777 = _5769; _5778 = _5770; _5779 = _5771; _5780 = _5772; } else { _5773 = _5077; _5774 = _5100; _5775 = _4065; _5776 = _4060; _5777 = as_type(_5090); _5778 = as_type(_5094); _5779 = _5087; _5780 = _5081; } _5781 = _5773; _5782 = _5774; _5783 = _5775; _5784 = _5776; _5785 = _5777; _5786 = _5778; _5787 = _5779; _5788 = _5780; } else { _5781 = _4747; _5782 = _4088; _5783 = _4065; _5784 = _4060; _5785 = as_type(fma(as_type(_3088), 0.00999999977648258209228515625, as_type(_4750))); _5786 = as_type(_4765); _5787 = as_type(_4757); _5788 = _4752; } _5789 = _5781; _5790 = _5782; _5791 = _5783; _5792 = _5784; _5793 = _5785; _5794 = _5786; _5795 = _5787; _5796 = _5788; } else { _5789 = _4410; _5790 = _4088; _5791 = _4065; _5792 = _4060; _5793 = as_type(_4425); _5794 = as_type(fma(as_type(_3090), -0.00999999977648258209228515625, as_type(_4412))); _5795 = as_type(fma(as_type(_3092), -0.00999999977648258209228515625, as_type(_4414))); _5796 = _4415; } _5797 = _5789; _5798 = _5790; _5799 = _5791; _5800 = _5792; _5801 = _5793; _5802 = _5794; _5803 = _5795; _5804 = _5796; } else { _5797 = _3982; _5798 = as_type(_3559); _5799 = as_type(_3555); _5800 = as_type(_3551); _5801 = as_type(_3996); _5802 = as_type(_4000); _5803 = as_type(fma(as_type(_3092), 0.00999999977648258209228515625, as_type(_3985))); _5804 = _3986; } bool _5805 = 0u == _5804; bool _5808 = _3523 && (!(_3523 && _5805)); bool _5811; if (_5808) { _5811 = 0.0 >= as_type(_3513); } else { _5811 = _5805; } uint _5842; uint _5843; if (_5808) { bool _5812 = _5808 && _5811; uint _5813; if (_5812) { _5813 = 0u; } else { _5813 = 1065353216u; } bool _5815 = _5808 && (!_5812); uint _5820; if (_5815) { _5820 = as_type(spvFSub(as_type(_1312), as_type(_5803))); } else { _5820 = _5813; } uint _5840; uint _5841; if (_5815) { float _5823 = spvFSub(as_type(_1313), as_type(_5801)); float _5826 = spvFSub(as_type(_1314), as_type(_5802)); float _5834 = 1.0 / as_type(_3513); _5840 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_5820), as_type(_5820), fma(_5823, _5823, spvFMul(_5826, _5826)))), _5834), 0.0, 1.0))); _5841 = as_type(_5834); } else { _5840 = _5820; _5841 = _3513; } _5842 = _5840; _5843 = _5841; } else { _5842 = 1065353216u; _5843 = _3513; } _5844 = _5797; _5845 = _5842; _5846 = _5798; _5847 = _5799; _5848 = _5800; _5849 = _5843; _5850 = _5811; } else { _5844 = _2680; _5845 = _3528; _5846 = _3514; _5847 = _3515; _5848 = _3516; _5849 = _3513; _5850 = _3522; } bool _5852 = _3520 && (!_3523); bool _5854; if (_5852) { _5854 = 3u == cbuf_56.data[_2733]; } else { _5854 = _5850; } uint _6120; uint _6121; uint _6122; uint _6123; uint _6124; if (_5852) { bool _5855 = _5852 && _5854; bool _5858; if (_5855) { _5858 = 0.0 >= as_type(_5849); } else { _5858 = _5854; } uint _6116; uint _6117; uint _6118; uint _6119; if (_5855) { bool _5859 = _5855 && _5858; if (_5859) { } bool _5861 = _5855 && (!_5859); uint _6112; uint _6113; uint _6114; uint _6115; if (_5861) { uint _5866 = ((0u + ((_2703 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _5876 = uint3(cbuf_56.data[_5866 + 0u], cbuf_56.data[_5866 + 1u], cbuf_56.data[_5866 + 2u]); uint _5877 = _5876.x; uint _5878 = _5876.y; uint _5879 = _5876.z; uint _5884 = ((0u + ((_2703 + 73u) * 16u)) + buf3_off) >> 2u; float _5889 = spvFSub(as_type(_2727), as_type(_5879)); float _5892 = spvFSub(as_type(_2726), as_type(_5878)); float _5896 = spvFSub(as_type(_2725), as_type(_5877)); float _5904 = fast::max(sqrt(fma(_5896, _5896, fma(_5892, _5892, spvFMul(_5889, _5889)))), spvFMul(fast::max(as_type(cbuf_56.data[_5884]), as_type(cbuf_56.data[_5884])), 4.0)); float _5909 = fma(-as_type(_5846), _5904, as_type(_1314)); float _5913 = fma(-as_type(_5847), _5904, as_type(_1313)); float _5915 = spvFSub(as_type(_1314), _5909); float _5919 = spvFSub(as_type(_5879), as_type(_2727)); float _5924 = fma(-as_type(_5848), _5904, as_type(_1312)); float _5926 = spvFSub(as_type(_1313), _5913); float _5929 = spvFSub(as_type(_5878), as_type(_2726)); float _5934 = spvFSub(as_type(_1312), _5924); float _5937 = spvFSub(as_type(_5877), as_type(_2725)); float _5941 = fma(_5934, _5934, fma(_5926, _5926, spvFMul(_5915, _5915))); float _5942 = fma(_5937, _5937, fma(_5929, _5929, spvFMul(_5919, _5919))); bool _5946 = _5941 <= 9.9999997473787516355514526367188e-06; float _5956 = spvFMul(as_type(_5848), _5904); float _5958 = spvFMul(as_type(_5847), _5904); float _5960 = spvFMul(as_type(_5846), _5904); float _5961 = fma(_5937, spvFSub(_5924, as_type(_2725)), fma(_5929, spvFSub(_5913, as_type(_2726)), spvFMul(_5919, spvFSub(_5909, as_type(_2727))))); bool _5963 = _5861 && ((9.9999999747524270787835121154785e-07 >= _5942) && _5946); uint _5964; uint _5965; uint _5966; if (_5963) { _5964 = _2726; _5965 = _2725; _5966 = _2727; } else { _5964 = as_type(_5929); _5965 = as_type(_5937); _5966 = as_type(_5919); } bool _5968 = _5861 && (!_5963); uint _6046; uint _6047; uint _6048; if (_5968) { bool _5969 = _5968 && _5946; uint _5974; if (_5969) { _5974 = as_type(fast::clamp(spvFMul(_5961, 1.0 / _5942), 0.0, 1.0)); } else { _5974 = as_type(_5904); } bool _5976 = _5968 && (!_5969); uint _5980; if (_5976) { _5980 = as_type(spvFMul(_5915, as_type(_5966))); } else { _5980 = _5974; } uint _6030; if (_5976) { bool _5988 = _5976 && (9.9999997473787516355514526367188e-06 >= _5942); uint _5989; if (_5988) { _5989 = 0u; } else { _5989 = as_type(fma(_5934, as_type(_5965), fma(_5926, as_type(_5964), as_type(_5980)))); } bool _5991 = _5976 && (!_5988); uint _5996; if (_5991) { _5996 = as_type(spvFMul(as_type(_5989), as_type(_5989))); } else { _5996 = as_type(_5915); } uint _6029; if (_5991) { float _5999 = fma(_5941, _5942, -as_type(_5996)); bool _6002 = _5991 && (0.0 != _5999); uint _6012; if (_6002) { _6012 = as_type(fast::clamp(spvFMul(fma(_5961, as_type(_5989), -spvFMul(_5942, as_type(_5989))), 1.0 / _5999), 0.0, 1.0)); } else { _6012 = as_type(_5999); } uint _6015; if (_5991 && (!_6002)) { _6015 = 0u; } else { _6015 = _6012; } uint _6028; if (_5991 && (!(_5991 && (0.0 > spvFMul(fma(as_type(_5989), as_type(_6015), _5961), 1.0 / _5942))))) { _6028 = as_type((1.0 >= 0.0) ? 0.0 : 1.0); } else { _6028 = 0u; } _6029 = _6028; } else { _6029 = _5989; } _6030 = _6029; } else { _6030 = _5980; } _6046 = as_type(fma(as_type(_5966), as_type(_6030), as_type(_2727))); _6047 = as_type(fma(as_type(_5964), as_type(_6030), as_type(_2726))); _6048 = as_type(fma(as_type(_5965), as_type(_6030), as_type(_2725))); } else { _6046 = _5966; _6047 = _5964; _6048 = _5965; } float _6050 = spvFSub(_5924, as_type(_6048)); float _6052 = spvFSub(_5913, as_type(_6047)); float _6054 = spvFSub(_5909, as_type(_6046)); float _6057 = fma(_6050, _5956, fma(_6052, _5958, spvFMul(_5960, _6054))); float _6064 = fma(-as_type(cbuf_56.data[_5884]), as_type(cbuf_56.data[_5884]), fma(_6050, _6050, fma(_6052, _6052, spvFMul(_6054, _6054)))); bool _6069 = _5861 && ((_6057 > 0.0) && (0.0 < _6064)); uint _6070; if (_6069) { _6070 = 0u; } else { _6070 = cbuf_56.data[_5884]; } bool _6072 = _5861 && (!_6069); uint _6076; if (_6072) { _6076 = as_type(fma(_6057, _6057, -_6064)); } else { _6076 = as_type(_6064); } uint _6100; uint _6101; uint _6102; uint _6103; if (_6072) { bool _6079 = _6072 && (0.0 > as_type(_6076)); uint _6080; if (_6079) { _6080 = 0u; } else { _6080 = _6070; } bool _6082 = _6072 && (!_6079); uint _6083; if (_6082) { _6083 = 1u; } else { _6083 = _6080; } uint _6097; uint _6098; uint _6099; if (_6082) { float _6088 = spvFAdd(-_6057, -sqrt(as_type(_6076))); float _6090 = (0.0 <= _6088) ? _6088 : 0.0; _6097 = as_type(fma(_5960, _6090, _5909)); _6098 = as_type(fma(_5958, _6090, _5913)); _6099 = as_type(fma(_5956, _6090, _5924)); } else { _6097 = _2677; _6098 = _2678; _6099 = _2679; } _6100 = _6097; _6101 = _6098; _6102 = _6099; _6103 = _6083; } else { _6100 = _2677; _6101 = _2678; _6102 = _2679; _6103 = _6070; } bool _6107 = _5861 && (!(_5861 && (0u == _6103))); if (_6107) { } uint _6111; if (_6107) { _6111 = as_type(1.0 / as_type(_5849)); } else { _6111 = _5849; } _6112 = _6100; _6113 = _6101; _6114 = _6102; _6115 = _6111; } else { _6112 = _2677; _6113 = _2678; _6114 = _2679; _6115 = _5849; } _6116 = _6112; _6117 = _6113; _6118 = _6114; _6119 = _6115; } else { _6116 = _2677; _6117 = _2678; _6118 = _2679; _6119 = _5849; } _6120 = _6116; _6121 = _6117; _6122 = _6118; _6123 = _6119; _6124 = 1065353216u; } else { _6120 = _2677; _6121 = _2678; _6122 = _2679; _6123 = _5849; _6124 = _5845; } _6125 = _5844; _6126 = _6120; _6127 = _6121; _6128 = _6122; _6129 = _6123; _6130 = _6124; } else { _6125 = _2680; _6126 = _2677; _6127 = _2678; _6128 = _2679; _6129 = _3513; _6130 = _3517; } _6131 = _6125; _6132 = _3510; _6133 = _3511; _6134 = _3512; _6135 = _6126; _6136 = _6127; _6137 = _6128; _6138 = _6129; _6139 = _6130; } else { _6131 = _2680; _6132 = _2693; _6133 = _2694; _6134 = _2695; _6135 = _2677; _6136 = _2678; _6137 = _2679; _6138 = _3146; _6139 = _3365; } bool _6141 = _3372 && (!_3376); uint _6146; if (_6141) { _6146 = as_type(spvFSub(as_type(_3098), as_type(_1312))); } else { _6146 = _6139; } uint _6165; if (_6141) { float _6149 = spvFSub(as_type(_3097), as_type(_1313)); float _6152 = spvFSub(as_type(_3096), as_type(_1314)); _6165 = as_type(spvFSub(1.0, fast::clamp(spvFMul(sqrt(fma(as_type(_6146), as_type(_6146), fma(_6149, _6149, spvFMul(_6152, _6152)))), 1.0 / as_type(_6138)), 0.0, 1.0))); } else { _6165 = _6146; } _6166 = _6131; _6167 = _6132; _6168 = _6133; _6169 = _6134; _6170 = _6135; _6171 = _6136; _6172 = _6137; _6173 = _6165; } else { _6166 = _2680; _6167 = _2693; _6168 = _2694; _6169 = _2695; _6170 = _2677; _6171 = _2678; _6172 = _2679; _6173 = _3365; } uint _6176; if (_3101 && (!_3372)) { _6176 = 1065353216u; } else { _6176 = _6173; } bool _6179 = _3101 && (0.0 < as_type(_3147)); bool _6180 = 1u == cbuf_56.data[_2733]; uint _6487; if (_6179) { bool _6181 = _6179 && _6180; uint _6228; uint _6229; uint _6230; uint _6231; bool _6232; uint _6233; if (_6181) { float _6191 = spvFSub(as_type(_1312), as_type(_3098)); float _6194 = spvFSub(as_type(_1313), as_type(_3097)); float _6198 = spvFSub(as_type(_1314), as_type(_3096)); float _6201 = fma(_6191, _6191, fma(_6194, _6194, spvFMul(_6198, _6198))); float _6206 = fast::max(0.0, spvFSub(sqrt(_6201), as_type(_3147))); float _6210 = spvFSub(as_type(cbuf_56.data[((0u + ((_2703 + 73u) * 16u)) + buf3_off) >> 2u]), as_type(_3147)); bool _6212 = 0.0 > _6210; bool _6213 = _6181 && _6212; uint _6214; if (_6213) { _6214 = 1065353216u; } else { _6214 = as_type(_6210); } uint _6223; if (_6181 && (!_6213)) { _6223 = as_type(spvFSub(1.0, fast::clamp(spvFMul(_6206, 1.0 / as_type(_6214)), 0.0, 1.0))); } else { _6223 = _6214; } _6228 = as_type(_6194); _6229 = as_type(_6206); _6230 = as_type(spvFMul(as_type(_6176), as_type(_6223))); _6231 = _6223; _6232 = _6212; _6233 = as_type(_6201); } else { _6228 = _2727; _6229 = _2726; _6230 = _6176; _6231 = _2725; _6232 = _6180; _6233 = cbuf_56.data[_2733]; } bool _6235 = _6179 && (!_6181); bool _6237; if (_6235) { _6237 = 2u == _6233; } else { _6237 = _6232; } uint _6486; if (_6235) { bool _6238 = _6235 && _6237; uint _6243; if (_6238) { _6243 = as_type(spvFSub(as_type(_1312), as_type(_3098))); } else { _6243 = _6231; } uint _6345; uint _6346; uint _6347; uint _6348; bool _6349; uint _6350; if (_6238) { float _6246 = spvFSub(as_type(_1313), as_type(_3097)); float _6249 = spvFSub(as_type(_1314), as_type(_3096)); float _6256 = fma(as_type(_6243), as_type(_3086), fma(_6246, as_type(_3085), spvFMul(as_type(_3084), _6249))); float _6260 = (_6256 > as_type(_3093)) ? as_type(_3093) : _6256; float _6266 = ((-as_type(_3093)) > _6260) ? (-as_type(_3093)) : _6260; float _6282 = fma(as_type(_6243), as_type(_3089), fma(_6246, as_type(_3088), spvFMul(as_type(_3087), _6249))); float _6286 = (_6282 > as_type(_3094)) ? as_type(_3094) : _6282; float _6292 = ((-as_type(_3094)) > _6286) ? (-as_type(_3094)) : _6286; float _6305 = fma(as_type(_6243), as_type(_3092), fma(_6246, as_type(_3091), spvFMul(as_type(_3090), _6249))); float _6309 = (_6305 > as_type(_3095)) ? as_type(_3095) : _6305; bool _6312 = (-as_type(_3095)) > _6309; float _6315 = _6312 ? (-as_type(_3095)) : _6309; float _6321 = fma(_6315, as_type(_3090), fma(_6292, as_type(_3087), fma(_6266, as_type(_3084), as_type(_3096)))); float _6324 = spvFSub(as_type(_1312), fma(_6315, as_type(_3092), fma(_6292, as_type(_3089), fma(_6266, as_type(_3086), as_type(_3098))))); float _6326 = spvFSub(as_type(_1313), fma(_6315, as_type(_3091), fma(_6292, as_type(_3088), fma(_6266, as_type(_3085), as_type(_3097))))); float _6328 = spvFSub(as_type(_1314), _6321); float _6331 = fma(_6324, _6324, fma(_6326, _6326, spvFMul(_6328, _6328))); float _6337 = 1.0 / as_type(_3147); float _6340 = fast::clamp(spvFMul(fast::max(9.9999997473787516355514526367188e-05, sqrt(_6331)), _6337), 0.0, 1.0); _6345 = as_type(spvFMul(as_type(_6230), _6340)); _6346 = as_type(_6331); _6347 = as_type(_6337); _6348 = as_type(_6340); _6349 = _6312; _6350 = as_type(_6321); } else { _6345 = _6230; _6346 = _6228; _6347 = _6229; _6348 = _6243; _6349 = _6237; _6350 = _6233; } bool _6352 = _6235 && (!_6238); bool _6354; if (_6352) { _6354 = 3u == _6350; } else { _6354 = _6349; } uint _6485; if (_6352) { bool _6355 = _6352 && _6354; uint _6484; if (_6355) { uint _6360 = ((0u + ((_2703 + 81u) * 16u)) + buf3_off) >> 2u; uint3 _6370 = uint3(cbuf_56.data[_6360 + 0u], cbuf_56.data[_6360 + 1u], cbuf_56.data[_6360 + 2u]); uint _6371 = _6370.x; uint _6372 = _6370.y; uint _6373 = _6370.z; float _6376 = spvFSub(as_type(_6371), as_type(_6348)); float _6379 = spvFSub(as_type(_6372), as_type(_6347)); float _6382 = spvFSub(as_type(_6373), as_type(_6346)); float _6386 = spvFSub(as_type(_1312), as_type(_6348)); float _6390 = spvFSub(as_type(_1313), as_type(_6347)); float _6393 = spvFSub(as_type(_1314), as_type(_6346)); float _6397 = spvFSub(as_type(_1312), as_type(_6371)); float _6400 = spvFSub(as_type(_1313), as_type(_6372)); float _6403 = spvFSub(as_type(_1314), as_type(_6373)); float _6406 = fma(_6386, _6376, fma(_6390, _6379, spvFMul(_6393, _6382))); bool _6408 = _6355 && (0.0 >= _6406); uint _6415; uint _6416; if (_6408) { float _6411 = fma(_6386, _6386, fma(_6390, _6390, spvFMul(_6393, _6393))); _6415 = as_type(sqrt(_6411)); _6416 = as_type(_6411); } else { _6415 = as_type(_6386); _6416 = as_type(_6393); } bool _6418 = _6355 && (!_6408); uint _6421; if (_6418) { _6421 = as_type(spvFMul(_6382, _6382)); } else { _6421 = as_type(_6382); } uint _6452; if (_6418) { float _6424 = fma(_6376, _6376, fma(_6379, _6379, as_type(_6421))); bool _6426 = _6418 && (_6406 >= _6424); uint _6432; if (_6426) { _6432 = as_type(sqrt(fma(_6397, _6397, fma(_6400, _6400, spvFMul(_6403, _6403))))); } else { _6432 = _6415; } bool _6434 = _6418 && (!_6426); uint _6439; if (_6434) { _6439 = as_type(spvFMul(as_type(_6416), as_type(_6416))); } else { _6439 = _6416; } uint _6451; if (_6434) { _6451 = as_type(sqrt(fma(-spvFMul(_6406, _6406), 1.0 / _6424, fma(as_type(_6432), as_type(_6432), fma(_6390, _6390, as_type(_6439)))))); } else { _6451 = _6432; } _6452 = _6451; } else { _6452 = _6415; } float _6467 = spvFSub(as_type(cbuf_56.data[((0u + ((_2703 + 73u) * 16u)) + buf3_off) >> 2u]), as_type(_3147)); bool _6469 = _6355 && (0.0 > _6467); uint _6470; if (_6469) { _6470 = 1065353216u; } else { _6470 = as_type(fast::max(0.0, spvFSub(as_type(_6452), as_type(_3147)))); } uint _6479; if (_6355 && (!_6469)) { _6479 = as_type(spvFSub(1.0, fast::clamp(spvFMul(as_type(_6470), 1.0 / _6467), 0.0, 1.0))); } else { _6479 = _6470; } _6484 = as_type(spvFMul(as_type(_6345), as_type(_6479))); } else { _6484 = _6345; } _6485 = _6484; } else { _6485 = _6345; } _6486 = _6485; } else { _6486 = _6230; } _6487 = _6486; } else { _6487 = _6176; } bool _6488 = 1u == _3166; bool _6489 = _3101 && _6488; float _6492 = spvFMul(as_type(_2165), as_type(_6487)); uint _6555; uint _6556; uint _6557; uint _6558; uint _6559; bool _6560; if (_6489) { float _6500 = spvFMul(as_type(cbuf_52.data[_1564]), spvFMul(as_type(_3370), _6492)); float _6502 = spvFMul(as_type(cbuf_52.data[_1564]), spvFMul(as_type(_3369), _6492)); float _6504 = spvFMul(as_type(cbuf_52.data[_1564]), spvFMul(as_type(_3363), _6492)); float _6508 = sqrt(fma(_6500, _6500, fma(_6502, _6502, spvFMul(_6504, _6504)))); float _6511 = spvFSub(as_type(_3098), as_type(_1312)); float _6514 = spvFSub(as_type(_3097), as_type(_1313)); float _6517 = spvFSub(as_type(_3096), as_type(_1314)); float _6521 = rsqrt(fma(_6511, _6511, fma(_6514, _6514, spvFMul(_6517, _6517)))); float _6522 = spvFMul(_6511, _6521); float _6523 = spvFMul(_6514, _6521); float _6524 = spvFMul(_6517, _6521); uint _6527 = uint(spvFAdd(_2650, as_type(_3145))); uint _6531 = ((spvMulExtended(_6527, 274877907u))._m1 >> 6u) * 1000u; float _6534 = spvFMul(0.001000000047497451305389404296875, float(_6527 - _6531)); bool _6539 = 0.0 > fma(as_type(_3148), _6534, as_type(_3145)); _6555 = _6531; _6556 = as_type(_6534); _6557 = as_type(fma(_6508, _6539 ? (-_6524) : _6524, as_type(_2674))); _6558 = as_type(fma(_6508, _6539 ? (-_6523) : _6523, as_type(_2675))); _6559 = as_type(fma(_6508, _6539 ? (-_6522) : _6522, as_type(_2676))); _6560 = _6539; } else { _6555 = _3097; _6556 = _3098; _6557 = _2674; _6558 = _2675; _6559 = _2676; _6560 = _6488; } bool _6562 = _3101 && (!_6489); bool _6564; if (_6562) { _6564 = 2u == _3166; } else { _6564 = _6560; } uint _6634; uint _6635; uint _6636; uint _6637; uint _6638; uint _6639; uint _6640; uint _6641; if (_6562) { uint _6626; uint _6627; uint _6628; uint _6629; uint _6630; uint _6631; uint _6632; uint _6633; if (_6562 && _6564) { uint _6571 = ((0u + ((_2703 + 89u) * 16u)) + buf3_off) >> 2u; uint3 _6581 = uint3(cbuf_56.data[_6571 + 0u], cbuf_56.data[_6571 + 1u], cbuf_56.data[_6571 + 2u]); float _6587 = spvFMul(as_type(_2165), as_type(_6487)); float _6589 = spvFMul(as_type(_3370), _6587); float _6592 = spvFMul(as_type(_3369), _6587); float _6603 = fma(as_type(cbuf_52.data[_1564]), _6589, fma(_2652, _2655, as_type(_6581.x))); float _6605 = fma(as_type(cbuf_52.data[_1564]), _6592, fma(_2656, _2659, as_type(_6581.y))); float _6607 = fma(as_type(cbuf_52.data[_1564]), spvFMul(as_type(_3363), _6587), fma(_2660, _2663, as_type(_6581.z))); _6626 = as_type(_6592); _6627 = as_type(_6589); _6628 = as_type(fast::max(as_type(_2668), _6607)); _6629 = as_type(fast::max(as_type(_2669), _6605)); _6630 = as_type(fast::max(as_type(_2670), _6603)); _6631 = as_type(fast::min(as_type(_2671), _6607)); _6632 = as_type(fast::min(as_type(_2672), _6605)); _6633 = as_type(fast::min(as_type(_2673), _6603)); } else { _6626 = _6555; _6627 = _6556; _6628 = _2668; _6629 = _2669; _6630 = _2670; _6631 = _2671; _6632 = _2672; _6633 = _2673; } _6634 = _6626; _6635 = _6627; _6636 = _6628; _6637 = _6629; _6638 = _6630; _6639 = _6631; _6640 = _6632; _6641 = _6633; } else { _6634 = _6555; _6635 = _6556; _6636 = _2668; _6637 = _2669; _6638 = _2670; _6639 = _2671; _6640 = _2672; _6641 = _2673; } _6644 = _6487; _6645 = _6166; _6646 = as_type(spvFAdd(as_type(_2698), _3242)); _6647 = as_type(_3246); _6648 = _6634; _6649 = _6635; _6650 = _6167; _6651 = _6168; _6652 = _6169; _6653 = _6170; _6654 = _6171; _6655 = _6172; _6656 = _6557; _6657 = _6558; _6658 = _6559; _6659 = _6636; _6660 = _6637; _6661 = _6638; _6662 = _6639; _6663 = _6640; _6664 = _6641; _6665 = as_type(_3246); } else { _6644 = _3083; _6645 = _2680; _6646 = _2698; _6647 = _2699; _6648 = _3097; _6649 = _3098; _6650 = _2693; _6651 = _2694; _6652 = _2695; _6653 = _2677; _6654 = _2678; _6655 = _2679; _6656 = _2674; _6657 = _2675; _6658 = _2676; _6659 = _2668; _6660 = _2669; _6661 = _2670; _6662 = _2671; _6663 = _2672; _6664 = _2673; _6665 = _3099; } _6666 = _2703 + 1u; if (true) { _2667 = _6644; _2668 = _6659; _2669 = _6660; _2670 = _6661; _2671 = _6662; _2672 = _6663; _2673 = _6664; _2674 = _6656; _2675 = _6657; _2676 = _6658; _2677 = _6653; _2678 = _6654; _2679 = _6655; _2680 = _6645; _2681 = _3084; _2682 = _3085; _2683 = _3086; _2684 = _3087; _2685 = _3088; _2686 = _3089; _2687 = _3090; _2688 = _3091; _2689 = _3092; _2690 = _3093; _2691 = _3094; _2692 = _3095; _2693 = _6650; _2694 = _6651; _2695 = _6652; _2696 = _3096; _2697 = _6648; _2698 = _6646; _2699 = _6647; _2700 = _6665; _2701 = _6649; _2702 = _2708; _2703 = _6666; continue; } else { _6667 = _6644; _6668 = _6656; _6669 = _6657; _6670 = _6658; _6671 = _6659; _6672 = _6662; _6673 = _6660; _6674 = _6663; _6675 = _6661; _6676 = _6664; _6677 = _6646; _6678 = _6647; break; } } float _6686 = (1.0 < as_type(_6678)) ? spvFMul(as_type(_6677), 1.0 / as_type(_6678)) : as_type(_6677); float _6689 = spvFAdd(as_type(_6676), as_type(_6675)); uint _6690 = as_type(_6689); float _6693 = spvFAdd(as_type(_6674), as_type(_6673)); uint _6694 = as_type(_6693); float _6697 = spvFAdd(as_type(_6672), as_type(_6671)); uint _6698 = as_type(_6697); uint _6700 = 180u + buf2_dword_off; uint _6704 = 181u + buf2_dword_off; uint _6839; uint _6840; uint _6841; if (int(cbuf_52.data[_6704]) > int(0u)) { float _6711 = float(int(cbuf_52.data[31u + buf2_dword_off])); float _6715 = 1.0 / float(int(cbuf_52.data[_6700])); bool _6717 = int(cbuf_52.data[_6700]) <= int(1u); bool _6729 = _1286 && ((abs(as_type(_2164)) > 0.0) && (int(uint(int(_6717 ? 1.0 : spvFMul(spvFMul(_1571, _6711), _6715)))) > int(uint(int(_6717 ? 0.0 : spvFMul(spvFMul(_1563, _6711), _6715)))))); uint _6732; if (_6729) { _6732 = as_type(spvFMul(_1577, _6711)); } else { _6732 = as_type(_6711); } uint _6836; uint _6837; uint _6838; if (_6729) { uint _6741 = uint(int(fma(as_type(cbuf_52.data[_1567]), 10.0, float(gl_LocalInvocationID.x + (uint(int(as_type(_6732))) + (_1272 + _1276)))))); uint _6747 = 1048575u & ((_6741 * 6389u) + 7381u); uint _6749 = uint(max(int(_6747), int(0u - _6747))); uint _6754 = _6749 - (((spvMulExtended(_6749, 274877907u))._m1 >> 6u) * 1000u); float _6768 = spvFSub(spvFMul(spvFMul(as_type(_2164), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6747)) ? as_type(0u - _6754) : as_type(_6754)))))), 2.0), as_type(_2164)); uint _6773 = 1048575u & (((gl_LocalInvocationID.x + _6741) * 6389u) + 7381u); uint _6775 = uint(max(int(_6773), int(0u - _6773))); uint _6780 = _6775 - (((spvMulExtended(_6775, 274877907u))._m1 >> 6u) * 1000u); float _6793 = spvFSub(spvFMul(spvFMul(as_type(_2164), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6773)) ? as_type(0u - _6780) : as_type(_6780)))))), 2.0), as_type(_2164)); uint _6800 = (2147483648u & as_type(_6768)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6768)))); float _6803 = sin(6.283185482025146484375 * as_type(_6800)); float _6806 = cos(6.283185482025146484375 * as_type(_6800)); uint _6812 = (2147483648u & as_type(_6793)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6793)))); float _6815 = sin(6.283185482025146484375 * as_type(_6812)); float _6818 = cos(6.283185482025146484375 * as_type(_6812)); float _6819 = spvFMul(_6803, _6815); _6836 = as_type(fma(-_6815, _6689, fma(spvFMul(_6803, _6818), _6693, spvFMul(_6697, spvFMul(_6806, _6818))))); _6837 = as_type(fma(_6689, 0.0, fma(_6806, _6693, spvFMul(_6697, -_6803)))); _6838 = as_type(fma(_6818, _6689, fma(_6819, _6693, spvFMul(_6697, _6819)))); } else { _6836 = _6698; _6837 = _6694; _6838 = _6690; } _6839 = _6836; _6840 = _6837; _6841 = _6838; } else { _6839 = _6698; _6840 = _6694; _6841 = _6690; } float _6844 = spvFAdd(as_type(_6670), as_type(_6841)); float _6847 = spvFAdd(as_type(_6669), as_type(_6840)); float _6850 = spvFAdd(as_type(_6668), as_type(_6839)); float _6852 = spvFMul(as_type(_2163), _6844); float _6854 = spvFMul(as_type(_2163), _6847); float _6856 = spvFMul(as_type(_2163), _6850); float _6859 = fma(as_type(_2162), as_type(cbuf_52.data[_1564]), _1515); uint _6860 = as_type(_6859); float _6866 = fma(as_type(_2160), as_type(cbuf_52.data[_1564]), float(as_type(ushort(_1354)))); uint _6867 = as_type(_6866); float _6870 = fma(as_type(cbuf_52.data[_1564]), as_type(_2159), fma(as_type(cbuf_52.data[_1564]), as_type(_2161), float(as_type(ushort(_1353 >> 16u))))); uint _6871 = as_type(_6870); uint _7000; uint _7001; uint _7002; if (int(cbuf_52.data[_6704]) > int(0u)) { float _6876 = float(int(cbuf_52.data[31u + buf2_dword_off])); float _6879 = 1.0 / float(int(cbuf_52.data[_6700])); bool _6881 = int(cbuf_52.data[_6700]) <= int(1u); uint _6887 = uint(int(_6881 ? 0.0 : spvFMul(spvFMul(_1563, _6876), _6879))); bool _6893 = _1286 && ((abs(as_type(_2164)) > 0.0) && (int(uint(int(_6881 ? 1.0 : spvFMul(spvFMul(_1571, _6876), _6879)))) > int(_6887))); uint _6899; if (_6893) { _6899 = as_type(spvFMul(fast::max(as_type(_2164), as_type(_2164)), 2.0)); } else { _6899 = _6887; } uint _6997; uint _6998; uint _6999; if (_6893) { uint _6908 = uint(int(fma(as_type(cbuf_52.data[_1567]), 10.0, float(gl_LocalInvocationID.x + ((_1272 + _1276) + uint(int(spvFMul(_1577, _6876)))))))); uint _6911 = 1048575u & ((_6908 * 6389u) + 7381u); uint _6913 = uint(max(int(_6911), int(0u - _6911))); uint _6918 = _6913 - (((spvMulExtended(_6913, 274877907u))._m1 >> 6u) * 1000u); float _6930 = fma(as_type(_6899), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6911)) ? as_type(0u - _6918) : as_type(_6918))))), -as_type(_2164)); uint _6935 = 1048575u & (((gl_LocalInvocationID.x + _6908) * 6389u) + 7381u); uint _6937 = uint(max(int(_6935), int(0u - _6935))); uint _6942 = _6937 - (((spvMulExtended(_6937, 274877907u))._m1 >> 6u) * 1000u); float _6954 = fma(as_type(_6899), spvFMul(0.001000000047497451305389404296875, float(int(as_type((int(0u) > int(_6935)) ? as_type(0u - _6942) : as_type(_6942))))), -as_type(_2164)); uint _6961 = (2147483648u & as_type(_6930)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6930)))); float _6964 = sin(6.283185482025146484375 * as_type(_6961)); float _6967 = cos(6.283185482025146484375 * as_type(_6961)); uint _6973 = (2147483648u & as_type(_6954)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _6954)))); float _6976 = sin(6.283185482025146484375 * as_type(_6973)); float _6979 = cos(6.283185482025146484375 * as_type(_6973)); float _6980 = spvFMul(_6964, _6976); _6997 = as_type(fma(-_6976, _6859, fma(spvFMul(_6964, _6979), _6870, spvFMul(_6866, spvFMul(_6967, _6979))))); _6998 = as_type(fma(_6859, 0.0, fma(_6967, _6870, spvFMul(_6866, -_6964)))); _6999 = as_type(fma(_6979, _6859, fma(_6980, _6870, spvFMul(_6866, _6980)))); } else { _6997 = _6867; _6998 = _6871; _6999 = _6860; } _7000 = _6997; _7001 = _6998; _7002 = _6999; } else { _7000 = _6867; _7001 = _6871; _7002 = _6860; } uint _7015 = 192u + buf2_dword_off; uint _7019 = 193u + buf2_dword_off; uint _7027 = 195u + buf2_dword_off; float _7071 = fma(as_type(cbuf_52.data[_1564]), as_type(_2155), float(as_type(ushort(_1375)))); float _7074 = fma(as_type(cbuf_52.data[_1564]), as_type(_2154), float(as_type(ushort(_1375 >> 16u)))); float _7077 = fma(as_type(cbuf_52.data[_1564]), as_type(_2153), float(as_type(ushort(_1376)))); float _7086 = fma(as_type(cbuf_52.data[_1564]), as_type(_2158), float(as_type(ushort(_1410)))); float _7089 = fma(as_type(cbuf_52.data[_1564]), as_type(_2157), float(as_type(ushort(_1410 >> 16u)))); float _7092 = fma(as_type(cbuf_52.data[_1564]), as_type(_2156), float(as_type(ushort(_1411)))); uint _7120 = as_type(fma(as_type(cbuf_52.data[8u + buf2_dword_off]), as_type(cbuf_52.data[_7015]), fma(as_type(cbuf_52.data[_1564]), fma(_6686, _6852, as_type(_7002)), as_type(_1312)))); uint _7124 = as_type(fma(as_type(cbuf_52.data[9u + buf2_dword_off]), as_type(cbuf_52.data[_7015]), fma(as_type(cbuf_52.data[_1564]), fma(_6686, _6854, as_type(_7001)), as_type(_1313)))); uint _7128 = as_type(fma(as_type(cbuf_52.data[10u + buf2_dword_off]), as_type(cbuf_52.data[_7015]), fma(as_type(cbuf_52.data[_1564]), fma(_6686, _6856, as_type(_7000)), as_type(_1314)))); float _7136 = fma(as_type(cbuf_52.data[_1564]), _7086, float(as_type(ushort(_1395)))); float _7139 = fma(as_type(cbuf_52.data[_1564]), _7089, float(as_type(ushort(_1395 >> 16u)))); float _7142 = fma(as_type(cbuf_52.data[_1564]), _7092, float(as_type(ushort(_1396)))); uint _7149; uint _7150; if (_1286 && (0.0 < _1541)) { float _7146 = spvFMul(spvFAdd(_7136, _7139), 0.5); _7149 = as_type(_7146); _7150 = as_type(_7146); } else { _7149 = as_type(_7136); _7150 = as_type(_7139); } uint _7152 = 224u + buf2_dword_off; uint _7156 = 225u + buf2_dword_off; uint _7160 = 226u + buf2_dword_off; uint _7164 = 227u + buf2_dword_off; uint _7168 = 216u + buf2_dword_off; uint _7172 = 217u + buf2_dword_off; uint _7176 = 218u + buf2_dword_off; uint _7180 = 219u + buf2_dword_off; uint _7184 = 220u + buf2_dword_off; uint _7188 = 221u + buf2_dword_off; uint _7192 = 222u + buf2_dword_off; uint _7196 = 223u + buf2_dword_off; uint _7200 = 244u + buf2_dword_off; uint _7204 = 245u + buf2_dword_off; uint _7208 = 246u + buf2_dword_off; uint _7212 = 247u + buf2_dword_off; uint _7216 = 232u + buf2_dword_off; uint _7220 = 233u + buf2_dword_off; uint _7224 = 234u + buf2_dword_off; uint _7228 = 235u + buf2_dword_off; uint _7232 = 236u + buf2_dword_off; uint _7236 = 237u + buf2_dword_off; uint _7240 = 238u + buf2_dword_off; uint _7244 = 239u + buf2_dword_off; float _7249 = spvFMul(as_type(cbuf_52.data[194u + buf2_dword_off]), as_type(_2147)); float _7285 = fma(as_type(cbuf_52.data[_7152]), as_type(_1312), fma(as_type(cbuf_52.data[_7156]), as_type(_1313), fma(as_type(cbuf_52.data[_7160]), as_type(_1314), as_type(cbuf_52.data[_7164])))); float _7291 = fma(as_type(cbuf_52.data[_7184]), as_type(_1312), fma(as_type(cbuf_52.data[_7188]), as_type(_1313), fma(as_type(cbuf_52.data[_7192]), as_type(_1314), as_type(cbuf_52.data[_7196])))); float _7297 = fma(as_type(cbuf_52.data[_7168]), as_type(_1312), fma(as_type(cbuf_52.data[_7172]), as_type(_1313), fma(as_type(cbuf_52.data[_7176]), as_type(_1314), as_type(cbuf_52.data[_7180])))); float _7316 = 1.0 / fma(as_type(cbuf_52.data[_7200]), _7297, fma(as_type(cbuf_52.data[_7204]), _7291, fma(as_type(cbuf_52.data[_7208]), _7285, as_type(cbuf_52.data[_7212])))); uint _7317 = cbuf_52.data[176u + buf2_dword_off] + 4294967295u; uint _7318 = cbuf_52.data[177u + buf2_dword_off] + 4294967295u; float _7321 = float(int(_7317)); float _7322 = float(int(_7318)); uint _7353 = 5u + buf2_dword_off; uint _7356 = 6u + buf2_dword_off; uint _7359 = 7u + buf2_dword_off; uint _7421 = uint(int(spvFMul(_1577, float(int(cbuf_52.data[31u + buf2_dword_off]))))); uint _7452 = as_type(half2(float2(as_type(_2532), 0.0))); uint _7469 = (_1396 >> 16u) << 16u; uint _7471 = as_type(half2(float2(fma(spvFMul(as_type(cbuf_52.data[_7019]), as_type(cbuf_52.data[12u + buf2_dword_off])), as_type(_2152), fma(as_type(cbuf_52.data[_1564]), _7071, float(as_type(ushort(_1373))))), 0.0))) | (as_type(half2(float2(fma(spvFMul(as_type(cbuf_52.data[_7019]), as_type(cbuf_52.data[13u + buf2_dword_off])), as_type(_2152), fma(as_type(cbuf_52.data[_1564]), _7074, float(as_type(ushort(_1373 >> 16u))))), 0.0))) << 16u); uint _7472 = as_type(half2(float2(_7071, 0.0))) | (as_type(half2(float2(_7074, 0.0))) << 16u); uint _7473 = as_type(half2(float2(fma(_7249, spvFSub(as_type(cbuf_52.data[16u + buf2_dword_off]), as_type(_7149)), as_type(_7149)), 0.0))) | (as_type(half2(float2(fma(_7249, spvFSub(as_type(cbuf_52.data[17u + buf2_dword_off]), as_type(_7150)), as_type(_7150)), 0.0))) << 16u); uint _7474 = as_type(half2(float2(fma(_7249, spvFSub(as_type(cbuf_52.data[18u + buf2_dword_off]), _7142), _7142), 0.0))) | (4294901760u & _1394.w); uint _7475 = as_type(half2(float2(_7086, 0.0))) | (as_type(half2(float2(_7089, 0.0))) << 16u); uint _7476 = as_type(half2(float2(_7092, 0.0))) | (4294901760u & _1411); uint _7477 = as_type(half2(float2(as_type(_2534), 0.0))) | (as_type(half2(float2(as_type(_2533), 0.0))) << 16u); uint _7478 = _7452 | (as_type(half2(float2(as_type(_2531), 0.0))) << 16u); uint _7479 = as_type(half2(float2(spvFSub(1.0, spvFSub(1.0, fast::clamp(spvFMul(fma(spvFMul(_1609, spvFMul(_1610, -_1610)), _1615, _1609), _1636), 0.0, 1.0))), 0.0))) | (as_type(half2(float2(as_type(_2535), 0.0))) << 16u); uint _7480 = as_type(half2(float2(_6852, 0.0))) | (as_type(half2(float2(_6854, 0.0))) << 16u); uint _7481 = as_type(half2(float2(_6856, 0.0))) | (4294901760u & _1490); uint _7482 = as_type(half2(float2(spvFMul(0.550000011920928955078125, as_type(_7149)), 0.0))) | (as_type(half2(float2(spvFMul(0.550000011920928955078125, as_type(_7150)), 0.0))) << 16u); uint _7483 = as_type(half2(float2(spvFMul(0.550000011920928955078125, _7142), 0.0))) | _7469; uint _7484 = gl_LocalInvocationID.x + ((_1272 + _1276) + _7421); float _7504 = 1.0 / fma(as_type(cbuf_52.data[_7356]), as_type(as_type(cs_img16.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_7317), int(uint(int(spvFMul(_7321, fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_7216]), _7297, fma(as_type(cbuf_52.data[_7220]), _7291, fma(as_type(cbuf_52.data[_7224]), _7285, as_type(cbuf_52.data[_7228])))), _7316), 0.5)))))))))), uint(max(int(0u), int(uint(min(int(_7318), int(uint(int(spvFMul(_7322, fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_7232]), _7297, fma(as_type(cbuf_52.data[_7236]), _7291, fma(as_type(cbuf_52.data[_7240]), _7285, as_type(cbuf_52.data[_7244])))), _7316), 0.5)))))))))))), 0u)).x), as_type(cbuf_52.data[_7353])); uint _7505 = cbuf_52.data[178u + buf2_dword_off] + 4294967295u; uint _7506 = cbuf_52.data[179u + buf2_dword_off] + 4294967295u; uint _7508 = 580u + buf3_dword_off; uint _7512 = 174u + buf2_dword_off; uint _7516 = 175u + buf2_dword_off; uint _7520 = 185u + buf2_dword_off; uint _7524 = 200u + buf2_dword_off; uint _7528 = 201u + buf2_dword_off; uint _7532 = 202u + buf2_dword_off; uint _7536 = 203u + buf2_dword_off; uint _7540 = 204u + buf2_dword_off; uint _7544 = 205u + buf2_dword_off; uint _7548 = 206u + buf2_dword_off; uint _7552 = 207u + buf2_dword_off; uint _7556 = 208u + buf2_dword_off; uint _7560 = 209u + buf2_dword_off; uint _7564 = 210u + buf2_dword_off; uint _7568 = 211u + buf2_dword_off; float _7573 = fma(as_type(cbuf_52.data[_7027]), spvFSub(as_type(cbuf_52.data[20u + buf2_dword_off]), as_type(_2151)), as_type(_2151)); float _7576 = fma(as_type(cbuf_52.data[_7027]), spvFSub(as_type(cbuf_52.data[21u + buf2_dword_off]), as_type(_2150)), as_type(_2150)); float _7579 = fma(as_type(cbuf_52.data[_7027]), spvFSub(as_type(cbuf_52.data[22u + buf2_dword_off]), as_type(_2149)), as_type(_2149)); float _7582 = fma(as_type(cbuf_52.data[_7027]), spvFSub(as_type(cbuf_52.data[23u + buf2_dword_off]), as_type(_2148)), as_type(_2148)); uint _7583 = as_type(half2(float2(fma(spvFMul(as_type(cbuf_52.data[_7019]), as_type(cbuf_52.data[14u + buf2_dword_off])), as_type(_2152), fma(as_type(cbuf_52.data[_1564]), _7077, float(as_type(ushort(_1374))))), 0.0))) | (4294901760u & _1374); uint _7584 = as_type(half2(float2(_7077, 0.0))) | (4294901760u & _1376); uint _7589 = (65535u & _2401) | ((~65535u) & _1509); uint _7590 = extract_bits(_1510, 0u, 16u) | (_2400 << 16u); float _7592 = spvFMul(as_type(cbuf_52.data[_7359]), _7504); float _7595 = spvFMul(as_type(cbuf_52.data[_7353]), 0.800000011920928955078125); float _7596 = float(int(_7505)); float _7597 = float(int(_7506)); uint _7598 = as_type(_1571); uint _7599 = as_type(_1560); bool _7624; bool _7623; uint _11131; uint _11132; uint _11133; uint _11134; uint _11135; uint _11136; uint _11137; uint _11138; uint _11139; uint _11140; uint _11141; uint _11142; uint _11143; uint _11144; uint _11145; uint _11146; uint _11147; uint _11148; uint _11149; uint _11150; uint _11151; uint _11152; uint _11153; uint _11154; uint _11155; uint _7600 = _7598; uint _7601 = _7599; uint _7602 = _1543; uint _7603 = _7000; uint _7604 = _7001; uint _7605 = _7002; uint _7606 = _1572; uint _7607 = _7452; uint _7608 = _1542; uint _7609 = _1516; uint _7610 = _6667; uint _7611 = _7128; uint _7612 = _7124; uint _7613 = _7120; bool _7614 = _1286; bool _7615 = _1286; uint _7616 = 0u; for (;;) { bool _7619 = _7615 && (!(int(cbuf_56.data[_7508]) > int(_7616))); if (_7619) { bool _7621 = _7614 && (!_7619); if (!_7621) { _11146 = _7611; _11147 = _7612; _11148 = _7613; _11149 = _7603; _11150 = _7604; _11151 = _7605; _11152 = _7616; _11153 = _7600; _11154 = _7601; _11155 = _7602; break; } else { _7623 = _7621; } } else { _7623 = _7614; } _7624 = _7615 && _7623; uint _7630 = ((0u + ((_7616 + 146u) * 16u)) + buf3_off) >> 2u; uint3 _7640 = uint3(cbuf_56.data[_7630 + 0u], cbuf_56.data[_7630 + 1u], cbuf_56.data[_7630 + 2u]); uint _7641 = _7640.x; bool _7643 = 0u == _7641; bool _7644 = _7624 && _7643; uint _7646; if (_7644) { _7646 = _7616 + 1u; } else { _7646 = _7616; } bool _7648 = _7624 && (!_7644); bool _7650; if (_7648) { _7650 = 1u == _7641; } else { _7650 = _7643; } if (_7648) { bool _7651 = _7648 && _7650; uint _7654; if (_7651) { _7654 = _7646 + 154u; } else { _7654 = _7641; } uint _7730; uint _7731; uint _7732; uint _7733; uint _7734; bool _7735; uint _7736; if (_7651) { uint _7658 = ((0u + (_7654 * 16u)) + buf3_off) >> 2u; uint3 _7668 = uint3(cbuf_56.data[_7658 + 0u], cbuf_56.data[_7658 + 1u], cbuf_56.data[_7658 + 2u]); uint _7669 = _7668.x; uint _7670 = _7668.y; uint _7671 = _7668.z; uint _7677 = ((0u + ((_7646 + 162u) * 16u)) + buf3_off) >> 2u; float _7682 = spvFSub(as_type(_7671), as_type(_7611)); float _7685 = spvFSub(as_type(_7670), as_type(_7612)); float _7689 = spvFSub(as_type(_7669), as_type(_7613)); float _7692 = sqrt(fma(_7689, _7689, fma(_7685, _7685, spvFMul(_7682, _7682)))); bool _7694 = as_type(cbuf_56.data[_7677]) > _7692; bool _7695 = _7651 && _7694; uint _7696; if (_7695) { _7696 = 1u; } else { _7696 = _7608; } uint _7723; uint _7724; uint _7725; uint _7726; if (_7695) { float _7706 = 1.0 / _7692; float _7707 = spvFMul(spvFSub(as_type(_7613), as_type(_7669)), _7706); _7723 = as_type(_7707); _7724 = as_type(fma(as_type(cbuf_56.data[_7677]), spvFMul(spvFSub(as_type(_7611), as_type(_7671)), _7706), as_type(_7671))); _7725 = as_type(fma(as_type(cbuf_56.data[_7677]), spvFMul(spvFSub(as_type(_7612), as_type(_7670)), _7706), as_type(_7670))); _7726 = as_type(fma(as_type(cbuf_56.data[_7677]), _7707, as_type(_7669))); } else { _7723 = _7606; _7724 = _7611; _7725 = _7612; _7726 = _7613; } uint _7729; if (_7651 && (!_7695)) { _7729 = 0u; } else { _7729 = _7696; } _7730 = _7723; _7731 = _7729; _7732 = _7724; _7733 = _7725; _7734 = _7726; _7735 = _7694; _7736 = cbuf_56.data[_7677]; } else { _7730 = _7606; _7731 = _7608; _7732 = _7611; _7733 = _7612; _7734 = _7613; _7735 = _7650; _7736 = _7654; } bool _7738 = _7648 && (!_7651); bool _7740; if (_7738) { _7740 = 3u == _7736; } else { _7740 = _7735; } uint _10741; uint _10742; uint _10743; uint _10744; uint _10745; uint _10746; uint _10747; uint _10748; uint _10749; uint _10750; uint _10751; if (_7738) { bool _7741 = _7738 && _7740; uint _7743; if (_7741) { _7743 = _7646 + 154u; } else { _7743 = _7736; } uint _10161; uint _10162; uint _10163; uint _10164; uint _10165; uint _10166; uint _10167; bool _10168; uint _10169; if (_7741) { uint _7746 = _7646 << 2u; uint _7755 = ((0u + (_7743 * 16u)) + buf3_off) >> 2u; uint3 _7765 = uint3(cbuf_56.data[_7755 + 0u], cbuf_56.data[_7755 + 1u], cbuf_56.data[_7755 + 2u]); uint _7766 = _7765.x; uint _7767 = _7765.y; uint _7768 = _7765.z; uint _7772 = ((0u + ((_7646 + 170u) * 16u)) + buf3_off) >> 2u; uint3 _7782 = uint3(cbuf_56.data[_7772 + 0u], cbuf_56.data[_7772 + 1u], cbuf_56.data[_7772 + 2u]); uint _7783 = _7782.x; uint _7784 = _7782.y; uint _7785 = _7782.z; uint _7789 = ((0u + ((_7746 + 186u) * 16u)) + buf3_off) >> 2u; uint3 _7799 = uint3(cbuf_56.data[_7789 + 0u], cbuf_56.data[_7789 + 1u], cbuf_56.data[_7789 + 2u]); uint _7800 = _7799.x; uint _7801 = _7799.y; uint _7802 = _7799.z; uint _7806 = ((0u + ((_7746 + 187u) * 16u)) + buf3_off) >> 2u; uint3 _7816 = uint3(cbuf_56.data[_7806 + 0u], cbuf_56.data[_7806 + 1u], cbuf_56.data[_7806 + 2u]); uint _7817 = _7816.x; uint _7818 = _7816.y; uint _7819 = _7816.z; uint _7823 = ((0u + ((_7746 + 188u) * 16u)) + buf3_off) >> 2u; uint3 _7833 = uint3(cbuf_56.data[_7823 + 0u], cbuf_56.data[_7823 + 1u], cbuf_56.data[_7823 + 2u]); uint _7834 = _7833.x; uint _7835 = _7833.y; uint _7836 = _7833.z; float _7839 = spvFSub(as_type(_7783), as_type(_7766)); float _7842 = spvFAdd(as_type(_7766), as_type(_7783)); float _7846 = spvFMul(fast::max(abs(_7839), abs(_7839)), 0.5); float _7850 = spvFAdd(as_type(_7767), as_type(_7784)); float _7853 = spvFAdd(as_type(_7768), as_type(_7785)); float _7859 = spvFSub(as_type(_7784), as_type(_7767)); float _7862 = spvFSub(as_type(_7785), as_type(_7768)); float _7864 = spvFMul(as_type(_7800), _7846); float _7866 = spvFMul(as_type(_7801), _7846); float _7874 = spvFMul(fast::max(abs(_7859), abs(_7859)), 0.5); float _7878 = spvFMul(fast::max(abs(_7862), abs(_7862)), 0.5); float _7880 = spvFMul(as_type(_7802), _7846); float _7881 = fma(_7842, 0.5, _7864); float _7882 = fma(_7850, 0.5, _7866); float _7885 = fma(-as_type(_7800), _7846, spvFMul(fast::max(_7842, _7842), 0.5)); float _7886 = fma(_7853, 0.5, _7880); float _7888 = fma(_7874, as_type(_7817), _7881); float _7890 = fma(_7874, as_type(_7818), _7882); float _7893 = fma(-as_type(_7801), _7846, spvFMul(fast::max(_7850, _7850), 0.5)); float _7896 = fma(-as_type(_7802), _7846, spvFMul(fast::max(_7853, _7853), 0.5)); float _7902 = fma(_7874, as_type(_7819), _7886); float _7904 = fma(_7878, as_type(_7834), _7888); float _7906 = fma(_7878, as_type(_7835), _7890); float _7911 = fma(-as_type(_7818), _7874, fma(_7878, as_type(_7835), _7882)); float _7918 = fma(-as_type(_7817), _7874, fma(_7878, as_type(_7834), _7885)); float _7920 = fma(_7878, as_type(_7836), _7902); float _7925 = fma(-as_type(_7817), _7874, fma(_7878, as_type(_7834), _7881)); float _7928 = fma(-as_type(_7818), _7874, fma(_7878, as_type(_7835), _7893)); float _7931 = fma(-as_type(_7819), _7874, fma(_7878, as_type(_7836), _7896)); float _7932 = spvFSub(_7911, _7906); uint _7933 = as_type(_7932); float _7934 = spvFSub(_7918, _7904); float _7938 = fma(-as_type(_7819), _7874, fma(_7878, as_type(_7836), _7886)); float _7939 = spvFSub(_7925, _7904); float _7941 = spvFSub(_7928, _7906); float _7943 = spvFSub(_7931, _7920); float _7945 = spvFSub(_7938, _7920); float _7948 = spvFSub(as_type(_7732), as_type(_1314)); float _7951 = fma(_7939, _7941, -spvFMul(_7932, _7934)); float _7954 = spvFSub(as_type(_7733), as_type(_1313)); float _7957 = fma(_7945, _7934, -spvFMul(_7939, _7943)); uint _7958 = as_type(_7957); float _7962 = spvFSub(as_type(_7734), as_type(_1312)); float _7964 = fma(_7932, _7943, -spvFMul(_7945, _7941)); float _7967 = fma(_7874, as_type(_7817), _7885); float _7970 = fma(_7874, as_type(_7818), _7893); float _7972 = fma(_7874, as_type(_7819), _7896); float _7973 = fma(_7962, _7964, fma(_7954, _7957, spvFMul(_7948, _7951))); float _7981 = fma(_7878, as_type(_7834), _7967); float _7983 = fma(_7878, as_type(_7835), _7970); float _7985 = fma(_7878, as_type(_7836), _7972); bool _7987 = _7741 && (0.0 >= _7973); uint _7988; uint _7989; uint _7990; uint _7991; if (_7987) { _7988 = 0u; _7989 = 0u; _7990 = 0u; _7991 = 0u; } else { _7988 = _7731; _7989 = _7609; _7990 = as_type(_7939); _7991 = as_type(_7941); } bool _7993 = _7741 && (!_7987); uint _7997; if (_7993) { _7997 = as_type(spvFSub(as_type(_7734), _7904)); } else { _7997 = _7610; } uint _8113; uint _8114; uint _8115; uint _8116; uint _8117; uint _8118; if (_7993) { float _7999 = spvFSub(as_type(_7733), _7906); float _8001 = spvFSub(as_type(_7732), _7920); float _8005 = fma(as_type(_7997), _7964, fma(_7999, _7957, spvFMul(_7951, _8001))); bool _8006 = 0.0 > _8005; bool _8007 = _7993 && _8006; uint _8008; uint _8009; uint _8010; uint _8011; if (_8007) { _8008 = 0u; _8009 = 0u; _8010 = 0u; _8011 = 0u; } else { _8008 = _7988; _8009 = _7989; _8010 = _7990; _8011 = _7991; } bool _8013 = _7993 && (!_8007); bool _8015; if (_8013) { _8015 = _8005 > _7973; } else { _8015 = _8006; } uint _8107; uint _8108; uint _8109; uint _8110; uint _8111; uint _8112; if (_8013) { bool _8016 = _8013 && _8015; uint _8017; uint _8018; uint _8019; uint _8020; if (_8016) { _8017 = 0u; _8018 = 0u; _8019 = 0u; _8020 = 0u; } else { _8017 = _8008; _8018 = _8009; _8019 = _8010; _8020 = _8011; } bool _8022 = _8013 && (!_8016); uint _8025; if (_8022) { _8025 = as_type(spvFMul(_7948, _7999)); } else { _8025 = _7958; } uint _8101; uint _8102; uint _8103; uint _8104; uint _8105; uint _8106; if (_8022) { float _8031 = fma(_7954, _8001, -as_type(_8025)); float _8035 = fma(_7948, as_type(_7997), -spvFMul(_7962, _8001)); float _8037 = fma(_7962, _7999, -spvFMul(_7954, as_type(_7997))); float _8041 = fma(_7934, _8031, fma(as_type(_8020), _8035, spvFMul(_7943, _8037))); bool _8045 = _8022 && ((_8041 > _7973) || (_8041 < 0.0)); uint _8046; uint _8047; uint _8048; uint _8049; if (_8045) { _8046 = 0u; _8047 = 0u; _8048 = 0u; _8049 = 0u; } else { _8046 = _8020; _8047 = _8017; _8048 = _8018; _8049 = _8019; } bool _8051 = _8022 && (!_8045); uint _8054; if (_8051) { _8054 = as_type(spvFMul(_7945, _8037)); } else { _8054 = as_type(_7934); } uint _8096; uint _8097; uint _8098; uint _8099; uint _8100; if (_8051) { float _8058 = fma(as_type(_8049), _8031, fma(_7932, _8035, as_type(_8054))); float _8059 = spvFSub(_8041, _8058); bool _8065 = _8051 && ((_8059 > _7973) || (0.0 > (-_8058))); uint _8066; uint _8067; uint _8068; uint _8069; if (_8065) { _8066 = 0u; _8067 = 0u; _8068 = 0u; _8069 = 0u; } else { _8066 = _8046; _8067 = _8049; _8068 = _8047; _8069 = _8048; } bool _8071 = _8051 && (!_8065); uint _8072; if (_8071) { _8072 = 1u; } else { _8072 = _8069; } uint _8093; uint _8094; uint _8095; if (_8071) { float _8074 = spvFMul(_8005, 1.0 / _7973); _8093 = as_type(fma(_8074, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _8094 = as_type(fma(_8074, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _8095 = as_type(fma(_8074, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _8093 = _8066; _8094 = _8067; _8095 = _8068; } _8096 = _8093; _8097 = _8094; _8098 = _8095; _8099 = as_type(_8059); _8100 = _8072; } else { _8096 = _8046; _8097 = _8049; _8098 = _8047; _8099 = _7933; _8100 = _8048; } _8101 = as_type(_8031); _8102 = _8096; _8103 = _8097; _8104 = _8098; _8105 = _8099; _8106 = _8100; } else { _8101 = _8025; _8102 = _8020; _8103 = _8019; _8104 = _8017; _8105 = _7933; _8106 = _8018; } _8107 = _8101; _8108 = _8102; _8109 = _8103; _8110 = _8104; _8111 = _8105; _8112 = _8106; } else { _8107 = _7958; _8108 = _8011; _8109 = _8010; _8110 = _8008; _8111 = _7933; _8112 = _8009; } _8113 = _8107; _8114 = _8108; _8115 = _8109; _8116 = _8110; _8117 = _8111; _8118 = _8112; } else { _8113 = _7958; _8114 = _7991; _8115 = _7990; _8116 = _7988; _8117 = _7933; _8118 = _7989; } bool _8122 = _7741 && (!(_7741 && (int(0u) < int(_8118)))); uint _8125; if (_8122) { _8125 = as_type(spvFSub(_7981, _7918)); } else { _8125 = _8117; } uint _8280; uint _8281; uint _8282; uint _8283; uint _8284; uint _8285; if (_8122) { float _8126 = spvFSub(_7983, _7928); float _8127 = spvFSub(_7985, _7931); float _8129 = spvFSub(_7904, _7918); float _8131 = spvFSub(_7906, _7928); float _8132 = spvFSub(_7920, _7931); float _8138 = fma(_8126, _8132, -spvFMul(_8127, _8131)); float _8141 = fma(_8127, _8129, -spvFMul(as_type(_8125), _8132)); uint _8142 = as_type(_8141); float _8145 = fma(as_type(_8125), _8131, -spvFMul(_8126, _8129)); float _8148 = fma(_7962, _8138, fma(_7954, _8141, spvFMul(_7948, _8145))); bool _8150 = _8122 && (0.0 >= _8148); uint _8151; uint _8152; uint _8153; uint _8154; if (_8150) { _8151 = 0u; _8152 = 0u; _8153 = 0u; _8154 = 0u; } else { _8151 = _8116; _8152 = _8118; _8153 = as_type(_8127); _8154 = as_type(_8129); } bool _8156 = _8122 && (!_8150); uint _8160; if (_8156) { _8160 = as_type(spvFSub(as_type(_7734), _7918)); } else { _8160 = _7997; } uint _8274; uint _8275; uint _8276; uint _8277; uint _8278; if (_8156) { float _8162 = spvFSub(as_type(_7733), _7928); float _8164 = spvFSub(as_type(_7732), _7931); float _8168 = fma(as_type(_8160), _8138, fma(_8162, _8141, spvFMul(_8145, _8164))); bool _8169 = 0.0 > _8168; bool _8170 = _8156 && _8169; uint _8171; uint _8172; uint _8173; uint _8174; if (_8170) { _8171 = 0u; _8172 = 0u; _8173 = 0u; _8174 = 0u; } else { _8171 = _8151; _8172 = _8152; _8173 = _8153; _8174 = _8154; } bool _8176 = _8156 && (!_8170); bool _8178; if (_8176) { _8178 = _8168 > _8148; } else { _8178 = _8169; } uint _8269; uint _8270; uint _8271; uint _8272; uint _8273; if (_8176) { bool _8179 = _8176 && _8178; uint _8180; uint _8181; uint _8182; uint _8183; if (_8179) { _8180 = 0u; _8181 = 0u; _8182 = 0u; _8183 = 0u; } else { _8180 = _8171; _8181 = _8172; _8182 = _8173; _8183 = _8174; } bool _8185 = _8176 && (!_8179); uint _8188; if (_8185) { _8188 = as_type(spvFMul(_7948, _8162)); } else { _8188 = as_type(_8138); } uint _8264; uint _8265; uint _8266; uint _8267; uint _8268; if (_8185) { float _8194 = fma(_7954, _8164, -as_type(_8188)); float _8197 = fma(_7948, as_type(_8160), -spvFMul(_7962, _8164)); float _8200 = fma(_7962, _8162, -spvFMul(_7954, as_type(_8160))); float _8204 = fma(as_type(_8183), _8194, fma(_8131, _8197, spvFMul(_8132, _8200))); bool _8208 = _8185 && ((_8204 > _8148) || (_8204 < 0.0)); uint _8209; uint _8210; uint _8211; uint _8212; if (_8208) { _8209 = 0u; _8210 = 0u; _8211 = 0u; _8212 = 0u; } else { _8209 = _8183; _8210 = _8180; _8211 = _8181; _8212 = _8182; } bool _8214 = _8185 && (!_8208); uint _8218; if (_8214) { _8218 = as_type(spvFMul(as_type(_8212), _8200)); } else { _8218 = _8212; } uint _8260; uint _8261; uint _8262; uint _8263; if (_8214) { float _8222 = fma(as_type(_8125), _8194, fma(_8126, _8197, as_type(_8218))); bool _8229 = _8214 && ((spvFSub(_8204, _8222) > _8148) || (0.0 > (-_8222))); uint _8230; uint _8231; uint _8232; uint _8233; if (_8229) { _8230 = 0u; _8231 = 0u; _8232 = 0u; _8233 = 0u; } else { _8230 = _8209; _8231 = as_type(_8222); _8232 = _8210; _8233 = _8211; } bool _8235 = _8214 && (!_8229); uint _8236; if (_8235) { _8236 = 1u; } else { _8236 = _8233; } uint _8257; uint _8258; uint _8259; if (_8235) { float _8238 = spvFMul(_8168, 1.0 / _8148); _8257 = as_type(fma(_8238, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _8258 = as_type(fma(_8238, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _8259 = as_type(fma(_8238, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _8257 = _8230; _8258 = _8231; _8259 = _8232; } _8260 = _8257; _8261 = _8258; _8262 = _8259; _8263 = _8236; } else { _8260 = _8209; _8261 = _8218; _8262 = _8210; _8263 = _8211; } _8264 = as_type(_8197); _8265 = _8260; _8266 = _8261; _8267 = _8262; _8268 = _8263; } else { _8264 = _8142; _8265 = _8183; _8266 = _8182; _8267 = _8180; _8268 = _8181; } _8269 = _8264; _8270 = _8265; _8271 = _8266; _8272 = _8267; _8273 = _8268; } else { _8269 = _8142; _8270 = _8174; _8271 = _8173; _8272 = _8171; _8273 = _8172; } _8274 = _8269; _8275 = _8270; _8276 = _8271; _8277 = _8272; _8278 = _8273; } else { _8274 = _8142; _8275 = _8154; _8276 = _8153; _8277 = _8151; _8278 = _8152; } _8280 = _8160; _8281 = _8274; _8282 = _8275; _8283 = _8276; _8284 = _8277; _8285 = uint(max(int(0u), int(_8278))); } else { _8280 = _7997; _8281 = _8113; _8282 = _8114; _8283 = _8115; _8284 = _8116; _8285 = _8118; } uint _8291 = as_type(fma(as_type(_7834), 0.00999999977648258209228515625, as_type(_8284))); float _8298 = fma(as_type(_7836), 0.00999999977648258209228515625, as_type(_8282)); bool _8301 = _7741 && (!(_7741 && (int(0u) < int(_8285)))); uint _8306; if (_8301) { _8306 = as_type(fma(-as_type(_7834), _7878, _7967)); } else { _8306 = as_type(_7967); } uint _10140; uint _10141; uint _10142; uint _10143; uint _10144; uint _10145; if (_8301) { float _8308 = fma(-_8298, _7878, _7970); float _8311 = fma(-as_type(_7836), _7878, _7972); float _8314 = fma(-as_type(_7834), _7878, _7888); float _8316 = fma(-_8298, _7878, _7890); float _8319 = fma(-as_type(_7836), _7878, _7902); float _8337 = fma(-as_type(_7834), _7878, fma(_7842, 0.5, fma(-as_type(_7817), _7874, -_7864))); float _8340 = fma(-_8298, _7878, fma(_7850, 0.5, fma(-as_type(_7818), _7874, -_7866))); float _8343 = fma(-as_type(_7836), _7878, fma(_7853, 0.5, fma(-as_type(_7819), _7874, -_7880))); float _8358 = fma(-as_type(_7834), _7878, fma(_7842, 0.5, fma(as_type(_7800), _7846, -spvFMul(as_type(_7817), _7874)))); uint _8359 = as_type(_8358); float _8361 = fma(-_8298, _7878, fma(_7850, 0.5, fma(as_type(_7801), _7846, -spvFMul(as_type(_7818), _7874)))); float _8364 = fma(-as_type(_7836), _7878, fma(_7853, 0.5, fma(as_type(_7802), _7846, -spvFMul(as_type(_7819), _7874)))); float _8366 = spvFSub(_8337, as_type(_8306)); uint _8367 = as_type(_8366); float _8368 = spvFSub(_8340, _8308); uint _8369 = as_type(_8368); float _8370 = spvFSub(_8343, _8311); float _8373 = spvFSub(_8358, as_type(_8306)); float _8375 = spvFSub(_8361, _8308); float _8376 = spvFSub(_8364, _8311); float _8381 = fma(_8368, _8376, -spvFMul(_8370, _8375)); float _8384 = fma(_8370, _8373, -spvFMul(_8366, _8376)); uint _8385 = as_type(_8384); float _8387 = fma(_8366, _8375, -spvFMul(_8368, _8373)); float _8390 = fma(_7962, _8381, fma(_7954, _8384, spvFMul(_7948, _8387))); bool _8392 = _8301 && (0.0 >= _8390); uint _8393; uint _8394; uint _8395; uint _8396; if (_8392) { _8393 = 0u; _8394 = 0u; _8395 = 0u; _8396 = 0u; } else { _8393 = _8291; _8394 = _8285; _8395 = as_type(_8370); _8396 = as_type(_8373); } bool _8398 = _8301 && (!_8392); uint _8403; if (_8398) { _8403 = as_type(spvFSub(as_type(_7734), as_type(_8306))); } else { _8403 = _8281; } uint _8525; uint _8526; uint _8527; uint _8528; uint _8529; uint _8530; uint _8531; if (_8398) { float _8405 = spvFSub(as_type(_7733), _8308); float _8407 = spvFSub(as_type(_7732), _8311); float _8411 = fma(as_type(_8403), _8381, fma(_8405, _8384, spvFMul(_8387, _8407))); bool _8412 = 0.0 > _8411; bool _8413 = _8398 && _8412; uint _8414; uint _8415; uint _8416; uint _8417; if (_8413) { _8414 = 0u; _8415 = 0u; _8416 = 0u; _8417 = 0u; } else { _8414 = _8393; _8415 = _8394; _8416 = _8395; _8417 = _8396; } bool _8419 = _8398 && (!_8413); bool _8421; if (_8419) { _8421 = _8411 > _8390; } else { _8421 = _8412; } uint _8518; uint _8519; uint _8520; uint _8521; uint _8522; uint _8523; uint _8524; if (_8419) { bool _8422 = _8419 && _8421; uint _8423; uint _8424; uint _8425; uint _8426; if (_8422) { _8423 = 0u; _8424 = 0u; _8425 = 0u; _8426 = 0u; } else { _8423 = _8414; _8424 = _8415; _8425 = _8416; _8426 = _8417; } bool _8428 = _8419 && (!_8422); uint _8431; if (_8428) { _8431 = as_type(spvFMul(_7948, _8405)); } else { _8431 = as_type(_8381); } uint _8511; uint _8512; uint _8513; uint _8514; uint _8515; uint _8516; uint _8517; if (_8428) { float _8437 = fma(_7954, _8407, -as_type(_8431)); float _8440 = fma(_7948, as_type(_8403), -spvFMul(_7962, _8407)); float _8443 = fma(_7962, _8405, -spvFMul(_7954, as_type(_8403))); float _8447 = fma(as_type(_8426), _8437, fma(_8375, _8440, spvFMul(_8376, _8443))); bool _8451 = _8428 && ((_8447 > _8390) || (_8447 < 0.0)); uint _8452; uint _8453; uint _8454; uint _8455; if (_8451) { _8452 = 0u; _8453 = 0u; _8454 = 0u; _8455 = 0u; } else { _8452 = _8426; _8453 = _8423; _8454 = _8424; _8455 = _8425; } bool _8457 = _8428 && (!_8451); uint _8461; if (_8457) { _8461 = as_type(spvFMul(as_type(_8455), _8443)); } else { _8461 = _8455; } uint _8505; uint _8506; uint _8507; uint _8508; uint _8509; uint _8510; if (_8457) { float _8464 = fma(_8366, _8437, fma(_8368, _8440, as_type(_8461))); float _8466 = spvFSub(_8447, _8464); bool _8472 = _8457 && ((_8466 > _8390) || (0.0 > (-_8464))); uint _8473; uint _8474; uint _8475; uint _8476; if (_8472) { _8473 = 0u; _8474 = 0u; _8475 = 0u; _8476 = 0u; } else { _8473 = _8452; _8474 = as_type(_8464); _8475 = _8453; _8476 = _8454; } bool _8478 = _8457 && (!_8472); uint _8479; if (_8478) { _8479 = 1u; } else { _8479 = _8476; } uint _8501; uint _8502; uint _8503; uint _8504; if (_8478) { float _8481 = spvFMul(_8411, 1.0 / _8390); _8501 = as_type(_8481); _8502 = as_type(fma(_8481, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _8503 = as_type(fma(_8481, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _8504 = as_type(fma(_8481, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _8501 = _8369; _8502 = _8473; _8503 = _8474; _8504 = _8475; } _8505 = _8501; _8506 = _8502; _8507 = _8503; _8508 = _8504; _8509 = as_type(_8466); _8510 = _8479; } else { _8505 = _8369; _8506 = _8452; _8507 = _8461; _8508 = _8453; _8509 = _8367; _8510 = _8454; } _8511 = _8505; _8512 = as_type(_8440); _8513 = _8506; _8514 = _8507; _8515 = _8508; _8516 = _8509; _8517 = _8510; } else { _8511 = _8369; _8512 = _8385; _8513 = _8426; _8514 = _8425; _8515 = _8423; _8516 = _8367; _8517 = _8424; } _8518 = _8511; _8519 = _8512; _8520 = _8513; _8521 = _8514; _8522 = _8515; _8523 = _8516; _8524 = _8517; } else { _8518 = _8369; _8519 = _8385; _8520 = _8417; _8521 = _8416; _8522 = _8414; _8523 = _8367; _8524 = _8415; } _8525 = _8518; _8526 = _8519; _8527 = _8520; _8528 = _8521; _8529 = _8522; _8530 = _8523; _8531 = _8524; } else { _8525 = _8369; _8526 = _8385; _8527 = _8396; _8528 = _8395; _8529 = _8393; _8530 = _8367; _8531 = _8394; } bool _8535 = _8301 && (!(_8301 && (int(0u) < int(_8531)))); uint _8538; if (_8535) { _8538 = as_type(spvFSub(_8314, _8358)); } else { _8538 = _8530; } uint _8701; uint _8702; uint _8703; uint _8704; uint _8705; uint _8706; if (_8535) { float _8539 = spvFSub(_8316, _8361); uint _8540 = as_type(_8539); float _8541 = spvFSub(_8319, _8364); float _8544 = spvFSub(as_type(_8306), _8358); float _8546 = spvFSub(_8308, _8361); float _8547 = spvFSub(_8311, _8364); float _8553 = fma(_8539, _8547, -spvFMul(_8541, _8546)); float _8556 = fma(_8541, _8544, -spvFMul(as_type(_8538), _8547)); uint _8557 = as_type(_8556); float _8560 = fma(as_type(_8538), _8546, -spvFMul(_8539, _8544)); float _8563 = fma(_7962, _8553, fma(_7954, _8556, spvFMul(_7948, _8560))); bool _8565 = _8535 && (0.0 >= _8563); uint _8566; uint _8567; uint _8568; uint _8569; if (_8565) { _8566 = 0u; _8567 = 0u; _8568 = 0u; _8569 = 0u; } else { _8566 = _8529; _8567 = _8531; _8568 = as_type(_8541); _8569 = as_type(_8544); } bool _8571 = _8535 && (!_8565); uint _8575; if (_8571) { _8575 = as_type(spvFSub(as_type(_7734), _8358)); } else { _8575 = _8403; } uint _8694; uint _8695; uint _8696; uint _8697; uint _8698; uint _8699; if (_8571) { float _8577 = spvFSub(as_type(_7733), _8361); float _8579 = spvFSub(as_type(_7732), _8364); float _8583 = fma(as_type(_8575), _8553, fma(_8577, _8556, spvFMul(_8560, _8579))); bool _8584 = 0.0 > _8583; bool _8585 = _8571 && _8584; uint _8586; uint _8587; uint _8588; uint _8589; if (_8585) { _8586 = 0u; _8587 = 0u; _8588 = 0u; _8589 = 0u; } else { _8586 = _8566; _8587 = _8567; _8588 = _8568; _8589 = _8569; } bool _8591 = _8571 && (!_8585); bool _8593; if (_8591) { _8593 = _8583 > _8563; } else { _8593 = _8584; } uint _8688; uint _8689; uint _8690; uint _8691; uint _8692; uint _8693; if (_8591) { bool _8594 = _8591 && _8593; uint _8595; uint _8596; uint _8597; uint _8598; if (_8594) { _8595 = 0u; _8596 = 0u; _8597 = 0u; _8598 = 0u; } else { _8595 = _8586; _8596 = _8587; _8597 = _8588; _8598 = _8589; } bool _8600 = _8591 && (!_8594); uint _8603; if (_8600) { _8603 = as_type(spvFMul(_7948, _8577)); } else { _8603 = as_type(_8553); } uint _8682; uint _8683; uint _8684; uint _8685; uint _8686; uint _8687; if (_8600) { float _8609 = fma(_7954, _8579, -as_type(_8603)); float _8612 = fma(_7948, as_type(_8575), -spvFMul(_7962, _8579)); float _8615 = fma(_7962, _8577, -spvFMul(_7954, as_type(_8575))); float _8619 = fma(as_type(_8598), _8609, fma(_8546, _8612, spvFMul(_8547, _8615))); bool _8623 = _8600 && ((_8619 > _8563) || (_8619 < 0.0)); uint _8624; uint _8625; uint _8626; uint _8627; if (_8623) { _8624 = 0u; _8625 = 0u; _8626 = 0u; _8627 = 0u; } else { _8624 = _8598; _8625 = _8595; _8626 = _8596; _8627 = _8597; } bool _8629 = _8600 && (!_8623); uint _8633; if (_8629) { _8633 = as_type(spvFMul(as_type(_8627), _8615)); } else { _8633 = _8627; } uint _8677; uint _8678; uint _8679; uint _8680; uint _8681; if (_8629) { float _8637 = fma(as_type(_8538), _8609, fma(_8539, _8612, as_type(_8633))); bool _8644 = _8629 && ((spvFSub(_8619, _8637) > _8563) || (0.0 > (-_8637))); uint _8645; uint _8646; uint _8647; uint _8648; if (_8644) { _8645 = 0u; _8646 = 0u; _8647 = 0u; _8648 = 0u; } else { _8645 = _8624; _8646 = as_type(_8637); _8647 = _8625; _8648 = _8626; } bool _8650 = _8629 && (!_8644); uint _8651; if (_8650) { _8651 = 1u; } else { _8651 = _8648; } uint _8673; uint _8674; uint _8675; uint _8676; if (_8650) { float _8653 = spvFMul(_8583, 1.0 / _8563); _8673 = as_type(_8653); _8674 = as_type(fma(_8653, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _8675 = as_type(fma(_8653, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _8676 = as_type(fma(_8653, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _8673 = _8540; _8674 = _8645; _8675 = _8646; _8676 = _8647; } _8677 = _8673; _8678 = _8674; _8679 = _8675; _8680 = _8676; _8681 = _8651; } else { _8677 = _8540; _8678 = _8624; _8679 = _8633; _8680 = _8625; _8681 = _8626; } _8682 = _8677; _8683 = as_type(_8612); _8684 = _8678; _8685 = _8679; _8686 = _8680; _8687 = _8681; } else { _8682 = _8540; _8683 = _8557; _8684 = _8598; _8685 = _8597; _8686 = _8595; _8687 = _8596; } _8688 = _8682; _8689 = _8683; _8690 = _8684; _8691 = _8685; _8692 = _8686; _8693 = _8687; } else { _8688 = _8540; _8689 = _8557; _8690 = _8589; _8691 = _8588; _8692 = _8586; _8693 = _8587; } _8694 = _8688; _8695 = _8689; _8696 = _8690; _8697 = _8691; _8698 = _8692; _8699 = _8693; } else { _8694 = _8540; _8695 = _8557; _8696 = _8569; _8697 = _8568; _8698 = _8566; _8699 = _8567; } _8701 = _8694; _8702 = _8695; _8703 = _8696; _8704 = _8697; _8705 = _8698; _8706 = uint(max(int(0u), int(_8699))); } else { _8701 = _8525; _8702 = _8526; _8703 = _8527; _8704 = _8528; _8705 = _8529; _8706 = _8531; } uint _8712 = as_type(fma(as_type(_7834), -0.00999999977648258209228515625, as_type(_8705))); bool _8721 = _8301 && (!(_8301 && (int(0u) < int(_8706)))); uint _8725; if (_8721) { _8725 = as_type(spvFSub(as_type(_8306), _7981)); } else { _8725 = _7834; } uint _10134; uint _10135; uint _10136; uint _10137; uint _10138; uint _10139; if (_8721) { float _8726 = spvFSub(_8308, _7983); float _8727 = spvFSub(_8311, _7985); float _8729 = spvFSub(_8314, _7981); float _8731 = spvFSub(_8316, _7983); uint _8732 = as_type(_8731); float _8733 = spvFSub(_8319, _7985); float _8739 = fma(_8726, _8733, -spvFMul(_8727, _8731)); float _8742 = fma(_8727, _8729, -spvFMul(as_type(_8725), _8733)); float _8745 = fma(as_type(_8725), _8731, -spvFMul(_8726, _8729)); float _8748 = fma(_7962, _8739, fma(_7954, _8742, spvFMul(_7948, _8745))); bool _8750 = _8721 && (0.0 >= _8748); uint _8751; uint _8752; uint _8753; uint _8754; if (_8750) { _8751 = 0u; _8752 = 0u; _8753 = 0u; _8754 = 0u; } else { _8751 = _8712; _8752 = _8706; _8753 = as_type(_8727); _8754 = as_type(_8729); } bool _8756 = _8721 && (!_8750); uint _8760; if (_8756) { _8760 = as_type(spvFSub(as_type(_7734), _7981)); } else { _8760 = _8702; } uint _8880; uint _8881; uint _8882; uint _8883; uint _8884; uint _8885; if (_8756) { float _8762 = spvFSub(as_type(_7733), _7983); float _8764 = spvFSub(as_type(_7732), _7985); float _8768 = fma(as_type(_8760), _8739, fma(_8762, _8742, spvFMul(_8745, _8764))); bool _8769 = 0.0 > _8768; bool _8770 = _8756 && _8769; uint _8771; uint _8772; uint _8773; uint _8774; if (_8770) { _8771 = 0u; _8772 = 0u; _8773 = 0u; _8774 = 0u; } else { _8771 = _8751; _8772 = _8752; _8773 = _8753; _8774 = _8754; } bool _8776 = _8756 && (!_8770); bool _8778; if (_8776) { _8778 = _8768 > _8748; } else { _8778 = _8769; } uint _8874; uint _8875; uint _8876; uint _8877; uint _8878; uint _8879; if (_8776) { bool _8779 = _8776 && _8778; uint _8780; uint _8781; uint _8782; uint _8783; if (_8779) { _8780 = 0u; _8781 = 0u; _8782 = 0u; _8783 = 0u; } else { _8780 = _8771; _8781 = _8772; _8782 = _8773; _8783 = _8774; } bool _8785 = _8776 && (!_8779); uint _8788; if (_8785) { _8788 = as_type(spvFMul(_7948, _8762)); } else { _8788 = as_type(_8739); } uint _8868; uint _8869; uint _8870; uint _8871; uint _8872; uint _8873; if (_8785) { float _8794 = fma(_7954, _8764, -as_type(_8788)); float _8797 = fma(_7948, as_type(_8760), -spvFMul(_7962, _8764)); float _8799 = fma(_7962, _8762, -spvFMul(_7954, as_type(_8760))); float _8803 = fma(as_type(_8783), _8794, fma(_8731, _8797, spvFMul(_8733, _8799))); bool _8807 = _8785 && ((_8803 > _8748) || (_8803 < 0.0)); uint _8808; uint _8809; uint _8810; uint _8811; if (_8807) { _8808 = 0u; _8809 = 0u; _8810 = 0u; _8811 = 0u; } else { _8808 = _8783; _8809 = _8780; _8810 = _8781; _8811 = _8782; } bool _8813 = _8785 && (!_8807); uint _8817; if (_8813) { _8817 = as_type(spvFMul(as_type(_8811), _8799)); } else { _8817 = _8811; } uint _8862; uint _8863; uint _8864; uint _8865; uint _8866; uint _8867; if (_8813) { float _8821 = fma(as_type(_8725), _8794, fma(_8726, _8797, as_type(_8817))); float _8823 = spvFSub(_8803, _8821); bool _8829 = _8813 && ((_8823 > _8748) || (0.0 > (-_8821))); uint _8830; uint _8831; uint _8832; uint _8833; if (_8829) { _8830 = 0u; _8831 = 0u; _8832 = 0u; _8833 = 0u; } else { _8830 = _8808; _8831 = as_type(_8821); _8832 = _8809; _8833 = _8810; } bool _8835 = _8813 && (!_8829); uint _8836; if (_8835) { _8836 = 1u; } else { _8836 = _8833; } uint _8858; uint _8859; uint _8860; uint _8861; if (_8835) { float _8838 = spvFMul(_8768, 1.0 / _8748); float _8847 = spvFSub(as_type(_1314), as_type(_7732)); _8858 = as_type(_8847); _8859 = as_type(fma(_8838, _8847, as_type(_7732))); _8860 = as_type(fma(_8838, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _8861 = as_type(fma(_8838, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _8858 = _8732; _8859 = _8830; _8860 = _8831; _8861 = _8832; } _8862 = _8858; _8863 = _8859; _8864 = _8860; _8865 = _8861; _8866 = as_type(_8823); _8867 = _8836; } else { _8862 = _8732; _8863 = _8808; _8864 = _8817; _8865 = _8809; _8866 = _8725; _8867 = _8810; } _8868 = _8862; _8869 = _8863; _8870 = _8864; _8871 = _8865; _8872 = _8866; _8873 = _8867; } else { _8868 = _8732; _8869 = _8783; _8870 = _8782; _8871 = _8780; _8872 = _8725; _8873 = _8781; } _8874 = _8868; _8875 = _8869; _8876 = _8870; _8877 = _8871; _8878 = _8872; _8879 = _8873; } else { _8874 = _8732; _8875 = _8774; _8876 = _8773; _8877 = _8771; _8878 = _8725; _8879 = _8772; } _8880 = _8874; _8881 = _8875; _8882 = _8876; _8883 = _8877; _8884 = _8878; _8885 = _8879; } else { _8880 = _8732; _8881 = _8754; _8882 = _8753; _8883 = _8751; _8884 = _8725; _8885 = _8752; } bool _8889 = _8721 && (!(_8721 && (int(0u) < int(_8885)))); uint _8892; if (_8889) { _8892 = as_type(spvFSub(_7904, _8314)); } else { _8892 = _8884; } uint _9054; uint _9055; uint _9056; uint _9057; uint _9058; uint _9059; uint _9060; if (_8889) { float _8893 = spvFSub(_7906, _8316); float _8894 = spvFSub(_7920, _8319); float _8896 = spvFSub(_7981, _8314); float _8898 = spvFSub(_7983, _8316); uint _8899 = as_type(_8898); float _8900 = spvFSub(_7985, _8319); float _8906 = fma(_8893, _8900, -spvFMul(_8894, _8898)); float _8909 = fma(_8894, _8896, -spvFMul(as_type(_8892), _8900)); float _8912 = fma(as_type(_8892), _8898, -spvFMul(_8893, _8896)); float _8915 = fma(_7962, _8906, fma(_7954, _8909, spvFMul(_7948, _8912))); bool _8917 = _8889 && (0.0 >= _8915); uint _8918; uint _8919; uint _8920; uint _8921; if (_8917) { _8918 = 0u; _8919 = 0u; _8920 = 0u; _8921 = 0u; } else { _8918 = _8883; _8919 = _8885; _8920 = as_type(_8894); _8921 = as_type(_8896); } bool _8923 = _8889 && (!_8917); uint _8927; if (_8923) { _8927 = as_type(spvFSub(as_type(_7734), _8314)); } else { _8927 = _8760; } uint _9047; uint _9048; uint _9049; uint _9050; uint _9051; uint _9052; if (_8923) { float _8929 = spvFSub(as_type(_7733), _8316); float _8931 = spvFSub(as_type(_7732), _8319); float _8935 = fma(as_type(_8927), _8906, fma(_8929, _8909, spvFMul(_8912, _8931))); bool _8936 = 0.0 > _8935; bool _8937 = _8923 && _8936; uint _8938; uint _8939; uint _8940; uint _8941; if (_8937) { _8938 = 0u; _8939 = 0u; _8940 = 0u; _8941 = 0u; } else { _8938 = _8918; _8939 = _8919; _8940 = _8920; _8941 = _8921; } bool _8943 = _8923 && (!_8937); bool _8945; if (_8943) { _8945 = _8935 > _8915; } else { _8945 = _8936; } uint _9041; uint _9042; uint _9043; uint _9044; uint _9045; uint _9046; if (_8943) { bool _8946 = _8943 && _8945; uint _8947; uint _8948; uint _8949; uint _8950; if (_8946) { _8947 = 0u; _8948 = 0u; _8949 = 0u; _8950 = 0u; } else { _8947 = _8938; _8948 = _8939; _8949 = _8940; _8950 = _8941; } bool _8952 = _8943 && (!_8946); uint _8955; if (_8952) { _8955 = as_type(spvFMul(_7948, _8929)); } else { _8955 = as_type(_8906); } uint _9035; uint _9036; uint _9037; uint _9038; uint _9039; uint _9040; if (_8952) { float _8961 = fma(_7954, _8931, -as_type(_8955)); float _8964 = fma(_7948, as_type(_8927), -spvFMul(_7962, _8931)); float _8966 = fma(_7962, _8929, -spvFMul(_7954, as_type(_8927))); float _8970 = fma(as_type(_8950), _8961, fma(_8898, _8964, spvFMul(_8900, _8966))); bool _8974 = _8952 && ((_8970 > _8915) || (_8970 < 0.0)); uint _8975; uint _8976; uint _8977; uint _8978; if (_8974) { _8975 = 0u; _8976 = 0u; _8977 = 0u; _8978 = 0u; } else { _8975 = _8950; _8976 = _8947; _8977 = _8948; _8978 = _8949; } bool _8980 = _8952 && (!_8974); uint _8984; if (_8980) { _8984 = as_type(spvFMul(as_type(_8978), _8966)); } else { _8984 = _8978; } uint _9029; uint _9030; uint _9031; uint _9032; uint _9033; uint _9034; if (_8980) { float _8988 = fma(as_type(_8892), _8961, fma(_8893, _8964, as_type(_8984))); float _8990 = spvFSub(_8970, _8988); bool _8996 = _8980 && ((_8990 > _8915) || (0.0 > (-_8988))); uint _8997; uint _8998; uint _8999; uint _9000; if (_8996) { _8997 = 0u; _8998 = 0u; _8999 = 0u; _9000 = 0u; } else { _8997 = _8975; _8998 = as_type(_8988); _8999 = _8976; _9000 = _8977; } bool _9002 = _8980 && (!_8996); uint _9003; if (_9002) { _9003 = 1u; } else { _9003 = _9000; } uint _9025; uint _9026; uint _9027; uint _9028; if (_9002) { float _9005 = spvFMul(_8935, 1.0 / _8915); float _9014 = spvFSub(as_type(_1314), as_type(_7732)); _9025 = as_type(_9014); _9026 = as_type(fma(_9005, _9014, as_type(_7732))); _9027 = as_type(fma(_9005, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _9028 = as_type(fma(_9005, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _9025 = _8899; _9026 = _8997; _9027 = _8998; _9028 = _8999; } _9029 = _9025; _9030 = as_type(_8990); _9031 = _9026; _9032 = _9027; _9033 = _9028; _9034 = _9003; } else { _9029 = _8899; _9030 = _8892; _9031 = _8975; _9032 = _8984; _9033 = _8976; _9034 = _8977; } _9035 = _9029; _9036 = _9030; _9037 = _9031; _9038 = _9032; _9039 = _9033; _9040 = _9034; } else { _9035 = _8899; _9036 = _8892; _9037 = _8950; _9038 = _8949; _9039 = _8947; _9040 = _8948; } _9041 = _9035; _9042 = _9036; _9043 = _9037; _9044 = _9038; _9045 = _9039; _9046 = _9040; } else { _9041 = _8899; _9042 = _8892; _9043 = _8941; _9044 = _8940; _9045 = _8938; _9046 = _8939; } _9047 = _9041; _9048 = _9042; _9049 = _9043; _9050 = _9044; _9051 = _9045; _9052 = _9046; } else { _9047 = _8899; _9048 = _8892; _9049 = _8921; _9050 = _8920; _9051 = _8918; _9052 = _8919; } _9054 = _9047; _9055 = _8927; _9056 = _9048; _9057 = _9049; _9058 = _9050; _9059 = _9051; _9060 = uint(max(int(0u), int(_9052))); } else { _9054 = _8880; _9055 = _8760; _9056 = _8892; _9057 = _8881; _9058 = _8882; _9059 = _8883; _9060 = _8885; } uint _9066 = as_type(fma(as_type(_7817), 0.00999999977648258209228515625, as_type(_9059))); bool _9076 = _8721 && (!(_8721 && (int(0u) < int(_9060)))); uint _9079; if (_9076) { _9079 = as_type(spvFSub(_7918, _8337)); } else { _9079 = _9056; } uint _10128; uint _10129; uint _10130; uint _10131; uint _10132; uint _10133; if (_9076) { float _9080 = spvFSub(_7928, _8340); float _9081 = spvFSub(_7931, _8343); float _9083 = spvFSub(_7925, _8337); float _9085 = spvFSub(_7911, _8340); uint _9086 = as_type(_9085); float _9087 = spvFSub(_7938, _8343); float _9093 = fma(_9080, _9087, -spvFMul(_9081, _9085)); float _9096 = fma(_9081, _9083, -spvFMul(as_type(_9079), _9087)); float _9099 = fma(as_type(_9079), _9085, -spvFMul(_9080, _9083)); float _9102 = fma(_7962, _9093, fma(_7954, _9096, spvFMul(_7948, _9099))); bool _9104 = _9076 && (0.0 >= _9102); uint _9105; uint _9106; uint _9107; uint _9108; if (_9104) { _9105 = 0u; _9106 = 0u; _9107 = 0u; _9108 = 0u; } else { _9105 = _9066; _9106 = _9060; _9107 = as_type(_9081); _9108 = as_type(_9083); } bool _9110 = _9076 && (!_9104); uint _9114; if (_9110) { _9114 = as_type(spvFSub(as_type(_7734), _8337)); } else { _9114 = _9055; } uint _9234; uint _9235; uint _9236; uint _9237; uint _9238; uint _9239; if (_9110) { float _9116 = spvFSub(as_type(_7733), _8340); float _9118 = spvFSub(as_type(_7732), _8343); float _9122 = fma(as_type(_9114), _9093, fma(_9116, _9096, spvFMul(_9099, _9118))); bool _9123 = 0.0 > _9122; bool _9124 = _9110 && _9123; uint _9125; uint _9126; uint _9127; uint _9128; if (_9124) { _9125 = 0u; _9126 = 0u; _9127 = 0u; _9128 = 0u; } else { _9125 = _9105; _9126 = _9106; _9127 = _9107; _9128 = _9108; } bool _9130 = _9110 && (!_9124); bool _9132; if (_9130) { _9132 = _9122 > _9102; } else { _9132 = _9123; } uint _9228; uint _9229; uint _9230; uint _9231; uint _9232; uint _9233; if (_9130) { bool _9133 = _9130 && _9132; uint _9134; uint _9135; uint _9136; uint _9137; if (_9133) { _9134 = 0u; _9135 = 0u; _9136 = 0u; _9137 = 0u; } else { _9134 = _9125; _9135 = _9126; _9136 = _9127; _9137 = _9128; } bool _9139 = _9130 && (!_9133); uint _9142; if (_9139) { _9142 = as_type(spvFMul(_7948, _9116)); } else { _9142 = as_type(_9093); } uint _9222; uint _9223; uint _9224; uint _9225; uint _9226; uint _9227; if (_9139) { float _9148 = fma(_7954, _9118, -as_type(_9142)); float _9151 = fma(_7948, as_type(_9114), -spvFMul(_7962, _9118)); float _9153 = fma(_7962, _9116, -spvFMul(_7954, as_type(_9114))); float _9157 = fma(as_type(_9137), _9148, fma(_9085, _9151, spvFMul(_9087, _9153))); bool _9161 = _9139 && ((_9157 > _9102) || (_9157 < 0.0)); uint _9162; uint _9163; uint _9164; uint _9165; if (_9161) { _9162 = 0u; _9163 = 0u; _9164 = 0u; _9165 = 0u; } else { _9162 = _9137; _9163 = _9134; _9164 = _9135; _9165 = _9136; } bool _9167 = _9139 && (!_9161); uint _9171; if (_9167) { _9171 = as_type(spvFMul(as_type(_9165), _9153)); } else { _9171 = _9165; } uint _9216; uint _9217; uint _9218; uint _9219; uint _9220; uint _9221; if (_9167) { float _9175 = fma(as_type(_9079), _9148, fma(_9080, _9151, as_type(_9171))); float _9177 = spvFSub(_9157, _9175); bool _9183 = _9167 && ((_9177 > _9102) || (0.0 > (-_9175))); uint _9184; uint _9185; uint _9186; uint _9187; if (_9183) { _9184 = 0u; _9185 = 0u; _9186 = 0u; _9187 = 0u; } else { _9184 = _9162; _9185 = as_type(_9175); _9186 = _9163; _9187 = _9164; } bool _9189 = _9167 && (!_9183); uint _9190; if (_9189) { _9190 = 1u; } else { _9190 = _9187; } uint _9212; uint _9213; uint _9214; uint _9215; if (_9189) { float _9192 = spvFMul(_9122, 1.0 / _9102); float _9201 = spvFSub(as_type(_1314), as_type(_7732)); _9212 = as_type(_9201); _9213 = as_type(fma(_9192, _9201, as_type(_7732))); _9214 = as_type(fma(_9192, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _9215 = as_type(fma(_9192, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _9212 = _9086; _9213 = _9184; _9214 = _9185; _9215 = _9186; } _9216 = _9212; _9217 = _9213; _9218 = _9214; _9219 = _9215; _9220 = as_type(_9177); _9221 = _9190; } else { _9216 = _9086; _9217 = _9162; _9218 = _9171; _9219 = _9163; _9220 = _9079; _9221 = _9164; } _9222 = _9216; _9223 = _9217; _9224 = _9218; _9225 = _9219; _9226 = _9220; _9227 = _9221; } else { _9222 = _9086; _9223 = _9137; _9224 = _9136; _9225 = _9134; _9226 = _9079; _9227 = _9135; } _9228 = _9222; _9229 = _9223; _9230 = _9224; _9231 = _9225; _9232 = _9226; _9233 = _9227; } else { _9228 = _9086; _9229 = _9128; _9230 = _9127; _9231 = _9125; _9232 = _9079; _9233 = _9126; } _9234 = _9228; _9235 = _9229; _9236 = _9230; _9237 = _9231; _9238 = _9232; _9239 = _9233; } else { _9234 = _9086; _9235 = _9108; _9236 = _9107; _9237 = _9105; _9238 = _9079; _9239 = _9106; } bool _9243 = _9076 && (!(_9076 && (int(0u) < int(_9239)))); uint _9246; if (_9243) { _9246 = as_type(spvFSub(_8358, _7925)); } else { _9246 = _9238; } uint _9403; uint _9404; uint _9405; uint _9406; uint _9407; if (_9243) { float _9247 = spvFSub(_8361, _7911); float _9248 = spvFSub(_8364, _7938); float _9250 = spvFSub(_8337, _7925); float _9252 = spvFSub(_8340, _7911); uint _9253 = as_type(_9252); float _9254 = spvFSub(_8343, _7938); float _9260 = fma(_9247, _9254, -spvFMul(_9248, _9252)); float _9263 = fma(_9248, _9250, -spvFMul(as_type(_9246), _9254)); float _9266 = fma(as_type(_9246), _9252, -spvFMul(_9247, _9250)); float _9269 = fma(_7962, _9260, fma(_7954, _9263, spvFMul(_7948, _9266))); bool _9271 = _9243 && (0.0 >= _9269); uint _9272; uint _9273; uint _9274; uint _9275; if (_9271) { _9272 = 0u; _9273 = 0u; _9274 = 0u; _9275 = 0u; } else { _9272 = _9237; _9273 = _9239; _9274 = as_type(_9248); _9275 = as_type(_9250); } bool _9277 = _9243 && (!_9271); uint _9281; if (_9277) { _9281 = as_type(spvFSub(as_type(_7734), _7925)); } else { _9281 = _9114; } uint _9397; uint _9398; uint _9399; uint _9400; uint _9401; if (_9277) { float _9283 = spvFSub(as_type(_7733), _7911); float _9285 = spvFSub(as_type(_7732), _7938); float _9289 = fma(as_type(_9281), _9260, fma(_9283, _9263, spvFMul(_9266, _9285))); bool _9290 = 0.0 > _9289; bool _9291 = _9277 && _9290; uint _9292; uint _9293; uint _9294; uint _9295; if (_9291) { _9292 = 0u; _9293 = 0u; _9294 = 0u; _9295 = 0u; } else { _9292 = _9272; _9293 = _9273; _9294 = _9274; _9295 = _9275; } bool _9297 = _9277 && (!_9291); bool _9299; if (_9297) { _9299 = _9289 > _9269; } else { _9299 = _9290; } uint _9392; uint _9393; uint _9394; uint _9395; uint _9396; if (_9297) { bool _9300 = _9297 && _9299; uint _9301; uint _9302; uint _9303; uint _9304; if (_9300) { _9301 = 0u; _9302 = 0u; _9303 = 0u; _9304 = 0u; } else { _9301 = _9292; _9302 = _9293; _9303 = _9294; _9304 = _9295; } bool _9306 = _9297 && (!_9300); uint _9309; if (_9306) { _9309 = as_type(spvFMul(_7948, _9283)); } else { _9309 = as_type(_9260); } uint _9387; uint _9388; uint _9389; uint _9390; uint _9391; if (_9306) { float _9315 = fma(_7954, _9285, -as_type(_9309)); float _9318 = fma(_7948, as_type(_9281), -spvFMul(_7962, _9285)); float _9320 = fma(_7962, _9283, -spvFMul(_7954, as_type(_9281))); float _9324 = fma(as_type(_9304), _9315, fma(_9252, _9318, spvFMul(_9254, _9320))); bool _9328 = _9306 && ((_9324 > _9269) || (_9324 < 0.0)); uint _9329; uint _9330; uint _9331; uint _9332; if (_9328) { _9329 = 0u; _9330 = 0u; _9331 = 0u; _9332 = 0u; } else { _9329 = _9304; _9330 = _9301; _9331 = _9302; _9332 = _9303; } bool _9334 = _9306 && (!_9328); uint _9338; if (_9334) { _9338 = as_type(spvFMul(as_type(_9332), _9320)); } else { _9338 = _9332; } uint _9382; uint _9383; uint _9384; uint _9385; uint _9386; if (_9334) { float _9342 = fma(as_type(_9246), _9315, fma(_9247, _9318, as_type(_9338))); bool _9349 = _9334 && ((spvFSub(_9324, _9342) > _9269) || (0.0 > (-_9342))); uint _9350; uint _9351; uint _9352; uint _9353; if (_9349) { _9350 = 0u; _9351 = 0u; _9352 = 0u; _9353 = 0u; } else { _9350 = _9329; _9351 = as_type(_9342); _9352 = _9330; _9353 = _9331; } bool _9355 = _9334 && (!_9349); uint _9356; if (_9355) { _9356 = 1u; } else { _9356 = _9353; } uint _9378; uint _9379; uint _9380; uint _9381; if (_9355) { float _9358 = spvFMul(_9289, 1.0 / _9269); float _9367 = spvFSub(as_type(_1314), as_type(_7732)); _9378 = as_type(_9367); _9379 = as_type(fma(_9358, _9367, as_type(_7732))); _9380 = as_type(fma(_9358, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _9381 = as_type(fma(_9358, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _9378 = _9253; _9379 = _9350; _9380 = _9351; _9381 = _9352; } _9382 = _9378; _9383 = _9379; _9384 = _9380; _9385 = _9381; _9386 = _9356; } else { _9382 = _9253; _9383 = _9329; _9384 = _9338; _9385 = _9330; _9386 = _9331; } _9387 = _9382; _9388 = _9383; _9389 = _9384; _9390 = _9385; _9391 = _9386; } else { _9387 = _9253; _9388 = _9304; _9389 = _9303; _9390 = _9301; _9391 = _9302; } _9392 = _9387; _9393 = _9388; _9394 = _9389; _9395 = _9390; _9396 = _9391; } else { _9392 = _9253; _9393 = _9295; _9394 = _9294; _9395 = _9292; _9396 = _9293; } _9397 = _9392; _9398 = _9393; _9399 = _9394; _9400 = _9395; _9401 = _9396; } else { _9397 = _9253; _9398 = _9275; _9399 = _9274; _9400 = _9272; _9401 = _9273; } _9403 = _9397; _9404 = _9398; _9405 = _9399; _9406 = _9400; _9407 = uint(max(int(0u), int(_9401))); } else { _9403 = _9234; _9404 = _9235; _9405 = _9236; _9406 = _9237; _9407 = _9239; } uint _9413 = as_type(fma(as_type(_7817), -0.00999999977648258209228515625, as_type(_9406))); bool _9423 = _9076 && (!(_9076 && (int(0u) < int(_9407)))); uint _9426; if (_9423) { _9426 = as_type(spvFSub(_8358, _8314)); } else { _9426 = _8359; } uint _10122; uint _10123; uint _10124; uint _10125; uint _10126; uint _10127; if (_9423) { float _9427 = spvFSub(_8361, _8316); float _9428 = spvFSub(_8364, _8319); float _9430 = spvFSub(_7925, _8314); float _9432 = spvFSub(_7911, _8316); float _9433 = spvFSub(_7938, _8319); float _9439 = fma(_9427, _9433, -spvFMul(_9428, _9432)); float _9442 = fma(_9428, _9430, -spvFMul(as_type(_9426), _9433)); uint _9443 = as_type(_9442); float _9446 = fma(as_type(_9426), _9432, -spvFMul(_9427, _9430)); float _9449 = fma(_7962, _9439, fma(_7954, _9442, spvFMul(_7948, _9446))); bool _9451 = _9423 && (0.0 >= _9449); uint _9452; uint _9453; uint _9454; uint _9455; if (_9451) { _9452 = 0u; _9453 = 0u; _9454 = 0u; _9455 = 0u; } else { _9452 = _9413; _9453 = _9407; _9454 = as_type(_9428); _9455 = as_type(_9430); } bool _9457 = _9423 && (!_9451); uint _9461; if (_9457) { _9461 = as_type(spvFSub(as_type(_7734), _8314)); } else { _9461 = _7819; } uint _9579; uint _9580; uint _9581; uint _9582; uint _9583; uint _9584; if (_9457) { float _9463 = spvFSub(as_type(_7733), _8316); float _9465 = spvFSub(as_type(_7732), _8319); float _9469 = fma(as_type(_9461), _9439, fma(_9463, _9442, spvFMul(_9465, _9446))); bool _9470 = 0.0 > _9469; bool _9471 = _9457 && _9470; uint _9472; uint _9473; uint _9474; uint _9475; if (_9471) { _9472 = 0u; _9473 = 0u; _9474 = 0u; _9475 = 0u; } else { _9472 = _9452; _9473 = _9453; _9474 = _9454; _9475 = _9455; } bool _9477 = _9457 && (!_9471); bool _9479; if (_9477) { _9479 = _9469 > _9449; } else { _9479 = _9470; } uint _9573; uint _9574; uint _9575; uint _9576; uint _9577; uint _9578; if (_9477) { bool _9480 = _9477 && _9479; uint _9481; uint _9482; uint _9483; uint _9484; if (_9480) { _9481 = 0u; _9482 = 0u; _9483 = 0u; _9484 = 0u; } else { _9481 = _9472; _9482 = _9473; _9483 = _9474; _9484 = _9475; } bool _9486 = _9477 && (!_9480); uint _9489; if (_9486) { _9489 = as_type(spvFMul(_7948, _9463)); } else { _9489 = as_type(_9439); } uint _9567; uint _9568; uint _9569; uint _9570; uint _9571; uint _9572; if (_9486) { float _9495 = fma(_7954, _9465, -as_type(_9489)); float _9498 = fma(_7948, as_type(_9461), -spvFMul(_7962, _9465)); float _9501 = fma(_7962, _9463, -spvFMul(_7954, as_type(_9461))); float _9505 = fma(as_type(_9484), _9495, fma(_9432, _9498, spvFMul(_9501, _9433))); bool _9509 = _9486 && ((_9505 > _9449) || (_9505 < 0.0)); uint _9510; uint _9511; uint _9512; uint _9513; if (_9509) { _9510 = 0u; _9511 = 0u; _9512 = 0u; _9513 = 0u; } else { _9510 = _9484; _9511 = _9481; _9512 = _9482; _9513 = _9483; } bool _9515 = _9486 && (!_9509); uint _9519; if (_9515) { _9519 = as_type(spvFMul(_9501, as_type(_9513))); } else { _9519 = _9513; } uint _9562; uint _9563; uint _9564; uint _9565; uint _9566; if (_9515) { float _9523 = fma(as_type(_9426), _9495, fma(_9427, _9498, as_type(_9519))); float _9525 = spvFSub(_9505, _9523); bool _9531 = _9515 && ((_9525 > _9449) || (0.0 > (-_9523))); uint _9532; uint _9533; uint _9534; uint _9535; if (_9531) { _9532 = 0u; _9533 = 0u; _9534 = 0u; _9535 = 0u; } else { _9532 = _9510; _9533 = as_type(_9523); _9534 = _9511; _9535 = _9512; } bool _9537 = _9515 && (!_9531); uint _9538; if (_9537) { _9538 = 1u; } else { _9538 = _9535; } uint _9559; uint _9560; uint _9561; if (_9537) { float _9540 = spvFMul(_9469, 1.0 / _9449); _9559 = as_type(fma(_9540, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _9560 = as_type(fma(_9540, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _9561 = as_type(fma(_9540, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _9559 = _9532; _9560 = _9533; _9561 = _9534; } _9562 = _9559; _9563 = _9560; _9564 = _9561; _9565 = as_type(_9525); _9566 = _9538; } else { _9562 = _9510; _9563 = _9519; _9564 = _9511; _9565 = _9426; _9566 = _9512; } _9567 = as_type(_9498); _9568 = _9562; _9569 = _9563; _9570 = _9564; _9571 = _9565; _9572 = _9566; } else { _9567 = _9443; _9568 = _9484; _9569 = _9483; _9570 = _9481; _9571 = _9426; _9572 = _9482; } _9573 = _9567; _9574 = _9568; _9575 = _9569; _9576 = _9570; _9577 = _9571; _9578 = _9572; } else { _9573 = _9443; _9574 = _9475; _9575 = _9474; _9576 = _9472; _9577 = _9426; _9578 = _9473; } _9579 = _9573; _9580 = _9574; _9581 = _9575; _9582 = _9576; _9583 = _9577; _9584 = _9578; } else { _9579 = _9443; _9580 = _9455; _9581 = _9454; _9582 = _9452; _9583 = _9426; _9584 = _9453; } bool _9588 = _9423 && (!(_9423 && (int(0u) < int(_9584)))); uint _9591; if (_9588) { _9591 = as_type(spvFSub(_7904, _7925)); } else { _9591 = _9583; } uint _9751; uint _9752; uint _9753; uint _9754; uint _9755; uint _9756; uint _9757; if (_9588) { float _9592 = spvFSub(_7906, _7911); float _9593 = spvFSub(_7920, _7938); float _9595 = spvFSub(_8314, _7925); float _9597 = spvFSub(_8316, _7911); float _9598 = spvFSub(_8319, _7938); float _9604 = fma(_9592, _9598, -spvFMul(_9593, _9597)); float _9607 = fma(_9593, _9595, -spvFMul(as_type(_9591), _9598)); uint _9608 = as_type(_9607); float _9611 = fma(as_type(_9591), _9597, -spvFMul(_9592, _9595)); float _9614 = fma(_7962, _9604, fma(_7954, _9607, spvFMul(_7948, _9611))); bool _9616 = _9588 && (0.0 >= _9614); uint _9617; uint _9618; uint _9619; uint _9620; if (_9616) { _9617 = 0u; _9618 = 0u; _9619 = 0u; _9620 = 0u; } else { _9617 = _9582; _9618 = _9584; _9619 = as_type(_9593); _9620 = as_type(_9595); } bool _9622 = _9588 && (!_9616); uint _9626; if (_9622) { _9626 = as_type(spvFSub(as_type(_7734), _7925)); } else { _9626 = _9461; } uint _9744; uint _9745; uint _9746; uint _9747; uint _9748; uint _9749; if (_9622) { float _9628 = spvFSub(as_type(_7733), _7911); float _9630 = spvFSub(as_type(_7732), _7938); float _9634 = fma(as_type(_9626), _9604, fma(_9628, _9607, spvFMul(_9630, _9611))); bool _9635 = 0.0 > _9634; bool _9636 = _9622 && _9635; uint _9637; uint _9638; uint _9639; uint _9640; if (_9636) { _9637 = 0u; _9638 = 0u; _9639 = 0u; _9640 = 0u; } else { _9637 = _9617; _9638 = _9618; _9639 = _9619; _9640 = _9620; } bool _9642 = _9622 && (!_9636); bool _9644; if (_9642) { _9644 = _9634 > _9614; } else { _9644 = _9635; } uint _9738; uint _9739; uint _9740; uint _9741; uint _9742; uint _9743; if (_9642) { bool _9645 = _9642 && _9644; uint _9646; uint _9647; uint _9648; uint _9649; if (_9645) { _9646 = 0u; _9647 = 0u; _9648 = 0u; _9649 = 0u; } else { _9646 = _9637; _9647 = _9638; _9648 = _9639; _9649 = _9640; } bool _9651 = _9642 && (!_9645); uint _9654; if (_9651) { _9654 = as_type(spvFMul(_7948, _9628)); } else { _9654 = as_type(_9604); } uint _9732; uint _9733; uint _9734; uint _9735; uint _9736; uint _9737; if (_9651) { float _9660 = fma(_7954, _9630, -as_type(_9654)); float _9663 = fma(_7948, as_type(_9626), -spvFMul(_7962, _9630)); float _9666 = fma(_7962, _9628, -spvFMul(_7954, as_type(_9626))); float _9670 = fma(as_type(_9649), _9660, fma(_9597, _9663, spvFMul(_9666, _9598))); bool _9674 = _9651 && ((_9670 > _9614) || (_9670 < 0.0)); uint _9675; uint _9676; uint _9677; uint _9678; if (_9674) { _9675 = 0u; _9676 = 0u; _9677 = 0u; _9678 = 0u; } else { _9675 = _9649; _9676 = _9646; _9677 = _9647; _9678 = _9648; } bool _9680 = _9651 && (!_9674); uint _9684; if (_9680) { _9684 = as_type(spvFMul(_9666, as_type(_9678))); } else { _9684 = _9678; } uint _9727; uint _9728; uint _9729; uint _9730; uint _9731; if (_9680) { float _9688 = fma(as_type(_9591), _9660, fma(_9592, _9663, as_type(_9684))); float _9690 = spvFSub(_9670, _9688); bool _9696 = _9680 && ((_9690 > _9614) || (0.0 > (-_9688))); uint _9697; uint _9698; uint _9699; uint _9700; if (_9696) { _9697 = 0u; _9698 = 0u; _9699 = 0u; _9700 = 0u; } else { _9697 = _9675; _9698 = as_type(_9688); _9699 = _9676; _9700 = _9677; } bool _9702 = _9680 && (!_9696); uint _9703; if (_9702) { _9703 = 1u; } else { _9703 = _9700; } uint _9724; uint _9725; uint _9726; if (_9702) { float _9705 = spvFMul(_9634, 1.0 / _9614); _9724 = as_type(fma(_9705, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _9725 = as_type(fma(_9705, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _9726 = as_type(fma(_9705, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _9724 = _9697; _9725 = _9698; _9726 = _9699; } _9727 = as_type(_9690); _9728 = _9724; _9729 = _9725; _9730 = _9726; _9731 = _9703; } else { _9727 = _9591; _9728 = _9675; _9729 = _9684; _9730 = _9676; _9731 = _9677; } _9732 = as_type(_9663); _9733 = _9727; _9734 = _9728; _9735 = _9729; _9736 = _9730; _9737 = _9731; } else { _9732 = _9608; _9733 = _9591; _9734 = _9649; _9735 = _9648; _9736 = _9646; _9737 = _9647; } _9738 = _9732; _9739 = _9733; _9740 = _9734; _9741 = _9735; _9742 = _9736; _9743 = _9737; } else { _9738 = _9608; _9739 = _9591; _9740 = _9640; _9741 = _9639; _9742 = _9637; _9743 = _9638; } _9744 = _9738; _9745 = _9739; _9746 = _9740; _9747 = _9741; _9748 = _9742; _9749 = _9743; } else { _9744 = _9608; _9745 = _9591; _9746 = _9620; _9747 = _9619; _9748 = _9617; _9749 = _9618; } _9751 = _9744; _9752 = _9626; _9753 = _9745; _9754 = _9746; _9755 = _9747; _9756 = _9748; _9757 = uint(max(int(0u), int(_9749))); } else { _9751 = _9579; _9752 = _9461; _9753 = _9591; _9754 = _9580; _9755 = _9581; _9756 = _9582; _9757 = _9584; } uint _9763 = as_type(fma(as_type(_7800), 0.00999999977648258209228515625, as_type(_9756))); uint _9767 = as_type(fma(as_type(_7801), 0.00999999977648258209228515625, as_type(_9755))); bool _9773 = _9423 && (!(_9423 && (int(0u) < int(_9757)))); uint _9776; if (_9773) { _9776 = as_type(spvFSub(_7918, _7981)); } else { _9776 = _9753; } uint _10116; uint _10117; uint _10118; uint _10119; uint _10120; uint _10121; if (_9773) { float _9777 = spvFSub(_7928, _7983); float _9778 = spvFSub(_7931, _7985); float _9780 = spvFSub(_8337, _7981); float _9782 = spvFSub(_8340, _7983); float _9783 = spvFSub(_8343, _7985); float _9789 = fma(_9777, _9783, -spvFMul(_9778, _9782)); float _9792 = fma(_9778, _9780, -spvFMul(as_type(_9776), _9783)); uint _9793 = as_type(_9792); float _9796 = fma(as_type(_9776), _9782, -spvFMul(_9777, _9780)); float _9799 = fma(_7962, _9789, fma(_7954, _9792, spvFMul(_7948, _9796))); bool _9801 = _9773 && (0.0 >= _9799); uint _9802; uint _9803; uint _9804; uint _9805; if (_9801) { _9802 = 0u; _9803 = 0u; _9804 = 0u; _9805 = 0u; } else { _9802 = _9767; _9803 = _9763; _9804 = _9757; _9805 = as_type(_9780); } bool _9807 = _9773 && (!_9801); uint _9811; if (_9807) { _9811 = as_type(spvFSub(as_type(_7734), _7981)); } else { _9811 = _9752; } uint _9927; uint _9928; uint _9929; uint _9930; uint _9931; uint _9932; if (_9807) { float _9813 = spvFSub(as_type(_7733), _7983); float _9815 = spvFSub(as_type(_7732), _7985); float _9819 = fma(as_type(_9811), _9789, fma(_9813, _9792, spvFMul(_9815, _9796))); bool _9820 = 0.0 > _9819; bool _9821 = _9807 && _9820; uint _9822; uint _9823; uint _9824; uint _9825; if (_9821) { _9822 = 0u; _9823 = 0u; _9824 = 0u; _9825 = 0u; } else { _9822 = _9802; _9823 = _9803; _9824 = _9804; _9825 = _9805; } bool _9827 = _9807 && (!_9821); bool _9829; if (_9827) { _9829 = _9819 > _9799; } else { _9829 = _9820; } uint _9921; uint _9922; uint _9923; uint _9924; uint _9925; uint _9926; if (_9827) { bool _9830 = _9827 && _9829; uint _9831; uint _9832; uint _9833; uint _9834; if (_9830) { _9831 = 0u; _9832 = 0u; _9833 = 0u; _9834 = 0u; } else { _9831 = _9822; _9832 = _9823; _9833 = _9824; _9834 = _9825; } bool _9836 = _9827 && (!_9830); uint _9839; if (_9836) { _9839 = as_type(spvFMul(_7948, _9813)); } else { _9839 = as_type(_9789); } uint _9915; uint _9916; uint _9917; uint _9918; uint _9919; uint _9920; if (_9836) { float _9845 = fma(_7954, _9815, -as_type(_9839)); float _9848 = fma(_7948, as_type(_9811), -spvFMul(_7962, _9815)); float _9851 = fma(_7962, _9813, -spvFMul(_7954, as_type(_9811))); float _9855 = fma(as_type(_9834), _9845, fma(_9782, _9848, spvFMul(_9851, _9783))); bool _9859 = _9836 && ((_9855 > _9799) || (_9855 < 0.0)); uint _9860; uint _9861; uint _9862; uint _9863; if (_9859) { _9860 = 0u; _9861 = 0u; _9862 = 0u; _9863 = 0u; } else { _9860 = _9834; _9861 = _9831; _9862 = _9832; _9863 = _9833; } bool _9865 = _9836 && (!_9859); uint _9868; if (_9865) { _9868 = as_type(spvFMul(_9851, _9778)); } else { _9868 = as_type(_9778); } uint _9910; uint _9911; uint _9912; uint _9913; uint _9914; if (_9865) { float _9872 = fma(as_type(_9776), _9845, fma(_9777, _9848, as_type(_9868))); float _9873 = spvFSub(_9855, _9872); bool _9879 = _9865 && ((_9873 > _9799) || (0.0 > (-_9872))); uint _9880; uint _9881; uint _9882; uint _9883; if (_9879) { _9880 = 0u; _9881 = 0u; _9882 = 0u; _9883 = 0u; } else { _9880 = _9860; _9881 = _9861; _9882 = _9862; _9883 = _9863; } bool _9885 = _9865 && (!_9879); uint _9886; if (_9885) { _9886 = 1u; } else { _9886 = _9883; } uint _9907; uint _9908; uint _9909; if (_9885) { float _9888 = spvFMul(_9819, 1.0 / _9799); _9907 = as_type(fma(_9888, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _9908 = as_type(fma(_9888, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _9909 = as_type(fma(_9888, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _9907 = _9880; _9908 = _9881; _9909 = _9882; } _9910 = _9907; _9911 = _9908; _9912 = _9909; _9913 = as_type(_9873); _9914 = _9886; } else { _9910 = _9860; _9911 = _9861; _9912 = _9862; _9913 = _9776; _9914 = _9863; } _9915 = as_type(_9848); _9916 = _9910; _9917 = _9911; _9918 = _9912; _9919 = _9913; _9920 = _9914; } else { _9915 = _9793; _9916 = _9834; _9917 = _9831; _9918 = _9832; _9919 = _9776; _9920 = _9833; } _9921 = _9915; _9922 = _9916; _9923 = _9917; _9924 = _9918; _9925 = _9919; _9926 = _9920; } else { _9921 = _9793; _9922 = _9825; _9923 = _9822; _9924 = _9823; _9925 = _9776; _9926 = _9824; } _9927 = _9921; _9928 = _9922; _9929 = _9923; _9930 = _9924; _9931 = _9925; _9932 = _9926; } else { _9927 = _9793; _9928 = _9805; _9929 = _9802; _9930 = _9803; _9931 = _9776; _9932 = _9804; } bool _9936 = _9773 && (!(_9773 && (int(0u) < int(_9932)))); uint _9940; if (_9936) { _9940 = as_type(spvFSub(as_type(_8306), _8337)); } else { _9940 = _9931; } uint _10098; uint _10099; uint _10100; uint _10101; uint _10102; uint _10103; if (_9936) { float _9941 = spvFSub(_8308, _8340); float _9942 = spvFSub(_8311, _8343); float _9944 = spvFSub(_7981, _8337); float _9946 = spvFSub(_7983, _8340); float _9947 = spvFSub(_7985, _8343); float _9953 = fma(_9941, _9947, -spvFMul(_9942, _9946)); float _9956 = fma(_9942, _9944, -spvFMul(as_type(_9940), _9947)); uint _9957 = as_type(_9956); float _9960 = fma(as_type(_9940), _9946, -spvFMul(_9941, _9944)); float _9963 = fma(_7962, _9953, fma(_7954, _9956, spvFMul(_7948, _9960))); bool _9965 = _9936 && (0.0 >= _9963); uint _9966; uint _9967; uint _9968; uint _9969; if (_9965) { _9966 = 0u; _9967 = 0u; _9968 = 0u; _9969 = 0u; } else { _9966 = _9929; _9967 = _9930; _9968 = _9932; _9969 = as_type(_9944); } bool _9971 = _9936 && (!_9965); uint _9975; if (_9971) { _9975 = as_type(spvFSub(as_type(_7734), _8337)); } else { _9975 = as_type(_8337); } uint _10091; uint _10092; uint _10093; uint _10094; uint _10095; uint _10096; if (_9971) { float _9977 = spvFSub(as_type(_7733), _8340); float _9979 = spvFSub(as_type(_7732), _8343); float _9983 = fma(as_type(_9975), _9953, fma(_9977, _9956, spvFMul(_9979, _9960))); bool _9984 = 0.0 > _9983; bool _9985 = _9971 && _9984; uint _9986; uint _9987; uint _9988; uint _9989; if (_9985) { _9986 = 0u; _9987 = 0u; _9988 = 0u; _9989 = 0u; } else { _9986 = _9966; _9987 = _9967; _9988 = _9968; _9989 = _9969; } bool _9991 = _9971 && (!_9985); bool _9993; if (_9991) { _9993 = _9983 > _9963; } else { _9993 = _9984; } uint _10085; uint _10086; uint _10087; uint _10088; uint _10089; uint _10090; if (_9991) { bool _9994 = _9991 && _9993; uint _9995; uint _9996; uint _9997; uint _9998; if (_9994) { _9995 = 0u; _9996 = 0u; _9997 = 0u; _9998 = 0u; } else { _9995 = _9986; _9996 = _9987; _9997 = _9988; _9998 = _9989; } bool _10000 = _9991 && (!_9994); uint _10003; if (_10000) { _10003 = as_type(spvFMul(_7948, _9977)); } else { _10003 = as_type(_9953); } uint _10079; uint _10080; uint _10081; uint _10082; uint _10083; uint _10084; if (_10000) { float _10009 = fma(_7954, _9979, -as_type(_10003)); float _10012 = fma(_7948, as_type(_9975), -spvFMul(_7962, _9979)); float _10015 = fma(_7962, _9977, -spvFMul(_7954, as_type(_9975))); float _10019 = fma(as_type(_9998), _10009, fma(_9946, _10012, spvFMul(_10015, _9947))); bool _10023 = _10000 && ((_10019 > _9963) || (_10019 < 0.0)); uint _10024; uint _10025; uint _10026; uint _10027; if (_10023) { _10024 = 0u; _10025 = 0u; _10026 = 0u; _10027 = 0u; } else { _10024 = _9998; _10025 = _9995; _10026 = _9996; _10027 = _9997; } bool _10029 = _10000 && (!_10023); uint _10032; if (_10029) { _10032 = as_type(spvFMul(_10015, _9942)); } else { _10032 = as_type(_9942); } uint _10074; uint _10075; uint _10076; uint _10077; uint _10078; if (_10029) { float _10036 = fma(as_type(_9940), _10009, fma(_9941, _10012, as_type(_10032))); float _10037 = spvFSub(_10019, _10036); bool _10043 = _10029 && ((_10037 > _9963) || (0.0 > (-_10036))); uint _10044; uint _10045; uint _10046; uint _10047; if (_10043) { _10044 = 0u; _10045 = 0u; _10046 = 0u; _10047 = 0u; } else { _10044 = _10024; _10045 = _10025; _10046 = _10026; _10047 = _10027; } bool _10049 = _10029 && (!_10043); uint _10050; if (_10049) { _10050 = 1u; } else { _10050 = _10047; } uint _10071; uint _10072; uint _10073; if (_10049) { float _10052 = spvFMul(_9983, 1.0 / _9963); _10071 = as_type(fma(_10052, spvFSub(as_type(_1314), as_type(_7732)), as_type(_7732))); _10072 = as_type(fma(_10052, spvFSub(as_type(_1313), as_type(_7733)), as_type(_7733))); _10073 = as_type(fma(_10052, spvFSub(as_type(_1312), as_type(_7734)), as_type(_7734))); } else { _10071 = _10044; _10072 = _10045; _10073 = _10046; } _10074 = as_type(_10037); _10075 = _10071; _10076 = _10072; _10077 = _10073; _10078 = _10050; } else { _10074 = _9940; _10075 = _10024; _10076 = _10025; _10077 = _10026; _10078 = _10027; } _10079 = as_type(_10012); _10080 = _10074; _10081 = _10075; _10082 = _10076; _10083 = _10077; _10084 = _10078; } else { _10079 = _9957; _10080 = _9940; _10081 = _9998; _10082 = _9995; _10083 = _9996; _10084 = _9997; } _10085 = _10079; _10086 = _10080; _10087 = _10081; _10088 = _10082; _10089 = _10083; _10090 = _10084; } else { _10085 = _9957; _10086 = _9940; _10087 = _9989; _10088 = _9986; _10089 = _9987; _10090 = _9988; } _10091 = _10085; _10092 = _10086; _10093 = _10087; _10094 = _10088; _10095 = _10089; _10096 = _10090; } else { _10091 = _9957; _10092 = _9940; _10093 = _9969; _10094 = _9966; _10095 = _9967; _10096 = _9968; } _10098 = _10091; _10099 = _10092; _10100 = _10093; _10101 = _10094; _10102 = _10095; _10103 = uint(max(int(0u), int(_10096))); } else { _10098 = _9927; _10099 = _9940; _10100 = _9928; _10101 = _9929; _10102 = _9930; _10103 = _9932; } _10116 = _10098; _10117 = _10099; _10118 = as_type(fma(as_type(_7802), -0.00999999977648258209228515625, as_type(_10100))); _10119 = as_type(fma(as_type(_7801), -0.00999999977648258209228515625, as_type(_10101))); _10120 = as_type(fma(as_type(_7800), -0.00999999977648258209228515625, as_type(_10102))); _10121 = _10103; } else { _10116 = _9751; _10117 = _9776; _10118 = as_type(fma(as_type(_7802), 0.00999999977648258209228515625, as_type(_9754))); _10119 = _9767; _10120 = _9763; _10121 = _9757; } _10122 = _10116; _10123 = _10117; _10124 = _10118; _10125 = _10119; _10126 = _10120; _10127 = _10121; } else { _10122 = _9403; _10123 = _9426; _10124 = as_type(fma(as_type(_7819), -0.00999999977648258209228515625, as_type(_9404))); _10125 = as_type(fma(as_type(_7818), -0.00999999977648258209228515625, as_type(_9405))); _10126 = _9413; _10127 = _9407; } _10128 = _10122; _10129 = _10123; _10130 = _10124; _10131 = _10125; _10132 = _10126; _10133 = _10127; } else { _10128 = _9054; _10129 = _8359; _10130 = as_type(fma(as_type(_7819), 0.00999999977648258209228515625, as_type(_9057))); _10131 = as_type(fma(as_type(_7818), 0.00999999977648258209228515625, as_type(_9058))); _10132 = _9066; _10133 = _9060; } _10134 = _10128; _10135 = _10129; _10136 = _10130; _10137 = _10131; _10138 = _10132; _10139 = _10133; } else { _10134 = _8701; _10135 = _8359; _10136 = as_type(fma(as_type(_7836), -0.00999999977648258209228515625, as_type(_8703))); _10137 = as_type(fma(_8298, -0.00999999977648258209228515625, as_type(_8704))); _10138 = _8712; _10139 = _8706; } _10140 = _10134; _10141 = _10135; _10142 = _10138; _10143 = _10137; _10144 = _10136; _10145 = _10139; } else { _10140 = as_type(_7853); _10141 = as_type(_7846); _10142 = _8291; _10143 = as_type(fma(as_type(_7835), 0.00999999977648258209228515625, as_type(_8283))); _10144 = as_type(_8298); _10145 = _8285; } bool _10146 = int(0u) < int(_10145); _10161 = _8280; _10162 = _10145; _10163 = as_type(_10146 ? 1.4012984643248170709237295832899e-45 : 0.0); _10164 = _10140; _10165 = as_type(_10146 ? as_type(_10144) : as_type(_7732)); _10166 = as_type(_10146 ? as_type(_10143) : as_type(_7733)); _10167 = as_type(_10146 ? as_type(_10142) : as_type(_7734)); _10168 = _10146; _10169 = _10141; } else { _10161 = _7610; _10162 = _7609; _10163 = _7731; _10164 = _7607; _10165 = _7732; _10166 = _7733; _10167 = _7734; _10168 = _7740; _10169 = _7743; } bool _10171 = _7738 && (!_7741); bool _10173; if (_10171) { _10173 = 4u == _10169; } else { _10173 = _10168; } uint _10732; uint _10733; uint _10734; uint _10735; uint _10736; uint _10737; uint _10738; uint _10739; uint _10740; if (_10171) { bool _10174 = _10171 && _10173; uint _10176; if (_10174) { _10176 = _7646 + 154u; } else { _10176 = _10169; } uint _10458; uint _10459; uint _10460; uint _10461; uint _10462; bool _10463; uint _10464; if (_10174) { uint _10178 = _7646 << 2u; uint _10185 = ((0u + (_10176 * 16u)) + buf3_off) >> 2u; uint3 _10195 = uint3(cbuf_56.data[_10185 + 0u], cbuf_56.data[_10185 + 1u], cbuf_56.data[_10185 + 2u]); uint _10196 = _10195.x; uint _10197 = _10195.y; uint _10198 = _10195.z; uint _10202 = ((0u + ((_7646 + 170u) * 16u)) + buf3_off) >> 2u; uint3 _10212 = uint3(cbuf_56.data[_10202 + 0u], cbuf_56.data[_10202 + 1u], cbuf_56.data[_10202 + 2u]); uint _10213 = _10212.x; uint _10214 = _10212.y; uint _10215 = _10212.z; uint _10219 = ((0u + ((_10178 + 188u) * 16u)) + buf3_off) >> 2u; uint4 _10232 = uint4(cbuf_56.data[_10219 + 0u], cbuf_56.data[_10219 + 1u], cbuf_56.data[_10219 + 2u], cbuf_56.data[_10219 + 3u]); uint _10233 = _10232.x; uint _10234 = _10232.y; uint _10235 = _10232.z; uint _10236 = _10232.w; uint _10240 = ((0u + ((_10178 + 187u) * 16u)) + buf3_off) >> 2u; uint4 _10253 = uint4(cbuf_56.data[_10240 + 0u], cbuf_56.data[_10240 + 1u], cbuf_56.data[_10240 + 2u], cbuf_56.data[_10240 + 3u]); uint _10254 = _10253.x; uint _10255 = _10253.y; uint _10256 = _10253.z; uint _10257 = _10253.w; uint _10261 = ((0u + ((_10178 + 186u) * 16u)) + buf3_off) >> 2u; uint4 _10274 = uint4(cbuf_56.data[_10261 + 0u], cbuf_56.data[_10261 + 1u], cbuf_56.data[_10261 + 2u], cbuf_56.data[_10261 + 3u]); uint _10275 = _10274.x; uint _10276 = _10274.y; uint _10277 = _10274.z; uint _10278 = _10274.w; float _10282 = spvFMul(spvFAdd(as_type(_10198), as_type(_10215)), 0.5); float _10286 = spvFMul(spvFAdd(as_type(_10197), as_type(_10214)), 0.5); float _10288 = spvFSub(as_type(_10198), _10282); float _10290 = spvFSub(as_type(_10215), _10282); float _10294 = spvFMul(spvFAdd(as_type(_10196), as_type(_10213)), 0.5); float _10296 = spvFSub(as_type(_10197), _10286); float _10298 = spvFSub(as_type(_10214), _10286); float _10306 = spvFSub(as_type(_10196), _10294); float _10308 = spvFSub(as_type(_10213), _10294); float _10341 = spvFAdd(_10282, fma(as_type(_10233), _10306, fma(as_type(_10234), _10296, fma(as_type(_10235), _10288, as_type(_10236))))); float _10342 = spvFAdd(_10282, fma(as_type(_10233), _10308, fma(as_type(_10234), _10298, fma(as_type(_10235), _10290, as_type(_10236))))); float _10347 = spvFAdd(_10286, fma(as_type(_10254), _10306, fma(as_type(_10255), _10296, fma(as_type(_10256), _10288, as_type(_10257))))); float _10348 = spvFAdd(_10286, fma(as_type(_10254), _10308, fma(as_type(_10255), _10298, fma(as_type(_10256), _10290, as_type(_10257))))); float _10349 = spvFSub(_10342, _10341); float _10350 = spvFAdd(_10294, fma(as_type(_10275), _10306, fma(as_type(_10276), _10296, fma(as_type(_10277), _10288, as_type(_10278))))); float _10351 = spvFAdd(_10294, fma(as_type(_10275), _10308, fma(as_type(_10276), _10298, fma(as_type(_10277), _10290, as_type(_10278))))); float _10352 = spvFSub(_10348, _10347); float _10354 = spvFSub(as_type(_10165), _10341); float _10357 = spvFSub(_10351, _10350); float _10359 = spvFSub(as_type(_10166), _10347); float _10363 = spvFSub(as_type(_10167), _10350); float _10365 = fma(_10357, _10357, fma(_10352, _10352, spvFMul(_10349, _10349))); float _10366 = fma(_10363, _10357, fma(_10359, _10352, spvFMul(_10349, _10354))); float _10367 = 1.0 / _10365; float _10369 = fast::clamp(spvFMul(_10366, _10367), 0.0, 1.0); float _10370 = fma(_10369, _10349, _10341); float _10371 = fma(_10369, _10352, _10347); float _10373 = spvFSub(as_type(_10165), _10370); float _10374 = fma(_10369, _10357, _10350); float _10376 = spvFSub(as_type(_10166), _10371); float _10379 = spvFSub(as_type(_10167), _10374); float _10383 = spvFSub(as_type(_10167), _10351); float _10385 = spvFSub(as_type(_10166), _10348); bool _10389 = 0.0 >= _10366; bool _10390 = _10174 && _10389; uint _10396; if (_10390) { _10396 = as_type(sqrt(fma(_10363, _10363, fma(_10359, _10359, spvFMul(_10354, _10354))))); } else { _10396 = as_type(spvFSub(as_type(_10165), _10342)); } bool _10398 = _10174 && (!_10390); bool _10400; if (_10398) { _10400 = _10366 >= _10365; } else { _10400 = _10389; } uint _10424; if (_10398) { bool _10401 = _10398 && _10400; uint _10409; if (_10401) { _10409 = as_type(sqrt(fma(_10383, _10383, fma(_10385, _10385, spvFMul(as_type(_10396), as_type(_10396)))))); } else { _10409 = _10396; } bool _10411 = _10398 && (!_10401); uint _10414; if (_10411) { _10414 = as_type(spvFMul(_10354, _10354)); } else { _10414 = _10409; } uint _10423; if (_10411) { _10423 = as_type(sqrt(fma(-spvFMul(_10366, _10366), _10367, fma(_10363, _10363, fma(_10359, _10359, as_type(_10414)))))); } else { _10423 = _10414; } _10424 = _10423; } else { _10424 = _10396; } uint _10429 = ((0u + ((_7646 + 162u) * 16u)) + buf3_off) >> 2u; bool _10434 = as_type(cbuf_56.data[_10429]) > as_type(_10424); bool _10435 = _10174 && _10434; uint _10451; uint _10452; uint _10453; uint _10454; if (_10435) { float _10437 = 1.0 / sqrt(fma(_10379, _10379, fma(_10376, _10376, spvFMul(_10373, _10373)))); float _10439 = spvFMul(_10376, _10437); _10451 = as_type(fma(spvFMul(_10373, _10437), as_type(cbuf_56.data[_10429]), _10370)); _10452 = as_type(fma(_10439, as_type(cbuf_56.data[_10429]), _10371)); _10453 = as_type(fma(spvFMul(_10379, _10437), as_type(cbuf_56.data[_10429]), _10374)); _10454 = as_type(_10439); } else { _10451 = _10165; _10452 = _10166; _10453 = _10167; _10454 = _10424; } uint _10457; if (_10174 && (!_10435)) { _10457 = 0u; } else { _10457 = 1u; } _10458 = _10457; _10459 = _10451; _10460 = _10452; _10461 = _10453; _10462 = as_type(_10354); _10463 = _10434; _10464 = _10454; } else { _10458 = _10163; _10459 = _10165; _10460 = _10166; _10461 = _10167; _10462 = _10164; _10463 = _10173; _10464 = _10176; } bool _10466 = _10171 && (!_10174); bool _10468; if (_10466) { _10468 = 6u == _10464; } else { _10468 = _10463; } uint _10723; uint _10724; uint _10725; uint _10726; uint _10727; uint _10728; uint _10729; uint _10730; uint _10731; if (_10466) { bool _10469 = _10466 && _10468; uint _10470; if (_10469) { _10470 = cbuf_52.data[_7164]; } else { _10470 = _10464; } uint _10715; uint _10716; uint _10717; uint _10718; uint _10719; uint _10720; uint _10721; uint _10722; if (_10469) { float _10491 = fma(as_type(cbuf_52.data[_7152]), as_type(_10461), fma(as_type(cbuf_52.data[_7156]), as_type(_10460), fma(as_type(cbuf_52.data[_7160]), as_type(_10459), as_type(_10470)))); float _10497 = fma(as_type(cbuf_52.data[_7184]), as_type(_10461), fma(as_type(cbuf_52.data[_7188]), as_type(_10460), fma(as_type(cbuf_52.data[_7192]), as_type(_10459), as_type(cbuf_52.data[_7196])))); float _10503 = fma(as_type(cbuf_52.data[_7168]), as_type(_10461), fma(as_type(cbuf_52.data[_7172]), as_type(_10460), fma(as_type(cbuf_52.data[_7176]), as_type(_10459), as_type(cbuf_52.data[_7180])))); float _10522 = 1.0 / fma(as_type(cbuf_52.data[_7200]), _10503, fma(as_type(cbuf_52.data[_7204]), _10497, fma(as_type(cbuf_52.data[_7208]), _10491, as_type(cbuf_52.data[_7212])))); float _10525 = fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_7216]), _10503, fma(as_type(cbuf_52.data[_7220]), _10497, fma(as_type(cbuf_52.data[_7224]), _10491, as_type(cbuf_52.data[_7228])))), _10522), 0.5); float _10526 = fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_7232]), _10503, fma(as_type(cbuf_52.data[_7236]), _10497, fma(as_type(cbuf_52.data[_7240]), _10491, as_type(cbuf_52.data[_7244])))), _10522), 0.5); float _10549 = 1.0 / fma(as_type(cbuf_52.data[_7356]), as_type(as_type(cs_img16.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_7317), int(uint(int(spvFMul(_7321, _10525))))))))), uint(max(int(0u), int(uint(min(int(_7318), int(uint(int(spvFMul(_7322, _10526))))))))))), 0u)).x), as_type(cbuf_52.data[_7353])); float _10553 = spvFMul(as_type(cbuf_52.data[_7359]), _10549); bool _10567 = _10469 && ((((spvFMul(5.0, fast::max(abs(spvFSub(_7285, _10491)), 0.5)) >= abs(fma(as_type(cbuf_52.data[_7359]), _10549, -_10491))) && (_7595 > _10553)) && (_10491 >= _10553)) && (_7592 >= _7285)); uint _10571; if (_10567) { _10571 = as_type(spvFMul(as_type(cbuf_52.data[_7516]), _10553)); } else { _10571 = _7730; } uint _10707; uint _10708; uint _10709; uint _10710; uint _10711; uint _10712; uint _10713; uint _10714; if (_10567) { float _10575 = spvFMul(fma(-2.0, _10526, 1.0), as_type(_10571)); float _10579 = spvFMul(fma(2.0, _10525, -1.0), spvFMul(as_type(cbuf_52.data[_7512]), _10553)); float _10598 = 1.0 / fma(as_type(cbuf_52.data[_7200]), _10579, fma(as_type(cbuf_52.data[_7204]), _10575, fma(as_type(cbuf_52.data[_7208]), _10553, as_type(cbuf_52.data[_7212])))); uint4 _10614 = as_type(cs_img24.read(uint2(uint2(uint(max(int(0u), int(uint(min(int(_7505), int(uint(int(spvFMul(_7596, fma(0.5, spvFMul(fma(as_type(cbuf_52.data[_7216]), _10579, fma(as_type(cbuf_52.data[_7220]), _10575, fma(as_type(cbuf_52.data[_7224]), _10553, as_type(cbuf_52.data[_7228])))), _10598), 0.5)))))))))), uint(max(int(0u), int(uint(min(int(_7506), int(uint(int(spvFMul(_7597, fma(-0.5, spvFMul(fma(as_type(cbuf_52.data[_7232]), _10579, fma(as_type(cbuf_52.data[_7236]), _10575, fma(as_type(cbuf_52.data[_7240]), _10553, as_type(cbuf_52.data[_7244])))), _10598), 0.5)))))))))))), 0u)); float _10622 = fma(as_type(_2163), _6850, spvFMul(0.980000019073486328125, as_type(_7603))); float _10624 = fma(2.0, as_type(_10614.z), -1.0); float _10628 = fma(2.0, as_type(_10614.y), -1.0); float _10633 = fma(as_type(_2163), _6847, spvFMul(0.980000019073486328125, as_type(_7604))); float _10636 = fma(2.0, as_type(_10614.x), -1.0); float _10639 = fma(as_type(_2163), _6844, spvFMul(0.980000019073486328125, as_type(_7605))); float _10643 = rsqrt(fma(_10636, _10636, fma(_10628, _10628, spvFMul(_10624, _10624)))); float _10644 = rsqrt(fma(_10639, _10639, fma(_10633, _10633, spvFMul(_10622, _10622)))); float _10645 = spvFMul(_10624, _10643); float _10647 = spvFMul(_10628, _10643); float _10650 = spvFMul(_10636, _10643); float _10656 = spvFMul(fma(spvFMul(_10639, _10644), _10650, fma(spvFMul(_10633, _10644), _10647, spvFMul(_10645, spvFMul(_10622, _10644)))), 2.0); float _10676 = sqrt(fma(_10639, _10639, fma(_10633, _10633, spvFMul(_10622, _10622)))); float _10687 = fma(as_type(cbuf_52.data[_7540]), _10579, fma(as_type(cbuf_52.data[_7544]), _10575, fma(as_type(cbuf_52.data[_7548]), _10553, as_type(cbuf_52.data[_7552])))); _10707 = as_type(_10687); _10708 = as_type(_10676); _10709 = as_type(fma(_10645, 0.0199999995529651641845703125, fma(as_type(cbuf_52.data[_7556]), _10579, fma(as_type(cbuf_52.data[_7560]), _10575, fma(as_type(cbuf_52.data[_7564]), _10553, as_type(cbuf_52.data[_7568])))))); _10710 = as_type(fma(_10647, 0.0199999995529651641845703125, _10687)); _10711 = as_type(fma(_10650, 0.0199999995529651641845703125, fma(as_type(cbuf_52.data[_7524]), _10579, fma(as_type(cbuf_52.data[_7528]), _10575, fma(as_type(cbuf_52.data[_7532]), _10553, as_type(cbuf_52.data[_7536])))))); _10712 = as_type(spvFMul(_1527, spvFMul(_10676, fma(_10622, _10644, -spvFMul(_10645, _10656))))); _10713 = as_type(spvFMul(_1527, spvFMul(_10676, fma(_10633, _10644, -spvFMul(_10647, _10656))))); _10714 = as_type(spvFMul(_1527, spvFMul(_10676, fma(_10639, _10644, -spvFMul(_10650, _10656))))); } else { _10707 = _10462; _10708 = _10571; _10709 = _10459; _10710 = _10460; _10711 = _10461; _10712 = _7603; _10713 = _7604; _10714 = _7605; } _10715 = _10707; _10716 = _10708; _10717 = _10709; _10718 = _10710; _10719 = _10711; _10720 = _10712; _10721 = _10713; _10722 = _10714; } else { _10715 = _10462; _10716 = _7730; _10717 = _10459; _10718 = _10460; _10719 = _10461; _10720 = _7603; _10721 = _7604; _10722 = _7605; } _10723 = _10715; _10724 = _10716; _10725 = _10717; _10726 = _10718; _10727 = _10719; _10728 = _10720; _10729 = _10721; _10730 = _10722; _10731 = 0u; } else { _10723 = _10462; _10724 = _7730; _10725 = _10459; _10726 = _10460; _10727 = _10461; _10728 = _7603; _10729 = _7604; _10730 = _7605; _10731 = _10458; } _10732 = _10723; _10733 = _10724; _10734 = _10725; _10735 = _10726; _10736 = _10727; _10737 = _10728; _10738 = _10729; _10739 = _10730; _10740 = _10731; } else { _10732 = _10164; _10733 = _7730; _10734 = _10165; _10735 = _10166; _10736 = _10167; _10737 = _7603; _10738 = _7604; _10739 = _7605; _10740 = _10163; } _10741 = _10161; _10742 = _10732; _10743 = _10733; _10744 = _10162; _10745 = _10734; _10746 = _10735; _10747 = _10736; _10748 = _10737; _10749 = _10738; _10750 = _10739; _10751 = _10740; } else { _10741 = _7610; _10742 = _7607; _10743 = _7730; _10744 = _7609; _10745 = _7732; _10746 = _7733; _10747 = _7734; _10748 = _7603; _10749 = _7604; _10750 = _7605; _10751 = _7731; } bool _10753 = _7648 && (int(0u) < int(_10751)); uint _10754 = extract_bits(_1432, 0u, 16u); uint _11125; uint _11126; uint _11127; uint _11128; uint _11129; if (_10753) { uint _10756 = extract_bits(_1431, 0u, 16u); bool _10759 = _10753 && ((int(_10754) > int(_7602)) && (int(_10756) > int(0u))); uint _10761; if (_10759) { _10761 = _7602 + 1u; } else { _10761 = _10756; } uint _11114; uint _11115; if (_10759) { uint _10773 = uint(int(fma(as_type(cbuf_52.data[_1567]), 1000.0, float(((_7602 * 100u) + _7484) + 100u)))); uint _10776 = 1048575u & ((_10773 * 6389u) + 7381u); uint _10778 = uint(max(int(_10776), int(0u - _10776))); uint _10785 = _10778 - (((spvMulExtended(_10778, 1041204193u))._m1 >> 4u) * 66u); bool _10787 = int(_10776) < int(0u); float _10796 = spvFMul(0.01745329238474369049072265625, float(int(as_type(_10787 ? as_type(0u - _10785) : as_type(_10785)) + 4294967231u))); uint _10802 = 1048575u & (((_7421 + (gl_LocalInvocationID.x + _10773)) * 6389u) + 7381u); uint _10804 = uint(max(int(_10802), int(0u - _10802))); uint _10810 = _10804 - (((spvMulExtended(_10804, 3037324939u))._m1 >> 7u) * 181u); float _10820 = spvFMul(0.01745329238474369049072265625, float(int(as_type((int(0u) > int(_10802)) ? as_type(0u - _10810) : as_type(_10810)) + 4294967116u))); uint _10827 = (2147483648u & as_type(_10796)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _10796)))); float _10830 = sin(6.283185482025146484375 * as_type(_10827)); float _10833 = cos(6.283185482025146484375 * as_type(_10827)); uint _10839 = (2147483648u & as_type(_10820)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _10820)))); float _10842 = sin(6.283185482025146484375 * as_type(_10839)); float _10845 = cos(6.283185482025146484375 * as_type(_10839)); float _10846 = spvFMul(_10830, _10842); float _10883 = 1.0 / fma(float(int(_10761)), 1.5, 1.0); uint _10904 = _10778 - (((spvMulExtended(_10778, 274877907u))._m1 >> 6u) * 1000u); float _10912 = fma(0.0199999995529651641845703125, spvFMul(0.001000000047497451305389404296875, float(int(as_type(_10787 ? as_type(0u - _10904) : as_type(_10904))))), -0.00999999977648258209228515625); uint _10923 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[9u], 1, memory_order_relaxed); uint4 _10924 = uint4(as_type(spvFAdd(as_type(_10747), _10912)), as_type(spvFAdd(as_type(_10746), _10912)), as_type(spvFAdd(as_type(_10745), _10912)), _1315); uint _10928 = ((0u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10928 + 0u] = _10924.x; ssbo_48.data[_10928 + 1u] = _10924.y; ssbo_48.data[_10928 + 2u] = _10924.z; ssbo_48.data[_10928 + 3u] = _10924.w; uint4 _10941 = uint4(_1312, _1313, _1314, _1315); uint _10945 = ((16u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10945 + 0u] = _10941.x; ssbo_48.data[_10945 + 1u] = _10941.y; ssbo_48.data[_10945 + 2u] = _10941.z; ssbo_48.data[_10945 + 3u] = _10941.w; uint4 _10958 = uint4(_1351, _1352, as_type(half2(float2(fma(_10845, as_type(_10750), fma(_10846, as_type(_10749), spvFMul(as_type(_10748), _10846))), 0.0))) | (as_type(half2(float2(fma(as_type(_10750), 0.0, fma(_10833, as_type(_10749), spvFMul(as_type(_10748), -_10830))), 0.0))) << 16u), as_type(half2(float2(fma(-_10842, as_type(_10750), fma(spvFMul(_10830, _10845), as_type(_10749), spvFMul(as_type(_10748), spvFMul(_10833, _10845)))), 0.0))) | ((_1354 >> 16u) << 16u)); uint _10962 = ((32u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10962 + 0u] = _10958.x; ssbo_48.data[_10962 + 1u] = _10958.y; ssbo_48.data[_10962 + 2u] = _10958.z; ssbo_48.data[_10962 + 3u] = _10958.w; uint4 _10975 = uint4(_7471, _7583, _7472, _7584); uint _10979 = ((48u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10979 + 0u] = _10975.x; ssbo_48.data[_10979 + 1u] = _10975.y; ssbo_48.data[_10979 + 2u] = _10975.z; ssbo_48.data[_10979 + 3u] = _10975.w; uint4 _10992 = uint4(_7482, _7483, _7473, _7474); uint _10996 = ((64u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_10996 + 0u] = _10992.x; ssbo_48.data[_10996 + 1u] = _10992.y; ssbo_48.data[_10996 + 2u] = _10992.z; ssbo_48.data[_10996 + 3u] = _10992.w; uint4 _11009 = uint4(_7475, _7476, as_type(half2(float2(spvFMul(_7573, _10883), 0.0))) | (as_type(half2(float2(spvFMul(_7576, _10883), 0.0))) << 16u), as_type(half2(float2(spvFMul(_7579, _10883), 0.0))) | (as_type(half2(float2(spvFMul(_7582, _10883), 0.0))) << 16u)); uint _11013 = ((80u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11013 + 0u] = _11009.x; ssbo_48.data[_11013 + 1u] = _11009.y; ssbo_48.data[_11013 + 2u] = _11009.z; ssbo_48.data[_11013 + 3u] = _11009.w; uint4 _11026 = uint4(_7477, _7478, _7479, _1418); uint _11031 = ((96u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11031 + 0u] = _11026.x; ssbo_48.data[_11031 + 1u] = _11026.y; ssbo_48.data[_11031 + 2u] = _11026.z; ssbo_48.data[_11031 + 3u] = _11026.w; uint4 _11044 = uint4((_7602 << 16u) + 65536u, _1432, _1451, _1452); uint _11048 = ((112u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11048 + 0u] = _11044.x; ssbo_48.data[_11048 + 1u] = _11044.y; ssbo_48.data[_11048 + 2u] = _11044.z; ssbo_48.data[_11048 + 3u] = _11044.w; uint4 _11061 = uint4(_1453, _1454, _1473, _1474); uint _11066 = ((128u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11066 + 0u] = _11061.x; ssbo_48.data[_11066 + 1u] = _11061.y; ssbo_48.data[_11066 + 2u] = _11061.z; ssbo_48.data[_11066 + 3u] = _11061.w; uint4 _11079 = uint4(_1475, _1476, _7480, _7481); uint _11084 = ((144u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11084 + 0u] = _11079.x; ssbo_48.data[_11084 + 1u] = _11079.y; ssbo_48.data[_11084 + 2u] = _11079.z; ssbo_48.data[_11084 + 3u] = _11079.w; uint4 _11097 = uint4(_7589, _7590, _1511, _1508.w); uint _11101 = ((160u + (_10923 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11101 + 0u] = _11097.x; ssbo_48.data[_11101 + 1u] = _11097.y; ssbo_48.data[_11101 + 2u] = _11097.z; ssbo_48.data[_11101 + 3u] = _11097.w; _11114 = _10923; _11115 = _10761; } else { _11114 = _10742; _11115 = _7602; } uint _11117 = 1u & (cbuf_52.data[_7520] & _7640.z); bool _11118 = 0u != _11117; _11125 = as_type(_11118 ? 1.0 : as_type(_7600)); _11126 = _11114; _11127 = _11117; _11128 = _11115; _11129 = as_type(_11118 ? 0.0 : as_type(_7601)); } else { _11125 = _7600; _11126 = _10742; _11127 = _10754; _11128 = _7602; _11129 = _7601; } _11131 = _10745; _11132 = _10746; _11133 = _10747; _11134 = _11125; _11135 = _10748; _11136 = _10749; _11137 = _10750; _11138 = _10741; _11139 = _11126; _11140 = _10743; _11141 = _11127; _11142 = _11128; _11143 = _7646 + 1u; _11144 = _11129; _11145 = _10744; } else { _11131 = _7611; _11132 = _7612; _11133 = _7613; _11134 = _7600; _11135 = _7603; _11136 = _7604; _11137 = _7605; _11138 = _7610; _11139 = _7607; _11140 = _7606; _11141 = _7608; _11142 = _7602; _11143 = _7646; _11144 = _7601; _11145 = _7609; } if (true) { _7600 = _11134; _7601 = _11144; _7602 = _11142; _7603 = _11135; _7604 = _11136; _7605 = _11137; _7606 = _11140; _7607 = _11139; _7608 = _11141; _7609 = _11145; _7610 = _11138; _7611 = _11131; _7612 = _11132; _7613 = _11133; _7614 = _7623; _7615 = _7624; _7616 = _11143; continue; } else { _11146 = _11131; _11147 = _11132; _11148 = _11133; _11149 = _11135; _11150 = _11136; _11151 = _11137; _11152 = _11143; _11153 = _11134; _11154 = _11144; _11155 = _11142; break; } } uint _11156 = extract_bits(_1431, 0u, 16u); bool _11158 = _1286 && (0u == _11156); uint _11161; if (_11158) { _11161 = as_type(float(int(_11155))); } else { _11161 = _11156; } uint _11168; uint _11169; if (_11158) { float _11164 = 1.0 / fma(as_type(_11161), 1.5, 1.0); _11168 = as_type(spvFMul(_7582, _11164)); _11169 = as_type(_11164); } else { _11168 = _11152; _11169 = _11161; } bool _11171 = _1286 && (!_11158); uint _11173; if (_11171) { _11173 = _11155 << 1u; } else { _11173 = _11169; } uint _11185; uint _11186; if (_11171) { _11185 = as_type(spvFMul(_7582, 1.0 / float(int(_11173 + 1u)))); _11186 = as_type((int(_11155) >= int(extract_bits(_1432, 0u, 16u))) ? as_type(_11154) : as_type(_11153)); } else { _11185 = _11168; _11186 = _11153; } if (_1286 && (as_type(_11154) > as_type(_11186))) { uint _11244 = atomic_fetch_add_explicit((device atomic_uint*)&ssbo_0.data[9u], 1, memory_order_relaxed); uint4 _11245 = uint4(_11148, _11147, _11146, _1315); uint _11249 = ((0u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11249 + 0u] = _11245.x; ssbo_48.data[_11249 + 1u] = _11245.y; ssbo_48.data[_11249 + 2u] = _11245.z; ssbo_48.data[_11249 + 3u] = _11245.w; uint4 _11262 = uint4(_1312, _1313, _1314, _1315); uint _11266 = ((16u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11266 + 0u] = _11262.x; ssbo_48.data[_11266 + 1u] = _11262.y; ssbo_48.data[_11266 + 2u] = _11262.z; ssbo_48.data[_11266 + 3u] = _11262.w; uint4 _11279 = uint4(extract_bits(_1351, 0u, 16u) | (as_type(half2(float2(as_type(_11154), 0.0))) << 16u), as_type(half2(float2(as_type(_11186), 0.0))) | (4294901760u & _1352), as_type(half2(float2(as_type(_11151), 0.0))) | (as_type(half2(float2(as_type(_11150), 0.0))) << 16u), ((_1354 >> 16u) << 16u) | as_type(half2(float2(as_type(_11149), 0.0)))); uint _11283 = ((32u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11283 + 0u] = _11279.x; ssbo_48.data[_11283 + 1u] = _11279.y; ssbo_48.data[_11283 + 2u] = _11279.z; ssbo_48.data[_11283 + 3u] = _11279.w; uint4 _11296 = uint4(_7471, _7583, _7472, _7584); uint _11300 = ((48u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11300 + 0u] = _11296.x; ssbo_48.data[_11300 + 1u] = _11296.y; ssbo_48.data[_11300 + 2u] = _11296.z; ssbo_48.data[_11300 + 3u] = _11296.w; uint4 _11313 = uint4(as_type(half2(float2(as_type(_7149), 0.0))) | (as_type(half2(float2(as_type(_7150), 0.0))) << 16u), _7469 | as_type(half2(float2(_7142, 0.0))), _7473, _7474); uint _11317 = ((64u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11317 + 0u] = _11313.x; ssbo_48.data[_11317 + 1u] = _11313.y; ssbo_48.data[_11317 + 2u] = _11313.z; ssbo_48.data[_11317 + 3u] = _11313.w; uint4 _11330 = uint4(_7475, _7476, as_type(half2(float2(_7573, 0.0))) | (as_type(half2(float2(_7576, 0.0))) << 16u), as_type(half2(float2(_7579, 0.0))) | (as_type(half2(float2(as_type(_11185), 0.0))) << 16u)); uint _11334 = ((80u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11334 + 0u] = _11330.x; ssbo_48.data[_11334 + 1u] = _11330.y; ssbo_48.data[_11334 + 2u] = _11330.z; ssbo_48.data[_11334 + 3u] = _11330.w; uint4 _11347 = uint4(_7477, _7478, _7479, _1418); uint _11351 = ((96u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11351 + 0u] = _11347.x; ssbo_48.data[_11351 + 1u] = _11347.y; ssbo_48.data[_11351 + 2u] = _11347.z; ssbo_48.data[_11351 + 3u] = _11347.w; uint4 _11364 = uint4(extract_bits(_1431, 0u, 16u) | (_11155 << 16u), _1432, _1451, _1452); uint _11368 = ((112u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11368 + 0u] = _11364.x; ssbo_48.data[_11368 + 1u] = _11364.y; ssbo_48.data[_11368 + 2u] = _11364.z; ssbo_48.data[_11368 + 3u] = _11364.w; uint4 _11381 = uint4(_1453, _1454, _1473, _1474); uint _11385 = ((128u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11385 + 0u] = _11381.x; ssbo_48.data[_11385 + 1u] = _11381.y; ssbo_48.data[_11385 + 2u] = _11381.z; ssbo_48.data[_11385 + 3u] = _11381.w; uint4 _11398 = uint4(_1475, _1476, _7480, _7481); uint _11402 = ((144u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11402 + 0u] = _11398.x; ssbo_48.data[_11402 + 1u] = _11398.y; ssbo_48.data[_11402 + 2u] = _11398.z; ssbo_48.data[_11402 + 3u] = _11398.w; uint4 _11415 = uint4(_7589, _7590, _1511, _1508.w); uint _11419 = ((160u + (_11244 * 176u)) + buf4_off) >> 2u; ssbo_48.data[_11419 + 0u] = _11415.x; ssbo_48.data[_11419 + 1u] = _11415.y; ssbo_48.data[_11419 + 2u] = _11415.z; ssbo_48.data[_11419 + 3u] = _11415.w; } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x749e4f9e [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb11756c0 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[384]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_16 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_8 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_28 [[buffer(13)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(14)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(15)]], constant vs_cbuf_block_f32_3& cbuf_12 [[buffer(16)]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint _130 = as_type(as_type(in.vs_in_attr2.x)); uint _134 = as_type(as_type(in.vs_in_attr2.y)); uint _138 = as_type(as_type(in.vs_in_attr2.z)); uint _143 = as_type(as_type(in.vs_in_attr2.w)); float _167 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr3.w, spvFAdd(in.vs_in_attr3.z, spvFAdd(in.vs_in_attr3.x, in.vs_in_attr3.y)))); float _168 = spvFMul(in.vs_in_attr3.x, _167); float _169 = spvFMul(in.vs_in_attr3.y, _167); float _170 = spvFMul(in.vs_in_attr3.z, _167); float _171 = spvFMul(in.vs_in_attr3.w, _167); uint _172 = _130 * 3u; uint _173 = _172 + 1u; uint _174 = _172 + 2u; uint _175 = _134 * 3u; uint _176 = _175 + 1u; uint _177 = _175 + 2u; uint _178 = _138 * 3u; uint _179 = _178 + 1u; uint _180 = _178 + 2u; uint _181 = _143 * 3u; uint _182 = _181 + 1u; uint _183 = _181 + 2u; uint _185 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); uint _250 = ((0u + (_172 * 16u)) + buf4_off) >> 2u; uint4 _263 = uint4(cbuf_28.data[_250 + 0u], cbuf_28.data[_250 + 1u], cbuf_28.data[_250 + 2u], cbuf_28.data[_250 + 3u]); uint _271 = ((0u + (_173 * 16u)) + buf4_off) >> 2u; uint4 _284 = uint4(cbuf_28.data[_271 + 0u], cbuf_28.data[_271 + 1u], cbuf_28.data[_271 + 2u], cbuf_28.data[_271 + 3u]); uint _292 = ((0u + (_174 * 16u)) + buf4_off) >> 2u; uint4 _305 = uint4(cbuf_28.data[_292 + 0u], cbuf_28.data[_292 + 1u], cbuf_28.data[_292 + 2u], cbuf_28.data[_292 + 3u]); uint _313 = ((0u + (_175 * 16u)) + buf4_off) >> 2u; uint4 _326 = uint4(cbuf_28.data[_313 + 0u], cbuf_28.data[_313 + 1u], cbuf_28.data[_313 + 2u], cbuf_28.data[_313 + 3u]); uint _334 = ((0u + (_176 * 16u)) + buf4_off) >> 2u; uint4 _347 = uint4(cbuf_28.data[_334 + 0u], cbuf_28.data[_334 + 1u], cbuf_28.data[_334 + 2u], cbuf_28.data[_334 + 3u]); uint _355 = ((0u + (_177 * 16u)) + buf4_off) >> 2u; uint4 _368 = uint4(cbuf_28.data[_355 + 0u], cbuf_28.data[_355 + 1u], cbuf_28.data[_355 + 2u], cbuf_28.data[_355 + 3u]); uint _376 = ((0u + (_178 * 16u)) + buf4_off) >> 2u; uint4 _389 = uint4(cbuf_28.data[_376 + 0u], cbuf_28.data[_376 + 1u], cbuf_28.data[_376 + 2u], cbuf_28.data[_376 + 3u]); uint _397 = ((0u + (_179 * 16u)) + buf4_off) >> 2u; uint4 _410 = uint4(cbuf_28.data[_397 + 0u], cbuf_28.data[_397 + 1u], cbuf_28.data[_397 + 2u], cbuf_28.data[_397 + 3u]); uint _426 = ((0u + (_180 * 16u)) + buf4_off) >> 2u; uint4 _439 = uint4(cbuf_28.data[_426 + 0u], cbuf_28.data[_426 + 1u], cbuf_28.data[_426 + 2u], cbuf_28.data[_426 + 3u]); uint _455 = ((0u + (_181 * 16u)) + buf4_off) >> 2u; uint4 _468 = uint4(cbuf_28.data[_455 + 0u], cbuf_28.data[_455 + 1u], cbuf_28.data[_455 + 2u], cbuf_28.data[_455 + 3u]); uint _484 = ((0u + (_182 * 16u)) + buf4_off) >> 2u; uint4 _497 = uint4(cbuf_28.data[_484 + 0u], cbuf_28.data[_484 + 1u], cbuf_28.data[_484 + 2u], cbuf_28.data[_484 + 3u]); uint _513 = ((0u + (_183 * 16u)) + buf4_off) >> 2u; uint4 _526 = uint4(cbuf_28.data[_513 + 0u], cbuf_28.data[_513 + 1u], cbuf_28.data[_513 + 2u], cbuf_28.data[_513 + 3u]); uint _542 = ((0u + (_172 * 16u)) + buf5_off) >> 2u; uint4 _555 = uint4(cbuf_24.data[_542 + 0u], cbuf_24.data[_542 + 1u], cbuf_24.data[_542 + 2u], cbuf_24.data[_542 + 3u]); uint _571 = ((0u + (_173 * 16u)) + buf5_off) >> 2u; uint4 _584 = uint4(cbuf_24.data[_571 + 0u], cbuf_24.data[_571 + 1u], cbuf_24.data[_571 + 2u], cbuf_24.data[_571 + 3u]); uint _600 = ((0u + (_174 * 16u)) + buf5_off) >> 2u; uint4 _613 = uint4(cbuf_24.data[_600 + 0u], cbuf_24.data[_600 + 1u], cbuf_24.data[_600 + 2u], cbuf_24.data[_600 + 3u]); uint _629 = ((0u + (_175 * 16u)) + buf5_off) >> 2u; uint4 _642 = uint4(cbuf_24.data[_629 + 0u], cbuf_24.data[_629 + 1u], cbuf_24.data[_629 + 2u], cbuf_24.data[_629 + 3u]); uint _658 = ((0u + (_176 * 16u)) + buf5_off) >> 2u; uint4 _671 = uint4(cbuf_24.data[_658 + 0u], cbuf_24.data[_658 + 1u], cbuf_24.data[_658 + 2u], cbuf_24.data[_658 + 3u]); float _677 = fma(as_type(_468.x), _171, fma(as_type(_389.x), _170, fma(as_type(_263.x), _168, spvFMul(_169, as_type(_326.x))))); float _679 = fma(as_type(_468.y), _171, fma(as_type(_389.y), _170, fma(as_type(_263.y), _168, spvFMul(_169, as_type(_326.y))))); float _681 = fma(as_type(_468.z), _171, fma(as_type(_389.z), _170, fma(as_type(_263.z), _168, spvFMul(_169, as_type(_326.z))))); float _686 = fma(as_type(_497.x), _171, fma(as_type(_410.x), _170, fma(as_type(_284.x), _168, spvFMul(_169, as_type(_347.x))))); float _688 = fma(as_type(_497.y), _171, fma(as_type(_410.y), _170, fma(as_type(_284.y), _168, spvFMul(_169, as_type(_347.y))))); float _690 = fma(as_type(_497.z), _171, fma(as_type(_410.z), _170, fma(as_type(_284.z), _168, spvFMul(_169, as_type(_347.z))))); float _695 = fma(as_type(_526.x), _171, fma(as_type(_439.x), _170, fma(as_type(_305.x), _168, spvFMul(_169, as_type(_368.x))))); float _697 = fma(as_type(_526.y), _171, fma(as_type(_439.y), _170, fma(as_type(_305.y), _168, spvFMul(_169, as_type(_368.y))))); float _699 = fma(as_type(_526.z), _171, fma(as_type(_439.z), _170, fma(as_type(_305.z), _168, spvFMul(_169, as_type(_368.z))))); float _706 = fma(_677, in.vs_in_attr0.x, fma(_679, in.vs_in_attr0.y, fma(_681, in.vs_in_attr0.z, fma(as_type(_468.w), _171, fma(as_type(_389.w), _170, fma(as_type(_263.w), _168, spvFMul(_169, as_type(_326.w)))))))); float _707 = fma(_686, in.vs_in_attr0.x, fma(_688, in.vs_in_attr0.y, fma(_690, in.vs_in_attr0.z, fma(as_type(_497.w), _171, fma(as_type(_410.w), _170, fma(as_type(_284.w), _168, spvFMul(_169, as_type(_347.w)))))))); float _708 = fma(_695, in.vs_in_attr0.x, fma(_697, in.vs_in_attr0.y, fma(_699, in.vs_in_attr0.z, fma(as_type(_526.w), _171, fma(as_type(_439.w), _170, fma(as_type(_305.w), _168, spvFMul(_169, as_type(_368.w)))))))); uint _710 = (cbuf_16.data[_185] + _130) * 3u; uint _714 = ((0u + (_710 * 16u)) + buf6_off) >> 2u; uint4 _727 = uint4(cbuf_20.data[_714 + 0u], cbuf_20.data[_714 + 1u], cbuf_20.data[_714 + 2u], cbuf_20.data[_714 + 3u]); uint _735 = ((0u + (_177 * 16u)) + buf5_off) >> 2u; uint4 _748 = uint4(cbuf_24.data[_735 + 0u], cbuf_24.data[_735 + 1u], cbuf_24.data[_735 + 2u], cbuf_24.data[_735 + 3u]); uint _756 = ((0u + (_178 * 16u)) + buf5_off) >> 2u; uint4 _769 = uint4(cbuf_24.data[_756 + 0u], cbuf_24.data[_756 + 1u], cbuf_24.data[_756 + 2u], cbuf_24.data[_756 + 3u]); uint _777 = (cbuf_16.data[_185] + _134) * 3u; uint _781 = (cbuf_16.data[_185] + _138) * 3u; uint _785 = (cbuf_16.data[_185] + _143) * 3u; float _796 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _797 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _798 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _805 = fma(_677, _796, fma(_679, _797, spvFMul(_798, _681))); float _806 = fma(_686, _796, fma(_688, _797, spvFMul(_798, _690))); float _807 = fma(_695, _796, fma(_697, _797, spvFMul(_798, _699))); uint _819 = ((0u + ((_710 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _832 = uint4(cbuf_20.data[_819 + 0u], cbuf_20.data[_819 + 1u], cbuf_20.data[_819 + 2u], cbuf_20.data[_819 + 3u]); uint _848 = ((0u + ((_710 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _861 = uint4(cbuf_20.data[_848 + 0u], cbuf_20.data[_848 + 1u], cbuf_20.data[_848 + 2u], cbuf_20.data[_848 + 3u]); uint _877 = ((0u + (_777 * 16u)) + buf6_off) >> 2u; uint4 _890 = uint4(cbuf_20.data[_877 + 0u], cbuf_20.data[_877 + 1u], cbuf_20.data[_877 + 2u], cbuf_20.data[_877 + 3u]); uint _906 = ((0u + ((_777 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _919 = uint4(cbuf_20.data[_906 + 0u], cbuf_20.data[_906 + 1u], cbuf_20.data[_906 + 2u], cbuf_20.data[_906 + 3u]); uint _935 = ((0u + ((_777 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _948 = uint4(cbuf_20.data[_935 + 0u], cbuf_20.data[_935 + 1u], cbuf_20.data[_935 + 2u], cbuf_20.data[_935 + 3u]); uint _964 = ((0u + (_781 * 16u)) + buf6_off) >> 2u; uint4 _977 = uint4(cbuf_20.data[_964 + 0u], cbuf_20.data[_964 + 1u], cbuf_20.data[_964 + 2u], cbuf_20.data[_964 + 3u]); uint _993 = ((0u + ((_781 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _1006 = uint4(cbuf_20.data[_993 + 0u], cbuf_20.data[_993 + 1u], cbuf_20.data[_993 + 2u], cbuf_20.data[_993 + 3u]); uint _1022 = ((0u + ((_781 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _1035 = uint4(cbuf_20.data[_1022 + 0u], cbuf_20.data[_1022 + 1u], cbuf_20.data[_1022 + 2u], cbuf_20.data[_1022 + 3u]); uint _1051 = ((0u + (_785 * 16u)) + buf6_off) >> 2u; uint4 _1064 = uint4(cbuf_20.data[_1051 + 0u], cbuf_20.data[_1051 + 1u], cbuf_20.data[_1051 + 2u], cbuf_20.data[_1051 + 3u]); float _1110 = fma(as_type(_1064.x), _171, fma(as_type(_977.x), _170, fma(as_type(_727.x), _168, spvFMul(_169, as_type(_890.x))))); float _1112 = fma(as_type(_1064.y), _171, fma(as_type(_977.y), _170, fma(as_type(_727.y), _168, spvFMul(_169, as_type(_890.y))))); float _1114 = fma(as_type(_1064.z), _171, fma(as_type(_977.z), _170, fma(as_type(_727.z), _168, spvFMul(_169, as_type(_890.z))))); float _1119 = fma(_1110, _706, fma(_1112, _707, fma(_1114, _708, fma(as_type(_1064.w), _171, fma(as_type(_977.w), _170, fma(as_type(_727.w), _168, spvFMul(_169, as_type(_890.w)))))))); uint _1134 = ((0u + ((_785 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _1147 = uint4(cbuf_20.data[_1134 + 0u], cbuf_20.data[_1134 + 1u], cbuf_20.data[_1134 + 2u], cbuf_20.data[_1134 + 3u]); uint _1155 = ((0u + ((_785 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _1168 = uint4(cbuf_20.data[_1155 + 0u], cbuf_20.data[_1155 + 1u], cbuf_20.data[_1155 + 2u], cbuf_20.data[_1155 + 3u]); uint _1176 = ((0u + (_179 * 16u)) + buf5_off) >> 2u; uint4 _1189 = uint4(cbuf_24.data[_1176 + 0u], cbuf_24.data[_1176 + 1u], cbuf_24.data[_1176 + 2u], cbuf_24.data[_1176 + 3u]); uint _1197 = ((0u + (_180 * 16u)) + buf5_off) >> 2u; uint4 _1210 = uint4(cbuf_24.data[_1197 + 0u], cbuf_24.data[_1197 + 1u], cbuf_24.data[_1197 + 2u], cbuf_24.data[_1197 + 3u]); uint _1218 = ((0u + (_181 * 16u)) + buf5_off) >> 2u; uint4 _1231 = uint4(cbuf_24.data[_1218 + 0u], cbuf_24.data[_1218 + 1u], cbuf_24.data[_1218 + 2u], cbuf_24.data[_1218 + 3u]); uint _1239 = ((0u + (_182 * 16u)) + buf5_off) >> 2u; uint4 _1252 = uint4(cbuf_24.data[_1239 + 0u], cbuf_24.data[_1239 + 1u], cbuf_24.data[_1239 + 2u], cbuf_24.data[_1239 + 3u]); uint _1260 = ((0u + (_183 * 16u)) + buf5_off) >> 2u; uint4 _1273 = uint4(cbuf_24.data[_1260 + 0u], cbuf_24.data[_1260 + 1u], cbuf_24.data[_1260 + 2u], cbuf_24.data[_1260 + 3u]); float _1287 = fma(as_type(_1147.x), _171, fma(as_type(_1006.x), _170, fma(as_type(_832.x), _168, spvFMul(_169, as_type(_919.x))))); float _1289 = fma(as_type(_1147.y), _171, fma(as_type(_1006.y), _170, fma(as_type(_832.y), _168, spvFMul(_169, as_type(_919.y))))); float _1291 = fma(as_type(_1147.z), _171, fma(as_type(_1006.z), _170, fma(as_type(_832.z), _168, spvFMul(_169, as_type(_919.z))))); float _1295 = fma(as_type(_1168.x), _171, fma(as_type(_1035.x), _170, fma(as_type(_861.x), _168, spvFMul(_169, as_type(_948.x))))); float _1297 = fma(as_type(_1168.y), _171, fma(as_type(_1035.y), _170, fma(as_type(_861.y), _168, spvFMul(_169, as_type(_948.y))))); float _1299 = fma(as_type(_1168.z), _171, fma(as_type(_1035.z), _170, fma(as_type(_861.z), _168, spvFMul(_169, as_type(_948.z))))); float _1306 = fma(_1287, _706, fma(_1289, _707, fma(_1291, _708, fma(as_type(_1147.w), _171, fma(as_type(_1006.w), _170, fma(as_type(_832.w), _168, spvFMul(_169, as_type(_919.w)))))))); float _1307 = fma(_1295, _706, fma(_1297, _707, fma(_1299, _708, fma(as_type(_1168.w), _171, fma(as_type(_1035.w), _170, fma(as_type(_861.w), _168, spvFMul(_169, as_type(_948.w)))))))); float _1329 = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), _1119, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), _1306, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), _1307, as_type(cbuf_8.data[3u + buf3_dword_off])))); float _1331 = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), _1119, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), _1306, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), _1307, as_type(cbuf_8.data[7u + buf3_dword_off])))); float _1333 = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), _1119, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), _1306, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), _1307, as_type(cbuf_8.data[11u + buf3_dword_off])))); float _1335 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), _1119, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), _1306, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), _1307, as_type(cbuf_8.data[15u + buf3_dword_off])))); out.gl_Position.x = _1329; out.gl_Position.y = _1331; out.gl_Position.z = _1333; out.gl_Position.w = _1335; out.out_attr0.x = _1329; out.out_attr0.y = _1331; out.out_attr0.z = _1333; out.out_attr0.w = _1335; float _1396 = fma(fma(as_type(_1231.x), _171, fma(as_type(_769.x), _170, fma(as_type(_555.x), _168, spvFMul(_169, as_type(_642.x))))), _706, fma(fma(as_type(_1231.y), _171, fma(as_type(_769.y), _170, fma(as_type(_555.y), _168, spvFMul(_169, as_type(_642.y))))), _707, fma(fma(as_type(_1231.z), _171, fma(as_type(_769.z), _170, fma(as_type(_555.z), _168, spvFMul(_169, as_type(_642.z))))), _708, fma(as_type(_1231.w), _171, fma(as_type(_769.w), _170, fma(as_type(_555.w), _168, spvFMul(_169, as_type(_642.w)))))))); float _1397 = fma(fma(as_type(_1252.x), _171, fma(as_type(_1189.x), _170, fma(as_type(_584.x), _168, spvFMul(_169, as_type(_671.x))))), _706, fma(fma(as_type(_1252.y), _171, fma(as_type(_1189.y), _170, fma(as_type(_584.y), _168, spvFMul(_169, as_type(_671.y))))), _707, fma(fma(as_type(_1252.z), _171, fma(as_type(_1189.z), _170, fma(as_type(_584.z), _168, spvFMul(_169, as_type(_671.z))))), _708, fma(as_type(_1252.w), _171, fma(as_type(_1189.w), _170, fma(as_type(_584.w), _168, spvFMul(_169, as_type(_671.w)))))))); float _1398 = fma(fma(as_type(_1273.x), _171, fma(as_type(_1210.x), _170, fma(as_type(_613.x), _168, spvFMul(_169, as_type(_748.x))))), _706, fma(fma(as_type(_1273.y), _171, fma(as_type(_1210.y), _170, fma(as_type(_613.y), _168, spvFMul(_169, as_type(_748.y))))), _707, fma(fma(as_type(_1273.z), _171, fma(as_type(_1210.z), _170, fma(as_type(_613.z), _168, spvFMul(_169, as_type(_748.z))))), _708, fma(as_type(_1273.w), _171, fma(as_type(_1210.w), _170, fma(as_type(_613.w), _168, spvFMul(_169, as_type(_748.w)))))))); out.out_attr2.x = fma(_1110, _805, fma(_1112, _806, spvFMul(_807, _1114))); out.out_attr2.y = fma(_1287, _805, fma(_1289, _806, spvFMul(_807, _1291))); out.out_attr2.z = fma(_1295, _805, fma(_1297, _806, spvFMul(_807, _1299))); out.out_attr2.w = 1.0; out.out_attr3.x = fma(as_type(cbuf_12.data[0u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_12.data[2u + buf7_dword_off])); out.out_attr3.y = fma(as_type(cbuf_12.data[1u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_12.data[3u + buf7_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), _1396, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), _1397, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), _1398, as_type(cbuf_8.data[19u + buf3_dword_off])))); out.out_attr1.y = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), _1396, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), _1397, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), _1398, as_type(cbuf_8.data[23u + buf3_dword_off])))); out.out_attr1.z = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), _1396, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), _1397, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), _1398, as_type(cbuf_8.data[27u + buf3_dword_off])))); out.out_attr1.w = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), _1396, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), _1397, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), _1398, as_type(cbuf_8.data[31u + buf3_dword_off])))); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[44]; }; constant uint _71 = {}; constant uint _72 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _112 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[0u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_16.data[2u + buf0_dword_off])), fma(as_type(cbuf_16.data[1u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_16.data[3u + buf0_dword_off])))); float _113 = _112.w; bool _116 = 0.0039215688593685626983642578125 > _113; uint _161; uint _162; uint _163; if (!_116) { float _133 = 1.0 / in.fs_in_attr1.w; float _138 = 1.0 / in.fs_in_attr0.w; _161 = as_type(spvFMul(in.fs_in_attr0.w, 1.0 / spvFAdd(10.0, in.fs_in_attr0.w))); _162 = as_type(fast::clamp(fma(spvFMul(as_type(cbuf_20.data[1u + buf1_dword_off]), fma(in.fs_in_attr0.y, _138, -spvFMul(in.fs_in_attr1.y, _133))), 0.5, 0.5), 0.0, 1.0)); _163 = as_type(fast::clamp(fma(spvFMul(as_type(cbuf_20.data[0u + buf1_dword_off]), fma(in.fs_in_attr0.x, _138, -spvFMul(in.fs_in_attr1.x, _133))), 0.5, 0.5), 0.0, 1.0)); } else { _161 = _72; _162 = as_type(_113); _163 = _71; } if (_116) { discard_fragment(); } out.frag_color0.x = as_type(_163); out.frag_color0.y = as_type(_162); out.frag_color0.z = as_type(_161); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8bc6ea32 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[384]; }; struct vs_cbuf_block_f32_4 { uint data[48]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; constant uint _98 = {}; constant uint _99 = {}; constant uint _100 = {}; constant uint _101 = {}; constant uint _102 = {}; constant uint _103 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_16 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_32 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_24 [[buffer(14)]], constant vs_cbuf_block_f32_3& cbuf_28 [[buffer(15)]], constant vs_cbuf_block_f32_4& cbuf_8 [[buffer(16)]], constant vs_cbuf_block_f32_5& cbuf_12 [[buffer(17)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _146 = as_type(as_type(in.vs_in_attr1.x)); uint _150 = as_type(as_type(in.vs_in_attr1.y)); uint _154 = as_type(as_type(in.vs_in_attr1.z)); uint _163 = as_type(as_type(in.vs_in_attr2.x)); uint _167 = as_type(as_type(in.vs_in_attr2.y)); uint _171 = as_type(as_type(in.vs_in_attr2.z)); uint _175 = as_type(as_type(in.vs_in_attr2.w)); float _210 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_146))); float _212 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_150))); float _213 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_154))); uint _215 = 32u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); bool _218 = cbuf_16.data[_215] == 0u; uint _263; uint _264; uint _265; uint _266; uint _267; uint _268; uint _269; uint _270; uint _271; uint _272; uint _273; uint _274; if (!_218) { _263 = cbuf_32.data[0u + buf3_dword_off]; _264 = cbuf_32.data[8u + buf3_dword_off]; _265 = cbuf_32.data[5u + buf3_dword_off]; _266 = cbuf_32.data[1u + buf3_dword_off]; _267 = cbuf_32.data[3u + buf3_dword_off]; _268 = cbuf_32.data[2u + buf3_dword_off]; _269 = cbuf_32.data[7u + buf3_dword_off]; _270 = cbuf_32.data[6u + buf3_dword_off]; _271 = cbuf_32.data[4u + buf3_dword_off]; _272 = cbuf_32.data[11u + buf3_dword_off]; _273 = cbuf_32.data[10u + buf3_dword_off]; _274 = cbuf_32.data[9u + buf3_dword_off]; } else { _263 = _98; _264 = _99; _265 = _100; _266 = _101; _267 = _102; _268 = _103; _269 = as_type(as_type(in.vs_in_attr4.w)); _270 = as_type(as_type(in.vs_in_attr4.z)); _271 = _154; _272 = _150; _273 = _146; _274 = 1065353216u; } uint _669; uint _670; uint _671; uint _672; uint _673; uint _674; uint _675; uint _676; uint _677; uint _678; uint _679; uint _680; uint _681; uint _682; if (_218) { uint _276 = 20u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); uint _281 = (cbuf_20.data[_276] + _167) * 3u; uint _282 = (cbuf_20.data[_276] + _163) * 3u; uint _288 = (cbuf_20.data[_276] + _171) * 3u; uint _292 = (cbuf_20.data[_276] + _175) * 3u; uint _298 = ((0u + (_281 * 16u)) + buf5_off) >> 2u; uint4 _311 = uint4(cbuf_24.data[_298 + 0u], cbuf_24.data[_298 + 1u], cbuf_24.data[_298 + 2u], cbuf_24.data[_298 + 3u]); uint _319 = ((0u + ((_281 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _332 = uint4(cbuf_24.data[_319 + 0u], cbuf_24.data[_319 + 1u], cbuf_24.data[_319 + 2u], cbuf_24.data[_319 + 3u]); uint _340 = ((0u + ((_281 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _353 = uint4(cbuf_24.data[_340 + 0u], cbuf_24.data[_340 + 1u], cbuf_24.data[_340 + 2u], cbuf_24.data[_340 + 3u]); uint _361 = ((0u + (_282 * 16u)) + buf5_off) >> 2u; uint4 _374 = uint4(cbuf_24.data[_361 + 0u], cbuf_24.data[_361 + 1u], cbuf_24.data[_361 + 2u], cbuf_24.data[_361 + 3u]); uint _382 = ((0u + ((_282 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _395 = uint4(cbuf_24.data[_382 + 0u], cbuf_24.data[_382 + 1u], cbuf_24.data[_382 + 2u], cbuf_24.data[_382 + 3u]); uint _403 = ((0u + ((_282 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _416 = uint4(cbuf_24.data[_403 + 0u], cbuf_24.data[_403 + 1u], cbuf_24.data[_403 + 2u], cbuf_24.data[_403 + 3u]); uint _424 = ((0u + (_288 * 16u)) + buf5_off) >> 2u; uint4 _437 = uint4(cbuf_24.data[_424 + 0u], cbuf_24.data[_424 + 1u], cbuf_24.data[_424 + 2u], cbuf_24.data[_424 + 3u]); uint _445 = ((0u + ((_288 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _458 = uint4(cbuf_24.data[_445 + 0u], cbuf_24.data[_445 + 1u], cbuf_24.data[_445 + 2u], cbuf_24.data[_445 + 3u]); uint _466 = ((0u + ((_288 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _479 = uint4(cbuf_24.data[_466 + 0u], cbuf_24.data[_466 + 1u], cbuf_24.data[_466 + 2u], cbuf_24.data[_466 + 3u]); uint _487 = ((0u + (_292 * 16u)) + buf5_off) >> 2u; uint4 _500 = uint4(cbuf_24.data[_487 + 0u], cbuf_24.data[_487 + 1u], cbuf_24.data[_487 + 2u], cbuf_24.data[_487 + 3u]); uint _508 = ((0u + ((_292 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _521 = uint4(cbuf_24.data[_508 + 0u], cbuf_24.data[_508 + 1u], cbuf_24.data[_508 + 2u], cbuf_24.data[_508 + 3u]); uint _529 = ((0u + ((_292 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _542 = uint4(cbuf_24.data[_529 + 0u], cbuf_24.data[_529 + 1u], cbuf_24.data[_529 + 2u], cbuf_24.data[_529 + 3u]); float _554 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr3.w, spvFAdd(in.vs_in_attr3.z, spvFAdd(in.vs_in_attr3.x, in.vs_in_attr3.y)))); float _555 = spvFMul(in.vs_in_attr3.y, _554); float _556 = spvFMul(in.vs_in_attr3.x, _554); float _581 = spvFMul(in.vs_in_attr3.z, _554); float _606 = spvFMul(in.vs_in_attr3.w, _554); float _631 = fma(as_type(_479.w), _581, fma(as_type(_416.w), _556, spvFMul(_555, as_type(_353.w)))); _669 = as_type(_631); _670 = as_type(_606); _671 = as_type(fma(as_type(_542.x), _606, fma(as_type(_479.x), _581, fma(as_type(_416.x), _556, spvFMul(_555, as_type(_353.x)))))); _672 = as_type(fma(as_type(_521.x), _606, fma(as_type(_458.x), _581, fma(as_type(_395.x), _556, spvFMul(_555, as_type(_332.x)))))); _673 = as_type(fma(as_type(_500.x), _606, fma(as_type(_437.x), _581, fma(as_type(_374.x), _556, spvFMul(_555, as_type(_311.x)))))); _674 = as_type(fma(as_type(_542.y), _606, fma(as_type(_479.y), _581, fma(as_type(_416.y), _556, spvFMul(_555, as_type(_353.y)))))); _675 = as_type(fma(as_type(_521.y), _606, fma(as_type(_458.y), _581, fma(as_type(_395.y), _556, spvFMul(_555, as_type(_332.y)))))); _676 = as_type(fma(as_type(_500.y), _606, fma(as_type(_437.y), _581, fma(as_type(_374.y), _556, spvFMul(_555, as_type(_311.y)))))); _677 = as_type(fma(as_type(_542.w), _606, _631)); _678 = as_type(fma(as_type(_542.z), _606, fma(as_type(_479.z), _581, fma(as_type(_416.z), _556, spvFMul(_555, as_type(_353.z)))))); _679 = as_type(fma(as_type(_521.w), _606, fma(as_type(_458.w), _581, fma(as_type(_395.w), _556, spvFMul(_555, as_type(_332.w)))))); _680 = as_type(fma(as_type(_521.z), _606, fma(as_type(_458.z), _581, fma(as_type(_395.z), _556, spvFMul(_555, as_type(_332.z)))))); _681 = as_type(fma(as_type(_500.w), _606, fma(as_type(_437.w), _581, fma(as_type(_374.w), _556, spvFMul(_555, as_type(_311.w)))))); _682 = as_type(fma(as_type(_500.z), _606, fma(as_type(_437.z), _581, fma(as_type(_374.z), _556, spvFMul(_555, as_type(_311.z)))))); } else { _669 = as_type(as_type(in.vs_in_attr1.w)); _670 = gl_InstanceIndex; _671 = _264; _672 = _271; _673 = _263; _674 = _274; _675 = _265; _676 = _266; _677 = _272; _678 = _273; _679 = _269; _680 = _270; _681 = _267; _682 = _268; } float _699 = fma(as_type(_673), in.vs_in_attr0.x, fma(as_type(_676), in.vs_in_attr0.y, fma(as_type(_682), in.vs_in_attr0.z, as_type(_681)))); float _701 = fma(as_type(_672), in.vs_in_attr0.x, fma(as_type(_675), in.vs_in_attr0.y, fma(as_type(_680), in.vs_in_attr0.z, as_type(_679)))); float _703 = fma(as_type(_671), in.vs_in_attr0.x, fma(as_type(_674), in.vs_in_attr0.y, fma(as_type(_678), in.vs_in_attr0.z, as_type(_677)))); bool _722 = cbuf_16.data[_215] == 0u; uint _770; uint _771; uint _772; uint _773; uint _774; uint _775; uint _776; uint _777; uint _778; uint _779; uint _780; uint _781; if (!_722) { _770 = cbuf_32.data[16u + buf3_dword_off]; _771 = cbuf_32.data[18u + buf3_dword_off]; _772 = cbuf_32.data[17u + buf3_dword_off]; _773 = cbuf_32.data[13u + buf3_dword_off]; _774 = cbuf_32.data[22u + buf3_dword_off]; _775 = cbuf_32.data[23u + buf3_dword_off]; _776 = cbuf_32.data[21u + buf3_dword_off]; _777 = cbuf_32.data[20u + buf3_dword_off]; _778 = cbuf_32.data[15u + buf3_dword_off]; _779 = cbuf_32.data[14u + buf3_dword_off]; _780 = cbuf_32.data[12u + buf3_dword_off]; _781 = cbuf_32.data[19u + buf3_dword_off]; } else { _770 = _675; _771 = _669; _772 = _672; _773 = _678; _774 = _670; _775 = as_type(_210); _776 = as_type(in.vs_in_attr3.w); _777 = as_type(in.vs_in_attr3.z); _778 = _175; _779 = _171; _780 = _167; _781 = _163; } uint _1167; uint _1168; uint _1169; uint _1170; uint _1171; uint _1172; uint _1173; uint _1174; uint _1175; uint _1176; uint _1177; uint _1178; if (_722) { uint _782 = _780 * 3u; uint _783 = _781 * 3u; uint _788 = _779 * 3u; uint _791 = _778 * 3u; uint _797 = ((0u + (_782 * 16u)) + buf6_off) >> 2u; uint4 _810 = uint4(cbuf_28.data[_797 + 0u], cbuf_28.data[_797 + 1u], cbuf_28.data[_797 + 2u], cbuf_28.data[_797 + 3u]); uint _818 = ((0u + ((_782 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _831 = uint4(cbuf_28.data[_818 + 0u], cbuf_28.data[_818 + 1u], cbuf_28.data[_818 + 2u], cbuf_28.data[_818 + 3u]); uint _839 = ((0u + ((_782 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _852 = uint4(cbuf_28.data[_839 + 0u], cbuf_28.data[_839 + 1u], cbuf_28.data[_839 + 2u], cbuf_28.data[_839 + 3u]); uint _860 = ((0u + (_783 * 16u)) + buf6_off) >> 2u; uint4 _873 = uint4(cbuf_28.data[_860 + 0u], cbuf_28.data[_860 + 1u], cbuf_28.data[_860 + 2u], cbuf_28.data[_860 + 3u]); uint _881 = ((0u + ((_783 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _894 = uint4(cbuf_28.data[_881 + 0u], cbuf_28.data[_881 + 1u], cbuf_28.data[_881 + 2u], cbuf_28.data[_881 + 3u]); uint _902 = ((0u + ((_783 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _915 = uint4(cbuf_28.data[_902 + 0u], cbuf_28.data[_902 + 1u], cbuf_28.data[_902 + 2u], cbuf_28.data[_902 + 3u]); uint _923 = ((0u + (_788 * 16u)) + buf6_off) >> 2u; uint4 _936 = uint4(cbuf_28.data[_923 + 0u], cbuf_28.data[_923 + 1u], cbuf_28.data[_923 + 2u], cbuf_28.data[_923 + 3u]); uint _944 = ((0u + ((_788 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _957 = uint4(cbuf_28.data[_944 + 0u], cbuf_28.data[_944 + 1u], cbuf_28.data[_944 + 2u], cbuf_28.data[_944 + 3u]); uint _965 = ((0u + ((_788 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _978 = uint4(cbuf_28.data[_965 + 0u], cbuf_28.data[_965 + 1u], cbuf_28.data[_965 + 2u], cbuf_28.data[_965 + 3u]); uint _986 = ((0u + (_791 * 16u)) + buf6_off) >> 2u; uint4 _999 = uint4(cbuf_28.data[_986 + 0u], cbuf_28.data[_986 + 1u], cbuf_28.data[_986 + 2u], cbuf_28.data[_986 + 3u]); uint _1007 = ((0u + ((_791 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _1020 = uint4(cbuf_28.data[_1007 + 0u], cbuf_28.data[_1007 + 1u], cbuf_28.data[_1007 + 2u], cbuf_28.data[_1007 + 3u]); uint _1028 = ((0u + ((_791 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _1041 = uint4(cbuf_28.data[_1028 + 0u], cbuf_28.data[_1028 + 1u], cbuf_28.data[_1028 + 2u], cbuf_28.data[_1028 + 3u]); float _1052 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(as_type(_776), spvFAdd(as_type(_777), spvFAdd(in.vs_in_attr3.x, in.vs_in_attr3.y)))); float _1053 = spvFMul(in.vs_in_attr3.y, _1052); float _1054 = spvFMul(in.vs_in_attr3.x, _1052); float _1080 = spvFMul(as_type(_777), _1052); float _1106 = spvFMul(as_type(_776), _1052); _1167 = as_type(fma(as_type(_999.x), _1106, fma(as_type(_936.x), _1080, fma(as_type(_873.x), _1054, spvFMul(_1053, as_type(_810.x)))))); _1168 = as_type(fma(as_type(_1020.x), _1106, fma(as_type(_957.x), _1080, fma(as_type(_894.x), _1054, spvFMul(_1053, as_type(_831.x)))))); _1169 = as_type(fma(as_type(_999.y), _1106, fma(as_type(_936.y), _1080, fma(as_type(_873.y), _1054, spvFMul(_1053, as_type(_810.y)))))); _1170 = as_type(fma(as_type(_1041.x), _1106, fma(as_type(_978.x), _1080, fma(as_type(_915.x), _1054, spvFMul(_1053, as_type(_852.x)))))); _1171 = as_type(fma(as_type(_1020.y), _1106, fma(as_type(_957.y), _1080, fma(as_type(_894.y), _1054, spvFMul(_1053, as_type(_831.y)))))); _1172 = as_type(fma(as_type(_999.w), _1106, fma(as_type(_936.w), _1080, fma(as_type(_873.w), _1054, spvFMul(_1053, as_type(_810.w)))))); _1173 = as_type(fma(as_type(_999.z), _1106, fma(as_type(_936.z), _1080, fma(as_type(_873.z), _1054, spvFMul(_1053, as_type(_810.z)))))); _1174 = as_type(fma(as_type(_1041.y), _1106, fma(as_type(_978.y), _1080, fma(as_type(_915.y), _1054, spvFMul(_1053, as_type(_852.y)))))); _1175 = as_type(fma(as_type(_1020.w), _1106, fma(as_type(_957.w), _1080, fma(as_type(_894.w), _1054, spvFMul(_1053, as_type(_831.w)))))); _1176 = as_type(fma(as_type(_1020.z), _1106, fma(as_type(_957.z), _1080, fma(as_type(_894.z), _1054, spvFMul(_1053, as_type(_831.z)))))); _1177 = as_type(fma(as_type(_1041.w), _1106, fma(as_type(_978.w), _1080, fma(as_type(_915.w), _1054, spvFMul(_1053, as_type(_852.w)))))); _1178 = as_type(fma(as_type(_1041.z), _1106, fma(as_type(_978.z), _1080, fma(as_type(_915.z), _1054, spvFMul(_1053, as_type(_852.z)))))); } else { _1167 = _780; _1168 = _770; _1169 = _773; _1170 = _777; _1171 = _772; _1172 = _778; _1173 = _779; _1174 = _776; _1175 = _781; _1176 = _771; _1177 = _775; _1178 = _774; } float _1259 = fma(as_type(cbuf_8.data[0u + buf7_dword_off]), _699, fma(as_type(cbuf_8.data[1u + buf7_dword_off]), _701, fma(as_type(cbuf_8.data[2u + buf7_dword_off]), _703, as_type(cbuf_8.data[3u + buf7_dword_off])))); float _1261 = fma(as_type(cbuf_8.data[4u + buf7_dword_off]), _699, fma(as_type(cbuf_8.data[5u + buf7_dword_off]), _701, fma(as_type(cbuf_8.data[6u + buf7_dword_off]), _703, as_type(cbuf_8.data[7u + buf7_dword_off])))); float _1263 = fma(as_type(cbuf_8.data[8u + buf7_dword_off]), _699, fma(as_type(cbuf_8.data[9u + buf7_dword_off]), _701, fma(as_type(cbuf_8.data[10u + buf7_dword_off]), _703, as_type(cbuf_8.data[11u + buf7_dword_off])))); float _1265 = fma(as_type(cbuf_8.data[12u + buf7_dword_off]), _699, fma(as_type(cbuf_8.data[13u + buf7_dword_off]), _701, fma(as_type(cbuf_8.data[14u + buf7_dword_off]), _703, as_type(cbuf_8.data[15u + buf7_dword_off])))); out.gl_Position.x = _1259; out.gl_Position.y = _1261; out.gl_Position.z = _1263; out.gl_Position.w = _1265; float _1340 = fma(as_type(_1170), in.vs_in_attr0.x, fma(as_type(_1174), in.vs_in_attr0.y, fma(as_type(_1178), in.vs_in_attr0.z, as_type(_1177)))); float _1344 = fma(as_type(_1168), in.vs_in_attr0.x, fma(as_type(_1171), in.vs_in_attr0.y, fma(as_type(_1176), in.vs_in_attr0.z, as_type(_1175)))); float _1360 = fma(as_type(_1167), in.vs_in_attr0.x, fma(as_type(_1169), in.vs_in_attr0.y, fma(as_type(_1173), in.vs_in_attr0.z, as_type(_1172)))); out.out_attr0.x = _1259; out.out_attr0.y = _1261; out.out_attr0.z = _1263; out.out_attr0.w = _1265; out.out_attr1.x = fma(as_type(cbuf_8.data[16u + buf7_dword_off]), _1360, fma(as_type(cbuf_8.data[17u + buf7_dword_off]), _1344, fma(as_type(cbuf_8.data[18u + buf7_dword_off]), _1340, as_type(cbuf_8.data[19u + buf7_dword_off])))); out.out_attr1.y = fma(as_type(cbuf_8.data[20u + buf7_dword_off]), _1360, fma(as_type(cbuf_8.data[21u + buf7_dword_off]), _1344, fma(as_type(cbuf_8.data[22u + buf7_dword_off]), _1340, as_type(cbuf_8.data[23u + buf7_dword_off])))); out.out_attr1.z = fma(as_type(cbuf_8.data[24u + buf7_dword_off]), _1360, fma(as_type(cbuf_8.data[25u + buf7_dword_off]), _1344, fma(as_type(cbuf_8.data[26u + buf7_dword_off]), _1340, as_type(cbuf_8.data[27u + buf7_dword_off])))); out.out_attr1.w = fma(as_type(cbuf_8.data[28u + buf7_dword_off]), _1360, fma(as_type(cbuf_8.data[29u + buf7_dword_off]), _1344, fma(as_type(cbuf_8.data[30u + buf7_dword_off]), _1340, as_type(cbuf_8.data[31u + buf7_dword_off])))); out.out_attr2.x = fma(as_type(_673), _210, fma(as_type(_676), _212, spvFMul(_213, as_type(_682)))); out.out_attr2.y = fma(as_type(_672), _210, fma(as_type(_675), _212, spvFMul(_213, as_type(_680)))); out.out_attr2.z = fma(as_type(_671), _210, fma(as_type(_674), _212, spvFMul(_213, as_type(_678)))); out.out_attr2.w = 1.0; out.out_attr3.x = fma(as_type(cbuf_12.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_12.data[2u + buf8_dword_off])); out.out_attr3.y = fma(as_type(cbuf_12.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_12.data[3u + buf8_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x855f61b6 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[192]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_16 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_8 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(14)]], constant vs_cbuf_block_f32_3& cbuf_12 [[buffer(15)]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _125 = as_type(as_type(in.vs_in_attr2.x)); uint _129 = as_type(as_type(in.vs_in_attr2.y)); uint _133 = as_type(as_type(in.vs_in_attr2.z)); uint _138 = as_type(as_type(in.vs_in_attr2.w)); uint _156 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); float _225 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr3.w, spvFAdd(in.vs_in_attr3.z, spvFAdd(in.vs_in_attr3.x, in.vs_in_attr3.y)))); float _226 = spvFMul(in.vs_in_attr3.x, _225); float _227 = spvFMul(in.vs_in_attr3.y, _225); float _228 = spvFMul(in.vs_in_attr3.z, _225); float _229 = spvFMul(in.vs_in_attr3.w, _225); uint _231 = (cbuf_16.data[_156] + _125) * 3u; uint _235 = (cbuf_16.data[_156] + _129) * 3u; uint _241 = ((0u + (_231 * 16u)) + buf4_off) >> 2u; uint4 _254 = uint4(cbuf_20.data[_241 + 0u], cbuf_20.data[_241 + 1u], cbuf_20.data[_241 + 2u], cbuf_20.data[_241 + 3u]); uint _262 = ((0u + ((_231 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _275 = uint4(cbuf_20.data[_262 + 0u], cbuf_20.data[_262 + 1u], cbuf_20.data[_262 + 2u], cbuf_20.data[_262 + 3u]); uint _283 = ((0u + ((_231 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _296 = uint4(cbuf_20.data[_283 + 0u], cbuf_20.data[_283 + 1u], cbuf_20.data[_283 + 2u], cbuf_20.data[_283 + 3u]); uint _304 = ((0u + (_235 * 16u)) + buf4_off) >> 2u; uint4 _317 = uint4(cbuf_20.data[_304 + 0u], cbuf_20.data[_304 + 1u], cbuf_20.data[_304 + 2u], cbuf_20.data[_304 + 3u]); uint _325 = ((0u + ((_235 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _338 = uint4(cbuf_20.data[_325 + 0u], cbuf_20.data[_325 + 1u], cbuf_20.data[_325 + 2u], cbuf_20.data[_325 + 3u]); uint _346 = ((0u + ((_235 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _359 = uint4(cbuf_20.data[_346 + 0u], cbuf_20.data[_346 + 1u], cbuf_20.data[_346 + 2u], cbuf_20.data[_346 + 3u]); uint _413 = (cbuf_16.data[_156] + _133) * 3u; uint _417 = (cbuf_16.data[_156] + _138) * 3u; uint _423 = ((0u + (_413 * 16u)) + buf4_off) >> 2u; uint4 _436 = uint4(cbuf_20.data[_423 + 0u], cbuf_20.data[_423 + 1u], cbuf_20.data[_423 + 2u], cbuf_20.data[_423 + 3u]); uint _444 = ((0u + ((_413 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _457 = uint4(cbuf_20.data[_444 + 0u], cbuf_20.data[_444 + 1u], cbuf_20.data[_444 + 2u], cbuf_20.data[_444 + 3u]); uint _465 = ((0u + ((_413 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _478 = uint4(cbuf_20.data[_465 + 0u], cbuf_20.data[_465 + 1u], cbuf_20.data[_465 + 2u], cbuf_20.data[_465 + 3u]); uint _486 = ((0u + (_417 * 16u)) + buf4_off) >> 2u; uint4 _499 = uint4(cbuf_20.data[_486 + 0u], cbuf_20.data[_486 + 1u], cbuf_20.data[_486 + 2u], cbuf_20.data[_486 + 3u]); uint _507 = ((0u + ((_417 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _520 = uint4(cbuf_20.data[_507 + 0u], cbuf_20.data[_507 + 1u], cbuf_20.data[_507 + 2u], cbuf_20.data[_507 + 3u]); uint _528 = ((0u + ((_417 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _541 = uint4(cbuf_20.data[_528 + 0u], cbuf_20.data[_528 + 1u], cbuf_20.data[_528 + 2u], cbuf_20.data[_528 + 3u]); float _571 = fma(as_type(_499.x), _229, fma(as_type(_436.x), _228, fma(as_type(_254.x), _226, spvFMul(_227, as_type(_317.x))))); float _573 = fma(as_type(_499.y), _229, fma(as_type(_436.y), _228, fma(as_type(_254.y), _226, spvFMul(_227, as_type(_317.y))))); float _575 = fma(as_type(_499.z), _229, fma(as_type(_436.z), _228, fma(as_type(_254.z), _226, spvFMul(_227, as_type(_317.z))))); float _579 = fma(as_type(_520.x), _229, fma(as_type(_457.x), _228, fma(as_type(_275.x), _226, spvFMul(_227, as_type(_338.x))))); float _581 = fma(as_type(_520.y), _229, fma(as_type(_457.y), _228, fma(as_type(_275.y), _226, spvFMul(_227, as_type(_338.y))))); float _583 = fma(as_type(_520.z), _229, fma(as_type(_457.z), _228, fma(as_type(_275.z), _226, spvFMul(_227, as_type(_338.z))))); float _587 = fma(as_type(_541.x), _229, fma(as_type(_478.x), _228, fma(as_type(_296.x), _226, spvFMul(_227, as_type(_359.x))))); float _589 = fma(as_type(_541.y), _229, fma(as_type(_478.y), _228, fma(as_type(_296.y), _226, spvFMul(_227, as_type(_359.y))))); float _591 = fma(as_type(_541.z), _229, fma(as_type(_478.z), _228, fma(as_type(_296.z), _226, spvFMul(_227, as_type(_359.z))))); float _600 = fma(_571, in.vs_in_attr0.x, fma(_573, in.vs_in_attr0.y, fma(_575, in.vs_in_attr0.z, fma(as_type(_499.w), _229, fma(as_type(_436.w), _228, fma(as_type(_254.w), _226, spvFMul(_227, as_type(_317.w)))))))); float _601 = fma(_579, in.vs_in_attr0.x, fma(_581, in.vs_in_attr0.y, fma(_583, in.vs_in_attr0.z, fma(as_type(_520.w), _229, fma(as_type(_457.w), _228, fma(as_type(_275.w), _226, spvFMul(_227, as_type(_338.w)))))))); float _602 = fma(_587, in.vs_in_attr0.x, fma(_589, in.vs_in_attr0.y, fma(_591, in.vs_in_attr0.z, fma(as_type(_541.w), _229, fma(as_type(_478.w), _228, fma(as_type(_296.w), _226, spvFMul(_227, as_type(_359.w)))))))); uint _603 = _125 * 3u; uint _606 = _129 * 3u; uint _612 = ((0u + (_603 * 16u)) + buf5_off) >> 2u; uint4 _625 = uint4(cbuf_24.data[_612 + 0u], cbuf_24.data[_612 + 1u], cbuf_24.data[_612 + 2u], cbuf_24.data[_612 + 3u]); uint _633 = ((0u + ((_603 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _646 = uint4(cbuf_24.data[_633 + 0u], cbuf_24.data[_633 + 1u], cbuf_24.data[_633 + 2u], cbuf_24.data[_633 + 3u]); uint _654 = ((0u + ((_603 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _667 = uint4(cbuf_24.data[_654 + 0u], cbuf_24.data[_654 + 1u], cbuf_24.data[_654 + 2u], cbuf_24.data[_654 + 3u]); uint _675 = ((0u + (_606 * 16u)) + buf5_off) >> 2u; uint4 _688 = uint4(cbuf_24.data[_675 + 0u], cbuf_24.data[_675 + 1u], cbuf_24.data[_675 + 2u], cbuf_24.data[_675 + 3u]); uint _696 = ((0u + ((_606 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _709 = uint4(cbuf_24.data[_696 + 0u], cbuf_24.data[_696 + 1u], cbuf_24.data[_696 + 2u], cbuf_24.data[_696 + 3u]); uint _717 = ((0u + ((_606 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _730 = uint4(cbuf_24.data[_717 + 0u], cbuf_24.data[_717 + 1u], cbuf_24.data[_717 + 2u], cbuf_24.data[_717 + 3u]); uint _735 = _133 * 3u; uint _738 = _138 * 3u; float _762 = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), _602, as_type(cbuf_8.data[3u + buf3_dword_off])))); float _764 = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), _602, as_type(cbuf_8.data[7u + buf3_dword_off])))); float _766 = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), _602, as_type(cbuf_8.data[11u + buf3_dword_off])))); float _768 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), _602, as_type(cbuf_8.data[15u + buf3_dword_off])))); out.gl_Position.x = _762; out.gl_Position.y = _764; out.gl_Position.z = _766; out.gl_Position.w = _768; out.out_attr0.x = _762; out.out_attr0.y = _764; out.out_attr0.z = _766; out.out_attr0.w = _768; float _858 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _859 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _860 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _881 = ((0u + (_735 * 16u)) + buf5_off) >> 2u; uint4 _894 = uint4(cbuf_24.data[_881 + 0u], cbuf_24.data[_881 + 1u], cbuf_24.data[_881 + 2u], cbuf_24.data[_881 + 3u]); uint _950 = ((0u + ((_735 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _963 = uint4(cbuf_24.data[_950 + 0u], cbuf_24.data[_950 + 1u], cbuf_24.data[_950 + 2u], cbuf_24.data[_950 + 3u]); uint _971 = ((0u + ((_735 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _984 = uint4(cbuf_24.data[_971 + 0u], cbuf_24.data[_971 + 1u], cbuf_24.data[_971 + 2u], cbuf_24.data[_971 + 3u]); uint _992 = ((0u + (_738 * 16u)) + buf5_off) >> 2u; uint4 _1005 = uint4(cbuf_24.data[_992 + 0u], cbuf_24.data[_992 + 1u], cbuf_24.data[_992 + 2u], cbuf_24.data[_992 + 3u]); uint _1013 = ((0u + ((_738 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _1026 = uint4(cbuf_24.data[_1013 + 0u], cbuf_24.data[_1013 + 1u], cbuf_24.data[_1013 + 2u], cbuf_24.data[_1013 + 3u]); uint _1034 = ((0u + ((_738 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _1047 = uint4(cbuf_24.data[_1034 + 0u], cbuf_24.data[_1034 + 1u], cbuf_24.data[_1034 + 2u], cbuf_24.data[_1034 + 3u]); float _1098 = fma(fma(as_type(_1005.x), _229, fma(as_type(_894.x), _228, fma(as_type(_625.x), _226, spvFMul(_227, as_type(_688.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1005.y), _229, fma(as_type(_894.y), _228, fma(as_type(_625.y), _226, spvFMul(_227, as_type(_688.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1005.z), _229, fma(as_type(_894.z), _228, fma(as_type(_625.z), _226, spvFMul(_227, as_type(_688.z))))), in.vs_in_attr0.z, fma(as_type(_1005.w), _229, fma(as_type(_894.w), _228, fma(as_type(_625.w), _226, spvFMul(_227, as_type(_688.w)))))))); float _1099 = fma(fma(as_type(_1026.x), _229, fma(as_type(_963.x), _228, fma(as_type(_646.x), _226, spvFMul(_227, as_type(_709.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1026.y), _229, fma(as_type(_963.y), _228, fma(as_type(_646.y), _226, spvFMul(_227, as_type(_709.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1026.z), _229, fma(as_type(_963.z), _228, fma(as_type(_646.z), _226, spvFMul(_227, as_type(_709.z))))), in.vs_in_attr0.z, fma(as_type(_1026.w), _229, fma(as_type(_963.w), _228, fma(as_type(_646.w), _226, spvFMul(_227, as_type(_709.w)))))))); float _1100 = fma(fma(as_type(_1047.x), _229, fma(as_type(_984.x), _228, fma(as_type(_667.x), _226, spvFMul(_227, as_type(_730.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1047.y), _229, fma(as_type(_984.y), _228, fma(as_type(_667.y), _226, spvFMul(_227, as_type(_730.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1047.z), _229, fma(as_type(_984.z), _228, fma(as_type(_667.z), _226, spvFMul(_227, as_type(_730.z))))), in.vs_in_attr0.z, fma(as_type(_1047.w), _229, fma(as_type(_984.w), _228, fma(as_type(_667.w), _226, spvFMul(_227, as_type(_730.w)))))))); out.out_attr1.x = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), _1100, as_type(cbuf_8.data[19u + buf3_dword_off])))); out.out_attr1.y = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), _1100, as_type(cbuf_8.data[23u + buf3_dword_off])))); out.out_attr1.z = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), _1100, as_type(cbuf_8.data[27u + buf3_dword_off])))); out.out_attr1.w = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), _1100, as_type(cbuf_8.data[31u + buf3_dword_off])))); out.out_attr2.x = fma(_571, _858, fma(_573, _859, spvFMul(_860, _575))); out.out_attr2.y = fma(_579, _858, fma(_581, _859, spvFMul(_860, _583))); out.out_attr2.z = fma(_587, _858, fma(_589, _859, spvFMul(_860, _591))); out.out_attr2.w = 1.0; out.out_attr3.x = fma(as_type(cbuf_12.data[0u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_12.data[2u + buf6_dword_off])); out.out_attr3.y = fma(as_type(cbuf_12.data[1u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_12.data[3u + buf6_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xb25e4fae [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x34bc187c [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x5992ac36 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[24]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_16 [[buffer(10)]], constant vs_cbuf_block_f32_1& cbuf_8 [[buffer(11)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_12 [[buffer(14)]]) { main0_out out = {}; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _124 = as_type(as_type(in.vs_in_attr2.x)); uint _128 = as_type(as_type(in.vs_in_attr2.y)); uint _132 = as_type(as_type(in.vs_in_attr2.z)); uint _137 = as_type(as_type(in.vs_in_attr2.w)); uint _155 = 20u + (extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u); float _224 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr3.w, spvFAdd(in.vs_in_attr3.z, spvFAdd(in.vs_in_attr3.x, in.vs_in_attr3.y)))); float _225 = spvFMul(in.vs_in_attr3.x, _224); float _226 = spvFMul(in.vs_in_attr3.y, _224); float _227 = spvFMul(in.vs_in_attr3.z, _224); float _228 = spvFMul(in.vs_in_attr3.w, _224); uint _230 = (cbuf_16.data[_155] + _124) * 3u; uint _234 = (cbuf_16.data[_155] + _128) * 3u; uint _240 = ((0u + (_230 * 16u)) + buf3_off) >> 2u; uint4 _253 = uint4(cbuf_20.data[_240 + 0u], cbuf_20.data[_240 + 1u], cbuf_20.data[_240 + 2u], cbuf_20.data[_240 + 3u]); uint _261 = ((0u + ((_230 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _274 = uint4(cbuf_20.data[_261 + 0u], cbuf_20.data[_261 + 1u], cbuf_20.data[_261 + 2u], cbuf_20.data[_261 + 3u]); uint _282 = ((0u + ((_230 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _295 = uint4(cbuf_20.data[_282 + 0u], cbuf_20.data[_282 + 1u], cbuf_20.data[_282 + 2u], cbuf_20.data[_282 + 3u]); uint _303 = ((0u + (_234 * 16u)) + buf3_off) >> 2u; uint4 _316 = uint4(cbuf_20.data[_303 + 0u], cbuf_20.data[_303 + 1u], cbuf_20.data[_303 + 2u], cbuf_20.data[_303 + 3u]); uint _324 = ((0u + ((_234 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _337 = uint4(cbuf_20.data[_324 + 0u], cbuf_20.data[_324 + 1u], cbuf_20.data[_324 + 2u], cbuf_20.data[_324 + 3u]); uint _345 = ((0u + ((_234 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _358 = uint4(cbuf_20.data[_345 + 0u], cbuf_20.data[_345 + 1u], cbuf_20.data[_345 + 2u], cbuf_20.data[_345 + 3u]); uint _412 = (cbuf_16.data[_155] + _132) * 3u; uint _416 = (cbuf_16.data[_155] + _137) * 3u; uint _422 = ((0u + (_412 * 16u)) + buf3_off) >> 2u; uint4 _435 = uint4(cbuf_20.data[_422 + 0u], cbuf_20.data[_422 + 1u], cbuf_20.data[_422 + 2u], cbuf_20.data[_422 + 3u]); uint _443 = ((0u + ((_412 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _456 = uint4(cbuf_20.data[_443 + 0u], cbuf_20.data[_443 + 1u], cbuf_20.data[_443 + 2u], cbuf_20.data[_443 + 3u]); uint _464 = ((0u + ((_412 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _477 = uint4(cbuf_20.data[_464 + 0u], cbuf_20.data[_464 + 1u], cbuf_20.data[_464 + 2u], cbuf_20.data[_464 + 3u]); uint _485 = ((0u + (_416 * 16u)) + buf3_off) >> 2u; uint4 _498 = uint4(cbuf_20.data[_485 + 0u], cbuf_20.data[_485 + 1u], cbuf_20.data[_485 + 2u], cbuf_20.data[_485 + 3u]); uint _506 = ((0u + ((_416 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _519 = uint4(cbuf_20.data[_506 + 0u], cbuf_20.data[_506 + 1u], cbuf_20.data[_506 + 2u], cbuf_20.data[_506 + 3u]); uint _527 = ((0u + ((_416 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _540 = uint4(cbuf_20.data[_527 + 0u], cbuf_20.data[_527 + 1u], cbuf_20.data[_527 + 2u], cbuf_20.data[_527 + 3u]); float _570 = fma(as_type(_498.x), _228, fma(as_type(_435.x), _227, fma(as_type(_253.x), _225, spvFMul(_226, as_type(_316.x))))); float _572 = fma(as_type(_498.y), _228, fma(as_type(_435.y), _227, fma(as_type(_253.y), _225, spvFMul(_226, as_type(_316.y))))); float _574 = fma(as_type(_498.z), _228, fma(as_type(_435.z), _227, fma(as_type(_253.z), _225, spvFMul(_226, as_type(_316.z))))); float _578 = fma(as_type(_519.x), _228, fma(as_type(_456.x), _227, fma(as_type(_274.x), _225, spvFMul(_226, as_type(_337.x))))); float _580 = fma(as_type(_519.y), _228, fma(as_type(_456.y), _227, fma(as_type(_274.y), _225, spvFMul(_226, as_type(_337.y))))); float _582 = fma(as_type(_519.z), _228, fma(as_type(_456.z), _227, fma(as_type(_274.z), _225, spvFMul(_226, as_type(_337.z))))); float _586 = fma(as_type(_540.x), _228, fma(as_type(_477.x), _227, fma(as_type(_295.x), _225, spvFMul(_226, as_type(_358.x))))); float _588 = fma(as_type(_540.y), _228, fma(as_type(_477.y), _227, fma(as_type(_295.y), _225, spvFMul(_226, as_type(_358.y))))); float _590 = fma(as_type(_540.z), _228, fma(as_type(_477.z), _227, fma(as_type(_295.z), _225, spvFMul(_226, as_type(_358.z))))); float _599 = fma(_570, in.vs_in_attr0.x, fma(_572, in.vs_in_attr0.y, fma(_574, in.vs_in_attr0.z, fma(as_type(_498.w), _228, fma(as_type(_435.w), _227, fma(as_type(_253.w), _225, spvFMul(_226, as_type(_316.w)))))))); float _600 = fma(_578, in.vs_in_attr0.x, fma(_580, in.vs_in_attr0.y, fma(_582, in.vs_in_attr0.z, fma(as_type(_519.w), _228, fma(as_type(_456.w), _227, fma(as_type(_274.w), _225, spvFMul(_226, as_type(_337.w)))))))); float _601 = fma(_586, in.vs_in_attr0.x, fma(_588, in.vs_in_attr0.y, fma(_590, in.vs_in_attr0.z, fma(as_type(_540.w), _228, fma(as_type(_477.w), _227, fma(as_type(_295.w), _225, spvFMul(_226, as_type(_358.w)))))))); uint _602 = _124 * 3u; uint _605 = _128 * 3u; uint _611 = ((0u + (_602 * 16u)) + buf4_off) >> 2u; uint4 _624 = uint4(cbuf_24.data[_611 + 0u], cbuf_24.data[_611 + 1u], cbuf_24.data[_611 + 2u], cbuf_24.data[_611 + 3u]); uint _632 = ((0u + ((_602 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _645 = uint4(cbuf_24.data[_632 + 0u], cbuf_24.data[_632 + 1u], cbuf_24.data[_632 + 2u], cbuf_24.data[_632 + 3u]); uint _653 = ((0u + ((_602 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _666 = uint4(cbuf_24.data[_653 + 0u], cbuf_24.data[_653 + 1u], cbuf_24.data[_653 + 2u], cbuf_24.data[_653 + 3u]); uint _674 = ((0u + (_605 * 16u)) + buf4_off) >> 2u; uint4 _687 = uint4(cbuf_24.data[_674 + 0u], cbuf_24.data[_674 + 1u], cbuf_24.data[_674 + 2u], cbuf_24.data[_674 + 3u]); uint _695 = ((0u + ((_605 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _708 = uint4(cbuf_24.data[_695 + 0u], cbuf_24.data[_695 + 1u], cbuf_24.data[_695 + 2u], cbuf_24.data[_695 + 3u]); uint _716 = ((0u + ((_605 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _729 = uint4(cbuf_24.data[_716 + 0u], cbuf_24.data[_716 + 1u], cbuf_24.data[_716 + 2u], cbuf_24.data[_716 + 3u]); uint _734 = _132 * 3u; uint _737 = _137 * 3u; float _761 = fma(as_type(cbuf_8.data[0u + buf2_dword_off]), _599, fma(as_type(cbuf_8.data[1u + buf2_dword_off]), _600, fma(as_type(cbuf_8.data[2u + buf2_dword_off]), _601, as_type(cbuf_8.data[3u + buf2_dword_off])))); float _763 = fma(as_type(cbuf_8.data[4u + buf2_dword_off]), _599, fma(as_type(cbuf_8.data[5u + buf2_dword_off]), _600, fma(as_type(cbuf_8.data[6u + buf2_dword_off]), _601, as_type(cbuf_8.data[7u + buf2_dword_off])))); float _765 = fma(as_type(cbuf_8.data[8u + buf2_dword_off]), _599, fma(as_type(cbuf_8.data[9u + buf2_dword_off]), _600, fma(as_type(cbuf_8.data[10u + buf2_dword_off]), _601, as_type(cbuf_8.data[11u + buf2_dword_off])))); float _767 = fma(as_type(cbuf_8.data[12u + buf2_dword_off]), _599, fma(as_type(cbuf_8.data[13u + buf2_dword_off]), _600, fma(as_type(cbuf_8.data[14u + buf2_dword_off]), _601, as_type(cbuf_8.data[15u + buf2_dword_off])))); out.gl_Position.x = _761; out.gl_Position.y = _763; out.gl_Position.z = _765; out.gl_Position.w = _767; out.out_attr0.x = _761; out.out_attr0.y = _763; out.out_attr0.z = _765; out.out_attr0.w = _767; float _857 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _858 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _859 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _880 = ((0u + (_734 * 16u)) + buf4_off) >> 2u; uint4 _893 = uint4(cbuf_24.data[_880 + 0u], cbuf_24.data[_880 + 1u], cbuf_24.data[_880 + 2u], cbuf_24.data[_880 + 3u]); uint _949 = ((0u + ((_734 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _962 = uint4(cbuf_24.data[_949 + 0u], cbuf_24.data[_949 + 1u], cbuf_24.data[_949 + 2u], cbuf_24.data[_949 + 3u]); uint _970 = ((0u + ((_734 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _983 = uint4(cbuf_24.data[_970 + 0u], cbuf_24.data[_970 + 1u], cbuf_24.data[_970 + 2u], cbuf_24.data[_970 + 3u]); uint _991 = ((0u + (_737 * 16u)) + buf4_off) >> 2u; uint4 _1004 = uint4(cbuf_24.data[_991 + 0u], cbuf_24.data[_991 + 1u], cbuf_24.data[_991 + 2u], cbuf_24.data[_991 + 3u]); uint _1012 = ((0u + ((_737 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _1025 = uint4(cbuf_24.data[_1012 + 0u], cbuf_24.data[_1012 + 1u], cbuf_24.data[_1012 + 2u], cbuf_24.data[_1012 + 3u]); uint _1033 = ((0u + ((_737 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _1046 = uint4(cbuf_24.data[_1033 + 0u], cbuf_24.data[_1033 + 1u], cbuf_24.data[_1033 + 2u], cbuf_24.data[_1033 + 3u]); float _1097 = fma(fma(as_type(_1004.x), _228, fma(as_type(_893.x), _227, fma(as_type(_624.x), _225, spvFMul(_226, as_type(_687.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1004.y), _228, fma(as_type(_893.y), _227, fma(as_type(_624.y), _225, spvFMul(_226, as_type(_687.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1004.z), _228, fma(as_type(_893.z), _227, fma(as_type(_624.z), _225, spvFMul(_226, as_type(_687.z))))), in.vs_in_attr0.z, fma(as_type(_1004.w), _228, fma(as_type(_893.w), _227, fma(as_type(_624.w), _225, spvFMul(_226, as_type(_687.w)))))))); float _1098 = fma(fma(as_type(_1025.x), _228, fma(as_type(_962.x), _227, fma(as_type(_645.x), _225, spvFMul(_226, as_type(_708.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1025.y), _228, fma(as_type(_962.y), _227, fma(as_type(_645.y), _225, spvFMul(_226, as_type(_708.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1025.z), _228, fma(as_type(_962.z), _227, fma(as_type(_645.z), _225, spvFMul(_226, as_type(_708.z))))), in.vs_in_attr0.z, fma(as_type(_1025.w), _228, fma(as_type(_962.w), _227, fma(as_type(_645.w), _225, spvFMul(_226, as_type(_708.w)))))))); float _1099 = fma(fma(as_type(_1046.x), _228, fma(as_type(_983.x), _227, fma(as_type(_666.x), _225, spvFMul(_226, as_type(_729.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1046.y), _228, fma(as_type(_983.y), _227, fma(as_type(_666.y), _225, spvFMul(_226, as_type(_729.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1046.z), _228, fma(as_type(_983.z), _227, fma(as_type(_666.z), _225, spvFMul(_226, as_type(_729.z))))), in.vs_in_attr0.z, fma(as_type(_1046.w), _228, fma(as_type(_983.w), _227, fma(as_type(_666.w), _225, spvFMul(_226, as_type(_729.w)))))))); out.out_attr1.x = fma(as_type(cbuf_8.data[16u + buf2_dword_off]), _1097, fma(as_type(cbuf_8.data[17u + buf2_dword_off]), _1098, fma(as_type(cbuf_8.data[18u + buf2_dword_off]), _1099, as_type(cbuf_8.data[19u + buf2_dword_off])))); out.out_attr1.y = fma(as_type(cbuf_8.data[20u + buf2_dword_off]), _1097, fma(as_type(cbuf_8.data[21u + buf2_dword_off]), _1098, fma(as_type(cbuf_8.data[22u + buf2_dword_off]), _1099, as_type(cbuf_8.data[23u + buf2_dword_off])))); out.out_attr1.z = fma(as_type(cbuf_8.data[24u + buf2_dword_off]), _1097, fma(as_type(cbuf_8.data[25u + buf2_dword_off]), _1098, fma(as_type(cbuf_8.data[26u + buf2_dword_off]), _1099, as_type(cbuf_8.data[27u + buf2_dword_off])))); out.out_attr1.w = fma(as_type(cbuf_8.data[28u + buf2_dword_off]), _1097, fma(as_type(cbuf_8.data[29u + buf2_dword_off]), _1098, fma(as_type(cbuf_8.data[30u + buf2_dword_off]), _1099, as_type(cbuf_8.data[31u + buf2_dword_off])))); out.out_attr2.x = fma(_570, _857, fma(_572, _858, spvFMul(_574, _859))); out.out_attr2.y = fma(_578, _857, fma(_580, _858, spvFMul(_582, _859))); out.out_attr2.z = fma(_586, _857, fma(_588, _858, spvFMul(_590, _859))); out.out_attr2.w = 1.0; out.out_attr3.x = fma(as_type(cbuf_12.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_12.data[2u + buf5_dword_off])); out.out_attr3.y = fma(as_type(cbuf_12.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_12.data[3u + buf5_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float _79 = 1.0 / in.fs_in_attr1.w; float _84 = 1.0 / in.fs_in_attr0.w; out.frag_color0.x = fast::clamp(fma(spvFMul(as_type(cbuf_4.data[0u + buf0_dword_off]), fma(in.fs_in_attr0.x, _84, -spvFMul(in.fs_in_attr1.x, _79))), 0.5, 0.5), 0.0, 1.0); out.frag_color0.y = fast::clamp(fma(spvFMul(as_type(cbuf_4.data[1u + buf0_dword_off]), fma(in.fs_in_attr0.y, _84, -spvFMul(in.fs_in_attr1.y, _79))), 0.5, 0.5), 0.0, 1.0); out.frag_color0.z = spvFMul(in.fs_in_attr0.w, 1.0 / spvFAdd(10.0, in.fs_in_attr0.w)); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8a2dba97 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[96]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_16 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_8 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(14)]], constant vs_cbuf_block_f32_3& cbuf_12 [[buffer(15)]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _125 = as_type(as_type(in.vs_in_attr2.x)); uint _129 = as_type(as_type(in.vs_in_attr2.y)); uint _133 = as_type(as_type(in.vs_in_attr2.z)); uint _138 = as_type(as_type(in.vs_in_attr2.w)); uint _156 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); float _225 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr3.w, spvFAdd(in.vs_in_attr3.z, spvFAdd(in.vs_in_attr3.x, in.vs_in_attr3.y)))); float _226 = spvFMul(in.vs_in_attr3.x, _225); float _227 = spvFMul(in.vs_in_attr3.y, _225); float _228 = spvFMul(in.vs_in_attr3.z, _225); float _229 = spvFMul(in.vs_in_attr3.w, _225); uint _231 = (cbuf_16.data[_156] + _125) * 3u; uint _235 = (cbuf_16.data[_156] + _129) * 3u; uint _241 = ((0u + (_231 * 16u)) + buf4_off) >> 2u; uint4 _254 = uint4(cbuf_20.data[_241 + 0u], cbuf_20.data[_241 + 1u], cbuf_20.data[_241 + 2u], cbuf_20.data[_241 + 3u]); uint _262 = ((0u + ((_231 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _275 = uint4(cbuf_20.data[_262 + 0u], cbuf_20.data[_262 + 1u], cbuf_20.data[_262 + 2u], cbuf_20.data[_262 + 3u]); uint _283 = ((0u + ((_231 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _296 = uint4(cbuf_20.data[_283 + 0u], cbuf_20.data[_283 + 1u], cbuf_20.data[_283 + 2u], cbuf_20.data[_283 + 3u]); uint _304 = ((0u + (_235 * 16u)) + buf4_off) >> 2u; uint4 _317 = uint4(cbuf_20.data[_304 + 0u], cbuf_20.data[_304 + 1u], cbuf_20.data[_304 + 2u], cbuf_20.data[_304 + 3u]); uint _325 = ((0u + ((_235 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _338 = uint4(cbuf_20.data[_325 + 0u], cbuf_20.data[_325 + 1u], cbuf_20.data[_325 + 2u], cbuf_20.data[_325 + 3u]); uint _346 = ((0u + ((_235 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _359 = uint4(cbuf_20.data[_346 + 0u], cbuf_20.data[_346 + 1u], cbuf_20.data[_346 + 2u], cbuf_20.data[_346 + 3u]); uint _413 = (cbuf_16.data[_156] + _133) * 3u; uint _417 = (cbuf_16.data[_156] + _138) * 3u; uint _423 = ((0u + (_413 * 16u)) + buf4_off) >> 2u; uint4 _436 = uint4(cbuf_20.data[_423 + 0u], cbuf_20.data[_423 + 1u], cbuf_20.data[_423 + 2u], cbuf_20.data[_423 + 3u]); uint _444 = ((0u + ((_413 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _457 = uint4(cbuf_20.data[_444 + 0u], cbuf_20.data[_444 + 1u], cbuf_20.data[_444 + 2u], cbuf_20.data[_444 + 3u]); uint _465 = ((0u + ((_413 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _478 = uint4(cbuf_20.data[_465 + 0u], cbuf_20.data[_465 + 1u], cbuf_20.data[_465 + 2u], cbuf_20.data[_465 + 3u]); uint _486 = ((0u + (_417 * 16u)) + buf4_off) >> 2u; uint4 _499 = uint4(cbuf_20.data[_486 + 0u], cbuf_20.data[_486 + 1u], cbuf_20.data[_486 + 2u], cbuf_20.data[_486 + 3u]); uint _507 = ((0u + ((_417 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _520 = uint4(cbuf_20.data[_507 + 0u], cbuf_20.data[_507 + 1u], cbuf_20.data[_507 + 2u], cbuf_20.data[_507 + 3u]); uint _528 = ((0u + ((_417 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _541 = uint4(cbuf_20.data[_528 + 0u], cbuf_20.data[_528 + 1u], cbuf_20.data[_528 + 2u], cbuf_20.data[_528 + 3u]); float _571 = fma(as_type(_499.x), _229, fma(as_type(_436.x), _228, fma(as_type(_254.x), _226, spvFMul(_227, as_type(_317.x))))); float _573 = fma(as_type(_499.y), _229, fma(as_type(_436.y), _228, fma(as_type(_254.y), _226, spvFMul(_227, as_type(_317.y))))); float _575 = fma(as_type(_499.z), _229, fma(as_type(_436.z), _228, fma(as_type(_254.z), _226, spvFMul(_227, as_type(_317.z))))); float _579 = fma(as_type(_520.x), _229, fma(as_type(_457.x), _228, fma(as_type(_275.x), _226, spvFMul(_227, as_type(_338.x))))); float _581 = fma(as_type(_520.y), _229, fma(as_type(_457.y), _228, fma(as_type(_275.y), _226, spvFMul(_227, as_type(_338.y))))); float _583 = fma(as_type(_520.z), _229, fma(as_type(_457.z), _228, fma(as_type(_275.z), _226, spvFMul(_227, as_type(_338.z))))); float _587 = fma(as_type(_541.x), _229, fma(as_type(_478.x), _228, fma(as_type(_296.x), _226, spvFMul(_227, as_type(_359.x))))); float _589 = fma(as_type(_541.y), _229, fma(as_type(_478.y), _228, fma(as_type(_296.y), _226, spvFMul(_227, as_type(_359.y))))); float _591 = fma(as_type(_541.z), _229, fma(as_type(_478.z), _228, fma(as_type(_296.z), _226, spvFMul(_227, as_type(_359.z))))); float _600 = fma(_571, in.vs_in_attr0.x, fma(_573, in.vs_in_attr0.y, fma(_575, in.vs_in_attr0.z, fma(as_type(_499.w), _229, fma(as_type(_436.w), _228, fma(as_type(_254.w), _226, spvFMul(_227, as_type(_317.w)))))))); float _601 = fma(_579, in.vs_in_attr0.x, fma(_581, in.vs_in_attr0.y, fma(_583, in.vs_in_attr0.z, fma(as_type(_520.w), _229, fma(as_type(_457.w), _228, fma(as_type(_275.w), _226, spvFMul(_227, as_type(_338.w)))))))); float _602 = fma(_587, in.vs_in_attr0.x, fma(_589, in.vs_in_attr0.y, fma(_591, in.vs_in_attr0.z, fma(as_type(_541.w), _229, fma(as_type(_478.w), _228, fma(as_type(_296.w), _226, spvFMul(_227, as_type(_359.w)))))))); uint _603 = _125 * 3u; uint _606 = _129 * 3u; uint _612 = ((0u + (_603 * 16u)) + buf5_off) >> 2u; uint4 _625 = uint4(cbuf_24.data[_612 + 0u], cbuf_24.data[_612 + 1u], cbuf_24.data[_612 + 2u], cbuf_24.data[_612 + 3u]); uint _633 = ((0u + ((_603 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _646 = uint4(cbuf_24.data[_633 + 0u], cbuf_24.data[_633 + 1u], cbuf_24.data[_633 + 2u], cbuf_24.data[_633 + 3u]); uint _654 = ((0u + ((_603 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _667 = uint4(cbuf_24.data[_654 + 0u], cbuf_24.data[_654 + 1u], cbuf_24.data[_654 + 2u], cbuf_24.data[_654 + 3u]); uint _675 = ((0u + (_606 * 16u)) + buf5_off) >> 2u; uint4 _688 = uint4(cbuf_24.data[_675 + 0u], cbuf_24.data[_675 + 1u], cbuf_24.data[_675 + 2u], cbuf_24.data[_675 + 3u]); uint _696 = ((0u + ((_606 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _709 = uint4(cbuf_24.data[_696 + 0u], cbuf_24.data[_696 + 1u], cbuf_24.data[_696 + 2u], cbuf_24.data[_696 + 3u]); uint _717 = ((0u + ((_606 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _730 = uint4(cbuf_24.data[_717 + 0u], cbuf_24.data[_717 + 1u], cbuf_24.data[_717 + 2u], cbuf_24.data[_717 + 3u]); uint _735 = _133 * 3u; uint _738 = _138 * 3u; float _762 = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), _602, as_type(cbuf_8.data[3u + buf3_dword_off])))); float _764 = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), _602, as_type(cbuf_8.data[7u + buf3_dword_off])))); float _766 = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), _602, as_type(cbuf_8.data[11u + buf3_dword_off])))); float _768 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), _602, as_type(cbuf_8.data[15u + buf3_dword_off])))); out.gl_Position.x = _762; out.gl_Position.y = _764; out.gl_Position.z = _766; out.gl_Position.w = _768; out.out_attr0.x = _762; out.out_attr0.y = _764; out.out_attr0.z = _766; out.out_attr0.w = _768; float _858 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _859 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _860 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _881 = ((0u + (_735 * 16u)) + buf5_off) >> 2u; uint4 _894 = uint4(cbuf_24.data[_881 + 0u], cbuf_24.data[_881 + 1u], cbuf_24.data[_881 + 2u], cbuf_24.data[_881 + 3u]); uint _950 = ((0u + ((_735 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _963 = uint4(cbuf_24.data[_950 + 0u], cbuf_24.data[_950 + 1u], cbuf_24.data[_950 + 2u], cbuf_24.data[_950 + 3u]); uint _971 = ((0u + ((_735 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _984 = uint4(cbuf_24.data[_971 + 0u], cbuf_24.data[_971 + 1u], cbuf_24.data[_971 + 2u], cbuf_24.data[_971 + 3u]); uint _992 = ((0u + (_738 * 16u)) + buf5_off) >> 2u; uint4 _1005 = uint4(cbuf_24.data[_992 + 0u], cbuf_24.data[_992 + 1u], cbuf_24.data[_992 + 2u], cbuf_24.data[_992 + 3u]); uint _1013 = ((0u + ((_738 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _1026 = uint4(cbuf_24.data[_1013 + 0u], cbuf_24.data[_1013 + 1u], cbuf_24.data[_1013 + 2u], cbuf_24.data[_1013 + 3u]); uint _1034 = ((0u + ((_738 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _1047 = uint4(cbuf_24.data[_1034 + 0u], cbuf_24.data[_1034 + 1u], cbuf_24.data[_1034 + 2u], cbuf_24.data[_1034 + 3u]); float _1098 = fma(fma(as_type(_1005.x), _229, fma(as_type(_894.x), _228, fma(as_type(_625.x), _226, spvFMul(_227, as_type(_688.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1005.y), _229, fma(as_type(_894.y), _228, fma(as_type(_625.y), _226, spvFMul(_227, as_type(_688.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1005.z), _229, fma(as_type(_894.z), _228, fma(as_type(_625.z), _226, spvFMul(_227, as_type(_688.z))))), in.vs_in_attr0.z, fma(as_type(_1005.w), _229, fma(as_type(_894.w), _228, fma(as_type(_625.w), _226, spvFMul(_227, as_type(_688.w)))))))); float _1099 = fma(fma(as_type(_1026.x), _229, fma(as_type(_963.x), _228, fma(as_type(_646.x), _226, spvFMul(_227, as_type(_709.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1026.y), _229, fma(as_type(_963.y), _228, fma(as_type(_646.y), _226, spvFMul(_227, as_type(_709.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1026.z), _229, fma(as_type(_963.z), _228, fma(as_type(_646.z), _226, spvFMul(_227, as_type(_709.z))))), in.vs_in_attr0.z, fma(as_type(_1026.w), _229, fma(as_type(_963.w), _228, fma(as_type(_646.w), _226, spvFMul(_227, as_type(_709.w)))))))); float _1100 = fma(fma(as_type(_1047.x), _229, fma(as_type(_984.x), _228, fma(as_type(_667.x), _226, spvFMul(_227, as_type(_730.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1047.y), _229, fma(as_type(_984.y), _228, fma(as_type(_667.y), _226, spvFMul(_227, as_type(_730.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1047.z), _229, fma(as_type(_984.z), _228, fma(as_type(_667.z), _226, spvFMul(_227, as_type(_730.z))))), in.vs_in_attr0.z, fma(as_type(_1047.w), _229, fma(as_type(_984.w), _228, fma(as_type(_667.w), _226, spvFMul(_227, as_type(_730.w)))))))); out.out_attr1.x = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), _1100, as_type(cbuf_8.data[19u + buf3_dword_off])))); out.out_attr1.y = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), _1100, as_type(cbuf_8.data[23u + buf3_dword_off])))); out.out_attr1.z = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), _1100, as_type(cbuf_8.data[27u + buf3_dword_off])))); out.out_attr1.w = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), _1100, as_type(cbuf_8.data[31u + buf3_dword_off])))); out.out_attr2.x = fma(_571, _858, fma(_573, _859, spvFMul(_575, _860))); out.out_attr2.y = fma(_579, _858, fma(_581, _859, spvFMul(_583, _860))); out.out_attr2.z = fma(_587, _858, fma(_589, _859, spvFMul(_591, _860))); out.out_attr2.w = 1.0; out.out_attr3.x = fma(as_type(cbuf_12.data[0u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_12.data[2u + buf6_dword_off])); out.out_attr3.y = fma(as_type(cbuf_12.data[1u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_12.data[3u + buf6_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x5992ac36 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[208]; }; struct vs_cbuf_block_f32_1 { uint data[48]; }; struct vs_cbuf_block_f32_2 { uint data[3228]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_16 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_8 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(14)]], constant vs_cbuf_block_f32_3& cbuf_12 [[buffer(15)]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _125 = as_type(as_type(in.vs_in_attr2.x)); uint _129 = as_type(as_type(in.vs_in_attr2.y)); uint _133 = as_type(as_type(in.vs_in_attr2.z)); uint _138 = as_type(as_type(in.vs_in_attr2.w)); uint _156 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); float _225 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr3.w, spvFAdd(in.vs_in_attr3.z, spvFAdd(in.vs_in_attr3.x, in.vs_in_attr3.y)))); float _226 = spvFMul(in.vs_in_attr3.x, _225); float _227 = spvFMul(in.vs_in_attr3.y, _225); float _228 = spvFMul(in.vs_in_attr3.z, _225); float _229 = spvFMul(in.vs_in_attr3.w, _225); uint _231 = (cbuf_16.data[_156] + _125) * 3u; uint _235 = (cbuf_16.data[_156] + _129) * 3u; uint _241 = ((0u + (_231 * 16u)) + buf4_off) >> 2u; uint4 _254 = uint4(cbuf_20.data[_241 + 0u], cbuf_20.data[_241 + 1u], cbuf_20.data[_241 + 2u], cbuf_20.data[_241 + 3u]); uint _262 = ((0u + ((_231 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _275 = uint4(cbuf_20.data[_262 + 0u], cbuf_20.data[_262 + 1u], cbuf_20.data[_262 + 2u], cbuf_20.data[_262 + 3u]); uint _283 = ((0u + ((_231 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _296 = uint4(cbuf_20.data[_283 + 0u], cbuf_20.data[_283 + 1u], cbuf_20.data[_283 + 2u], cbuf_20.data[_283 + 3u]); uint _304 = ((0u + (_235 * 16u)) + buf4_off) >> 2u; uint4 _317 = uint4(cbuf_20.data[_304 + 0u], cbuf_20.data[_304 + 1u], cbuf_20.data[_304 + 2u], cbuf_20.data[_304 + 3u]); uint _325 = ((0u + ((_235 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _338 = uint4(cbuf_20.data[_325 + 0u], cbuf_20.data[_325 + 1u], cbuf_20.data[_325 + 2u], cbuf_20.data[_325 + 3u]); uint _346 = ((0u + ((_235 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _359 = uint4(cbuf_20.data[_346 + 0u], cbuf_20.data[_346 + 1u], cbuf_20.data[_346 + 2u], cbuf_20.data[_346 + 3u]); uint _413 = (cbuf_16.data[_156] + _133) * 3u; uint _417 = (cbuf_16.data[_156] + _138) * 3u; uint _423 = ((0u + (_413 * 16u)) + buf4_off) >> 2u; uint4 _436 = uint4(cbuf_20.data[_423 + 0u], cbuf_20.data[_423 + 1u], cbuf_20.data[_423 + 2u], cbuf_20.data[_423 + 3u]); uint _444 = ((0u + ((_413 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _457 = uint4(cbuf_20.data[_444 + 0u], cbuf_20.data[_444 + 1u], cbuf_20.data[_444 + 2u], cbuf_20.data[_444 + 3u]); uint _465 = ((0u + ((_413 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _478 = uint4(cbuf_20.data[_465 + 0u], cbuf_20.data[_465 + 1u], cbuf_20.data[_465 + 2u], cbuf_20.data[_465 + 3u]); uint _486 = ((0u + (_417 * 16u)) + buf4_off) >> 2u; uint4 _499 = uint4(cbuf_20.data[_486 + 0u], cbuf_20.data[_486 + 1u], cbuf_20.data[_486 + 2u], cbuf_20.data[_486 + 3u]); uint _507 = ((0u + ((_417 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _520 = uint4(cbuf_20.data[_507 + 0u], cbuf_20.data[_507 + 1u], cbuf_20.data[_507 + 2u], cbuf_20.data[_507 + 3u]); uint _528 = ((0u + ((_417 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _541 = uint4(cbuf_20.data[_528 + 0u], cbuf_20.data[_528 + 1u], cbuf_20.data[_528 + 2u], cbuf_20.data[_528 + 3u]); float _571 = fma(as_type(_499.x), _229, fma(as_type(_436.x), _228, fma(as_type(_254.x), _226, spvFMul(_227, as_type(_317.x))))); float _573 = fma(as_type(_499.y), _229, fma(as_type(_436.y), _228, fma(as_type(_254.y), _226, spvFMul(_227, as_type(_317.y))))); float _575 = fma(as_type(_499.z), _229, fma(as_type(_436.z), _228, fma(as_type(_254.z), _226, spvFMul(_227, as_type(_317.z))))); float _579 = fma(as_type(_520.x), _229, fma(as_type(_457.x), _228, fma(as_type(_275.x), _226, spvFMul(_227, as_type(_338.x))))); float _581 = fma(as_type(_520.y), _229, fma(as_type(_457.y), _228, fma(as_type(_275.y), _226, spvFMul(_227, as_type(_338.y))))); float _583 = fma(as_type(_520.z), _229, fma(as_type(_457.z), _228, fma(as_type(_275.z), _226, spvFMul(_227, as_type(_338.z))))); float _587 = fma(as_type(_541.x), _229, fma(as_type(_478.x), _228, fma(as_type(_296.x), _226, spvFMul(_227, as_type(_359.x))))); float _589 = fma(as_type(_541.y), _229, fma(as_type(_478.y), _228, fma(as_type(_296.y), _226, spvFMul(_227, as_type(_359.y))))); float _591 = fma(as_type(_541.z), _229, fma(as_type(_478.z), _228, fma(as_type(_296.z), _226, spvFMul(_227, as_type(_359.z))))); float _600 = fma(_571, in.vs_in_attr0.x, fma(_573, in.vs_in_attr0.y, fma(_575, in.vs_in_attr0.z, fma(as_type(_499.w), _229, fma(as_type(_436.w), _228, fma(as_type(_254.w), _226, spvFMul(_227, as_type(_317.w)))))))); float _601 = fma(_579, in.vs_in_attr0.x, fma(_581, in.vs_in_attr0.y, fma(_583, in.vs_in_attr0.z, fma(as_type(_520.w), _229, fma(as_type(_457.w), _228, fma(as_type(_275.w), _226, spvFMul(_227, as_type(_338.w)))))))); float _602 = fma(_587, in.vs_in_attr0.x, fma(_589, in.vs_in_attr0.y, fma(_591, in.vs_in_attr0.z, fma(as_type(_541.w), _229, fma(as_type(_478.w), _228, fma(as_type(_296.w), _226, spvFMul(_227, as_type(_359.w)))))))); uint _603 = _125 * 3u; uint _606 = _129 * 3u; uint _612 = ((0u + (_603 * 16u)) + buf5_off) >> 2u; uint4 _625 = uint4(cbuf_24.data[_612 + 0u], cbuf_24.data[_612 + 1u], cbuf_24.data[_612 + 2u], cbuf_24.data[_612 + 3u]); uint _633 = ((0u + ((_603 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _646 = uint4(cbuf_24.data[_633 + 0u], cbuf_24.data[_633 + 1u], cbuf_24.data[_633 + 2u], cbuf_24.data[_633 + 3u]); uint _654 = ((0u + ((_603 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _667 = uint4(cbuf_24.data[_654 + 0u], cbuf_24.data[_654 + 1u], cbuf_24.data[_654 + 2u], cbuf_24.data[_654 + 3u]); uint _675 = ((0u + (_606 * 16u)) + buf5_off) >> 2u; uint4 _688 = uint4(cbuf_24.data[_675 + 0u], cbuf_24.data[_675 + 1u], cbuf_24.data[_675 + 2u], cbuf_24.data[_675 + 3u]); uint _696 = ((0u + ((_606 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _709 = uint4(cbuf_24.data[_696 + 0u], cbuf_24.data[_696 + 1u], cbuf_24.data[_696 + 2u], cbuf_24.data[_696 + 3u]); uint _717 = ((0u + ((_606 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _730 = uint4(cbuf_24.data[_717 + 0u], cbuf_24.data[_717 + 1u], cbuf_24.data[_717 + 2u], cbuf_24.data[_717 + 3u]); uint _735 = _133 * 3u; uint _738 = _138 * 3u; float _762 = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), _602, as_type(cbuf_8.data[3u + buf3_dword_off])))); float _764 = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), _602, as_type(cbuf_8.data[7u + buf3_dword_off])))); float _766 = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), _602, as_type(cbuf_8.data[11u + buf3_dword_off])))); float _768 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), _600, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), _601, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), _602, as_type(cbuf_8.data[15u + buf3_dword_off])))); out.gl_Position.x = _762; out.gl_Position.y = _764; out.gl_Position.z = _766; out.gl_Position.w = _768; out.out_attr0.x = _762; out.out_attr0.y = _764; out.out_attr0.z = _766; out.out_attr0.w = _768; float _858 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _859 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _860 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _881 = ((0u + (_735 * 16u)) + buf5_off) >> 2u; uint4 _894 = uint4(cbuf_24.data[_881 + 0u], cbuf_24.data[_881 + 1u], cbuf_24.data[_881 + 2u], cbuf_24.data[_881 + 3u]); uint _950 = ((0u + ((_735 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _963 = uint4(cbuf_24.data[_950 + 0u], cbuf_24.data[_950 + 1u], cbuf_24.data[_950 + 2u], cbuf_24.data[_950 + 3u]); uint _971 = ((0u + ((_735 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _984 = uint4(cbuf_24.data[_971 + 0u], cbuf_24.data[_971 + 1u], cbuf_24.data[_971 + 2u], cbuf_24.data[_971 + 3u]); uint _992 = ((0u + (_738 * 16u)) + buf5_off) >> 2u; uint4 _1005 = uint4(cbuf_24.data[_992 + 0u], cbuf_24.data[_992 + 1u], cbuf_24.data[_992 + 2u], cbuf_24.data[_992 + 3u]); uint _1013 = ((0u + ((_738 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _1026 = uint4(cbuf_24.data[_1013 + 0u], cbuf_24.data[_1013 + 1u], cbuf_24.data[_1013 + 2u], cbuf_24.data[_1013 + 3u]); uint _1034 = ((0u + ((_738 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _1047 = uint4(cbuf_24.data[_1034 + 0u], cbuf_24.data[_1034 + 1u], cbuf_24.data[_1034 + 2u], cbuf_24.data[_1034 + 3u]); float _1098 = fma(fma(as_type(_1005.x), _229, fma(as_type(_894.x), _228, fma(as_type(_625.x), _226, spvFMul(_227, as_type(_688.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1005.y), _229, fma(as_type(_894.y), _228, fma(as_type(_625.y), _226, spvFMul(_227, as_type(_688.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1005.z), _229, fma(as_type(_894.z), _228, fma(as_type(_625.z), _226, spvFMul(_227, as_type(_688.z))))), in.vs_in_attr0.z, fma(as_type(_1005.w), _229, fma(as_type(_894.w), _228, fma(as_type(_625.w), _226, spvFMul(_227, as_type(_688.w)))))))); float _1099 = fma(fma(as_type(_1026.x), _229, fma(as_type(_963.x), _228, fma(as_type(_646.x), _226, spvFMul(_227, as_type(_709.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1026.y), _229, fma(as_type(_963.y), _228, fma(as_type(_646.y), _226, spvFMul(_227, as_type(_709.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1026.z), _229, fma(as_type(_963.z), _228, fma(as_type(_646.z), _226, spvFMul(_227, as_type(_709.z))))), in.vs_in_attr0.z, fma(as_type(_1026.w), _229, fma(as_type(_963.w), _228, fma(as_type(_646.w), _226, spvFMul(_227, as_type(_709.w)))))))); float _1100 = fma(fma(as_type(_1047.x), _229, fma(as_type(_984.x), _228, fma(as_type(_667.x), _226, spvFMul(_227, as_type(_730.x))))), in.vs_in_attr0.x, fma(fma(as_type(_1047.y), _229, fma(as_type(_984.y), _228, fma(as_type(_667.y), _226, spvFMul(_227, as_type(_730.y))))), in.vs_in_attr0.y, fma(fma(as_type(_1047.z), _229, fma(as_type(_984.z), _228, fma(as_type(_667.z), _226, spvFMul(_227, as_type(_730.z))))), in.vs_in_attr0.z, fma(as_type(_1047.w), _229, fma(as_type(_984.w), _228, fma(as_type(_667.w), _226, spvFMul(_227, as_type(_730.w)))))))); out.out_attr1.x = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), _1100, as_type(cbuf_8.data[19u + buf3_dword_off])))); out.out_attr1.y = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), _1100, as_type(cbuf_8.data[23u + buf3_dword_off])))); out.out_attr1.z = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), _1100, as_type(cbuf_8.data[27u + buf3_dword_off])))); out.out_attr1.w = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), _1098, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), _1099, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), _1100, as_type(cbuf_8.data[31u + buf3_dword_off])))); out.out_attr2.x = fma(_571, _858, fma(_573, _859, spvFMul(_575, _860))); out.out_attr2.y = fma(_579, _858, fma(_581, _859, spvFMul(_583, _860))); out.out_attr2.z = fma(_587, _858, fma(_589, _859, spvFMul(_591, _860))); out.out_attr2.w = 1.0; out.out_attr3.x = fma(as_type(cbuf_12.data[0u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_12.data[2u + buf6_dword_off])); out.out_attr3.y = fma(as_type(cbuf_12.data[1u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_12.data[3u + buf6_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_44; float4 m_45; float4 m_46; float4 gl_Position; }; struct main0_in { float4 m_27; float4 m_28; float4 m_29; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _68 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _71 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _74 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _82 = ((_68.x && _74.y) || (_68.y && _74.x)) ? (-1.0) : 1.0; bool _89 = (_71.x && _68.y) || (_71.y && _68.x); float _90 = _89 ? (-1.0) : 1.0; bool _97 = (_74.x && _71.y) || (_74.y && _71.x); float _98 = _97 ? (-1.0) : 1.0; bool _102 = gl_InvocationID == 3; int _104 = ((_89 ? 1 : (_97 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _102 ? ((gl_in[0].gl_Position * _82) + ((gl_in[1].gl_Position * _90) + (gl_in[2].gl_Position * _98))) : gl_in[_104].gl_Position; gl_out[gl_InvocationID].m_44 = _102 ? ((gl_in[0].m_27 * _82) + ((gl_in[1].m_27 * _90) + (gl_in[2].m_27 * _98))) : gl_in[_104].m_27; gl_out[gl_InvocationID].m_45 = _102 ? ((gl_in[0].m_28 * _82) + ((gl_in[1].m_28 * _90) + (gl_in[2].m_28 * _98))) : gl_in[_104].m_28; gl_out[gl_InvocationID].m_46 = _102 ? ((gl_in[0].m_29 * _82) + ((gl_in[1].m_29 * _90) + (gl_in[2].m_29 * _98))) : gl_in[_104].m_29; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_33 [[user(locn0)]]; float4 m_34 [[user(locn1)]]; float4 m_35 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 m_28; float4 m_29; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _47 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_47].gl_Position; out.m_33 = gl_in[_47].m_27; out.m_34 = gl_in[_47].m_28; out.m_35 = gl_in[_47].m_29; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x4baeaa00 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; float _85 = spvFMul(fma(in.fs_in_attr0.w, in.fs_in_attr3.w, in.fs_in_attr2.w), in.fs_in_attr1.w); out.frag_color0.x = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr3.x, in.fs_in_attr2.x), _85); out.frag_color0.y = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr3.y, in.fs_in_attr2.y), _85); out.frag_color0.z = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr3.z, in.fs_in_attr2.z), _85); out.frag_color0.w = _85; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xa400228b (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; int4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); float _75 = spvFAdd(0.100000001490116119384765625, float(as_type(as_type(in.vs_in_attr1.x)) << 1u)); uint _83 = ((0u + (uint(int(_75)) * 16u)) + buf1_off) >> 2u; uint4 _97 = uint4(cbuf_8.data[_83 + 0u], cbuf_8.data[_83 + 1u], cbuf_8.data[_83 + 2u], cbuf_8.data[_83 + 3u]); uint _105 = ((0u + (uint(int(spvFAdd(1.0, _75))) * 16u)) + buf1_off) >> 2u; uint4 _118 = uint4(cbuf_8.data[_105 + 0u], cbuf_8.data[_105 + 1u], cbuf_8.data[_105 + 2u], cbuf_8.data[_105 + 3u]); out.gl_Position.x = fma(in.vs_in_attr0.x, as_type(_97.x), fma(in.vs_in_attr0.y, as_type(_97.y), fma(0.0, as_type(_97.z), spvFMul(1.0, as_type(_97.w))))); out.gl_Position.y = fma(in.vs_in_attr0.x, as_type(_118.x), fma(in.vs_in_attr0.y, as_type(_118.y), fma(0.0, as_type(_118.z), spvFMul(1.0, as_type(_118.w))))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr0.x = 1.0; out.out_attr0.y = 1.0; out.out_attr0.z = 1.0; out.out_attr0.w = 1.0; float4 _148 = out.gl_Position; _148.z = (_148.z + _148.w) * 0.5; out.gl_Position = _148; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb4186e5 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); float _89 = spvFMul(255.0099945068359375, in.vs_in_attr1.z); float _95 = spvFAdd(0.100000001490116119384765625, fma(_89, 4.0, 2.0)); uint _105 = ((0u + (uint(int(_95)) * 16u)) + buf0_off) >> 2u; uint4 _118 = uint4(cbuf_8.data[_105 + 0u], cbuf_8.data[_105 + 1u], cbuf_8.data[_105 + 2u], cbuf_8.data[_105 + 3u]); uint _126 = ((0u + (uint(int(spvFAdd(1.0, _95))) * 16u)) + buf0_off) >> 2u; uint4 _139 = uint4(cbuf_8.data[_126 + 0u], cbuf_8.data[_126 + 1u], cbuf_8.data[_126 + 2u], cbuf_8.data[_126 + 3u]); uint _151 = ((0u + (uint(int(fma(4.0, _89, 0.100000001490116119384765625))) * 16u)) + buf0_off) >> 2u; uint4 _164 = uint4(cbuf_8.data[_151 + 0u], cbuf_8.data[_151 + 1u], cbuf_8.data[_151 + 2u], cbuf_8.data[_151 + 3u]); uint _172 = ((0u + (uint(int(spvFAdd(0.100000001490116119384765625, fma(4.0, _89, 1.0)))) * 16u)) + buf0_off) >> 2u; uint4 _185 = uint4(cbuf_8.data[_172 + 0u], cbuf_8.data[_172 + 1u], cbuf_8.data[_172 + 2u], cbuf_8.data[_172 + 3u]); out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.out_attr1.x = in.vs_in_attr1.x; out.out_attr1.y = in.vs_in_attr1.y; out.out_attr1.z = in.vs_in_attr1.z; out.out_attr1.w = in.vs_in_attr1.w; out.gl_Position.x = fma(in.vs_in_attr2.x, as_type(_118.x), fma(in.vs_in_attr2.y, as_type(_118.y), fma(0.0, as_type(_118.z), spvFMul(1.0, as_type(_118.w))))); out.gl_Position.y = fma(in.vs_in_attr2.x, as_type(_139.x), fma(in.vs_in_attr2.y, as_type(_139.y), fma(0.0, as_type(_139.z), spvFMul(1.0, as_type(_139.w))))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr2.x = as_type(_164.x); out.out_attr2.y = as_type(_164.y); out.out_attr2.z = as_type(_164.z); out.out_attr2.w = as_type(_164.w); out.out_attr3.x = as_type(_185.x); out.out_attr3.y = as_type(_185.y); out.out_attr3.z = as_type(_185.z); out.out_attr3.w = as_type(_185.w); float4 _234 = out.gl_Position; _234.z = (_234.z + _234.w) * 0.5; out.gl_Position = _234; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x5d7150da [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; constant uint _122 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _142 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _143 = _142.x; float4 _148 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _156 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _158 = _156.y; float4 _164 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _165 = _164.x; float _166 = _164.y; float _167 = _164.z; uint _237 = 3u + buf1_dword_off; float _266 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _143, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _268 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _143, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _272 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _143, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _275 = fma(-_266, _268, as_type(cbuf_56.data[2u + buf1_dword_off])); float _278 = fma(2.0, _148.z, -1.0); float _280 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _143, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _281 = spvFMul(_266, _268); float _284 = fma(-_272, _268, as_type(cbuf_56.data[1u + buf1_dword_off])); float _298 = fma(2.0, _148.y, -1.0); float _300 = spvFMul(_272, _268); float _306 = fma(-_280, _268, as_type(cbuf_56.data[0u + buf1_dword_off])); float _320 = fma(2.0, _148.x, -1.0); float _322 = spvFMul(_280, _268); float _343 = rsqrt(fma(_306, _306, fma(_284, _284, spvFMul(_275, _275)))); float _344 = rsqrt(fma(_320, _320, fma(_298, _298, spvFMul(_278, _278)))); float _346 = rsqrt(fma(-_322, -_322, fma(-_300, -_300, spvFMul(-_281, -_281)))); float _347 = spvFMul(_275, _343); float _349 = spvFMul(_278, _344); float _351 = spvFMul(_284, _343); float _354 = fma(-_281, _346, _347); uint _355 = 4u + buf1_dword_off; uint _358 = 5u + buf1_dword_off; uint _361 = 6u + buf1_dword_off; uint _364 = 7u + buf1_dword_off; float _367 = spvFMul(_298, _344); float _371 = spvFMul(_306, _343); float _374 = fma(-_300, _346, _351); float _376 = spvFMul(_320, _344); float _381 = rsqrt(fma(_322, _322, fma(_300, _300, spvFMul(_281, _281)))); float _383 = fma(-_322, _346, _371); float _391 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _376, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _367, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _349))); float _392 = spvFMul(_281, _381); float _397 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _376, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _367, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _349))); float _400 = spvFMul(_300, _381); float _404 = rsqrt(fma(_383, _383, fma(_374, _374, spvFMul(_354, _354)))); float _406 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _376, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _367, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _349))); float _407 = exp2(spvFMul(13.0, _156.x)); float _408 = spvFMul(_322, _381); float _424 = fma(_306, _306, fma(_284, _284, spvFMul(_275, _275))); float _437 = spvFMul(10.0, _158); float _439 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_408, _406, fma(-_400, _397, spvFMul(_391, -_392)))))); float _440 = fma(_406, _371, fma(_397, _351, spvFMul(_391, _347))); float _446 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_364]), _407), 1.0 / fma(_407, 0.01000213623046875, as_type(cbuf_56.data[_364])))); float4 _452 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _453 = _452.x; float _454 = spvFMul(_165, _165); float _455 = spvFMul(_166, _166); float _456 = spvFMul(_167, _167); bool _457 = _437 == 0.0; float _458 = fma(2.0, _437, 1.0); float _459 = spvFMul(_439, _439); float _461 = fast::clamp(fast::max(_440, _440), 0.0, 1.0); float _462 = fast::max(0.0, spvFSub(1.0 / _424, as_type(cbuf_56.data[_237]))); float _463 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_237]), _424), 0.0, 1.0)); uint _468; if (_457) { _468 = as_type(spvFMul(as_type(cbuf_56.data[_355]), _461)); } else { _468 = as_type(_371); } uint _480; uint _481; uint _482; if (_457) { _480 = as_type(spvFMul(_462, as_type(_468))); _481 = as_type(spvFMul(_462, spvFMul(as_type(cbuf_56.data[_361]), _461))); _482 = as_type(spvFMul(_462, spvFMul(as_type(cbuf_56.data[_358]), _461))); } else { _480 = _122; _481 = as_type(_351); _482 = as_type(_347); } uint _486; if (!_457) { _486 = as_type(fma(_158, 10.0, _440)); } else { _486 = as_type(_383); } uint _527; uint _528; uint _529; uint _530; if (!_457) { float _516 = fma(_462, spvFMul(fast::max(0.0, as_type(_486)), 1.0 / _458), spvFMul(_437, spvFMul(_462, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_468), _408, fma(as_type(_481), _400, spvFMul(_392, as_type(_482)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _459))))); _527 = as_type(spvFMul(as_type(cbuf_56.data[_355]), _516)); _528 = as_type(spvFMul(as_type(cbuf_56.data[_361]), _516)); _529 = as_type(spvFMul(as_type(cbuf_56.data[_358]), _516)); _530 = as_type(_516); } else { _527 = _480; _528 = _481; _529 = _482; _530 = _468; } uint _541 = 19u + buf1_dword_off; float _545 = exp2(spvFMul(_446, log2(fast::clamp(fma(spvFMul(_383, _404), _406, fma(spvFMul(_374, _404), _397, spvFMul(_391, spvFMul(_354, _404)))), 0.0, 1.0)))); float _548 = exp2(spvFMul(0.0999755859375, log2(_461))); float _551 = fma(-_266, _268, as_type(cbuf_56.data[18u + buf1_dword_off])); float _554 = fma(-_272, _268, as_type(cbuf_56.data[17u + buf1_dword_off])); float _558 = fma(-_280, _268, as_type(cbuf_56.data[16u + buf1_dword_off])); float _561 = rsqrt(fma(_558, _558, fma(_554, _554, spvFMul(_551, _551)))); float _562 = spvFMul(_551, _561); float _564 = spvFMul(_554, _561); float _567 = fma(-_281, _346, _562); uint _568 = 20u + buf1_dword_off; uint _571 = 21u + buf1_dword_off; uint _574 = 22u + buf1_dword_off; uint _578 = 23u + buf1_dword_off; float _581 = spvFMul(_558, _561); float _584 = fma(-_300, _346, _564); float _587 = fma(-_322, _346, _581); float _599 = rsqrt(fma(_587, _587, fma(_584, _584, spvFMul(_567, _567)))); float _609 = fma(_406, _581, fma(_397, _564, spvFMul(_391, _562))); float _610 = fma(_558, _558, fma(_554, _554, spvFMul(_551, _551))); float _623 = fast::clamp(fast::max(_609, _609), 0.0, 1.0); float _636 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_578]), _407), 1.0 / fma(_407, 0.01000213623046875, as_type(cbuf_56.data[_578])))); float _642 = fma(_446, 0.125, 0.25); float _646 = fast::max(0.0, spvFSub(1.0 / _610, as_type(cbuf_56.data[_541]))); float _647 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_541]), _610), 0.0, 1.0)); float _650 = fma(0.125, _636, 0.25); uint _654; if (_457) { _654 = as_type(spvFMul(as_type(cbuf_56.data[_568]), _623)); } else { _654 = as_type(_581); } uint _667; uint _668; uint _669; uint _670; if (_457) { float _658 = spvFMul(as_type(cbuf_56.data[_574]), _623); _667 = as_type(spvFMul(_646, as_type(_654))); _668 = as_type(spvFMul(_646, spvFMul(as_type(cbuf_56.data[_571]), _623))); _669 = as_type(_658); _670 = as_type(spvFMul(_646, _658)); } else { _667 = _530; _668 = as_type(_636); _669 = as_type(_564); _670 = as_type(_562); } uint _674; if (!_457) { _674 = as_type(fma(_158, 10.0, _609)); } else { _674 = _668; } uint _715; uint _716; uint _717; if (!_457) { float _705 = fma(_646, spvFMul(fast::max(0.0, as_type(_674)), 1.0 / _458), spvFMul(_437, spvFMul(_646, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_654), _408, fma(as_type(_669), _400, spvFMul(_392, as_type(_670)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _459))))); _715 = as_type(spvFMul(as_type(cbuf_56.data[_574]), _705)); _716 = as_type(spvFMul(as_type(cbuf_56.data[_571]), _705)); _717 = as_type(spvFMul(as_type(cbuf_56.data[_568]), _705)); } else { _715 = _670; _716 = _674; _717 = _667; } uint _740 = 35u + buf1_dword_off; uint _744 = 36u + buf1_dword_off; uint _748 = 37u + buf1_dword_off; uint _752 = 38u + buf1_dword_off; uint _756 = 39u + buf1_dword_off; float _759 = exp2(spvFMul(_636, log2(fast::clamp(fma(spvFMul(_587, _599), _406, fma(spvFMul(_584, _599), _397, spvFMul(_391, spvFMul(_567, _599)))), 0.0, 1.0)))); float _760 = exp2(spvFMul(0.0999755859375, log2(_623))); float _790 = fma(-_280, _268, as_type(cbuf_56.data[32u + buf1_dword_off])); float _793 = fma(-_272, _268, as_type(cbuf_56.data[33u + buf1_dword_off])); float _796 = fma(-_266, _268, as_type(cbuf_56.data[34u + buf1_dword_off])); float _800 = rsqrt(fma(_790, _790, fma(_793, _793, spvFMul(_796, _796)))); float _801 = spvFMul(_790, _800); float _803 = spvFMul(_793, _800); float _805 = spvFMul(_796, _800); float _809 = fma(_406, _801, fma(_397, _803, spvFMul(_391, _805))); float _812 = fast::clamp(fast::max(_809, _809), 0.0, 1.0); float _816 = fma(_790, _790, fma(_793, _793, spvFMul(_796, _796))); float _820 = fast::max(0.0, spvFSub(1.0 / _816, as_type(cbuf_56.data[_740]))); float _824 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_740]), _816), 0.0, 1.0)); float _826 = fma(-_322, _346, _801); float _828 = fma(-_300, _346, _803); float _830 = fma(-_281, _346, _805); float _834 = rsqrt(fma(_826, _826, fma(_828, _828, spvFMul(_830, _830)))); float _844 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_756]), _407), 1.0 / fma(_407, 0.01000213623046875, as_type(cbuf_56.data[_756])))); float _853 = fma(0.125, _844, 0.25); uint _857; if (_457) { _857 = as_type(spvFMul(as_type(cbuf_56.data[_744]), _812)); } else { _857 = as_type(_805); } uint _870; uint _871; uint _872; uint _873; if (_457) { float _861 = spvFMul(as_type(cbuf_56.data[_752]), _812); _870 = as_type(spvFMul(_820, spvFMul(as_type(cbuf_56.data[_748]), _812))); _871 = as_type(_861); _872 = as_type(spvFMul(_820, _861)); _873 = as_type(spvFMul(_820, as_type(_857))); } else { _870 = as_type(_812); _871 = as_type(_803); _872 = as_type(_801); _873 = as_type(_809); } uint _878; if (!_457) { _878 = as_type(fma(_158, 10.0, as_type(_873))); } else { _878 = _873; } uint _919; uint _920; uint _921; if (!_457) { float _909 = fma(_820, spvFMul(fast::max(0.0, as_type(_878)), 1.0 / _458), spvFMul(_437, spvFMul(_820, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_872), _408, fma(as_type(_871), _400, spvFMul(_392, as_type(_857)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _459))))); _919 = as_type(spvFMul(as_type(cbuf_56.data[_752]), _909)); _920 = as_type(spvFMul(as_type(cbuf_56.data[_748]), _909)); _921 = as_type(spvFMul(as_type(cbuf_56.data[_744]), _909)); } else { _919 = _872; _920 = _870; _921 = _878; } uint _935 = 51u + buf1_dword_off; float _938 = exp2(spvFMul(_844, log2(fast::clamp(fma(spvFMul(_826, _834), _406, fma(spvFMul(_828, _834), _397, spvFMul(_391, spvFMul(_830, _834)))), 0.0, 1.0)))); float _939 = exp2(spvFMul(0.0999755859375, log2(_812))); float _946 = fma(-_266, _268, as_type(cbuf_56.data[50u + buf1_dword_off])); float _949 = fma(-_272, _268, as_type(cbuf_56.data[49u + buf1_dword_off])); float _953 = fma(-_280, _268, as_type(cbuf_56.data[48u + buf1_dword_off])); float _956 = rsqrt(fma(_953, _953, fma(_949, _949, spvFMul(_946, _946)))); float _957 = spvFMul(_946, _956); float _958 = spvFMul(_949, _956); float _960 = fma(-_281, _346, _957); uint _961 = 52u + buf1_dword_off; uint _965 = 53u + buf1_dword_off; uint _969 = 54u + buf1_dword_off; uint _973 = 55u + buf1_dword_off; float _976 = spvFMul(_953, _956); float _979 = fma(-_300, _346, _958); float _994 = fma(-_322, _346, _976); float _997 = rsqrt(fma(_994, _994, fma(_979, _979, spvFMul(_960, _960)))); float _1013 = fma(_406, _976, fma(_397, _958, spvFMul(_391, _957))); float _1014 = fma(_953, _953, fma(_949, _949, spvFMul(_946, _946))); float _1024 = fast::clamp(fast::max(_1013, _1013), 0.0, 1.0); float _1031 = spvFMul(_824, spvFMul(_939, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _938))); float _1039 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_973]), _407), 1.0 / fma(_407, 0.01000213623046875, as_type(cbuf_56.data[_973])))); float _1047 = fast::max(0.0, spvFSub(1.0 / _1014, as_type(cbuf_56.data[_935]))); float _1048 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_935]), _1014), 0.0, 1.0)); float _1051 = fma(0.125, _1039, 0.25); uint _1055; if (_457) { _1055 = as_type(spvFMul(as_type(cbuf_56.data[_961]), _1024)); } else { _1055 = _919; } uint _1068; uint _1069; uint _1070; uint _1071; if (_457) { float _1057 = spvFMul(as_type(cbuf_56.data[_965]), _1024); _1068 = as_type(spvFMul(_1047, as_type(_1055))); _1069 = as_type(spvFMul(_1047, spvFMul(as_type(cbuf_56.data[_969]), _1024))); _1070 = as_type(_1057); _1071 = as_type(spvFMul(_1047, _1057)); } else { _1068 = as_type(_1031); _1069 = as_type(_1024); _1070 = as_type(_976); _1071 = _1055; } uint _1075; if (!_457) { _1075 = as_type(fma(_158, 10.0, _1013)); } else { _1075 = _1071; } uint _1114; uint _1115; uint _1116; if (!_457) { float _1104 = fma(_1047, spvFMul(fast::max(0.0, as_type(_1075)), 1.0 / _458), spvFMul(_437, spvFMul(_1047, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1070), _408, fma(_958, _400, spvFMul(_392, _957))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _459))))); _1114 = as_type(spvFMul(as_type(cbuf_56.data[_969]), _1104)); _1115 = as_type(spvFMul(as_type(cbuf_56.data[_965]), _1104)); _1116 = as_type(spvFMul(as_type(cbuf_56.data[_961]), _1104)); } else { _1114 = _1069; _1115 = _1075; _1116 = _1068; } uint _1130 = 67u + buf1_dword_off; float _1133 = exp2(spvFMul(_1039, log2(fast::clamp(fma(spvFMul(_994, _997), _406, fma(spvFMul(_979, _997), _397, spvFMul(_391, spvFMul(_960, _997)))), 0.0, 1.0)))); float _1134 = exp2(spvFMul(0.0999755859375, log2(_1024))); float _1141 = fma(-_266, _268, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1144 = fma(-_272, _268, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1148 = fma(-_280, _268, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1151 = rsqrt(fma(_1148, _1148, fma(_1144, _1144, spvFMul(_1141, _1141)))); float _1152 = spvFMul(_1141, _1151); float _1153 = spvFMul(_1144, _1151); float _1155 = fma(-_281, _346, _1152); uint _1157 = 68u + buf1_dword_off; uint _1161 = 69u + buf1_dword_off; uint _1165 = 70u + buf1_dword_off; uint _1169 = 71u + buf1_dword_off; float _1172 = spvFMul(_1148, _1151); float _1175 = fma(-_300, _346, _1153); float _1190 = fma(-_322, _346, _1172); float _1193 = rsqrt(fma(_1190, _1190, fma(_1175, _1175, spvFMul(_1155, _1155)))); float _1209 = fma(_406, _1172, fma(_397, _1153, spvFMul(_391, _1152))); float _1210 = fma(_1148, _1148, fma(_1144, _1144, spvFMul(_1141, _1141))); float _1220 = fast::clamp(fast::max(_1209, _1209), 0.0, 1.0); float _1227 = spvFMul(_1048, spvFMul(_1134, spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1133))); float _1235 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1169]), _407), 1.0 / fma(_407, 0.01000213623046875, as_type(cbuf_56.data[_1169])))); float _1243 = fast::max(0.0, spvFSub(1.0 / _1210, as_type(cbuf_56.data[_1130]))); float _1244 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1130]), _1210), 0.0, 1.0)); float _1247 = fma(0.125, _1235, 0.25); uint _1251; if (_457) { _1251 = as_type(spvFMul(as_type(cbuf_56.data[_1157]), _1220)); } else { _1251 = _1114; } uint _1264; uint _1265; uint _1266; uint _1267; if (_457) { float _1255 = spvFMul(as_type(cbuf_56.data[_1165]), _1220); _1264 = as_type(spvFMul(_1243, as_type(_1251))); _1265 = as_type(spvFMul(_1243, _1255)); _1266 = as_type(spvFMul(_1243, spvFMul(as_type(cbuf_56.data[_1161]), _1220))); _1267 = as_type(_1255); } else { _1264 = as_type(_1227); _1265 = _1251; _1266 = as_type(_1172); _1267 = as_type(_1220); } uint _1271; if (!_457) { _1271 = as_type(fma(_158, 10.0, _1209)); } else { _1271 = _1267; } uint _1310; uint _1311; uint _1312; if (!_457) { float _1300 = fma(_1243, spvFMul(fast::max(0.0, as_type(_1271)), 1.0 / _458), spvFMul(_437, spvFMul(_1243, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1266), _408, fma(_1153, _400, spvFMul(_392, _1152))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _459))))); _1310 = as_type(spvFMul(as_type(cbuf_56.data[_1165]), _1300)); _1311 = as_type(spvFMul(as_type(cbuf_56.data[_1161]), _1300)); _1312 = as_type(spvFMul(as_type(cbuf_56.data[_1157]), _1300)); } else { _1310 = _1265; _1311 = _1266; _1312 = _1264; } uint _1326 = 83u + buf1_dword_off; float _1329 = exp2(spvFMul(_1235, log2(fast::clamp(fma(spvFMul(_1190, _1193), _406, fma(spvFMul(_1175, _1193), _397, spvFMul(_391, spvFMul(_1155, _1193)))), 0.0, 1.0)))); float _1330 = exp2(spvFMul(0.0999755859375, log2(_1220))); float _1337 = fma(-_266, _268, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1340 = fma(-_272, _268, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1344 = fma(-_280, _268, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1347 = rsqrt(fma(_1344, _1344, fma(_1340, _1340, spvFMul(_1337, _1337)))); float _1348 = spvFMul(_1337, _1347); float _1349 = spvFMul(_1340, _1347); float _1351 = fma(-_281, _346, _1348); uint _1353 = 84u + buf1_dword_off; uint _1357 = 85u + buf1_dword_off; uint _1361 = 86u + buf1_dword_off; uint _1365 = 87u + buf1_dword_off; float _1368 = spvFMul(_1344, _1347); float _1370 = fma(-_300, _346, _1349); float _1385 = fma(-_322, _346, _1368); float _1388 = rsqrt(fma(_1385, _1385, fma(_1370, _1370, spvFMul(_1351, _1351)))); float _1404 = fma(_406, _1368, fma(_397, _1349, spvFMul(_391, _1348))); float _1405 = fma(_1344, _1344, fma(_1340, _1340, spvFMul(_1337, _1337))); float _1415 = fast::clamp(fast::max(_1404, _1404), 0.0, 1.0); float _1428 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1365]), _407), 1.0 / fma(_407, 0.01000213623046875, as_type(cbuf_56.data[_1365])))); float _1437 = fast::max(0.0, spvFSub(1.0 / _1405, as_type(cbuf_56.data[_1326]))); float _1438 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1326]), _1405), 0.0, 1.0)); float _1441 = fma(0.125, _1428, 0.25); uint _1445; if (_457) { _1445 = as_type(spvFMul(as_type(cbuf_56.data[_1353]), _1415)); } else { _1445 = as_type(_1428); } uint _1458; uint _1459; uint _1460; uint _1461; if (_457) { float _1449 = spvFMul(as_type(cbuf_56.data[_1361]), _1415); _1458 = as_type(_1449); _1459 = as_type(spvFMul(_1437, _1449)); _1460 = as_type(spvFMul(_1437, spvFMul(as_type(cbuf_56.data[_1357]), _1415))); _1461 = as_type(spvFMul(_1437, as_type(_1445))); } else { _1458 = as_type(_400); _1459 = as_type(_408); _1460 = _1445; _1461 = as_type(_158); } uint _1466; if (!_457) { _1466 = as_type(fma(as_type(_1461), 10.0, _1404)); } else { _1466 = _1460; } uint _1506; uint _1507; uint _1508; if (!_457) { float _1496 = fma(_1437, spvFMul(fast::max(0.0, as_type(_1466)), 1.0 / _458), spvFMul(_437, spvFMul(_1437, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1368, as_type(_1459), fma(_1349, as_type(_1458), spvFMul(_392, _1348))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _459))))); _1506 = as_type(spvFMul(as_type(cbuf_56.data[_1361]), _1496)); _1507 = as_type(spvFMul(as_type(cbuf_56.data[_1357]), _1496)); _1508 = as_type(spvFMul(as_type(cbuf_56.data[_1353]), _1496)); } else { _1506 = _1459; _1507 = _1466; _1508 = _1461; } float _1521 = exp2(spvFMul(_1428, log2(fast::clamp(fma(spvFMul(_1385, _1388), _406, fma(spvFMul(_1370, _1388), _397, spvFMul(_391, spvFMul(_1351, _1388)))), 0.0, 1.0)))); float _1522 = exp2(spvFMul(0.0999755859375, log2(_1415))); float _1524 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_527), as_type(_717)), as_type(_921)), as_type(_1116)), as_type(_1312)), as_type(_1508)); float _1526 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_529), as_type(_716)), as_type(_920)), as_type(_1115)), as_type(_1311)), as_type(_1507)); float _1537 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_528), as_type(_715)), as_type(_919)), as_type(_1114)), as_type(_1310)), as_type(_1506)); float _1553 = spvFMul(_453, fma(spvFMul(_1438, spvFMul(_1522, spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1521))), _1441, fma(spvFMul(_1244, spvFMul(_1330, spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1329))), _1247, fma(spvFMul(_1048, spvFMul(_1134, spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1133))), _1051, fma(spvFMul(_824, spvFMul(_939, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _938))), _853, fma(spvFMul(_463, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _545), _548)), _642, spvFMul(_650, spvFMul(_647, spvFMul(_760, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _759)))))))))); float _1555 = spvFMul(_453, fma(spvFMul(_1438, spvFMul(_1522, spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1521))), _1441, fma(spvFMul(_1244, spvFMul(_1330, spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1329))), _1247, fma(spvFMul(_1048, spvFMul(_1134, spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1133))), _1051, fma(spvFMul(_824, spvFMul(_939, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _938))), _853, fma(spvFMul(_463, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _545), _548)), _642, spvFMul(_650, spvFMul(_647, spvFMul(_760, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _759)))))))))); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_454, _1553); out.frag_color1.y = spvFMul(_455, spvFMul(_453, fma(spvFMul(_1438, spvFMul(_1522, spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1521))), _1441, fma(spvFMul(_1244, spvFMul(_1330, spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1329))), _1247, fma(_1227, _1051, fma(_1031, _853, fma(spvFMul(_463, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _545), _548)), _642, spvFMul(_650, spvFMul(_647, spvFMul(_760, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _759))))))))))); out.frag_color1.z = spvFMul(_456, _1555); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_453, spvFSub(_1524, spvFMul(spvFMul(_454, _1524), 0.5))); out.frag_color0.y = spvFMul(_453, spvFSub(_1526, spvFMul(spvFMul(_455, _1526), 0.5))); out.frag_color0.z = spvFMul(_453, spvFSub(_1537, spvFMul(spvFMul(_456, _1537), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_43; float4 m_44; float4 gl_Position; }; struct main0_in { float4 m_27; float4 m_28; float4 gl_Position; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 4]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 4; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 4, spvIndirectParams[1] - 1); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1] = half(1.0); bool2 _66 = gl_in[0].gl_Position.xy == gl_in[1].gl_Position.xy; bool2 _69 = gl_in[1].gl_Position.xy == gl_in[2].gl_Position.xy; bool2 _72 = gl_in[2].gl_Position.xy == gl_in[0].gl_Position.xy; float _80 = ((_66.x && _72.y) || (_66.y && _72.x)) ? (-1.0) : 1.0; bool _87 = (_69.x && _66.y) || (_69.y && _66.x); float _88 = _87 ? (-1.0) : 1.0; bool _95 = (_72.x && _69.y) || (_72.y && _69.x); float _96 = _95 ? (-1.0) : 1.0; bool _100 = gl_InvocationID == 3; int _102 = ((_87 ? 1 : (_95 ? 2 : 0)) + gl_InvocationID) % 3; gl_out[gl_InvocationID].gl_Position = _100 ? ((gl_in[0].gl_Position * _80) + ((gl_in[1].gl_Position * _88) + (gl_in[2].gl_Position * _96))) : gl_in[_102].gl_Position; gl_out[gl_InvocationID].m_43 = _100 ? ((gl_in[0].m_27 * _80) + ((gl_in[1].m_27 * _88) + (gl_in[2].m_27 * _96))) : gl_in[_102].m_27; gl_out[gl_InvocationID].m_44 = _100 ? ((gl_in[0].m_28 * _80) + ((gl_in[1].m_28 * _88) + (gl_in[2].m_28 * _96))) : gl_in[_102].m_28; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct main0_out { float4 m_32 [[user(locn0)]]; float4 m_33 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 m_27; float4 m_28; float4 gl_Position; }; [[ patch(quad, 4) ]] vertex main0_out main0(float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 4]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); int _45 = (int(gl_TessCoord.y) * 2) + int(gl_TessCoord.x); out.gl_Position = gl_in[_45].gl_Position; out.m_32 = gl_in[_45].m_27; out.m_33 = gl_in[_45].m_28; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xb9bb200e [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xa7450683 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[3228]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _178 = 20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _187 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _188 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _193 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _197 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _204 = ((0u + ((_187 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _217 = uint4(cbuf_16.data[_204 + 0u], cbuf_16.data[_204 + 1u], cbuf_16.data[_204 + 2u], cbuf_16.data[_204 + 3u]); uint _225 = ((0u + ((_188 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _238 = uint4(cbuf_16.data[_225 + 0u], cbuf_16.data[_225 + 1u], cbuf_16.data[_225 + 2u], cbuf_16.data[_225 + 3u]); uint _246 = ((0u + ((_187 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _259 = uint4(cbuf_16.data[_246 + 0u], cbuf_16.data[_246 + 1u], cbuf_16.data[_246 + 2u], cbuf_16.data[_246 + 3u]); uint _267 = ((0u + ((_188 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _280 = uint4(cbuf_16.data[_267 + 0u], cbuf_16.data[_267 + 1u], cbuf_16.data[_267 + 2u], cbuf_16.data[_267 + 3u]); uint _288 = ((0u + (_187 * 16u)) + buf6_off) >> 2u; uint4 _301 = uint4(cbuf_16.data[_288 + 0u], cbuf_16.data[_288 + 1u], cbuf_16.data[_288 + 2u], cbuf_16.data[_288 + 3u]); uint _309 = ((0u + ((_193 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _322 = uint4(cbuf_16.data[_309 + 0u], cbuf_16.data[_309 + 1u], cbuf_16.data[_309 + 2u], cbuf_16.data[_309 + 3u]); uint _330 = ((0u + (_188 * 16u)) + buf6_off) >> 2u; uint4 _343 = uint4(cbuf_16.data[_330 + 0u], cbuf_16.data[_330 + 1u], cbuf_16.data[_330 + 2u], cbuf_16.data[_330 + 3u]); uint _351 = ((0u + ((_193 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _364 = uint4(cbuf_16.data[_351 + 0u], cbuf_16.data[_351 + 1u], cbuf_16.data[_351 + 2u], cbuf_16.data[_351 + 3u]); uint _372 = ((0u + ((_197 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _385 = uint4(cbuf_16.data[_372 + 0u], cbuf_16.data[_372 + 1u], cbuf_16.data[_372 + 2u], cbuf_16.data[_372 + 3u]); uint _393 = ((0u + (_193 * 16u)) + buf6_off) >> 2u; uint4 _406 = uint4(cbuf_16.data[_393 + 0u], cbuf_16.data[_393 + 1u], cbuf_16.data[_393 + 2u], cbuf_16.data[_393 + 3u]); uint _414 = ((0u + ((_197 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _427 = uint4(cbuf_16.data[_414 + 0u], cbuf_16.data[_414 + 1u], cbuf_16.data[_414 + 2u], cbuf_16.data[_414 + 3u]); uint _435 = ((0u + (_197 * 16u)) + buf6_off) >> 2u; uint4 _448 = uint4(cbuf_16.data[_435 + 0u], cbuf_16.data[_435 + 1u], cbuf_16.data[_435 + 2u], cbuf_16.data[_435 + 3u]); float _460 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _461 = spvFMul(in.vs_in_attr4.y, _460); float _462 = spvFMul(in.vs_in_attr4.x, _460); float _467 = spvFMul(in.vs_in_attr4.z, _460); float _546 = spvFMul(in.vs_in_attr4.w, _460); float _588 = fma(as_type(_385.z), _546, fma(as_type(_322.z), _467, fma(as_type(_238.z), _462, spvFMul(_461, as_type(_217.z))))); float _610 = fma(as_type(_427.z), _546, fma(as_type(_364.z), _467, fma(as_type(_280.z), _462, spvFMul(_461, as_type(_259.z))))); float _614 = fma(as_type(_385.y), _546, fma(as_type(_322.y), _467, fma(as_type(_238.y), _462, spvFMul(_461, as_type(_217.y))))); float _623 = fma(as_type(_448.z), _546, fma(as_type(_406.z), _467, fma(as_type(_343.z), _462, spvFMul(_461, as_type(_301.z))))); float _627 = fma(as_type(_427.y), _546, fma(as_type(_364.y), _467, fma(as_type(_280.y), _462, spvFMul(_461, as_type(_259.y))))); float _629 = fma(as_type(_385.x), _546, fma(as_type(_322.x), _467, fma(as_type(_238.x), _462, spvFMul(_461, as_type(_217.x))))); float _635 = fma(as_type(_448.y), _546, fma(as_type(_406.y), _467, fma(as_type(_343.y), _462, spvFMul(_461, as_type(_301.y))))); float _637 = fma(as_type(_427.x), _546, fma(as_type(_364.x), _467, fma(as_type(_280.x), _462, spvFMul(_461, as_type(_259.x))))); float _642 = fma(as_type(_448.x), _546, fma(as_type(_406.x), _467, fma(as_type(_343.x), _462, spvFMul(_461, as_type(_301.x))))); float _646 = spvFSub(fma(_629, in.vs_in_attr0.x, fma(_614, in.vs_in_attr0.y, fma(_588, in.vs_in_attr0.z, fma(as_type(_385.w), _546, fma(as_type(_322.w), _467, fma(as_type(_238.w), _462, spvFMul(_461, as_type(_217.w)))))))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _649 = spvFSub(fma(_637, in.vs_in_attr0.x, fma(_627, in.vs_in_attr0.y, fma(_610, in.vs_in_attr0.z, fma(as_type(_427.w), _546, fma(as_type(_364.w), _467, fma(as_type(_280.w), _462, spvFMul(_461, as_type(_259.w)))))))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _663 = spvFSub(fma(_642, in.vs_in_attr0.x, fma(_635, in.vs_in_attr0.y, fma(_623, in.vs_in_attr0.z, fma(as_type(_448.w), _546, fma(as_type(_406.w), _467, fma(as_type(_343.w), _462, spvFMul(_461, as_type(_301.w)))))))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _673 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _646, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _675 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _646, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _677 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _646, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _679 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _646, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _673; out.gl_Position.y = _675; out.gl_Position.z = _677; out.gl_Position.w = _679; float _706 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _709 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _712 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _714 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _724 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _725 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_642, _725, fma(_635, _714, spvFMul(_623, _709))); out.out_attr0.y = fma(_637, _725, fma(_627, _714, spvFMul(_610, _709))); out.out_attr0.z = fma(_629, _725, fma(_614, _714, spvFMul(_588, _709))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_642, _724, fma(_635, _712, spvFMul(_623, _706))); out.out_attr1.y = fma(_637, _724, fma(_627, _712, spvFMul(_610, _706))); out.out_attr1.z = fma(_629, _724, fma(_614, _712, spvFMul(_588, _706))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _673; out.out_attr3.y = _675; out.out_attr3.z = _677; out.out_attr3.w = _679; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img68 [[texture(0)]], texture2d fs_img60 [[texture(1)]], texture2d fs_img52 [[texture(2)]], texturecube fs_img84 [[texture(3)]], texturecube fs_img76 [[texture(4)]], texture2d fs_img44 [[texture(5)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint _132 = uint(gl_FrontFacing); float _143 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _144 = spvFMul(in.fs_in_attr0.x, _143); float _146 = spvFMul(in.fs_in_attr0.y, _143); float _147 = spvFMul(in.fs_in_attr0.z, _143); float _159 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _161 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _163 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _167 = rsqrt(fma(_159, _159, fma(_161, _161, spvFMul(_163, _163)))); float _281 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float _296 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _281, as_type(cbuf_36.data[183u + buf0_dword_off])); float _299 = fma(-fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))), _281, as_type(cbuf_36.data[187u + buf0_dword_off])); float _302 = fma(-fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _281, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _303 = 0u == _132; uint _316; uint _317; uint _318; if (_303) { _316 = as_type(fast::max(-_144, -_144)); _317 = as_type(fast::max(-_147, -_147)); _318 = as_type(fast::max(-_146, -_146)); } else { _316 = as_type(_144); _317 = as_type(_147); _318 = _132; } uint _321; if (!_303) { _321 = as_type(_146); } else { _321 = _318; } float4 _352 = fs_img68.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _381 = fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _387 = fma(2.0, _352.y, -1.0); float _388 = spvFMul(fma(2.0, _352.x, -1.0), fma(2.0, _352.w, -1.0)); float _397 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _398 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_388, _388), spvFMul(_387, _387)), 0.0, 1.0))); float _410 = fma(spvFMul(spvFMul(_163, _167), in.fs_in_attr1.w), _388, fma(spvFMul(in.fs_in_attr1.z, _397), _387, spvFMul(as_type(_317), _398))); float _413 = fma(spvFMul(spvFMul(_161, _167), in.fs_in_attr1.w), _388, fma(spvFMul(in.fs_in_attr1.y, _397), _387, spvFMul(as_type(_321), _398))); float _416 = fma(spvFMul(spvFMul(_159, _167), in.fs_in_attr1.w), _388, fma(spvFMul(in.fs_in_attr1.x, _397), _387, spvFMul(as_type(_316), _398))); float _448 = rsqrt(fma(_296, _296, fma(_299, _299, spvFMul(_302, _302)))); float _449 = rsqrt(fma(_416, _416, fma(_413, _413, spvFMul(_410, _410)))); float _454 = spvFMul(_410, _449); float _456 = spvFMul(_413, _449); float _459 = spvFMul(_416, _449); float _461 = fma(_459, spvFMul(_296, _448), fma(_456, spvFMul(_299, _448), spvFMul(spvFMul(_302, _448), _454))); float _472 = spvFMul(fast::max(_461, _461), 2.0); float _475 = spvFMul(as_type(cbuf_28.data[8u + buf2_dword_off]), 0.00390625); uint _479 = uint(in.fs_in_attr0.w) * 13u; float4 _484 = fs_img52.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _485 = _484.x; float _486 = _484.y; float _487 = _484.z; float _488 = spvFMul(_381.x, _475); float _490 = fma(-_296, _448, spvFMul(_459, _472)); float _492 = fma(-_299, _448, spvFMul(_456, _472)); float _494 = fma(-_302, _448, spvFMul(_454, _472)); float _506 = 1.0 / abs(1.0); float _508 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_488, 13.0), 0.5))); float _510 = fma(_492, _506, 1.5); float _511 = fma(_490, _506, 1.5); uint _517 = ((0u + ((_479 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _530 = uint4(cbuf_32.data[_517 + 0u], cbuf_32.data[_517 + 1u], cbuf_32.data[_517 + 2u], cbuf_32.data[_517 + 3u]); uint _531 = _530.x; uint _532 = _530.y; uint _533 = _530.z; float4 _541 = fs_img84.sample(fs_samp20, float3(spvFSub(_511, 1.5), spvFSub(_510, 1.5), _494), level(_508)); uint _548 = ((0u + ((_479 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _561 = uint4(cbuf_32.data[_548 + 0u], cbuf_32.data[_548 + 1u], cbuf_32.data[_548 + 2u], cbuf_32.data[_548 + 3u]); uint _569 = ((0u + ((_479 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _582 = uint4(cbuf_32.data[_569 + 0u], cbuf_32.data[_569 + 1u], cbuf_32.data[_569 + 2u], cbuf_32.data[_569 + 3u]); uint _590 = ((0u + ((_479 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _603 = uint4(cbuf_32.data[_590 + 0u], cbuf_32.data[_590 + 1u], cbuf_32.data[_590 + 2u], cbuf_32.data[_590 + 3u]); float4 _614 = fs_img76.sample(fs_samp20, float3(spvFSub(_511, 1.5), spvFSub(_510, 1.5), _494), level(_508)); float _615 = _614.x; float _616 = _614.y; float _617 = _614.z; float4 _628 = fs_img44.sample(fs_samp4, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); uint _652 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _656 = fast::clamp(spvFAdd(fma(_490, as_type(_316), fma(_492, as_type(_321), spvFMul(as_type(_317), _494))), 1.0), 0.0, 1.0); float _670 = spvFAdd(1.0, _461); bool _685 = (_487 == 0.0) && (_486 == 0.0); float _687 = fast::clamp(spvFMul(_670, _670), 0.0, 1.0); float _688 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_461, _461), 0.0, 1.0))))); float _698 = spvFMul(_687, _688); float _699 = _685 ? _485 : _487; float _700 = _685 ? _485 : _486; float _745 = spvFMul(_488, _488); float _752 = spvFMul(_656, _656); float _776 = fast::max(0.0, spvFAdd(as_type(_561.w), fma(_454, as_type(_561.z), fma(_459, as_type(_561.x), spvFMul(_456, as_type(_561.y)))))); float _777 = fast::max(0.0, spvFAdd(as_type(_582.w), fma(_454, as_type(_582.z), fma(_459, as_type(_582.x), spvFMul(_456, as_type(_582.y)))))); float _778 = fast::max(0.0, spvFAdd(as_type(_603.w), fma(_454, as_type(_603.z), fma(_459, as_type(_603.x), spvFMul(_456, as_type(_603.y)))))); float _789 = spvFMul(spvFMul(_628.w, in.fs_in_attr2.w), as_type(cbuf_32.data[((12u + ((_479 + 7u) * 16u)) + buf3_off) >> 2u])); bool _793 = as_type(cbuf_28.data[22u + buf2_dword_off]) != 0.0; float _816 = _793 ? _789 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_687, _688, -spvFMul(_485, _698)), _745, _485), spvFMul(fma(as_type(_531), fma(-as_type(_532), _615, spvFMul(as_type(_533), _541.x)), spvFMul(as_type(_532), _615)), _752)), spvFMul(as_type(cbuf_28.data[4u + buf2_dword_off]), as_type(cbuf_40.data[_652]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_687, _688, -spvFMul(_700, _698)), _745, _700), spvFMul(fma(as_type(_531), fma(-as_type(_532), _616, spvFMul(as_type(_533), _541.y)), spvFMul(as_type(_532), _616)), _752)), spvFMul(as_type(cbuf_28.data[5u + buf2_dword_off]), as_type(cbuf_40.data[_652]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_687, _688, -spvFMul(_699, _698)), _745, _699), spvFMul(fma(as_type(_531), fma(-as_type(_532), _617, spvFMul(as_type(_533), _541.z)), spvFMul(as_type(_532), _617)), _752)), spvFMul(as_type(cbuf_28.data[6u + buf2_dword_off]), as_type(cbuf_40.data[_652]))); out.frag_color5.w = _793 ? _789 : as_type(_530.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_485, _776, _776); out.frag_color4.y = fma(-_700, _777, _777); out.frag_color4.z = fma(-_699, _778, _778); out.frag_color4.w = _793 ? _789 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_485); out.frag_color3.y = sqrt(_700); out.frag_color3.z = sqrt(_699); out.frag_color3.w = _793 ? _789 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_479 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_28.data[0u + buf2_dword_off]), _628.x); out.frag_color2.y = spvFMul(as_type(cbuf_28.data[1u + buf2_dword_off]), _628.y); out.frag_color2.z = spvFMul(as_type(cbuf_28.data[2u + buf2_dword_off]), _628.z); out.frag_color2.w = _789; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_475, _488); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_32.data[((0u + ((_479 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _816; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _459, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _456, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _454, 0.500488758087158203125); out.frag_color0.w = _816; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x505ebdbe [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[360]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _173 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _174 = _173.x; float4 _179 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _187 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _189 = _187.y; float4 _194 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _195 = _194.x; float _196 = _194.y; float _197 = _194.z; float _268 = fma(2.0, _179.z, -1.0); float _286 = fma(2.0, _179.y, -1.0); float _307 = fma(2.0, _179.x, -1.0); float _315 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _174, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _317 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _174, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _346 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _174, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _347 = spvFMul(_315, _317); float _348 = rsqrt(fma(_307, _307, fma(_286, _286, spvFMul(_268, _268)))); float _350 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _174, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _351 = spvFMul(_346, _317); float _353 = spvFMul(_268, _348); float _354 = spvFMul(_350, _317); float _356 = spvFMul(_286, _348); float _360 = spvFMul(_307, _348); float _365 = rsqrt(fma(_354, _354, fma(_351, _351, spvFMul(_347, _347)))); uint _366 = 4u + buf1_dword_off; uint _369 = 5u + buf1_dword_off; uint _372 = 6u + buf1_dword_off; uint _375 = 7u + buf1_dword_off; float _383 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _360, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _356, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _353))); float _384 = spvFMul(_347, _365); float _387 = fma(-_315, _317, as_type(cbuf_56.data[2u + buf1_dword_off])); float _391 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _360, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _356, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _353))); float _392 = spvFMul(_351, _365); float _397 = fma(-_346, _317, as_type(cbuf_56.data[1u + buf1_dword_off])); float _400 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _360, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _356, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _353))); float _401 = spvFMul(_354, _365); float _406 = fma(-_350, _317, as_type(cbuf_56.data[0u + buf1_dword_off])); float _411 = spvFMul(fma(_400, _401, fma(_391, _392, spvFMul(_383, _384))), 2.0); float _413 = exp2(spvFMul(13.0, _187.x)); float _415 = rsqrt(fma(_406, _406, fma(_397, _397, spvFMul(_387, _387)))); float _418 = fma(_347, _365, -spvFMul(_383, _411)); float _419 = spvFMul(_387, _415); float _426 = fma(_351, _365, -spvFMul(_391, _411)); float _429 = spvFMul(_397, _415); float _436 = fma(_354, _365, -spvFMul(_400, _411)); float _439 = spvFMul(_406, _415); float _447 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_375]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_375])))); float _462 = spvFMul(10.0, _189); float _464 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_401, _400, fma(-_392, _391, spvFMul(_383, -_384)))))); float _466 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_406, _406, fma(_397, _397, spvFMul(_387, _387)))), 0.0, 1.0))); float _467 = exp2(spvFMul(spvFMul(0.25, _447), log2(fast::clamp(fma(_436, _439, fma(_426, _429, spvFMul(_418, _419))), 0.0, 1.0)))); float4 _475 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _476 = _475.x; float _477 = spvFMul(_195, _195); float _478 = spvFMul(_196, _196); float _479 = spvFMul(_197, _197); bool _480 = _462 == 0.0; float _481 = fma(2.0, _462, 1.0); float _482 = spvFMul(_464, _464); float _484 = fma(_400, _439, fma(_391, _429, spvFMul(_383, _419))); float _485 = spvFMul(_466, _466); float _486 = spvFMul(_467, fma(0.125, _447, 0.25)); uint _490; if (_480) { _490 = as_type(fast::clamp(fast::max(_484, _484), 0.0, 1.0)); } else { _490 = as_type(_419); } uint _502; uint _503; uint _504; if (_480) { float _492 = spvFMul(_485, as_type(_490)); _502 = as_type(spvFMul(as_type(cbuf_56.data[_372]), _492)); _503 = as_type(spvFMul(as_type(cbuf_56.data[_369]), _492)); _504 = as_type(spvFMul(as_type(cbuf_56.data[_366]), _492)); } else { _502 = as_type(_467); _503 = as_type(_439); _504 = _490; } uint _508; if (!_480) { _508 = as_type(fma(_189, 10.0, _484)); } else { _508 = _502; } uint _547; uint _548; uint _549; if (!_480) { float _537 = fma(_485, spvFMul(fast::max(0.0, as_type(_508)), 1.0 / _481), spvFMul(_462, spvFMul(_485, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_503), _401, fma(_429, _392, spvFMul(_384, as_type(_504)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _482))))); _547 = as_type(spvFMul(as_type(cbuf_56.data[_372]), _537)); _548 = as_type(spvFMul(as_type(cbuf_56.data[_369]), _537)); _549 = as_type(spvFMul(as_type(cbuf_56.data[_366]), _537)); } else { _547 = _508; _548 = _503; _549 = _504; } uint _572 = 20u + buf1_dword_off; uint _575 = 21u + buf1_dword_off; uint _578 = 22u + buf1_dword_off; uint _582 = 23u + buf1_dword_off; float _593 = fma(-_350, _317, as_type(cbuf_56.data[16u + buf1_dword_off])); float _596 = fma(-_346, _317, as_type(cbuf_56.data[17u + buf1_dword_off])); float _599 = fma(-_315, _317, as_type(cbuf_56.data[18u + buf1_dword_off])); float _603 = rsqrt(fma(_593, _593, fma(_596, _596, spvFMul(_599, _599)))); float _604 = spvFMul(_593, _603); float _606 = spvFMul(_596, _603); float _608 = spvFMul(_599, _603); float _611 = fma(_400, _604, fma(_391, _606, spvFMul(_383, _608))); float _620 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_593, _593, fma(_596, _596, spvFMul(_599, _599)))), 0.0, 1.0))); float _621 = spvFMul(_620, _620); float _628 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_582]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_582])))); float _636 = exp2(spvFMul(spvFMul(0.25, _628), log2(fast::clamp(fma(_436, _604, fma(_426, _606, spvFMul(_418, _608))), 0.0, 1.0)))); float _639 = spvFMul(_636, fma(0.125, _628, 0.25)); uint _643; if (_480) { _643 = as_type(fast::clamp(fast::max(_611, _611), 0.0, 1.0)); } else { _643 = as_type(_636); } uint _656; uint _657; uint _658; uint _659; if (_480) { float _645 = spvFMul(_621, as_type(_643)); _656 = as_type(spvFMul(as_type(cbuf_56.data[_572]), _645)); _657 = as_type(spvFMul(as_type(cbuf_56.data[_578]), _645)); _658 = as_type(_645); _659 = as_type(spvFMul(as_type(cbuf_56.data[_575]), _645)); } else { _656 = as_type(_606); _657 = as_type(_604); _658 = _643; _659 = as_type(_611); } uint _664; if (!_480) { _664 = as_type(fma(_189, 10.0, as_type(_659))); } else { _664 = _658; } uint _704; uint _705; uint _706; if (!_480) { float _694 = fma(_621, spvFMul(fast::max(0.0, as_type(_664)), 1.0 / _481), spvFMul(_462, spvFMul(_621, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_657), _401, fma(as_type(_656), _392, spvFMul(_384, _608))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _482))))); _704 = as_type(spvFMul(as_type(cbuf_56.data[_578]), _694)); _705 = as_type(spvFMul(as_type(cbuf_56.data[_575]), _694)); _706 = as_type(spvFMul(as_type(cbuf_56.data[_572]), _694)); } else { _704 = _657; _705 = _659; _706 = _656; } uint _733 = 36u + buf1_dword_off; uint _737 = 37u + buf1_dword_off; uint _741 = 38u + buf1_dword_off; uint _745 = 39u + buf1_dword_off; float _771 = fma(-_350, _317, as_type(cbuf_56.data[32u + buf1_dword_off])); float _774 = fma(-_346, _317, as_type(cbuf_56.data[33u + buf1_dword_off])); float _777 = fma(-_315, _317, as_type(cbuf_56.data[34u + buf1_dword_off])); float _781 = rsqrt(fma(_771, _771, fma(_774, _774, spvFMul(_777, _777)))); float _782 = spvFMul(_771, _781); float _784 = spvFMul(_774, _781); float _786 = spvFMul(_777, _781); float _789 = fma(_400, _782, fma(_391, _784, spvFMul(_383, _786))); float _798 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_771, _771, fma(_774, _774, spvFMul(_777, _777)))), 0.0, 1.0))); float _799 = spvFMul(_798, _798); float _806 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_745]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_745])))); float _814 = exp2(spvFMul(spvFMul(0.25, _806), log2(fast::clamp(fma(_436, _782, fma(_426, _784, spvFMul(_418, _786))), 0.0, 1.0)))); float _817 = spvFMul(_814, fma(0.125, _806, 0.25)); uint _821; if (_480) { _821 = as_type(fast::clamp(fast::max(_789, _789), 0.0, 1.0)); } else { _821 = as_type(_814); } uint _834; uint _835; uint _836; uint _837; if (_480) { float _823 = spvFMul(_799, as_type(_821)); _834 = as_type(spvFMul(as_type(cbuf_56.data[_733]), _823)); _835 = as_type(spvFMul(as_type(cbuf_56.data[_741]), _823)); _836 = as_type(_823); _837 = as_type(spvFMul(as_type(cbuf_56.data[_737]), _823)); } else { _834 = as_type(_784); _835 = as_type(_782); _836 = _821; _837 = as_type(_789); } uint _842; if (!_480) { _842 = as_type(fma(_189, 10.0, as_type(_837))); } else { _842 = _836; } uint _882; uint _883; uint _884; if (!_480) { float _872 = fma(_799, spvFMul(fast::max(0.0, as_type(_842)), 1.0 / _481), spvFMul(_462, spvFMul(_799, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_835), _401, fma(as_type(_834), _392, spvFMul(_384, _786))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _482))))); _882 = as_type(spvFMul(as_type(cbuf_56.data[_741]), _872)); _883 = as_type(spvFMul(as_type(cbuf_56.data[_737]), _872)); _884 = as_type(spvFMul(as_type(cbuf_56.data[_733]), _872)); } else { _882 = _835; _883 = _837; _884 = _834; } uint _913 = 52u + buf1_dword_off; uint _917 = 53u + buf1_dword_off; uint _921 = 54u + buf1_dword_off; uint _925 = 55u + buf1_dword_off; float _945 = fma(-_350, _317, as_type(cbuf_56.data[48u + buf1_dword_off])); float _948 = fma(-_346, _317, as_type(cbuf_56.data[49u + buf1_dword_off])); float _951 = fma(-_315, _317, as_type(cbuf_56.data[50u + buf1_dword_off])); float _955 = rsqrt(fma(_945, _945, fma(_948, _948, spvFMul(_951, _951)))); float _956 = spvFMul(_945, _955); float _958 = spvFMul(_948, _955); float _960 = spvFMul(_951, _955); float _963 = fma(_400, _956, fma(_391, _958, spvFMul(_383, _960))); float _972 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_945, _945, fma(_948, _948, spvFMul(_951, _951)))), 0.0, 1.0))); float _973 = spvFMul(_972, _972); float _980 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_925]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_925])))); float _988 = exp2(spvFMul(spvFMul(0.25, _980), log2(fast::clamp(fma(_436, _956, fma(_426, _958, spvFMul(_418, _960))), 0.0, 1.0)))); float _991 = spvFMul(_988, fma(0.125, _980, 0.25)); uint _995; if (_480) { _995 = as_type(fast::clamp(fast::max(_963, _963), 0.0, 1.0)); } else { _995 = as_type(_988); } uint _1008; uint _1009; uint _1010; uint _1011; if (_480) { float _997 = spvFMul(_973, as_type(_995)); _1008 = as_type(spvFMul(as_type(cbuf_56.data[_913]), _997)); _1009 = as_type(spvFMul(as_type(cbuf_56.data[_921]), _997)); _1010 = as_type(_997); _1011 = as_type(spvFMul(as_type(cbuf_56.data[_917]), _997)); } else { _1008 = as_type(_958); _1009 = as_type(_956); _1010 = _995; _1011 = as_type(_963); } uint _1016; if (!_480) { _1016 = as_type(fma(_189, 10.0, as_type(_1011))); } else { _1016 = _1010; } uint _1056; uint _1057; uint _1058; if (!_480) { float _1046 = fma(_973, spvFMul(fast::max(0.0, as_type(_1016)), 1.0 / _481), spvFMul(_462, spvFMul(_973, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1009), _401, fma(as_type(_1008), _392, spvFMul(_384, _960))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _482))))); _1056 = as_type(spvFMul(as_type(cbuf_56.data[_921]), _1046)); _1057 = as_type(spvFMul(as_type(cbuf_56.data[_917]), _1046)); _1058 = as_type(spvFMul(as_type(cbuf_56.data[_913]), _1046)); } else { _1056 = _1009; _1057 = _1011; _1058 = _1008; } uint _1088 = 68u + buf1_dword_off; uint _1092 = 69u + buf1_dword_off; uint _1096 = 70u + buf1_dword_off; uint _1100 = 71u + buf1_dword_off; float _1120 = fma(-_350, _317, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1123 = fma(-_346, _317, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1126 = fma(-_315, _317, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1130 = rsqrt(fma(_1120, _1120, fma(_1123, _1123, spvFMul(_1126, _1126)))); float _1131 = spvFMul(_1120, _1130); float _1133 = spvFMul(_1123, _1130); float _1135 = spvFMul(_1126, _1130); float _1138 = fma(_400, _1131, fma(_391, _1133, spvFMul(_383, _1135))); float _1147 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1120, _1120, fma(_1123, _1123, spvFMul(_1126, _1126)))), 0.0, 1.0))); float _1148 = spvFMul(_1147, _1147); float _1155 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1100]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_1100])))); float _1163 = exp2(spvFMul(spvFMul(0.25, _1155), log2(fast::clamp(fma(_436, _1131, fma(_426, _1133, spvFMul(_418, _1135))), 0.0, 1.0)))); float _1166 = spvFMul(_1163, fma(0.125, _1155, 0.25)); uint _1170; if (_480) { _1170 = as_type(fast::clamp(fast::max(_1138, _1138), 0.0, 1.0)); } else { _1170 = as_type(_1163); } uint _1183; uint _1184; uint _1185; uint _1186; if (_480) { float _1172 = spvFMul(_1148, as_type(_1170)); _1183 = as_type(spvFMul(as_type(cbuf_56.data[_1088]), _1172)); _1184 = as_type(spvFMul(as_type(cbuf_56.data[_1096]), _1172)); _1185 = as_type(_1172); _1186 = as_type(spvFMul(as_type(cbuf_56.data[_1092]), _1172)); } else { _1183 = as_type(_1133); _1184 = as_type(_1131); _1185 = _1170; _1186 = as_type(_1138); } uint _1191; if (!_480) { _1191 = as_type(fma(_189, 10.0, as_type(_1186))); } else { _1191 = _1185; } uint _1231; uint _1232; uint _1233; if (!_480) { float _1221 = fma(_1148, spvFMul(fast::max(0.0, as_type(_1191)), 1.0 / _481), spvFMul(_462, spvFMul(_1148, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1184), _401, fma(as_type(_1183), _392, spvFMul(_384, _1135))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _482))))); _1231 = as_type(spvFMul(as_type(cbuf_56.data[_1096]), _1221)); _1232 = as_type(spvFMul(as_type(cbuf_56.data[_1092]), _1221)); _1233 = as_type(spvFMul(as_type(cbuf_56.data[_1088]), _1221)); } else { _1231 = _1184; _1232 = _1186; _1233 = _1183; } uint _1263 = 84u + buf1_dword_off; uint _1267 = 85u + buf1_dword_off; uint _1271 = 86u + buf1_dword_off; uint _1275 = 87u + buf1_dword_off; float _1295 = fma(-_350, _317, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1298 = fma(-_346, _317, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1301 = fma(-_315, _317, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1305 = rsqrt(fma(_1295, _1295, fma(_1298, _1298, spvFMul(_1301, _1301)))); float _1306 = spvFMul(_1295, _1305); float _1308 = spvFMul(_1298, _1305); float _1310 = spvFMul(_1301, _1305); float _1313 = fma(_400, _1306, fma(_391, _1308, spvFMul(_383, _1310))); float _1322 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[83u + buf1_dword_off]), fma(_1295, _1295, fma(_1298, _1298, spvFMul(_1301, _1301)))), 0.0, 1.0))); float _1323 = spvFMul(_1322, _1322); float _1330 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1275]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_1275])))); float _1338 = exp2(spvFMul(spvFMul(0.25, _1330), log2(fast::clamp(fma(_436, _1306, fma(_426, _1308, spvFMul(_418, _1310))), 0.0, 1.0)))); float _1341 = spvFMul(_1338, fma(0.125, _1330, 0.25)); uint _1345; if (_480) { _1345 = as_type(fast::clamp(fast::max(_1313, _1313), 0.0, 1.0)); } else { _1345 = as_type(_1338); } uint _1358; uint _1359; uint _1360; uint _1361; if (_480) { float _1347 = spvFMul(_1323, as_type(_1345)); _1358 = as_type(spvFMul(as_type(cbuf_56.data[_1263]), _1347)); _1359 = as_type(spvFMul(as_type(cbuf_56.data[_1271]), _1347)); _1360 = as_type(_1347); _1361 = as_type(spvFMul(as_type(cbuf_56.data[_1267]), _1347)); } else { _1358 = as_type(_1308); _1359 = as_type(_1306); _1360 = _1345; _1361 = as_type(_1313); } uint _1366; if (!_480) { _1366 = as_type(fma(_189, 10.0, as_type(_1361))); } else { _1366 = _1360; } uint _1406; uint _1407; uint _1408; if (!_480) { float _1396 = fma(_1323, spvFMul(fast::max(0.0, as_type(_1366)), 1.0 / _481), spvFMul(_462, spvFMul(_1323, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1359), _401, fma(as_type(_1358), _392, spvFMul(_384, _1310))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _482))))); _1406 = as_type(spvFMul(as_type(cbuf_56.data[_1271]), _1396)); _1407 = as_type(spvFMul(as_type(cbuf_56.data[_1267]), _1396)); _1408 = as_type(spvFMul(as_type(cbuf_56.data[_1263]), _1396)); } else { _1406 = _1359; _1407 = _1361; _1408 = _1358; } uint _1438 = 100u + buf1_dword_off; uint _1442 = 101u + buf1_dword_off; uint _1446 = 102u + buf1_dword_off; uint _1450 = 103u + buf1_dword_off; float _1470 = fma(-_350, _317, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1473 = fma(-_346, _317, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1476 = fma(-_315, _317, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1480 = rsqrt(fma(_1470, _1470, fma(_1473, _1473, spvFMul(_1476, _1476)))); float _1481 = spvFMul(_1470, _1480); float _1483 = spvFMul(_1473, _1480); float _1485 = spvFMul(_1476, _1480); float _1488 = fma(_400, _1481, fma(_391, _1483, spvFMul(_383, _1485))); float _1497 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[99u + buf1_dword_off]), fma(_1470, _1470, fma(_1473, _1473, spvFMul(_1476, _1476)))), 0.0, 1.0))); float _1498 = spvFMul(_1497, _1497); float _1505 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1450]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_1450])))); float _1513 = exp2(spvFMul(spvFMul(0.25, _1505), log2(fast::clamp(fma(_436, _1481, fma(_426, _1483, spvFMul(_418, _1485))), 0.0, 1.0)))); float _1516 = spvFMul(_1513, fma(0.125, _1505, 0.25)); uint _1520; if (_480) { _1520 = as_type(fast::clamp(fast::max(_1488, _1488), 0.0, 1.0)); } else { _1520 = as_type(_1513); } uint _1533; uint _1534; uint _1535; uint _1536; if (_480) { float _1522 = spvFMul(_1498, as_type(_1520)); _1533 = as_type(spvFMul(as_type(cbuf_56.data[_1438]), _1522)); _1534 = as_type(spvFMul(as_type(cbuf_56.data[_1446]), _1522)); _1535 = as_type(_1522); _1536 = as_type(spvFMul(as_type(cbuf_56.data[_1442]), _1522)); } else { _1533 = as_type(_1483); _1534 = as_type(_1481); _1535 = _1520; _1536 = as_type(_1488); } uint _1541; if (!_480) { _1541 = as_type(fma(_189, 10.0, as_type(_1536))); } else { _1541 = _1535; } uint _1581; uint _1582; uint _1583; if (!_480) { float _1571 = fma(_1498, spvFMul(fast::max(0.0, as_type(_1541)), 1.0 / _481), spvFMul(_462, spvFMul(_1498, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1534), _401, fma(as_type(_1533), _392, spvFMul(_384, _1485))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _482))))); _1581 = as_type(spvFMul(as_type(cbuf_56.data[_1446]), _1571)); _1582 = as_type(spvFMul(as_type(cbuf_56.data[_1442]), _1571)); _1583 = as_type(spvFMul(as_type(cbuf_56.data[_1438]), _1571)); } else { _1581 = _1534; _1582 = _1536; _1583 = _1533; } uint _1613 = 116u + buf1_dword_off; uint _1617 = 117u + buf1_dword_off; uint _1621 = 118u + buf1_dword_off; uint _1625 = 119u + buf1_dword_off; float _1645 = fma(-_350, _317, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1648 = fma(-_346, _317, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1651 = fma(-_315, _317, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1655 = rsqrt(fma(_1645, _1645, fma(_1648, _1648, spvFMul(_1651, _1651)))); float _1656 = spvFMul(_1645, _1655); float _1658 = spvFMul(_1648, _1655); float _1660 = spvFMul(_1651, _1655); float _1663 = fma(_400, _1656, fma(_391, _1658, spvFMul(_383, _1660))); float _1672 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[115u + buf1_dword_off]), fma(_1645, _1645, fma(_1648, _1648, spvFMul(_1651, _1651)))), 0.0, 1.0))); float _1673 = spvFMul(_1672, _1672); float _1680 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1625]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_1625])))); float _1688 = exp2(spvFMul(spvFMul(0.25, _1680), log2(fast::clamp(fma(_436, _1656, fma(_426, _1658, spvFMul(_418, _1660))), 0.0, 1.0)))); float _1691 = spvFMul(_1688, fma(0.125, _1680, 0.25)); uint _1695; if (_480) { _1695 = as_type(fast::clamp(fast::max(_1663, _1663), 0.0, 1.0)); } else { _1695 = as_type(_1688); } uint _1708; uint _1709; uint _1710; uint _1711; if (_480) { float _1697 = spvFMul(_1673, as_type(_1695)); _1708 = as_type(spvFMul(as_type(cbuf_56.data[_1613]), _1697)); _1709 = as_type(spvFMul(as_type(cbuf_56.data[_1621]), _1697)); _1710 = as_type(_1697); _1711 = as_type(spvFMul(as_type(cbuf_56.data[_1617]), _1697)); } else { _1708 = as_type(_1658); _1709 = as_type(_1656); _1710 = _1695; _1711 = as_type(_1663); } uint _1716; if (!_480) { _1716 = as_type(fma(_189, 10.0, as_type(_1711))); } else { _1716 = _1710; } uint _1756; uint _1757; uint _1758; if (!_480) { float _1746 = fma(_1673, spvFMul(fast::max(0.0, as_type(_1716)), 1.0 / _481), spvFMul(_462, spvFMul(_1673, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1709), _401, fma(as_type(_1708), _392, spvFMul(_384, _1660))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), _482))))); _1756 = as_type(spvFMul(as_type(cbuf_56.data[_1621]), _1746)); _1757 = as_type(spvFMul(as_type(cbuf_56.data[_1617]), _1746)); _1758 = as_type(spvFMul(as_type(cbuf_56.data[_1613]), _1746)); } else { _1756 = _1709; _1757 = _1711; _1758 = _1708; } uint _1788 = 132u + buf1_dword_off; uint _1792 = 133u + buf1_dword_off; uint _1796 = 134u + buf1_dword_off; uint _1800 = 135u + buf1_dword_off; float _1820 = fma(-_350, _317, as_type(cbuf_56.data[128u + buf1_dword_off])); float _1823 = fma(-_346, _317, as_type(cbuf_56.data[129u + buf1_dword_off])); float _1826 = fma(-_315, _317, as_type(cbuf_56.data[130u + buf1_dword_off])); float _1830 = rsqrt(fma(_1820, _1820, fma(_1823, _1823, spvFMul(_1826, _1826)))); float _1831 = spvFMul(_1820, _1830); float _1833 = spvFMul(_1823, _1830); float _1835 = spvFMul(_1826, _1830); float _1838 = fma(_400, _1831, fma(_391, _1833, spvFMul(_383, _1835))); float _1847 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[131u + buf1_dword_off]), fma(_1820, _1820, fma(_1823, _1823, spvFMul(_1826, _1826)))), 0.0, 1.0))); float _1848 = spvFMul(_1847, _1847); float _1855 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1800]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_1800])))); float _1863 = exp2(spvFMul(spvFMul(0.25, _1855), log2(fast::clamp(fma(_436, _1831, fma(_426, _1833, spvFMul(_418, _1835))), 0.0, 1.0)))); float _1866 = spvFMul(_1863, fma(0.125, _1855, 0.25)); uint _1870; if (_480) { _1870 = as_type(fast::clamp(fast::max(_1838, _1838), 0.0, 1.0)); } else { _1870 = as_type(_1863); } uint _1883; uint _1884; uint _1885; uint _1886; if (_480) { float _1872 = spvFMul(_1848, as_type(_1870)); _1883 = as_type(spvFMul(as_type(cbuf_56.data[_1788]), _1872)); _1884 = as_type(spvFMul(as_type(cbuf_56.data[_1796]), _1872)); _1885 = as_type(_1872); _1886 = as_type(spvFMul(as_type(cbuf_56.data[_1792]), _1872)); } else { _1883 = as_type(_1833); _1884 = as_type(_1831); _1885 = _1870; _1886 = as_type(_1838); } uint _1891; if (!_480) { _1891 = as_type(fma(_189, 10.0, as_type(_1886))); } else { _1891 = _1885; } uint _1931; uint _1932; uint _1933; if (!_480) { float _1921 = fma(_1848, spvFMul(fast::max(0.0, as_type(_1891)), 1.0 / _481), spvFMul(_462, spvFMul(_1848, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[141u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1884), _401, fma(as_type(_1883), _392, spvFMul(_384, _1835))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[140u + buf1_dword_off]), _482))))); _1931 = as_type(spvFMul(as_type(cbuf_56.data[_1796]), _1921)); _1932 = as_type(spvFMul(as_type(cbuf_56.data[_1792]), _1921)); _1933 = as_type(spvFMul(as_type(cbuf_56.data[_1788]), _1921)); } else { _1931 = _1884; _1932 = _1886; _1933 = _1883; } uint _1951 = 148u + buf1_dword_off; uint _1955 = 149u + buf1_dword_off; uint _1959 = 150u + buf1_dword_off; uint _1963 = 151u + buf1_dword_off; float _1974 = fma(-_315, _317, as_type(cbuf_56.data[146u + buf1_dword_off])); float _1977 = fma(-_346, _317, as_type(cbuf_56.data[145u + buf1_dword_off])); float _1981 = fma(-_350, _317, as_type(cbuf_56.data[144u + buf1_dword_off])); float _1984 = rsqrt(fma(_1981, _1981, fma(_1977, _1977, spvFMul(_1974, _1974)))); float _1985 = spvFMul(_1974, _1984); float _2000 = spvFMul(_1977, _1984); float _2006 = spvFMul(_1981, _1984); float _2011 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1963]), _413), 1.0 / fma(_413, 0.01000213623046875, as_type(cbuf_56.data[_1963])))); float _2029 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[147u + buf1_dword_off]), fma(_1981, _1981, fma(_1977, _1977, spvFMul(_1974, _1974)))), 0.0, 1.0))); float _2033 = fma(spvFMul(as_type(cbuf_56.data[136u + buf1_dword_off]), _1866), _1848, fma(spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1691), _1673, fma(spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1516), _1498, fma(spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1341), _1323, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1166), _1148, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _991), _973, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _817), _799, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _486), _485, spvFMul(_621, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _639)))))))))); float _2034 = fma(spvFMul(as_type(cbuf_56.data[137u + buf1_dword_off]), _1866), _1848, fma(spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1691), _1673, fma(spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1516), _1498, fma(spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1341), _1323, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1166), _1148, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _991), _973, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _817), _799, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _486), _485, spvFMul(_621, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _639)))))))))); float _2035 = fma(spvFMul(as_type(cbuf_56.data[138u + buf1_dword_off]), _1866), _1848, fma(spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1691), _1673, fma(spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1516), _1498, fma(spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1341), _1323, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1166), _1148, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _991), _973, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _817), _799, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _486), _485, spvFMul(_621, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _639)))))))))); float _2036 = fma(_400, _2006, fma(_391, _2000, spvFMul(_383, _1985))); float _2037 = spvFMul(_2029, _2029); float _2038 = spvFMul(exp2(spvFMul(spvFMul(0.25, _2011), log2(fast::clamp(fma(_436, _2006, fma(_426, _2000, spvFMul(_418, _1985))), 0.0, 1.0)))), fma(0.125, _2011, 0.25)); uint _2042; if (_480) { _2042 = as_type(fast::clamp(fast::max(_2036, _2036), 0.0, 1.0)); } else { _2042 = as_type(_482); } uint _2055; uint _2056; uint _2057; uint _2058; if (_480) { float _2044 = spvFMul(_2037, as_type(_2042)); _2055 = as_type(spvFMul(as_type(cbuf_56.data[_1951]), _2044)); _2056 = as_type(spvFMul(as_type(cbuf_56.data[_1959]), _2044)); _2057 = as_type(spvFMul(as_type(cbuf_56.data[_1955]), _2044)); _2058 = as_type(_2044); } else { _2055 = as_type(_2029); _2056 = as_type(_392); _2057 = as_type(_401); _2058 = _2042; } uint _2062; if (!_480) { _2062 = as_type(fma(_189, 10.0, _2036)); } else { _2062 = _2055; } uint _2103; uint _2104; uint _2105; if (!_480) { float _2093 = fma(_2037, spvFMul(fast::max(0.0, as_type(_2062)), 1.0 / _481), spvFMul(_462, spvFMul(_2037, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[157u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_2006, as_type(_2057), fma(_2000, as_type(_2056), spvFMul(_384, _1985))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[156u + buf1_dword_off]), as_type(_2058)))))); _2103 = as_type(spvFMul(as_type(cbuf_56.data[_1959]), _2093)); _2104 = as_type(spvFMul(as_type(cbuf_56.data[_1955]), _2093)); _2105 = as_type(spvFMul(as_type(cbuf_56.data[_1951]), _2093)); } else { _2103 = _2056; _2104 = _2057; _2105 = _2062; } float _2119 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_549), as_type(_706)), as_type(_884)), as_type(_1058)), as_type(_1233)), as_type(_1408)), as_type(_1583)), as_type(_1758)), as_type(_1933)), as_type(_2105)); float _2121 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_548), as_type(_705)), as_type(_883)), as_type(_1057)), as_type(_1232)), as_type(_1407)), as_type(_1582)), as_type(_1757)), as_type(_1932)), as_type(_2104)); float _2123 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_547), as_type(_704)), as_type(_882)), as_type(_1056)), as_type(_1231)), as_type(_1406)), as_type(_1581)), as_type(_1756)), as_type(_1931)), as_type(_2103)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_477, spvFMul(_476, fma(spvFMul(as_type(cbuf_56.data[152u + buf1_dword_off]), _2038), _2037, _2033))); out.frag_color1.y = spvFMul(_478, spvFMul(_476, fma(spvFMul(as_type(cbuf_56.data[153u + buf1_dword_off]), _2038), _2037, _2034))); out.frag_color1.z = spvFMul(_479, spvFMul(_476, fma(spvFMul(as_type(cbuf_56.data[154u + buf1_dword_off]), _2038), _2037, _2035))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_476, spvFSub(_2119, spvFMul(spvFMul(_477, _2119), 0.5))); out.frag_color0.y = spvFMul(_476, spvFSub(_2121, spvFMul(spvFMul(_478, _2121), 0.5))); out.frag_color0.z = spvFMul(_476, spvFSub(_2123, spvFMul(spvFMul(_479, _2123), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xb59b4c4e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[324]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _165 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _166 = _165.x; float4 _171 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _179 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _181 = _179.y; float4 _186 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _187 = _186.x; float _188 = _186.y; float _189 = _186.z; float _260 = fma(2.0, _171.z, -1.0); float _278 = fma(2.0, _171.y, -1.0); float _299 = fma(2.0, _171.x, -1.0); float _307 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _166, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _309 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _166, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _338 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _166, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _339 = spvFMul(_307, _309); float _340 = rsqrt(fma(_299, _299, fma(_278, _278, spvFMul(_260, _260)))); float _342 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _166, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _343 = spvFMul(_338, _309); float _345 = spvFMul(_260, _340); float _346 = spvFMul(_342, _309); float _348 = spvFMul(_278, _340); float _352 = spvFMul(_299, _340); float _357 = rsqrt(fma(_346, _346, fma(_343, _343, spvFMul(_339, _339)))); uint _358 = 4u + buf1_dword_off; uint _361 = 5u + buf1_dword_off; uint _364 = 6u + buf1_dword_off; uint _367 = 7u + buf1_dword_off; float _375 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _352, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _348, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _345))); float _376 = spvFMul(_339, _357); float _379 = fma(-_307, _309, as_type(cbuf_56.data[2u + buf1_dword_off])); float _383 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _352, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _348, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _345))); float _384 = spvFMul(_343, _357); float _389 = fma(-_338, _309, as_type(cbuf_56.data[1u + buf1_dword_off])); float _392 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _352, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _348, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _345))); float _393 = spvFMul(_346, _357); float _398 = fma(-_342, _309, as_type(cbuf_56.data[0u + buf1_dword_off])); float _403 = spvFMul(fma(_392, _393, fma(_383, _384, spvFMul(_375, _376))), 2.0); float _405 = exp2(spvFMul(13.0, _179.x)); float _407 = rsqrt(fma(_398, _398, fma(_389, _389, spvFMul(_379, _379)))); float _410 = fma(_339, _357, -spvFMul(_375, _403)); float _411 = spvFMul(_379, _407); float _418 = fma(_343, _357, -spvFMul(_383, _403)); float _421 = spvFMul(_389, _407); float _428 = fma(_346, _357, -spvFMul(_392, _403)); float _431 = spvFMul(_398, _407); float _439 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_367]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_367])))); float _454 = spvFMul(10.0, _181); float _456 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_393, _392, fma(-_384, _383, spvFMul(_375, -_376)))))); float _458 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_398, _398, fma(_389, _389, spvFMul(_379, _379)))), 0.0, 1.0))); float _459 = exp2(spvFMul(spvFMul(0.25, _439), log2(fast::clamp(fma(_428, _431, fma(_418, _421, spvFMul(_410, _411))), 0.0, 1.0)))); float4 _467 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _468 = _467.x; float _469 = spvFMul(_187, _187); float _470 = spvFMul(_188, _188); float _471 = spvFMul(_189, _189); bool _472 = _454 == 0.0; float _473 = fma(2.0, _454, 1.0); float _474 = spvFMul(_456, _456); float _476 = fma(_392, _431, fma(_383, _421, spvFMul(_375, _411))); float _477 = spvFMul(_458, _458); float _478 = spvFMul(_459, fma(0.125, _439, 0.25)); uint _482; if (_472) { _482 = as_type(fast::clamp(fast::max(_476, _476), 0.0, 1.0)); } else { _482 = as_type(_411); } uint _494; uint _495; uint _496; if (_472) { float _484 = spvFMul(_477, as_type(_482)); _494 = as_type(spvFMul(as_type(cbuf_56.data[_364]), _484)); _495 = as_type(spvFMul(as_type(cbuf_56.data[_361]), _484)); _496 = as_type(spvFMul(as_type(cbuf_56.data[_358]), _484)); } else { _494 = as_type(_459); _495 = as_type(_431); _496 = _482; } uint _500; if (!_472) { _500 = as_type(fma(_181, 10.0, _476)); } else { _500 = _494; } uint _539; uint _540; uint _541; if (!_472) { float _529 = fma(_477, spvFMul(fast::max(0.0, as_type(_500)), 1.0 / _473), spvFMul(_454, spvFMul(_477, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_495), _393, fma(_421, _384, spvFMul(_376, as_type(_496)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _474))))); _539 = as_type(spvFMul(as_type(cbuf_56.data[_364]), _529)); _540 = as_type(spvFMul(as_type(cbuf_56.data[_361]), _529)); _541 = as_type(spvFMul(as_type(cbuf_56.data[_358]), _529)); } else { _539 = _500; _540 = _495; _541 = _496; } uint _564 = 20u + buf1_dword_off; uint _567 = 21u + buf1_dword_off; uint _570 = 22u + buf1_dword_off; uint _574 = 23u + buf1_dword_off; float _585 = fma(-_342, _309, as_type(cbuf_56.data[16u + buf1_dword_off])); float _588 = fma(-_338, _309, as_type(cbuf_56.data[17u + buf1_dword_off])); float _591 = fma(-_307, _309, as_type(cbuf_56.data[18u + buf1_dword_off])); float _595 = rsqrt(fma(_585, _585, fma(_588, _588, spvFMul(_591, _591)))); float _596 = spvFMul(_585, _595); float _598 = spvFMul(_588, _595); float _600 = spvFMul(_591, _595); float _603 = fma(_392, _596, fma(_383, _598, spvFMul(_375, _600))); float _612 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_585, _585, fma(_588, _588, spvFMul(_591, _591)))), 0.0, 1.0))); float _613 = spvFMul(_612, _612); float _620 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_574]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_574])))); float _628 = exp2(spvFMul(spvFMul(0.25, _620), log2(fast::clamp(fma(_428, _596, fma(_418, _598, spvFMul(_410, _600))), 0.0, 1.0)))); float _631 = spvFMul(_628, fma(0.125, _620, 0.25)); uint _635; if (_472) { _635 = as_type(fast::clamp(fast::max(_603, _603), 0.0, 1.0)); } else { _635 = as_type(_628); } uint _648; uint _649; uint _650; uint _651; if (_472) { float _637 = spvFMul(_613, as_type(_635)); _648 = as_type(spvFMul(as_type(cbuf_56.data[_564]), _637)); _649 = as_type(spvFMul(as_type(cbuf_56.data[_570]), _637)); _650 = as_type(_637); _651 = as_type(spvFMul(as_type(cbuf_56.data[_567]), _637)); } else { _648 = as_type(_598); _649 = as_type(_596); _650 = _635; _651 = as_type(_603); } uint _656; if (!_472) { _656 = as_type(fma(_181, 10.0, as_type(_651))); } else { _656 = _650; } uint _696; uint _697; uint _698; if (!_472) { float _686 = fma(_613, spvFMul(fast::max(0.0, as_type(_656)), 1.0 / _473), spvFMul(_454, spvFMul(_613, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_649), _393, fma(as_type(_648), _384, spvFMul(_376, _600))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _474))))); _696 = as_type(spvFMul(as_type(cbuf_56.data[_570]), _686)); _697 = as_type(spvFMul(as_type(cbuf_56.data[_567]), _686)); _698 = as_type(spvFMul(as_type(cbuf_56.data[_564]), _686)); } else { _696 = _649; _697 = _651; _698 = _648; } uint _725 = 36u + buf1_dword_off; uint _729 = 37u + buf1_dword_off; uint _733 = 38u + buf1_dword_off; uint _737 = 39u + buf1_dword_off; float _763 = fma(-_342, _309, as_type(cbuf_56.data[32u + buf1_dword_off])); float _766 = fma(-_338, _309, as_type(cbuf_56.data[33u + buf1_dword_off])); float _769 = fma(-_307, _309, as_type(cbuf_56.data[34u + buf1_dword_off])); float _773 = rsqrt(fma(_763, _763, fma(_766, _766, spvFMul(_769, _769)))); float _774 = spvFMul(_763, _773); float _776 = spvFMul(_766, _773); float _778 = spvFMul(_769, _773); float _781 = fma(_392, _774, fma(_383, _776, spvFMul(_375, _778))); float _790 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_763, _763, fma(_766, _766, spvFMul(_769, _769)))), 0.0, 1.0))); float _791 = spvFMul(_790, _790); float _798 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_737]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_737])))); float _806 = exp2(spvFMul(spvFMul(0.25, _798), log2(fast::clamp(fma(_428, _774, fma(_418, _776, spvFMul(_410, _778))), 0.0, 1.0)))); float _809 = spvFMul(_806, fma(0.125, _798, 0.25)); uint _813; if (_472) { _813 = as_type(fast::clamp(fast::max(_781, _781), 0.0, 1.0)); } else { _813 = as_type(_806); } uint _826; uint _827; uint _828; uint _829; if (_472) { float _815 = spvFMul(_791, as_type(_813)); _826 = as_type(spvFMul(as_type(cbuf_56.data[_725]), _815)); _827 = as_type(spvFMul(as_type(cbuf_56.data[_733]), _815)); _828 = as_type(_815); _829 = as_type(spvFMul(as_type(cbuf_56.data[_729]), _815)); } else { _826 = as_type(_776); _827 = as_type(_774); _828 = _813; _829 = as_type(_781); } uint _834; if (!_472) { _834 = as_type(fma(_181, 10.0, as_type(_829))); } else { _834 = _828; } uint _874; uint _875; uint _876; if (!_472) { float _864 = fma(_791, spvFMul(fast::max(0.0, as_type(_834)), 1.0 / _473), spvFMul(_454, spvFMul(_791, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_827), _393, fma(as_type(_826), _384, spvFMul(_376, _778))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _474))))); _874 = as_type(spvFMul(as_type(cbuf_56.data[_733]), _864)); _875 = as_type(spvFMul(as_type(cbuf_56.data[_729]), _864)); _876 = as_type(spvFMul(as_type(cbuf_56.data[_725]), _864)); } else { _874 = _827; _875 = _829; _876 = _826; } uint _905 = 52u + buf1_dword_off; uint _909 = 53u + buf1_dword_off; uint _913 = 54u + buf1_dword_off; uint _917 = 55u + buf1_dword_off; float _937 = fma(-_342, _309, as_type(cbuf_56.data[48u + buf1_dword_off])); float _940 = fma(-_338, _309, as_type(cbuf_56.data[49u + buf1_dword_off])); float _943 = fma(-_307, _309, as_type(cbuf_56.data[50u + buf1_dword_off])); float _947 = rsqrt(fma(_937, _937, fma(_940, _940, spvFMul(_943, _943)))); float _948 = spvFMul(_937, _947); float _950 = spvFMul(_940, _947); float _952 = spvFMul(_943, _947); float _955 = fma(_392, _948, fma(_383, _950, spvFMul(_375, _952))); float _964 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_937, _937, fma(_940, _940, spvFMul(_943, _943)))), 0.0, 1.0))); float _965 = spvFMul(_964, _964); float _972 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_917]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_917])))); float _980 = exp2(spvFMul(spvFMul(0.25, _972), log2(fast::clamp(fma(_428, _948, fma(_418, _950, spvFMul(_410, _952))), 0.0, 1.0)))); float _983 = spvFMul(_980, fma(0.125, _972, 0.25)); uint _987; if (_472) { _987 = as_type(fast::clamp(fast::max(_955, _955), 0.0, 1.0)); } else { _987 = as_type(_980); } uint _1000; uint _1001; uint _1002; uint _1003; if (_472) { float _989 = spvFMul(_965, as_type(_987)); _1000 = as_type(spvFMul(as_type(cbuf_56.data[_905]), _989)); _1001 = as_type(spvFMul(as_type(cbuf_56.data[_913]), _989)); _1002 = as_type(_989); _1003 = as_type(spvFMul(as_type(cbuf_56.data[_909]), _989)); } else { _1000 = as_type(_950); _1001 = as_type(_948); _1002 = _987; _1003 = as_type(_955); } uint _1008; if (!_472) { _1008 = as_type(fma(_181, 10.0, as_type(_1003))); } else { _1008 = _1002; } uint _1048; uint _1049; uint _1050; if (!_472) { float _1038 = fma(_965, spvFMul(fast::max(0.0, as_type(_1008)), 1.0 / _473), spvFMul(_454, spvFMul(_965, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1001), _393, fma(as_type(_1000), _384, spvFMul(_376, _952))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _474))))); _1048 = as_type(spvFMul(as_type(cbuf_56.data[_913]), _1038)); _1049 = as_type(spvFMul(as_type(cbuf_56.data[_909]), _1038)); _1050 = as_type(spvFMul(as_type(cbuf_56.data[_905]), _1038)); } else { _1048 = _1001; _1049 = _1003; _1050 = _1000; } uint _1080 = 68u + buf1_dword_off; uint _1084 = 69u + buf1_dword_off; uint _1088 = 70u + buf1_dword_off; uint _1092 = 71u + buf1_dword_off; float _1112 = fma(-_342, _309, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1115 = fma(-_338, _309, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1118 = fma(-_307, _309, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1122 = rsqrt(fma(_1112, _1112, fma(_1115, _1115, spvFMul(_1118, _1118)))); float _1123 = spvFMul(_1112, _1122); float _1125 = spvFMul(_1115, _1122); float _1127 = spvFMul(_1118, _1122); float _1130 = fma(_392, _1123, fma(_383, _1125, spvFMul(_375, _1127))); float _1139 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1112, _1112, fma(_1115, _1115, spvFMul(_1118, _1118)))), 0.0, 1.0))); float _1140 = spvFMul(_1139, _1139); float _1147 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1092]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_1092])))); float _1155 = exp2(spvFMul(spvFMul(0.25, _1147), log2(fast::clamp(fma(_428, _1123, fma(_418, _1125, spvFMul(_410, _1127))), 0.0, 1.0)))); float _1158 = spvFMul(_1155, fma(0.125, _1147, 0.25)); uint _1162; if (_472) { _1162 = as_type(fast::clamp(fast::max(_1130, _1130), 0.0, 1.0)); } else { _1162 = as_type(_1155); } uint _1175; uint _1176; uint _1177; uint _1178; if (_472) { float _1164 = spvFMul(_1140, as_type(_1162)); _1175 = as_type(spvFMul(as_type(cbuf_56.data[_1080]), _1164)); _1176 = as_type(spvFMul(as_type(cbuf_56.data[_1088]), _1164)); _1177 = as_type(_1164); _1178 = as_type(spvFMul(as_type(cbuf_56.data[_1084]), _1164)); } else { _1175 = as_type(_1125); _1176 = as_type(_1123); _1177 = _1162; _1178 = as_type(_1130); } uint _1183; if (!_472) { _1183 = as_type(fma(_181, 10.0, as_type(_1178))); } else { _1183 = _1177; } uint _1223; uint _1224; uint _1225; if (!_472) { float _1213 = fma(_1140, spvFMul(fast::max(0.0, as_type(_1183)), 1.0 / _473), spvFMul(_454, spvFMul(_1140, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1176), _393, fma(as_type(_1175), _384, spvFMul(_376, _1127))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _474))))); _1223 = as_type(spvFMul(as_type(cbuf_56.data[_1088]), _1213)); _1224 = as_type(spvFMul(as_type(cbuf_56.data[_1084]), _1213)); _1225 = as_type(spvFMul(as_type(cbuf_56.data[_1080]), _1213)); } else { _1223 = _1176; _1224 = _1178; _1225 = _1175; } uint _1255 = 84u + buf1_dword_off; uint _1259 = 85u + buf1_dword_off; uint _1263 = 86u + buf1_dword_off; uint _1267 = 87u + buf1_dword_off; float _1287 = fma(-_342, _309, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1290 = fma(-_338, _309, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1293 = fma(-_307, _309, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1297 = rsqrt(fma(_1287, _1287, fma(_1290, _1290, spvFMul(_1293, _1293)))); float _1298 = spvFMul(_1287, _1297); float _1300 = spvFMul(_1290, _1297); float _1302 = spvFMul(_1293, _1297); float _1305 = fma(_392, _1298, fma(_383, _1300, spvFMul(_375, _1302))); float _1314 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[83u + buf1_dword_off]), fma(_1287, _1287, fma(_1290, _1290, spvFMul(_1293, _1293)))), 0.0, 1.0))); float _1315 = spvFMul(_1314, _1314); float _1322 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1267]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_1267])))); float _1330 = exp2(spvFMul(spvFMul(0.25, _1322), log2(fast::clamp(fma(_428, _1298, fma(_418, _1300, spvFMul(_410, _1302))), 0.0, 1.0)))); float _1333 = spvFMul(_1330, fma(0.125, _1322, 0.25)); uint _1337; if (_472) { _1337 = as_type(fast::clamp(fast::max(_1305, _1305), 0.0, 1.0)); } else { _1337 = as_type(_1330); } uint _1350; uint _1351; uint _1352; uint _1353; if (_472) { float _1339 = spvFMul(_1315, as_type(_1337)); _1350 = as_type(spvFMul(as_type(cbuf_56.data[_1255]), _1339)); _1351 = as_type(spvFMul(as_type(cbuf_56.data[_1263]), _1339)); _1352 = as_type(_1339); _1353 = as_type(spvFMul(as_type(cbuf_56.data[_1259]), _1339)); } else { _1350 = as_type(_1300); _1351 = as_type(_1298); _1352 = _1337; _1353 = as_type(_1305); } uint _1358; if (!_472) { _1358 = as_type(fma(_181, 10.0, as_type(_1353))); } else { _1358 = _1352; } uint _1398; uint _1399; uint _1400; if (!_472) { float _1388 = fma(_1315, spvFMul(fast::max(0.0, as_type(_1358)), 1.0 / _473), spvFMul(_454, spvFMul(_1315, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1351), _393, fma(as_type(_1350), _384, spvFMul(_376, _1302))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _474))))); _1398 = as_type(spvFMul(as_type(cbuf_56.data[_1263]), _1388)); _1399 = as_type(spvFMul(as_type(cbuf_56.data[_1259]), _1388)); _1400 = as_type(spvFMul(as_type(cbuf_56.data[_1255]), _1388)); } else { _1398 = _1351; _1399 = _1353; _1400 = _1350; } uint _1430 = 100u + buf1_dword_off; uint _1434 = 101u + buf1_dword_off; uint _1438 = 102u + buf1_dword_off; uint _1442 = 103u + buf1_dword_off; float _1462 = fma(-_342, _309, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1465 = fma(-_338, _309, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1468 = fma(-_307, _309, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1472 = rsqrt(fma(_1462, _1462, fma(_1465, _1465, spvFMul(_1468, _1468)))); float _1473 = spvFMul(_1462, _1472); float _1475 = spvFMul(_1465, _1472); float _1477 = spvFMul(_1468, _1472); float _1480 = fma(_392, _1473, fma(_383, _1475, spvFMul(_375, _1477))); float _1489 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[99u + buf1_dword_off]), fma(_1462, _1462, fma(_1465, _1465, spvFMul(_1468, _1468)))), 0.0, 1.0))); float _1490 = spvFMul(_1489, _1489); float _1497 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1442]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_1442])))); float _1505 = exp2(spvFMul(spvFMul(0.25, _1497), log2(fast::clamp(fma(_428, _1473, fma(_418, _1475, spvFMul(_410, _1477))), 0.0, 1.0)))); float _1508 = spvFMul(_1505, fma(0.125, _1497, 0.25)); uint _1512; if (_472) { _1512 = as_type(fast::clamp(fast::max(_1480, _1480), 0.0, 1.0)); } else { _1512 = as_type(_1505); } uint _1525; uint _1526; uint _1527; uint _1528; if (_472) { float _1514 = spvFMul(_1490, as_type(_1512)); _1525 = as_type(spvFMul(as_type(cbuf_56.data[_1430]), _1514)); _1526 = as_type(spvFMul(as_type(cbuf_56.data[_1438]), _1514)); _1527 = as_type(_1514); _1528 = as_type(spvFMul(as_type(cbuf_56.data[_1434]), _1514)); } else { _1525 = as_type(_1475); _1526 = as_type(_1473); _1527 = _1512; _1528 = as_type(_1480); } uint _1533; if (!_472) { _1533 = as_type(fma(_181, 10.0, as_type(_1528))); } else { _1533 = _1527; } uint _1573; uint _1574; uint _1575; if (!_472) { float _1563 = fma(_1490, spvFMul(fast::max(0.0, as_type(_1533)), 1.0 / _473), spvFMul(_454, spvFMul(_1490, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1526), _393, fma(as_type(_1525), _384, spvFMul(_376, _1477))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _474))))); _1573 = as_type(spvFMul(as_type(cbuf_56.data[_1438]), _1563)); _1574 = as_type(spvFMul(as_type(cbuf_56.data[_1434]), _1563)); _1575 = as_type(spvFMul(as_type(cbuf_56.data[_1430]), _1563)); } else { _1573 = _1526; _1574 = _1528; _1575 = _1525; } uint _1605 = 116u + buf1_dword_off; uint _1609 = 117u + buf1_dword_off; uint _1613 = 118u + buf1_dword_off; uint _1617 = 119u + buf1_dword_off; float _1637 = fma(-_342, _309, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1640 = fma(-_338, _309, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1643 = fma(-_307, _309, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1647 = rsqrt(fma(_1637, _1637, fma(_1640, _1640, spvFMul(_1643, _1643)))); float _1648 = spvFMul(_1637, _1647); float _1650 = spvFMul(_1640, _1647); float _1652 = spvFMul(_1643, _1647); float _1655 = fma(_392, _1648, fma(_383, _1650, spvFMul(_375, _1652))); float _1664 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[115u + buf1_dword_off]), fma(_1637, _1637, fma(_1640, _1640, spvFMul(_1643, _1643)))), 0.0, 1.0))); float _1665 = spvFMul(_1664, _1664); float _1672 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1617]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_1617])))); float _1680 = exp2(spvFMul(spvFMul(0.25, _1672), log2(fast::clamp(fma(_428, _1648, fma(_418, _1650, spvFMul(_410, _1652))), 0.0, 1.0)))); float _1683 = spvFMul(_1680, fma(0.125, _1672, 0.25)); uint _1687; if (_472) { _1687 = as_type(fast::clamp(fast::max(_1655, _1655), 0.0, 1.0)); } else { _1687 = as_type(_1680); } uint _1700; uint _1701; uint _1702; uint _1703; if (_472) { float _1689 = spvFMul(_1665, as_type(_1687)); _1700 = as_type(spvFMul(as_type(cbuf_56.data[_1605]), _1689)); _1701 = as_type(spvFMul(as_type(cbuf_56.data[_1613]), _1689)); _1702 = as_type(_1689); _1703 = as_type(spvFMul(as_type(cbuf_56.data[_1609]), _1689)); } else { _1700 = as_type(_1650); _1701 = as_type(_1648); _1702 = _1687; _1703 = as_type(_1655); } uint _1708; if (!_472) { _1708 = as_type(fma(_181, 10.0, as_type(_1703))); } else { _1708 = _1702; } uint _1748; uint _1749; uint _1750; if (!_472) { float _1738 = fma(_1665, spvFMul(fast::max(0.0, as_type(_1708)), 1.0 / _473), spvFMul(_454, spvFMul(_1665, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1701), _393, fma(as_type(_1700), _384, spvFMul(_376, _1652))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), _474))))); _1748 = as_type(spvFMul(as_type(cbuf_56.data[_1613]), _1738)); _1749 = as_type(spvFMul(as_type(cbuf_56.data[_1609]), _1738)); _1750 = as_type(spvFMul(as_type(cbuf_56.data[_1605]), _1738)); } else { _1748 = _1701; _1749 = _1703; _1750 = _1700; } uint _1768 = 132u + buf1_dword_off; uint _1772 = 133u + buf1_dword_off; uint _1776 = 134u + buf1_dword_off; uint _1780 = 135u + buf1_dword_off; float _1791 = fma(-_307, _309, as_type(cbuf_56.data[130u + buf1_dword_off])); float _1794 = fma(-_338, _309, as_type(cbuf_56.data[129u + buf1_dword_off])); float _1798 = fma(-_342, _309, as_type(cbuf_56.data[128u + buf1_dword_off])); float _1801 = rsqrt(fma(_1798, _1798, fma(_1794, _1794, spvFMul(_1791, _1791)))); float _1802 = spvFMul(_1791, _1801); float _1817 = spvFMul(_1794, _1801); float _1823 = spvFMul(_1798, _1801); float _1828 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1780]), _405), 1.0 / fma(_405, 0.01000213623046875, as_type(cbuf_56.data[_1780])))); float _1846 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[131u + buf1_dword_off]), fma(_1798, _1798, fma(_1794, _1794, spvFMul(_1791, _1791)))), 0.0, 1.0))); float _1853 = fma(_392, _1823, fma(_383, _1817, spvFMul(_375, _1802))); float _1854 = spvFMul(_1846, _1846); float _1855 = spvFMul(exp2(spvFMul(spvFMul(0.25, _1828), log2(fast::clamp(fma(_428, _1823, fma(_418, _1817, spvFMul(_410, _1802))), 0.0, 1.0)))), fma(0.125, _1828, 0.25)); uint _1859; if (_472) { _1859 = as_type(fast::clamp(fast::max(_1853, _1853), 0.0, 1.0)); } else { _1859 = as_type(_474); } uint _1872; uint _1873; uint _1874; uint _1875; if (_472) { float _1861 = spvFMul(_1854, as_type(_1859)); _1872 = as_type(spvFMul(as_type(cbuf_56.data[_1768]), _1861)); _1873 = as_type(spvFMul(as_type(cbuf_56.data[_1776]), _1861)); _1874 = as_type(spvFMul(as_type(cbuf_56.data[_1772]), _1861)); _1875 = as_type(_1861); } else { _1872 = as_type(_1846); _1873 = as_type(_384); _1874 = as_type(_393); _1875 = _1859; } uint _1879; if (!_472) { _1879 = as_type(fma(_181, 10.0, _1853)); } else { _1879 = _1872; } uint _1920; uint _1921; uint _1922; if (!_472) { float _1910 = fma(_1854, spvFMul(fast::max(0.0, as_type(_1879)), 1.0 / _473), spvFMul(_454, spvFMul(_1854, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[141u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1823, as_type(_1874), fma(_1817, as_type(_1873), spvFMul(_376, _1802))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[140u + buf1_dword_off]), as_type(_1875)))))); _1920 = as_type(spvFMul(as_type(cbuf_56.data[_1776]), _1910)); _1921 = as_type(spvFMul(as_type(cbuf_56.data[_1772]), _1910)); _1922 = as_type(spvFMul(as_type(cbuf_56.data[_1768]), _1910)); } else { _1920 = _1873; _1921 = _1874; _1922 = _1879; } float _1936 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_541), as_type(_698)), as_type(_876)), as_type(_1050)), as_type(_1225)), as_type(_1400)), as_type(_1575)), as_type(_1750)), as_type(_1922)); float _1938 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_540), as_type(_697)), as_type(_875)), as_type(_1049)), as_type(_1224)), as_type(_1399)), as_type(_1574)), as_type(_1749)), as_type(_1921)); float _1940 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_539), as_type(_696)), as_type(_874)), as_type(_1048)), as_type(_1223)), as_type(_1398)), as_type(_1573)), as_type(_1748)), as_type(_1920)); float _1947 = fma(spvFMul(as_type(cbuf_56.data[136u + buf1_dword_off]), _1855), _1854, fma(spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1683), _1665, fma(spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1508), _1490, fma(spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1333), _1315, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1158), _1140, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _983), _965, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _809), _791, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _478), _477, spvFMul(_613, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _631)))))))))); float _1948 = fma(spvFMul(as_type(cbuf_56.data[137u + buf1_dword_off]), _1855), _1854, fma(spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1683), _1665, fma(spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1508), _1490, fma(spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1333), _1315, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1158), _1140, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _983), _965, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _809), _791, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _478), _477, spvFMul(_613, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _631)))))))))); float _1949 = fma(spvFMul(as_type(cbuf_56.data[138u + buf1_dword_off]), _1855), _1854, fma(spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1683), _1665, fma(spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1508), _1490, fma(spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1333), _1315, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1158), _1140, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _983), _965, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _809), _791, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _478), _477, spvFMul(_613, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _631)))))))))); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_469, spvFMul(_468, _1947)); out.frag_color1.y = spvFMul(_470, spvFMul(_468, _1948)); out.frag_color1.z = spvFMul(_471, spvFMul(_468, _1949)); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_468, spvFSub(_1936, spvFMul(spvFMul(_469, _1936), 0.5))); out.frag_color0.y = spvFMul(_468, spvFSub(_1938, spvFMul(spvFMul(_470, _1938), 0.5))); out.frag_color0.z = spvFMul(_468, spvFSub(_1940, spvFMul(spvFMul(_471, _1940), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x22b357f3 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[396]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _181 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _182 = _181.x; float4 _187 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _195 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _197 = _195.y; float4 _202 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _203 = _202.x; float _204 = _202.y; float _205 = _202.z; float _276 = fma(2.0, _187.z, -1.0); float _294 = fma(2.0, _187.y, -1.0); float _315 = fma(2.0, _187.x, -1.0); float _323 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _182, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _325 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _182, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _354 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _182, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _355 = spvFMul(_323, _325); float _356 = rsqrt(fma(_315, _315, fma(_294, _294, spvFMul(_276, _276)))); float _358 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _182, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _359 = spvFMul(_354, _325); float _361 = spvFMul(_276, _356); float _362 = spvFMul(_358, _325); float _364 = spvFMul(_294, _356); float _368 = spvFMul(_315, _356); float _373 = rsqrt(fma(_362, _362, fma(_359, _359, spvFMul(_355, _355)))); uint _374 = 4u + buf1_dword_off; uint _377 = 5u + buf1_dword_off; uint _380 = 6u + buf1_dword_off; uint _383 = 7u + buf1_dword_off; float _391 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _368, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _364, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _361))); float _392 = spvFMul(_355, _373); float _395 = fma(-_323, _325, as_type(cbuf_56.data[2u + buf1_dword_off])); float _399 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _368, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _364, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _361))); float _400 = spvFMul(_359, _373); float _405 = fma(-_354, _325, as_type(cbuf_56.data[1u + buf1_dword_off])); float _408 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _368, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _364, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _361))); float _409 = spvFMul(_362, _373); float _414 = fma(-_358, _325, as_type(cbuf_56.data[0u + buf1_dword_off])); float _419 = spvFMul(fma(_408, _409, fma(_399, _400, spvFMul(_391, _392))), 2.0); float _421 = exp2(spvFMul(13.0, _195.x)); float _423 = rsqrt(fma(_414, _414, fma(_405, _405, spvFMul(_395, _395)))); float _426 = fma(_355, _373, -spvFMul(_391, _419)); float _427 = spvFMul(_395, _423); float _434 = fma(_359, _373, -spvFMul(_399, _419)); float _437 = spvFMul(_405, _423); float _444 = fma(_362, _373, -spvFMul(_408, _419)); float _447 = spvFMul(_414, _423); float _455 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_383]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_383])))); float _470 = spvFMul(10.0, _197); float _472 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_409, _408, fma(-_400, _399, spvFMul(_391, -_392)))))); float _474 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_414, _414, fma(_405, _405, spvFMul(_395, _395)))), 0.0, 1.0))); float _475 = exp2(spvFMul(spvFMul(0.25, _455), log2(fast::clamp(fma(_444, _447, fma(_434, _437, spvFMul(_426, _427))), 0.0, 1.0)))); float4 _483 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _484 = _483.x; float _485 = spvFMul(_203, _203); float _486 = spvFMul(_204, _204); float _487 = spvFMul(_205, _205); bool _488 = _470 == 0.0; float _489 = fma(2.0, _470, 1.0); float _490 = spvFMul(_472, _472); float _492 = fma(_408, _447, fma(_399, _437, spvFMul(_391, _427))); float _493 = spvFMul(_474, _474); float _494 = spvFMul(_475, fma(0.125, _455, 0.25)); uint _498; if (_488) { _498 = as_type(fast::clamp(fast::max(_492, _492), 0.0, 1.0)); } else { _498 = as_type(_427); } uint _510; uint _511; uint _512; if (_488) { float _500 = spvFMul(_493, as_type(_498)); _510 = as_type(spvFMul(as_type(cbuf_56.data[_380]), _500)); _511 = as_type(spvFMul(as_type(cbuf_56.data[_377]), _500)); _512 = as_type(spvFMul(as_type(cbuf_56.data[_374]), _500)); } else { _510 = as_type(_475); _511 = as_type(_447); _512 = _498; } uint _516; if (!_488) { _516 = as_type(fma(_197, 10.0, _492)); } else { _516 = _510; } uint _555; uint _556; uint _557; if (!_488) { float _545 = fma(_493, spvFMul(fast::max(0.0, as_type(_516)), 1.0 / _489), spvFMul(_470, spvFMul(_493, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_511), _409, fma(_437, _400, spvFMul(_392, as_type(_512)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _490))))); _555 = as_type(spvFMul(as_type(cbuf_56.data[_380]), _545)); _556 = as_type(spvFMul(as_type(cbuf_56.data[_377]), _545)); _557 = as_type(spvFMul(as_type(cbuf_56.data[_374]), _545)); } else { _555 = _516; _556 = _511; _557 = _512; } uint _580 = 20u + buf1_dword_off; uint _583 = 21u + buf1_dword_off; uint _586 = 22u + buf1_dword_off; uint _590 = 23u + buf1_dword_off; float _601 = fma(-_358, _325, as_type(cbuf_56.data[16u + buf1_dword_off])); float _604 = fma(-_354, _325, as_type(cbuf_56.data[17u + buf1_dword_off])); float _607 = fma(-_323, _325, as_type(cbuf_56.data[18u + buf1_dword_off])); float _611 = rsqrt(fma(_601, _601, fma(_604, _604, spvFMul(_607, _607)))); float _612 = spvFMul(_601, _611); float _614 = spvFMul(_604, _611); float _616 = spvFMul(_607, _611); float _619 = fma(_408, _612, fma(_399, _614, spvFMul(_391, _616))); float _628 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_601, _601, fma(_604, _604, spvFMul(_607, _607)))), 0.0, 1.0))); float _629 = spvFMul(_628, _628); float _636 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_590]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_590])))); float _644 = exp2(spvFMul(spvFMul(0.25, _636), log2(fast::clamp(fma(_444, _612, fma(_434, _614, spvFMul(_426, _616))), 0.0, 1.0)))); float _647 = spvFMul(_644, fma(0.125, _636, 0.25)); uint _651; if (_488) { _651 = as_type(fast::clamp(fast::max(_619, _619), 0.0, 1.0)); } else { _651 = as_type(_644); } uint _664; uint _665; uint _666; uint _667; if (_488) { float _653 = spvFMul(_629, as_type(_651)); _664 = as_type(spvFMul(as_type(cbuf_56.data[_580]), _653)); _665 = as_type(spvFMul(as_type(cbuf_56.data[_586]), _653)); _666 = as_type(_653); _667 = as_type(spvFMul(as_type(cbuf_56.data[_583]), _653)); } else { _664 = as_type(_614); _665 = as_type(_612); _666 = _651; _667 = as_type(_619); } uint _672; if (!_488) { _672 = as_type(fma(_197, 10.0, as_type(_667))); } else { _672 = _666; } uint _712; uint _713; uint _714; if (!_488) { float _702 = fma(_629, spvFMul(fast::max(0.0, as_type(_672)), 1.0 / _489), spvFMul(_470, spvFMul(_629, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_665), _409, fma(as_type(_664), _400, spvFMul(_392, _616))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _490))))); _712 = as_type(spvFMul(as_type(cbuf_56.data[_586]), _702)); _713 = as_type(spvFMul(as_type(cbuf_56.data[_583]), _702)); _714 = as_type(spvFMul(as_type(cbuf_56.data[_580]), _702)); } else { _712 = _665; _713 = _667; _714 = _664; } uint _741 = 36u + buf1_dword_off; uint _745 = 37u + buf1_dword_off; uint _749 = 38u + buf1_dword_off; uint _753 = 39u + buf1_dword_off; float _779 = fma(-_358, _325, as_type(cbuf_56.data[32u + buf1_dword_off])); float _782 = fma(-_354, _325, as_type(cbuf_56.data[33u + buf1_dword_off])); float _785 = fma(-_323, _325, as_type(cbuf_56.data[34u + buf1_dword_off])); float _789 = rsqrt(fma(_779, _779, fma(_782, _782, spvFMul(_785, _785)))); float _790 = spvFMul(_779, _789); float _792 = spvFMul(_782, _789); float _794 = spvFMul(_785, _789); float _797 = fma(_408, _790, fma(_399, _792, spvFMul(_391, _794))); float _806 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_779, _779, fma(_782, _782, spvFMul(_785, _785)))), 0.0, 1.0))); float _807 = spvFMul(_806, _806); float _814 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_753]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_753])))); float _822 = exp2(spvFMul(spvFMul(0.25, _814), log2(fast::clamp(fma(_444, _790, fma(_434, _792, spvFMul(_426, _794))), 0.0, 1.0)))); float _825 = spvFMul(_822, fma(0.125, _814, 0.25)); uint _829; if (_488) { _829 = as_type(fast::clamp(fast::max(_797, _797), 0.0, 1.0)); } else { _829 = as_type(_822); } uint _842; uint _843; uint _844; uint _845; if (_488) { float _831 = spvFMul(_807, as_type(_829)); _842 = as_type(spvFMul(as_type(cbuf_56.data[_741]), _831)); _843 = as_type(spvFMul(as_type(cbuf_56.data[_749]), _831)); _844 = as_type(_831); _845 = as_type(spvFMul(as_type(cbuf_56.data[_745]), _831)); } else { _842 = as_type(_792); _843 = as_type(_790); _844 = _829; _845 = as_type(_797); } uint _850; if (!_488) { _850 = as_type(fma(_197, 10.0, as_type(_845))); } else { _850 = _844; } uint _890; uint _891; uint _892; if (!_488) { float _880 = fma(_807, spvFMul(fast::max(0.0, as_type(_850)), 1.0 / _489), spvFMul(_470, spvFMul(_807, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_843), _409, fma(as_type(_842), _400, spvFMul(_392, _794))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _490))))); _890 = as_type(spvFMul(as_type(cbuf_56.data[_749]), _880)); _891 = as_type(spvFMul(as_type(cbuf_56.data[_745]), _880)); _892 = as_type(spvFMul(as_type(cbuf_56.data[_741]), _880)); } else { _890 = _843; _891 = _845; _892 = _842; } uint _921 = 52u + buf1_dword_off; uint _925 = 53u + buf1_dword_off; uint _929 = 54u + buf1_dword_off; uint _933 = 55u + buf1_dword_off; float _953 = fma(-_358, _325, as_type(cbuf_56.data[48u + buf1_dword_off])); float _956 = fma(-_354, _325, as_type(cbuf_56.data[49u + buf1_dword_off])); float _959 = fma(-_323, _325, as_type(cbuf_56.data[50u + buf1_dword_off])); float _963 = rsqrt(fma(_953, _953, fma(_956, _956, spvFMul(_959, _959)))); float _964 = spvFMul(_953, _963); float _966 = spvFMul(_956, _963); float _968 = spvFMul(_959, _963); float _971 = fma(_408, _964, fma(_399, _966, spvFMul(_391, _968))); float _980 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_953, _953, fma(_956, _956, spvFMul(_959, _959)))), 0.0, 1.0))); float _981 = spvFMul(_980, _980); float _988 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_933]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_933])))); float _996 = exp2(spvFMul(spvFMul(0.25, _988), log2(fast::clamp(fma(_444, _964, fma(_434, _966, spvFMul(_426, _968))), 0.0, 1.0)))); float _999 = spvFMul(_996, fma(0.125, _988, 0.25)); uint _1003; if (_488) { _1003 = as_type(fast::clamp(fast::max(_971, _971), 0.0, 1.0)); } else { _1003 = as_type(_996); } uint _1016; uint _1017; uint _1018; uint _1019; if (_488) { float _1005 = spvFMul(_981, as_type(_1003)); _1016 = as_type(spvFMul(as_type(cbuf_56.data[_921]), _1005)); _1017 = as_type(spvFMul(as_type(cbuf_56.data[_929]), _1005)); _1018 = as_type(_1005); _1019 = as_type(spvFMul(as_type(cbuf_56.data[_925]), _1005)); } else { _1016 = as_type(_966); _1017 = as_type(_964); _1018 = _1003; _1019 = as_type(_971); } uint _1024; if (!_488) { _1024 = as_type(fma(_197, 10.0, as_type(_1019))); } else { _1024 = _1018; } uint _1064; uint _1065; uint _1066; if (!_488) { float _1054 = fma(_981, spvFMul(fast::max(0.0, as_type(_1024)), 1.0 / _489), spvFMul(_470, spvFMul(_981, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1017), _409, fma(as_type(_1016), _400, spvFMul(_392, _968))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _490))))); _1064 = as_type(spvFMul(as_type(cbuf_56.data[_929]), _1054)); _1065 = as_type(spvFMul(as_type(cbuf_56.data[_925]), _1054)); _1066 = as_type(spvFMul(as_type(cbuf_56.data[_921]), _1054)); } else { _1064 = _1017; _1065 = _1019; _1066 = _1016; } uint _1096 = 68u + buf1_dword_off; uint _1100 = 69u + buf1_dword_off; uint _1104 = 70u + buf1_dword_off; uint _1108 = 71u + buf1_dword_off; float _1128 = fma(-_358, _325, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1131 = fma(-_354, _325, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1134 = fma(-_323, _325, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1138 = rsqrt(fma(_1128, _1128, fma(_1131, _1131, spvFMul(_1134, _1134)))); float _1139 = spvFMul(_1128, _1138); float _1141 = spvFMul(_1131, _1138); float _1143 = spvFMul(_1134, _1138); float _1146 = fma(_408, _1139, fma(_399, _1141, spvFMul(_391, _1143))); float _1155 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1128, _1128, fma(_1131, _1131, spvFMul(_1134, _1134)))), 0.0, 1.0))); float _1156 = spvFMul(_1155, _1155); float _1163 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1108]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_1108])))); float _1171 = exp2(spvFMul(spvFMul(0.25, _1163), log2(fast::clamp(fma(_444, _1139, fma(_434, _1141, spvFMul(_426, _1143))), 0.0, 1.0)))); float _1174 = spvFMul(_1171, fma(0.125, _1163, 0.25)); uint _1178; if (_488) { _1178 = as_type(fast::clamp(fast::max(_1146, _1146), 0.0, 1.0)); } else { _1178 = as_type(_1171); } uint _1191; uint _1192; uint _1193; uint _1194; if (_488) { float _1180 = spvFMul(_1156, as_type(_1178)); _1191 = as_type(spvFMul(as_type(cbuf_56.data[_1096]), _1180)); _1192 = as_type(spvFMul(as_type(cbuf_56.data[_1104]), _1180)); _1193 = as_type(_1180); _1194 = as_type(spvFMul(as_type(cbuf_56.data[_1100]), _1180)); } else { _1191 = as_type(_1141); _1192 = as_type(_1139); _1193 = _1178; _1194 = as_type(_1146); } uint _1199; if (!_488) { _1199 = as_type(fma(_197, 10.0, as_type(_1194))); } else { _1199 = _1193; } uint _1239; uint _1240; uint _1241; if (!_488) { float _1229 = fma(_1156, spvFMul(fast::max(0.0, as_type(_1199)), 1.0 / _489), spvFMul(_470, spvFMul(_1156, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1192), _409, fma(as_type(_1191), _400, spvFMul(_392, _1143))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _490))))); _1239 = as_type(spvFMul(as_type(cbuf_56.data[_1104]), _1229)); _1240 = as_type(spvFMul(as_type(cbuf_56.data[_1100]), _1229)); _1241 = as_type(spvFMul(as_type(cbuf_56.data[_1096]), _1229)); } else { _1239 = _1192; _1240 = _1194; _1241 = _1191; } uint _1271 = 84u + buf1_dword_off; uint _1275 = 85u + buf1_dword_off; uint _1279 = 86u + buf1_dword_off; uint _1283 = 87u + buf1_dword_off; float _1303 = fma(-_358, _325, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1306 = fma(-_354, _325, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1309 = fma(-_323, _325, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1313 = rsqrt(fma(_1303, _1303, fma(_1306, _1306, spvFMul(_1309, _1309)))); float _1314 = spvFMul(_1303, _1313); float _1316 = spvFMul(_1306, _1313); float _1318 = spvFMul(_1309, _1313); float _1321 = fma(_408, _1314, fma(_399, _1316, spvFMul(_391, _1318))); float _1330 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[83u + buf1_dword_off]), fma(_1303, _1303, fma(_1306, _1306, spvFMul(_1309, _1309)))), 0.0, 1.0))); float _1331 = spvFMul(_1330, _1330); float _1338 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1283]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_1283])))); float _1346 = exp2(spvFMul(spvFMul(0.25, _1338), log2(fast::clamp(fma(_444, _1314, fma(_434, _1316, spvFMul(_426, _1318))), 0.0, 1.0)))); float _1349 = spvFMul(_1346, fma(0.125, _1338, 0.25)); uint _1353; if (_488) { _1353 = as_type(fast::clamp(fast::max(_1321, _1321), 0.0, 1.0)); } else { _1353 = as_type(_1346); } uint _1366; uint _1367; uint _1368; uint _1369; if (_488) { float _1355 = spvFMul(_1331, as_type(_1353)); _1366 = as_type(spvFMul(as_type(cbuf_56.data[_1271]), _1355)); _1367 = as_type(spvFMul(as_type(cbuf_56.data[_1279]), _1355)); _1368 = as_type(_1355); _1369 = as_type(spvFMul(as_type(cbuf_56.data[_1275]), _1355)); } else { _1366 = as_type(_1316); _1367 = as_type(_1314); _1368 = _1353; _1369 = as_type(_1321); } uint _1374; if (!_488) { _1374 = as_type(fma(_197, 10.0, as_type(_1369))); } else { _1374 = _1368; } uint _1414; uint _1415; uint _1416; if (!_488) { float _1404 = fma(_1331, spvFMul(fast::max(0.0, as_type(_1374)), 1.0 / _489), spvFMul(_470, spvFMul(_1331, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1367), _409, fma(as_type(_1366), _400, spvFMul(_392, _1318))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _490))))); _1414 = as_type(spvFMul(as_type(cbuf_56.data[_1279]), _1404)); _1415 = as_type(spvFMul(as_type(cbuf_56.data[_1275]), _1404)); _1416 = as_type(spvFMul(as_type(cbuf_56.data[_1271]), _1404)); } else { _1414 = _1367; _1415 = _1369; _1416 = _1366; } uint _1446 = 100u + buf1_dword_off; uint _1450 = 101u + buf1_dword_off; uint _1454 = 102u + buf1_dword_off; uint _1458 = 103u + buf1_dword_off; float _1478 = fma(-_358, _325, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1481 = fma(-_354, _325, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1484 = fma(-_323, _325, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1488 = rsqrt(fma(_1478, _1478, fma(_1481, _1481, spvFMul(_1484, _1484)))); float _1489 = spvFMul(_1478, _1488); float _1491 = spvFMul(_1481, _1488); float _1493 = spvFMul(_1484, _1488); float _1496 = fma(_408, _1489, fma(_399, _1491, spvFMul(_391, _1493))); float _1505 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[99u + buf1_dword_off]), fma(_1478, _1478, fma(_1481, _1481, spvFMul(_1484, _1484)))), 0.0, 1.0))); float _1506 = spvFMul(_1505, _1505); float _1513 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1458]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_1458])))); float _1521 = exp2(spvFMul(spvFMul(0.25, _1513), log2(fast::clamp(fma(_444, _1489, fma(_434, _1491, spvFMul(_426, _1493))), 0.0, 1.0)))); float _1524 = spvFMul(_1521, fma(0.125, _1513, 0.25)); uint _1528; if (_488) { _1528 = as_type(fast::clamp(fast::max(_1496, _1496), 0.0, 1.0)); } else { _1528 = as_type(_1521); } uint _1541; uint _1542; uint _1543; uint _1544; if (_488) { float _1530 = spvFMul(_1506, as_type(_1528)); _1541 = as_type(spvFMul(as_type(cbuf_56.data[_1446]), _1530)); _1542 = as_type(spvFMul(as_type(cbuf_56.data[_1454]), _1530)); _1543 = as_type(_1530); _1544 = as_type(spvFMul(as_type(cbuf_56.data[_1450]), _1530)); } else { _1541 = as_type(_1491); _1542 = as_type(_1489); _1543 = _1528; _1544 = as_type(_1496); } uint _1549; if (!_488) { _1549 = as_type(fma(_197, 10.0, as_type(_1544))); } else { _1549 = _1543; } uint _1589; uint _1590; uint _1591; if (!_488) { float _1579 = fma(_1506, spvFMul(fast::max(0.0, as_type(_1549)), 1.0 / _489), spvFMul(_470, spvFMul(_1506, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1542), _409, fma(as_type(_1541), _400, spvFMul(_392, _1493))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _490))))); _1589 = as_type(spvFMul(as_type(cbuf_56.data[_1454]), _1579)); _1590 = as_type(spvFMul(as_type(cbuf_56.data[_1450]), _1579)); _1591 = as_type(spvFMul(as_type(cbuf_56.data[_1446]), _1579)); } else { _1589 = _1542; _1590 = _1544; _1591 = _1541; } uint _1621 = 116u + buf1_dword_off; uint _1625 = 117u + buf1_dword_off; uint _1629 = 118u + buf1_dword_off; uint _1633 = 119u + buf1_dword_off; float _1653 = fma(-_358, _325, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1656 = fma(-_354, _325, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1659 = fma(-_323, _325, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1663 = rsqrt(fma(_1653, _1653, fma(_1656, _1656, spvFMul(_1659, _1659)))); float _1664 = spvFMul(_1653, _1663); float _1666 = spvFMul(_1656, _1663); float _1668 = spvFMul(_1659, _1663); float _1671 = fma(_408, _1664, fma(_399, _1666, spvFMul(_391, _1668))); float _1680 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[115u + buf1_dword_off]), fma(_1653, _1653, fma(_1656, _1656, spvFMul(_1659, _1659)))), 0.0, 1.0))); float _1681 = spvFMul(_1680, _1680); float _1688 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1633]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_1633])))); float _1696 = exp2(spvFMul(spvFMul(0.25, _1688), log2(fast::clamp(fma(_444, _1664, fma(_434, _1666, spvFMul(_426, _1668))), 0.0, 1.0)))); float _1699 = spvFMul(_1696, fma(0.125, _1688, 0.25)); uint _1703; if (_488) { _1703 = as_type(fast::clamp(fast::max(_1671, _1671), 0.0, 1.0)); } else { _1703 = as_type(_1696); } uint _1716; uint _1717; uint _1718; uint _1719; if (_488) { float _1705 = spvFMul(_1681, as_type(_1703)); _1716 = as_type(spvFMul(as_type(cbuf_56.data[_1621]), _1705)); _1717 = as_type(spvFMul(as_type(cbuf_56.data[_1629]), _1705)); _1718 = as_type(_1705); _1719 = as_type(spvFMul(as_type(cbuf_56.data[_1625]), _1705)); } else { _1716 = as_type(_1666); _1717 = as_type(_1664); _1718 = _1703; _1719 = as_type(_1671); } uint _1724; if (!_488) { _1724 = as_type(fma(_197, 10.0, as_type(_1719))); } else { _1724 = _1718; } uint _1764; uint _1765; uint _1766; if (!_488) { float _1754 = fma(_1681, spvFMul(fast::max(0.0, as_type(_1724)), 1.0 / _489), spvFMul(_470, spvFMul(_1681, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1717), _409, fma(as_type(_1716), _400, spvFMul(_392, _1668))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), _490))))); _1764 = as_type(spvFMul(as_type(cbuf_56.data[_1629]), _1754)); _1765 = as_type(spvFMul(as_type(cbuf_56.data[_1625]), _1754)); _1766 = as_type(spvFMul(as_type(cbuf_56.data[_1621]), _1754)); } else { _1764 = _1717; _1765 = _1719; _1766 = _1716; } uint _1796 = 132u + buf1_dword_off; uint _1800 = 133u + buf1_dword_off; uint _1804 = 134u + buf1_dword_off; uint _1808 = 135u + buf1_dword_off; float _1828 = fma(-_358, _325, as_type(cbuf_56.data[128u + buf1_dword_off])); float _1831 = fma(-_354, _325, as_type(cbuf_56.data[129u + buf1_dword_off])); float _1834 = fma(-_323, _325, as_type(cbuf_56.data[130u + buf1_dword_off])); float _1838 = rsqrt(fma(_1828, _1828, fma(_1831, _1831, spvFMul(_1834, _1834)))); float _1839 = spvFMul(_1828, _1838); float _1841 = spvFMul(_1831, _1838); float _1843 = spvFMul(_1834, _1838); float _1846 = fma(_408, _1839, fma(_399, _1841, spvFMul(_391, _1843))); float _1855 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[131u + buf1_dword_off]), fma(_1828, _1828, fma(_1831, _1831, spvFMul(_1834, _1834)))), 0.0, 1.0))); float _1856 = spvFMul(_1855, _1855); float _1863 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1808]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_1808])))); float _1871 = exp2(spvFMul(spvFMul(0.25, _1863), log2(fast::clamp(fma(_444, _1839, fma(_434, _1841, spvFMul(_426, _1843))), 0.0, 1.0)))); float _1874 = spvFMul(_1871, fma(0.125, _1863, 0.25)); uint _1878; if (_488) { _1878 = as_type(fast::clamp(fast::max(_1846, _1846), 0.0, 1.0)); } else { _1878 = as_type(_1871); } uint _1891; uint _1892; uint _1893; uint _1894; if (_488) { float _1880 = spvFMul(_1856, as_type(_1878)); _1891 = as_type(spvFMul(as_type(cbuf_56.data[_1796]), _1880)); _1892 = as_type(spvFMul(as_type(cbuf_56.data[_1804]), _1880)); _1893 = as_type(_1880); _1894 = as_type(spvFMul(as_type(cbuf_56.data[_1800]), _1880)); } else { _1891 = as_type(_1841); _1892 = as_type(_1839); _1893 = _1878; _1894 = as_type(_1846); } uint _1899; if (!_488) { _1899 = as_type(fma(_197, 10.0, as_type(_1894))); } else { _1899 = _1893; } uint _1939; uint _1940; uint _1941; if (!_488) { float _1929 = fma(_1856, spvFMul(fast::max(0.0, as_type(_1899)), 1.0 / _489), spvFMul(_470, spvFMul(_1856, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[141u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1892), _409, fma(as_type(_1891), _400, spvFMul(_392, _1843))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[140u + buf1_dword_off]), _490))))); _1939 = as_type(spvFMul(as_type(cbuf_56.data[_1804]), _1929)); _1940 = as_type(spvFMul(as_type(cbuf_56.data[_1800]), _1929)); _1941 = as_type(spvFMul(as_type(cbuf_56.data[_1796]), _1929)); } else { _1939 = _1892; _1940 = _1894; _1941 = _1891; } uint _1971 = 148u + buf1_dword_off; uint _1975 = 149u + buf1_dword_off; uint _1979 = 150u + buf1_dword_off; uint _1983 = 151u + buf1_dword_off; float _1998 = fma(spvFMul(as_type(cbuf_56.data[136u + buf1_dword_off]), _1874), _1856, fma(spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1699), _1681, fma(spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1524), _1506, fma(spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1349), _1331, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1174), _1156, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _999), _981, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _825), _807, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _494), _493, spvFMul(_629, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _647)))))))))); float _1999 = fma(spvFMul(as_type(cbuf_56.data[137u + buf1_dword_off]), _1874), _1856, fma(spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1699), _1681, fma(spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1524), _1506, fma(spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1349), _1331, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1174), _1156, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _999), _981, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _825), _807, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _494), _493, spvFMul(_629, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _647)))))))))); float _2000 = fma(spvFMul(as_type(cbuf_56.data[138u + buf1_dword_off]), _1874), _1856, fma(spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1699), _1681, fma(spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1524), _1506, fma(spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1349), _1331, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1174), _1156, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _999), _981, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _825), _807, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _494), _493, spvFMul(_629, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _647)))))))))); float _2003 = fma(-_358, _325, as_type(cbuf_56.data[144u + buf1_dword_off])); float _2006 = fma(-_354, _325, as_type(cbuf_56.data[145u + buf1_dword_off])); float _2009 = fma(-_323, _325, as_type(cbuf_56.data[146u + buf1_dword_off])); float _2013 = rsqrt(fma(_2003, _2003, fma(_2006, _2006, spvFMul(_2009, _2009)))); float _2014 = spvFMul(_2003, _2013); float _2016 = spvFMul(_2006, _2013); float _2018 = spvFMul(_2009, _2013); float _2021 = fma(_408, _2014, fma(_399, _2016, spvFMul(_391, _2018))); float _2030 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[147u + buf1_dword_off]), fma(_2003, _2003, fma(_2006, _2006, spvFMul(_2009, _2009)))), 0.0, 1.0))); float _2031 = spvFMul(_2030, _2030); float _2038 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1983]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_1983])))); float _2046 = exp2(spvFMul(spvFMul(0.25, _2038), log2(fast::clamp(fma(_444, _2014, fma(_434, _2016, spvFMul(_426, _2018))), 0.0, 1.0)))); float _2049 = spvFMul(_2046, fma(0.125, _2038, 0.25)); uint _2053; if (_488) { _2053 = as_type(fast::clamp(fast::max(_2021, _2021), 0.0, 1.0)); } else { _2053 = as_type(_2046); } uint _2066; uint _2067; uint _2068; uint _2069; if (_488) { float _2055 = spvFMul(_2031, as_type(_2053)); _2066 = as_type(spvFMul(as_type(cbuf_56.data[_1971]), _2055)); _2067 = as_type(spvFMul(as_type(cbuf_56.data[_1979]), _2055)); _2068 = as_type(_2055); _2069 = as_type(spvFMul(as_type(cbuf_56.data[_1975]), _2055)); } else { _2066 = as_type(_2016); _2067 = as_type(_2014); _2068 = _2053; _2069 = as_type(_2021); } uint _2074; if (!_488) { _2074 = as_type(fma(_197, 10.0, as_type(_2069))); } else { _2074 = _2068; } uint _2114; uint _2115; uint _2116; if (!_488) { float _2104 = fma(_2031, spvFMul(fast::max(0.0, as_type(_2074)), 1.0 / _489), spvFMul(_470, spvFMul(_2031, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[157u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_2067), _409, fma(as_type(_2066), _400, spvFMul(_392, _2018))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[156u + buf1_dword_off]), _490))))); _2114 = as_type(spvFMul(as_type(cbuf_56.data[_1979]), _2104)); _2115 = as_type(spvFMul(as_type(cbuf_56.data[_1975]), _2104)); _2116 = as_type(spvFMul(as_type(cbuf_56.data[_1971]), _2104)); } else { _2114 = _2067; _2115 = _2069; _2116 = _2066; } uint _2134 = 164u + buf1_dword_off; uint _2138 = 165u + buf1_dword_off; uint _2142 = 166u + buf1_dword_off; uint _2146 = 167u + buf1_dword_off; float _2157 = fma(-_323, _325, as_type(cbuf_56.data[162u + buf1_dword_off])); float _2160 = fma(-_354, _325, as_type(cbuf_56.data[161u + buf1_dword_off])); float _2164 = fma(-_358, _325, as_type(cbuf_56.data[160u + buf1_dword_off])); float _2167 = rsqrt(fma(_2164, _2164, fma(_2160, _2160, spvFMul(_2157, _2157)))); float _2168 = spvFMul(_2157, _2167); float _2183 = spvFMul(_2160, _2167); float _2189 = spvFMul(_2164, _2167); float _2194 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_2146]), _421), 1.0 / fma(_421, 0.01000213623046875, as_type(cbuf_56.data[_2146])))); float _2212 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[163u + buf1_dword_off]), fma(_2164, _2164, fma(_2160, _2160, spvFMul(_2157, _2157)))), 0.0, 1.0))); float _2219 = fma(_408, _2189, fma(_399, _2183, spvFMul(_391, _2168))); float _2220 = spvFMul(_2212, _2212); float _2221 = spvFMul(exp2(spvFMul(spvFMul(0.25, _2194), log2(fast::clamp(fma(_444, _2189, fma(_434, _2183, spvFMul(_426, _2168))), 0.0, 1.0)))), fma(0.125, _2194, 0.25)); uint _2225; if (_488) { _2225 = as_type(fast::clamp(fast::max(_2219, _2219), 0.0, 1.0)); } else { _2225 = as_type(_490); } uint _2238; uint _2239; uint _2240; uint _2241; if (_488) { float _2227 = spvFMul(_2220, as_type(_2225)); _2238 = as_type(spvFMul(as_type(cbuf_56.data[_2134]), _2227)); _2239 = as_type(spvFMul(as_type(cbuf_56.data[_2142]), _2227)); _2240 = as_type(spvFMul(as_type(cbuf_56.data[_2138]), _2227)); _2241 = as_type(_2227); } else { _2238 = as_type(_2212); _2239 = as_type(_400); _2240 = as_type(_409); _2241 = _2225; } uint _2245; if (!_488) { _2245 = as_type(fma(_197, 10.0, _2219)); } else { _2245 = _2238; } uint _2286; uint _2287; uint _2288; if (!_488) { float _2276 = fma(_2220, spvFMul(fast::max(0.0, as_type(_2245)), 1.0 / _489), spvFMul(_470, spvFMul(_2220, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[173u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_2189, as_type(_2240), fma(_2183, as_type(_2239), spvFMul(_392, _2168))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[172u + buf1_dword_off]), as_type(_2241)))))); _2286 = as_type(spvFMul(as_type(cbuf_56.data[_2142]), _2276)); _2287 = as_type(spvFMul(as_type(cbuf_56.data[_2138]), _2276)); _2288 = as_type(spvFMul(as_type(cbuf_56.data[_2134]), _2276)); } else { _2286 = _2239; _2287 = _2240; _2288 = _2245; } float _2302 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_557), as_type(_714)), as_type(_892)), as_type(_1066)), as_type(_1241)), as_type(_1416)), as_type(_1591)), as_type(_1766)), as_type(_1941)), as_type(_2116)), as_type(_2288)); float _2304 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_556), as_type(_713)), as_type(_891)), as_type(_1065)), as_type(_1240)), as_type(_1415)), as_type(_1590)), as_type(_1765)), as_type(_1940)), as_type(_2115)), as_type(_2287)); float _2306 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_555), as_type(_712)), as_type(_890)), as_type(_1064)), as_type(_1239)), as_type(_1414)), as_type(_1589)), as_type(_1764)), as_type(_1939)), as_type(_2114)), as_type(_2286)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_485, spvFMul(_484, fma(spvFMul(as_type(cbuf_56.data[168u + buf1_dword_off]), _2221), _2220, fma(spvFMul(as_type(cbuf_56.data[152u + buf1_dword_off]), _2049), _2031, _1998)))); out.frag_color1.y = spvFMul(_486, spvFMul(_484, fma(spvFMul(as_type(cbuf_56.data[169u + buf1_dword_off]), _2221), _2220, fma(spvFMul(as_type(cbuf_56.data[153u + buf1_dword_off]), _2049), _2031, _1999)))); out.frag_color1.z = spvFMul(_487, spvFMul(_484, fma(spvFMul(as_type(cbuf_56.data[170u + buf1_dword_off]), _2221), _2220, fma(spvFMul(as_type(cbuf_56.data[154u + buf1_dword_off]), _2049), _2031, _2000)))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_484, spvFSub(_2302, spvFMul(spvFMul(_485, _2302), 0.5))); out.frag_color0.y = spvFMul(_484, spvFSub(_2304, spvFMul(spvFMul(_486, _2304), 0.5))); out.frag_color0.z = spvFMul(_484, spvFSub(_2306, spvFMul(spvFMul(_487, _2306), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x11ffdfb5 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x61fbbf6 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _78 = 6u + buf0_dword_off; uint _89 = 10u + buf0_dword_off; uint _101 = 14u + buf0_dword_off; uint _113 = 18u + buf0_dword_off; uint _125 = 22u + buf0_dword_off; uint _141 = 26u + buf0_dword_off; uint _157 = 30u + buf0_dword_off; float4 _168 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _169 = _168.x; float _170 = _168.y; float _171 = _168.z; float4 _177 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[4u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[5u + buf0_dword_off]), in.fs_in_attr1.y))); uint _191 = 34u + buf0_dword_off; float4 _202 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[8u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[9u + buf0_dword_off]), in.fs_in_attr1.y))); uint _216 = 38u + buf0_dword_off; float4 _227 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[12u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[13u + buf0_dword_off]), in.fs_in_attr1.y))); uint _241 = 42u + buf0_dword_off; float4 _252 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[16u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[17u + buf0_dword_off]), in.fs_in_attr1.y))); uint _266 = 46u + buf0_dword_off; float4 _277 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[20u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[21u + buf0_dword_off]), in.fs_in_attr1.y))); uint _291 = 50u + buf0_dword_off; float4 _302 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[24u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[25u + buf0_dword_off]), in.fs_in_attr1.y))); float4 _315 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[28u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[29u + buf0_dword_off]), in.fs_in_attr1.y))); float4 _328 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[32u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[33u + buf0_dword_off]), in.fs_in_attr1.y))); float4 _341 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[36u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[37u + buf0_dword_off]), in.fs_in_attr1.y))); float4 _354 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[40u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[41u + buf0_dword_off]), in.fs_in_attr1.y))); float4 _367 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[44u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[45u + buf0_dword_off]), in.fs_in_attr1.y))); float4 _376 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[48u + buf0_dword_off]), in.fs_in_attr1.x), spvFAdd(as_type(cbuf_16.data[49u + buf0_dword_off]), in.fs_in_attr1.y))); uint _381 = 0u + buf0_dword_off; uint _384 = 1u + buf0_dword_off; float _406 = 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_171, 1.0, fma(_169, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _170)))); float _420 = spvFMul(-as_type(cbuf_16.data[_384]), _406); float _430 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_177.z, 1.0, fma(_177.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _177.y)))))); float _447 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_202.z, 1.0, fma(_202.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _202.y)))))); float _459 = 1.0 / spvFMul(0.693147182464599609375, spvFMul(_420, _420)); float _465 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_227.z, 1.0, fma(_227.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _227.y)))))); float _482 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_252.z, 1.0, fma(_252.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _252.y)))))); float _492 = exp2(spvFMul(spvFMul(100.0, spvFMul(_430, -_430)), _459)); float _500 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_277.z, 1.0, fma(_277.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _277.y)))))); float _514 = exp2(spvFMul(spvFMul(100.0, spvFMul(_447, -_447)), _459)); float _522 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_302.z, 1.0, fma(_302.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _302.y)))))); float _537 = exp2(spvFMul(spvFMul(100.0, spvFMul(_465, -_465)), _459)); float _545 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_315.z, 1.0, fma(_315.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _315.y)))))); float _559 = exp2(spvFMul(spvFMul(100.0, spvFMul(_482, -_482)), _459)); float _567 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_328.z, 1.0, fma(_328.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _328.y)))))); float _580 = exp2(spvFMul(spvFMul(100.0, spvFMul(_500, -_500)), _459)); float _588 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_341.z, 1.0, fma(_341.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _341.y)))))); float _600 = exp2(spvFMul(spvFMul(100.0, spvFMul(_522, -_522)), _459)); float _608 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_354.z, 1.0, fma(_354.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _354.y)))))); float _618 = exp2(spvFMul(spvFMul(100.0, spvFMul(_545, -_545)), _459)); float _626 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_367.z, 1.0, fma(_367.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _367.y)))))); float _635 = exp2(spvFMul(spvFMul(100.0, spvFMul(_567, -_567)), _459)); float _643 = fma(-as_type(cbuf_16.data[_384]), _406, -spvFMul(-as_type(cbuf_16.data[_384]), 1.0 / spvFSub(as_type(cbuf_16.data[_381]), fma(_376.z, 1.0, fma(_376.x, 1.5378700481960549950599670410156e-05, spvFMul(0.0039215688593685626983642578125, _376.y)))))); float _649 = exp2(spvFMul(spvFMul(100.0, spvFMul(_588, -_588)), _459)); float _654 = fma(_328.w, spvFMul(as_type(cbuf_16.data[_191]), _635), fma(_315.w, spvFMul(as_type(cbuf_16.data[_157]), _618), fma(_302.w, spvFMul(as_type(cbuf_16.data[_141]), _600), fma(_277.w, spvFMul(as_type(cbuf_16.data[_125]), _580), fma(_252.w, spvFMul(as_type(cbuf_16.data[_113]), _559), fma(_227.w, spvFMul(as_type(cbuf_16.data[_101]), _537), fma(_202.w, spvFMul(as_type(cbuf_16.data[_89]), _514), fma(_177.w, spvFMul(as_type(cbuf_16.data[_78]), _492), _168.w)))))))); float _659 = exp2(spvFMul(spvFMul(100.0, spvFMul(_608, -_608)), _459)); float _667 = exp2(spvFMul(spvFMul(100.0, spvFMul(_626, -_626)), _459)); float _674 = exp2(spvFMul(spvFMul(100.0, spvFMul(_643, -_643)), _459)); float _679 = fma(as_type(cbuf_16.data[_291]), _674, fma(as_type(cbuf_16.data[_266]), _667, fma(as_type(cbuf_16.data[_241]), _659, fma(as_type(cbuf_16.data[_216]), _649, fma(as_type(cbuf_16.data[_191]), _635, fma(as_type(cbuf_16.data[_157]), _618, fma(as_type(cbuf_16.data[_141]), _600, fma(as_type(cbuf_16.data[_125]), _580, fma(as_type(cbuf_16.data[_113]), _559, fma(as_type(cbuf_16.data[_101]), _537, fma(as_type(cbuf_16.data[_89]), _514, fma(as_type(cbuf_16.data[_78]), _492, 1.0)))))))))))); out.frag_color0.x = _169; out.frag_color0.y = _170; out.frag_color0.z = _171; out.frag_color0.w = spvFMul(fma(_376.w, spvFMul(as_type(cbuf_16.data[_291]), _674), fma(_367.w, spvFMul(as_type(cbuf_16.data[_266]), _667), fma(_354.w, spvFMul(as_type(cbuf_16.data[_241]), _659), fma(_341.w, spvFMul(as_type(cbuf_16.data[_216]), _649), _654)))), 1.0 / _679); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Tty] logger.cpp:log_flush:60: [stdout] == Stall during rendering at flush 110 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x9e1cb278 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xd3ca03f3 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _80 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _84 = _80.w; float4 _93 = fs_img16.sample(fs_samp24, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float _94 = _93.x; float _95 = _93.y; float _96 = _93.z; float _113 = fast::clamp(spvFAdd(-fma(as_type(cbuf_28.data[76u + buf0_dword_off]), _84, as_type(cbuf_28.data[77u + buf0_dword_off])), 2.0), 0.0, 1.0); out.frag_color0.x = fma(_113, spvFSub(_80.x, _94), _94); out.frag_color0.y = fma(_113, spvFSub(_80.y, _95), _95); out.frag_color0.z = fma(_113, spvFSub(_80.z, _96), _96); out.frag_color0.w = _84; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xe0305cef [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; constant uint _90 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _99 = 744u + buf0_dword_off; uint _103 = 745u + buf0_dword_off; uint _107 = 746u + buf0_dword_off; uint _111 = 747u + buf0_dword_off; float4 _126 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _127 = _126.x; uint _128 = as_type(_127); float _129 = _126.y; uint _130 = as_type(_129); float _131 = _126.z; uint _132 = as_type(_131); float _133 = _126.w; uint _134 = as_type(_133); float4 _139 = fs_img16.sample(fs_samp24, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _140 = _139.x; float _141 = _139.y; float _146 = fma(as_type(cbuf_28.data[_99]), _140, as_type(cbuf_28.data[_107])); uint _147 = as_type(_146); float _150 = fma(as_type(cbuf_28.data[_103]), _141, as_type(cbuf_28.data[_111])); bool _155 = as_type(cbuf_28.data[754u + buf0_dword_off]) <= spvFAdd(abs(_146), abs(_150)); uint _410; uint _411; uint _412; uint _413; uint _414; uint _415; uint _416; if (_155) { uint _181 = 760u + buf0_dword_off; uint _185 = 761u + buf0_dword_off; uint _189 = 762u + buf0_dword_off; uint _193 = 763u + buf0_dword_off; float _198 = sqrt(fma(_150, _150, spvFMul(_146, _146))); float _201 = fma(as_type(cbuf_28.data[748u + buf0_dword_off]), _140, as_type(cbuf_28.data[750u + buf0_dword_off])); float _205 = fma(as_type(cbuf_28.data[749u + buf0_dword_off]), _141, as_type(cbuf_28.data[751u + buf0_dword_off])); float _208 = spvFAdd(as_type(cbuf_28.data[757u + buf0_dword_off]), _133); float _211 = spvFMul(_198, spvFMul(as_type(cbuf_28.data[756u + buf0_dword_off]), _198)); float _212 = spvFSub(in.fs_in_attr0.x, _201); float _213 = spvFSub(in.fs_in_attr0.y, _205); float _220 = spvFAdd(in.fs_in_attr0.x, _201); float _222 = spvFAdd(in.fs_in_attr0.y, _205); bool _236 = _155 && ((1.0 >= abs(fma(as_type(cbuf_28.data[_185]), _213, as_type(cbuf_28.data[_193])))) && (1.0 >= abs(fma(as_type(cbuf_28.data[_181]), _212, as_type(cbuf_28.data[_189]))))); uint _283; uint _284; uint _285; uint _286; uint _287; uint _288; if (_236) { float4 _241 = fs_img16.sample(fs_samp24, float2(_212, _213), level(0.0)); float4 _248 = fs_img4.sample(fs_samp12, float2(_212, _213), level(0.0)); float _252 = _248.w; float _258 = fma(as_type(cbuf_28.data[_103]), _241.y, as_type(cbuf_28.data[_111])); float _261 = fma(_258, _150, spvFMul(_146, fma(as_type(cbuf_28.data[_99]), _241.x, as_type(cbuf_28.data[_107])))); bool _266 = _236 && ((_252 >= _208) || (_261 > _211)); uint _267; if (_266) { _267 = 1073741824u; } else { _267 = as_type(_261); } uint _276; uint _277; uint _278; uint _279; if (_266) { _276 = as_type(spvFAdd(_133, _252)); _277 = as_type(spvFAdd(_131, _248.z)); _278 = as_type(spvFAdd(_129, _248.y)); _279 = as_type(spvFAdd(_127, _248.x)); } else { _276 = _134; _277 = _132; _278 = _130; _279 = _128; } uint _282; if (_236 && (!_266)) { _282 = 1065353216u; } else { _282 = _267; } _283 = _276; _284 = _277; _285 = _278; _286 = _279; _287 = _282; _288 = as_type(_258); } else { _283 = _134; _284 = _132; _285 = _130; _286 = _128; _287 = as_type(_205); _288 = as_type(_201); } uint _291; if (_155 && (!_236)) { _291 = 1065353216u; } else { _291 = _287; } bool _297 = _155 && ((1.0 >= abs(fma(as_type(cbuf_28.data[_185]), _222, as_type(cbuf_28.data[_193])))) && (1.0 >= abs(fma(as_type(cbuf_28.data[_181]), _220, as_type(cbuf_28.data[_189]))))); uint _299; if (_297) { _299 = as_type(_220); } else { _299 = _288; } uint _358; uint _359; uint _360; uint _361; uint _362; if (_297) { float4 _305 = fs_img16.sample(fs_samp24, float2(as_type(_299), _222), level(0.0)); float4 _313 = fs_img4.sample(fs_samp12, float2(as_type(_299), _222), level(0.0)); float _317 = _313.w; float _323 = fma(as_type(cbuf_28.data[_103]), _305.y, as_type(cbuf_28.data[_111])); float _326 = fma(_323, _150, spvFMul(_146, fma(as_type(cbuf_28.data[_99]), _305.x, as_type(cbuf_28.data[_107])))); bool _331 = _297 && ((_317 >= _208) || (_326 > _211)); uint _335; if (_331) { _335 = as_type(spvFAdd(1.0, as_type(_291))); } else { _335 = as_type(_326); } uint _348; uint _349; uint _350; uint _351; if (_331) { _348 = as_type(spvFAdd(as_type(_283), _317)); _349 = as_type(spvFAdd(as_type(_285), _313.y)); _350 = as_type(spvFAdd(as_type(_286), _313.x)); _351 = as_type(spvFAdd(as_type(_284), _313.z)); } else { _348 = _283; _349 = as_type(_323); _350 = _147; _351 = _291; } uint _354; uint _355; uint _356; uint _357; if (_297 && (!_331)) { _354 = _285; _355 = _286; _356 = _351; _357 = _284; } else { _354 = _349; _355 = _350; _356 = _335; _357 = _351; } _358 = _348; _359 = _354; _360 = _355; _361 = _356; _362 = _357; } else { _358 = _283; _359 = as_type(_220); _360 = _147; _361 = as_type(_222); _362 = _291; } uint _365; uint _366; uint _367; uint _368; if (_155 && (!_297)) { _365 = _284; _366 = _285; _367 = _286; _368 = _362; } else { _365 = _362; _366 = _359; _367 = _360; _368 = _361; } float _386 = 1.0 / as_type(_368); float _388 = spvFMul(as_type(cbuf_28.data[628u + buf0_dword_off]), _386); float _391 = spvFMul(as_type(cbuf_28.data[629u + buf0_dword_off]), _386); float _394 = spvFMul(as_type(cbuf_28.data[630u + buf0_dword_off]), _386); _410 = as_type(spvFMul(as_type(_358), spvFMul(as_type(cbuf_28.data[631u + buf0_dword_off]), _386))); _411 = as_type(spvFMul(as_type(_367), _388)); _412 = as_type(spvFMul(as_type(_365), _394)); _413 = as_type(spvFMul(as_type(_366), _391)); _414 = as_type(_394); _415 = as_type(_391); _416 = as_type(_388); } else { _410 = _134; _411 = as_type(_141); _412 = _90; _413 = _147; _414 = _132; _415 = _130; _416 = _128; } uint _418; uint _419; uint _420; if (!_155) { _418 = _414; _419 = _415; _420 = _416; } else { _418 = _412; _419 = _413; _420 = _411; } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_420); out.frag_color0.y = as_type(_419); out.frag_color0.z = as_type(_418); out.frag_color0.w = as_type(_410); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x3c2b7974 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x84b3a182 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; uint _93 = 60u + buf1_dword_off; out.out_attr0.x = fma(as_type(cbuf_8.data[896u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[897u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[898u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[899u + buf1_dword_off])))); out.out_attr0.y = fma(as_type(cbuf_8.data[900u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[901u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[902u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[903u + buf1_dword_off])))); out.out_attr0.z = fma(as_type(cbuf_8.data[904u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[905u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[906u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[907u + buf1_dword_off])))); out.out_attr0.w = fma(as_type(cbuf_8.data[908u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[909u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[910u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[911u + buf1_dword_off])))); out.out_attr1.x = fma(as_type(cbuf_8.data[912u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[913u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[914u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[915u + buf1_dword_off])))); out.out_attr1.y = fma(as_type(cbuf_8.data[916u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[917u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[918u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[919u + buf1_dword_off])))); out.out_attr1.z = fma(as_type(cbuf_8.data[920u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[921u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[922u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[923u + buf1_dword_off])))); out.out_attr1.w = fma(as_type(cbuf_8.data[924u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[925u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[926u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[927u + buf1_dword_off])))); out.out_attr2.x = fma(as_type(cbuf_8.data[928u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[929u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[930u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[931u + buf1_dword_off])))); out.out_attr2.y = fma(as_type(cbuf_8.data[932u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[933u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[934u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[935u + buf1_dword_off])))); out.out_attr2.z = fma(as_type(cbuf_8.data[936u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[937u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[938u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[939u + buf1_dword_off])))); out.out_attr2.w = fma(as_type(cbuf_8.data[940u + buf1_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[941u + buf1_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[942u + buf1_dword_off]), as_type(cbuf_8.data[_93]), as_type(cbuf_8.data[943u + buf1_dword_off])))); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _83 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _96 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _105 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_16.data[624u + buf0_dword_off]), _105.x, fma(as_type(cbuf_16.data[616u + buf0_dword_off]), _96.x, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), _83.x))); out.frag_color0.y = fma(as_type(cbuf_16.data[625u + buf0_dword_off]), _105.y, fma(as_type(cbuf_16.data[617u + buf0_dword_off]), _96.y, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), _83.y))); out.frag_color0.z = fma(as_type(cbuf_16.data[626u + buf0_dword_off]), _105.z, fma(as_type(cbuf_16.data[618u + buf0_dword_off]), _96.z, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), _83.z))); out.frag_color0.w = fma(as_type(cbuf_16.data[627u + buf0_dword_off]), _105.w, fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _96.w, spvFMul(as_type(cbuf_16.data[623u + buf0_dword_off]), _83.w))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x4eb5a42f [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _81 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _103 = spvFMul(as_type(cbuf_16.data[618u + buf0_dword_off]), _81.z); float _105 = spvFMul(as_type(cbuf_16.data[617u + buf0_dword_off]), _81.y); float _109 = spvFMul(as_type(cbuf_16.data[616u + buf0_dword_off]), _81.x); float _112 = fma(_109, 0.3333333432674407958984375, fma(_105, 0.3333333432674407958984375, spvFMul(0.3333333432674407958984375, _103))); float _118 = 1.0 / spvFAdd(2.384185791015625e-07, _112); float _119 = fast::max(0.0, spvFSub(_112, as_type(cbuf_16.data[627u + buf0_dword_off]))); float _121 = spvFMul(_109, _118); float _123 = spvFMul(_105, _118); float _125 = spvFMul(_103, _118); bool _127 = 0.0 < _119; uint _152; uint _153; uint _154; uint _155; if (_127) { float _144 = spvFMul(as_type(cbuf_16.data[839u + buf0_dword_off]), spvFAdd(-1.0, spvFAdd(_119, sqrt(fma(_119, spvFAdd(as_type(cbuf_16.data[836u + buf0_dword_off]), _119), 1.0))))); _152 = as_type(_144); _153 = as_type(spvFMul(_125, _144)); _154 = as_type(spvFMul(_123, _144)); _155 = as_type(spvFMul(_121, _144)); } else { _152 = as_type(_119); _153 = as_type(_125); _154 = as_type(_123); _155 = as_type(_121); } uint _169; uint _170; uint _171; if (!_127) { _169 = as_type(spvFMul(as_type(_153), as_type(_152))); _170 = as_type(spvFMul(as_type(_154), as_type(_152))); _171 = as_type(spvFMul(as_type(_155), as_type(_152))); } else { _169 = _153; _170 = _154; _171 = _155; } if (false) { discard_fragment(); } out.frag_color0.x = fast::max(0.0, fast::min(64000.0, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), as_type(_171)))); out.frag_color0.y = fast::max(0.0, fast::min(64000.0, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), as_type(_170)))); out.frag_color0.z = fast::max(0.0, fast::min(64000.0, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), as_type(_169)))); out.frag_color0.w = _81.w; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x16f68017 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = spvFAdd(as_type(cbuf_8.data[136u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr0.y = spvFAdd(as_type(cbuf_8.data[137u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = spvFAdd(as_type(cbuf_8.data[140u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr1.y = spvFAdd(as_type(cbuf_8.data[141u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFAdd(as_type(cbuf_8.data[144u + buf1_dword_off]), in.vs_in_attr1.x); out.out_attr2.y = spvFAdd(as_type(cbuf_8.data[145u + buf1_dword_off]), in.vs_in_attr1.y); out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x554225f5 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7d668276 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], texture2d fs_img52 [[texture(0)]], texture2d fs_img44 [[texture(1)]], texture2d fs_img60 [[texture(2)]], texture2d fs_img68 [[texture(3)]], texture2d fs_img76 [[texture(4)]], texture2d fs_img84 [[texture(5)]], texture2d fs_img92 [[texture(6)]], texture2d fs_img100 [[texture(7)]], sampler fs_samp8 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp24 [[sampler(4)]], sampler fs_samp28 [[sampler(5)]], sampler fs_samp32 [[sampler(6)]], sampler fs_samp36 [[sampler(7)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _91 = fs_img52.sample(fs_samp8, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _100 = fs_img44.sample(fs_samp4, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _109 = fs_img60.sample(fs_samp16, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _118 = fs_img68.sample(fs_samp20, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _127 = fs_img76.sample(fs_samp24, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _136 = fs_img84.sample(fs_samp28, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _145 = fs_img92.sample(fs_samp32, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _154 = fs_img100.sample(fs_samp36, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_40.data[644u + buf0_dword_off]), _154.x, fma(as_type(cbuf_40.data[640u + buf0_dword_off]), _145.x, fma(as_type(cbuf_40.data[636u + buf0_dword_off]), _136.x, fma(as_type(cbuf_40.data[632u + buf0_dword_off]), _127.x, fma(as_type(cbuf_40.data[628u + buf0_dword_off]), _118.x, fma(as_type(cbuf_40.data[624u + buf0_dword_off]), _109.x, fma(as_type(cbuf_40.data[616u + buf0_dword_off]), _100.x, spvFMul(as_type(cbuf_40.data[620u + buf0_dword_off]), _91.x)))))))); out.frag_color0.y = fma(as_type(cbuf_40.data[645u + buf0_dword_off]), _154.y, fma(as_type(cbuf_40.data[641u + buf0_dword_off]), _145.y, fma(as_type(cbuf_40.data[637u + buf0_dword_off]), _136.y, fma(as_type(cbuf_40.data[633u + buf0_dword_off]), _127.y, fma(as_type(cbuf_40.data[629u + buf0_dword_off]), _118.y, fma(as_type(cbuf_40.data[625u + buf0_dword_off]), _109.y, fma(as_type(cbuf_40.data[617u + buf0_dword_off]), _100.y, spvFMul(as_type(cbuf_40.data[621u + buf0_dword_off]), _91.y)))))))); out.frag_color0.z = fma(as_type(cbuf_40.data[646u + buf0_dword_off]), _154.z, fma(as_type(cbuf_40.data[642u + buf0_dword_off]), _145.z, fma(as_type(cbuf_40.data[638u + buf0_dword_off]), _136.z, fma(as_type(cbuf_40.data[634u + buf0_dword_off]), _127.z, fma(as_type(cbuf_40.data[630u + buf0_dword_off]), _118.z, fma(as_type(cbuf_40.data[626u + buf0_dword_off]), _109.z, fma(as_type(cbuf_40.data[618u + buf0_dword_off]), _100.z, spvFMul(as_type(cbuf_40.data[622u + buf0_dword_off]), _91.z)))))))); out.frag_color0.w = fma(as_type(cbuf_40.data[647u + buf0_dword_off]), _154.w, fma(as_type(cbuf_40.data[643u + buf0_dword_off]), _145.w, fma(as_type(cbuf_40.data[639u + buf0_dword_off]), _136.w, fma(as_type(cbuf_40.data[635u + buf0_dword_off]), _127.w, fma(as_type(cbuf_40.data[631u + buf0_dword_off]), _118.w, fma(as_type(cbuf_40.data[627u + buf0_dword_off]), _109.w, fma(as_type(cbuf_40.data[619u + buf0_dword_off]), _100.w, spvFMul(as_type(cbuf_40.data[623u + buf0_dword_off]), _91.w)))))))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x955b20c9 [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xda1faca9 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xdc609f83 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(11)]]) { main0_out out = {}; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; out.gl_Position.x = in.vs_in_attr0.x; out.gl_Position.y = in.vs_in_attr0.y; out.gl_Position.z = in.vs_in_attr0.z; out.gl_Position.w = in.vs_in_attr0.w; uint _82 = 2u + buf2_dword_off; uint _85 = 3u + buf2_dword_off; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = fma(-as_type(cbuf_8.data[_82]), 0.75, in.vs_in_attr1.x); out.out_attr0.w = fma(-as_type(cbuf_8.data[_85]), 0.75, in.vs_in_attr1.y); out.out_attr1.x = spvFSub(in.vs_in_attr1.x, spvFMul(fast::max(as_type(cbuf_8.data[_82]), as_type(cbuf_8.data[_82])), 0.5)); out.out_attr1.y = spvFSub(in.vs_in_attr1.y, spvFMul(fast::max(as_type(cbuf_8.data[_85]), as_type(cbuf_8.data[_85])), 0.5)); out.out_attr1.z = fma(0.5, as_type(cbuf_8.data[_82]), in.vs_in_attr1.x); out.out_attr1.w = fma(0.5, as_type(cbuf_8.data[_85]), in.vs_in_attr1.y); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[40]; }; struct fs_cbuf_block_f32_1 { uint data[12]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_20 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_16 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _235 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[0u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[1u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _243 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[4u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[5u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _251 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[2u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[3u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _259 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[6u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[7u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _275 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[8u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[9u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _283 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[10u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[11u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _299 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float _300 = _299.x; float _301 = _299.y; float _302 = _299.z; float4 _307 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[12u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[13u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _315 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[14u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[15u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _331 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[16u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[17u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _339 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[18u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[19u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _355 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[20u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[21u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _363 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[22u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[23u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _379 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[24u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[25u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _387 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[26u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[27u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _395 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[28u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[29u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _403 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[30u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[31u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _407 = spvFAdd(_235.y, _243.y); float _408 = spvFAdd(_251.y, _259.y); float _409 = spvFAdd(_235.x, _243.x); float _410 = spvFAdd(_251.x, _259.x); float _411 = spvFAdd(_235.z, _243.z); float _412 = spvFAdd(_251.z, _259.z); float _418 = spvFMul(fast::max(_301, _301), 2.0); uint _426 = 5u + buf1_dword_off; uint _429 = 6u + buf1_dword_off; float _435 = spvFMul(fast::max(_300, _300), 2.0); float _436 = fma(_407, 2.0, _418); float _439 = spvFMul(fast::max(_301, _301), 4.0); float _449 = spvFMul(fast::max(_302, _302), 2.0); float _450 = fma(_409, 2.0, _435); float _454 = spvFMul(fast::max(_300, _300), 4.0); float _466 = fma(_411, 2.0, _449); float _468 = fma(_408, 2.0, _418); float _470 = spvFMul(fast::max(_302, _302), 4.0); float _486 = fma(_410, 2.0, _435); float _503 = fma(_412, 2.0, _449); float _551 = fast::clamp(spvFMul(fma(as_type(cbuf_16.data[_426]), fma(spvFMul(abs(spvFSub(spvFMul(fast::max(_412, _412), 2.0), _470)), 0.25), 0.114000000059604644775390625, fma(spvFMul(abs(spvFSub(spvFMul(fast::max(_410, _410), 2.0), _454)), 0.25), 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, spvFMul(abs(spvFSub(spvFMul(fast::max(_408, _408), 2.0), _439)), 0.25)))), -as_type(cbuf_16.data[_429])), 1.0 / fast::max(9.9999997473787516355514526367188e-05, fma(spvFMul(0.16666667163372039794921875, _466), 0.114000000059604644775390625, fma(spvFMul(0.16666667163372039794921875, _450), 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, spvFMul(0.16666667163372039794921875, _436)))))), 0.0, 1.0); float _560 = fma(spvFMul(0.125, spvFAdd(_395.z, spvFAdd(_379.z, spvFAdd(_355.z, spvFAdd(_331.z, spvFAdd(_307.z, spvFAdd(_411, _275.z))))))), 0.114000000059604644775390625, fma(spvFMul(0.125, spvFAdd(_395.x, spvFAdd(_379.x, spvFAdd(_355.x, spvFAdd(_331.x, spvFAdd(_307.x, spvFAdd(_409, _275.x))))))), 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, spvFMul(0.125, spvFAdd(_395.y, spvFAdd(_379.y, spvFAdd(_355.y, spvFAdd(_331.y, spvFAdd(_307.y, spvFAdd(_407, _275.y)))))))))); float _561 = fma(spvFMul(0.125, spvFAdd(_403.z, spvFAdd(_387.z, spvFAdd(_363.z, spvFAdd(_339.z, spvFAdd(_315.z, spvFAdd(_412, _283.z))))))), 0.114000000059604644775390625, fma(spvFMul(0.125, spvFAdd(_403.x, spvFAdd(_387.x, spvFAdd(_363.x, spvFAdd(_339.x, spvFAdd(_315.x, spvFAdd(_410, _283.x))))))), 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, spvFMul(0.125, spvFAdd(_403.y, spvFAdd(_387.y, spvFAdd(_363.y, spvFAdd(_339.y, spvFAdd(_315.y, spvFAdd(_408, _283.y)))))))))); float _563 = fma(_551, fma(_450, 0.16666667163372039794921875, -_300), _300); float _564 = fma(_551, fma(_436, 0.16666667163372039794921875, -_301), _301); float _565 = fma(_551, fma(_466, 0.16666667163372039794921875, -_302), _302); float _573 = fast::clamp(fma(_560, 2.0, -1.0), 0.0, 1.0); float _575 = fast::clamp(fma(_561, 2.0, -1.0), 0.0, 1.0); float _578 = fast::clamp(spvFMul(fma(as_type(cbuf_16.data[_426]), fma(spvFMul(abs(spvFSub(spvFMul(fast::max(_411, _411), 2.0), _470)), 0.25), 0.114000000059604644775390625, fma(spvFMul(abs(spvFSub(spvFMul(fast::max(_409, _409), 2.0), _454)), 0.25), 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, spvFMul(abs(spvFSub(spvFMul(fast::max(_407, _407), 2.0), _439)), 0.25)))), -as_type(cbuf_16.data[_429])), 1.0 / fast::max(9.9999997473787516355514526367188e-05, fma(spvFMul(0.16666667163372039794921875, _503), 0.114000000059604644775390625, fma(spvFMul(0.16666667163372039794921875, _486), 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, spvFMul(0.16666667163372039794921875, _468)))))), 0.0, 1.0); float _586 = fma(_302, 0.114000000059604644775390625, fma(_300, 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, _301))); float _587 = fma(_578, fma(_486, 0.16666667163372039794921875, -_563), _563); float _589 = fma(_578, fma(_468, 0.16666667163372039794921875, -_564), _564); float _591 = fma(_578, fma(_503, 0.16666667163372039794921875, -_565), _565); uint _774; uint _775; uint _776; if (0.0 < spvFAdd(_573, _575)) { float _628 = fast::clamp(spvFMul(as_type(cbuf_16.data[_426]), _575), 0.0, 1.0); float _631 = fast::clamp(spvFMul(as_type(cbuf_16.data[_426]), _573), 0.0, 1.0); float4 _644 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[36u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[37u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _645 = _644.x; float _646 = _644.y; float _647 = _644.z; float4 _660 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[32u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[33u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _661 = _660.x; float _662 = _660.y; float _663 = _660.z; float4 _668 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[34u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[35u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _669 = _668.x; float _670 = _668.y; float _671 = _668.z; float4 _676 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_20.data[38u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_20.data[39u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _677 = _676.x; float _678 = _676.y; float _679 = _676.z; float _683 = spvFSub(_586, fma(_647, 0.114000000059604644775390625, fma(_645, 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, _646)))); float _686 = fma(_663, 0.114000000059604644775390625, fma(_661, 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, _662))); float _691 = fma(_671, 0.114000000059604644775390625, fma(_669, 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, _670))); float _693 = spvFSub(_586, _686); float _696 = spvFSub(_586, _691); float _697 = spvFSub(_586, fma(_679, 0.114000000059604644775390625, fma(_677, 0.2989999949932098388671875, spvFMul(0.58700001239776611328125, _678)))); float _714 = (9.9999997473787516355514526367188e-06 >= abs(_693)) ? 1.0 : fast::clamp(spvFMul(spvFSub(_561, _686), 1.0 / _693), 0.0, 1.0); float _715 = (9.9999997473787516355514526367188e-06 >= abs(_683)) ? 1.0 : fast::clamp(spvFAdd(spvFMul(spvFSub(_561, _586), 1.0 / _683), 1.0), 0.0, 1.0); float _721 = (9.9999997473787516355514526367188e-06 >= abs(_696)) ? 1.0 : fast::clamp(spvFMul(spvFSub(_560, _691), 1.0 / _696), 0.0, 1.0); float _727 = (9.9999997473787516355514526367188e-06 >= abs(_697)) ? 1.0 : fast::clamp(spvFAdd(spvFMul(spvFSub(_560, _586), 1.0 / _697), 1.0), 0.0, 1.0); bool _730 = 0.0 == spvFAdd(_727, spvFAdd(_721, spvFAdd(_714, _715))); float _731 = _730 ? 1.0 : _714; float _738 = _730 ? 1.0 : _715; float _739 = _730 ? 1.0 : _721; float _752 = _730 ? 1.0 : _727; float _762 = fma(_628, spvFSub(fma(_738, spvFSub(fma(_731, spvFSub(_300, _661), _661), _645), _645), _587), _587); float _763 = fma(_628, spvFSub(fma(_738, spvFSub(fma(_731, spvFSub(_301, _662), _662), _646), _646), _589), _589); float _764 = fma(_628, spvFSub(fma(_738, spvFSub(fma(_731, spvFSub(_302, _663), _663), _647), _647), _591), _591); _774 = as_type(fma(_631, spvFSub(fma(_752, spvFSub(fma(_739, spvFSub(_302, _671), _671), _679), _679), _764), _764)); _775 = as_type(fma(_631, spvFSub(fma(_752, spvFSub(fma(_739, spvFSub(_301, _670), _670), _678), _678), _763), _763)); _776 = as_type(fma(_631, spvFSub(fma(_752, spvFSub(fma(_739, spvFSub(_300, _669), _669), _677), _677), _762), _762)); } else { _774 = as_type(_591); _775 = as_type(_589); _776 = as_type(_587); } bool _778 = as_type(cbuf_16.data[4u + buf1_dword_off]) > _586; if (false) { discard_fragment(); } out.frag_color0.x = _778 ? _300 : as_type(_776); out.frag_color0.y = _778 ? _301 : as_type(_775); out.frag_color0.z = _778 ? _302 : as_type(_774); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x57f3b8c2 [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xa61e325d [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct fs_cbuf_block_f32_1 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_20 [[buffer(9)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(10)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(11)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint _92 = 6u + buf0_dword_off; uint _95 = 4u + buf1_dword_off; uint _98 = 5u + buf1_dword_off; uint _107 = 2u + buf0_dword_off; uint _118 = 10u + buf0_dword_off; uint _130 = 14u + buf0_dword_off; uint _141 = 18u + buf0_dword_off; uint _153 = 22u + buf0_dword_off; uint _169 = 26u + buf0_dword_off; uint _188 = 30u + buf0_dword_off; float4 _201 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[4u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[5u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _215 = 34u + buf0_dword_off; float4 _228 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[0u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[1u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _242 = 38u + buf0_dword_off; float4 _255 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[8u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[9u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _269 = 42u + buf0_dword_off; float4 _282 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[12u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[13u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _296 = 46u + buf0_dword_off; float4 _309 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[16u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[17u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _323 = 50u + buf0_dword_off; float4 _336 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[20u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[21u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _351 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[24u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[25u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _366 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[28u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[29u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _381 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[32u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[33u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _396 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[36u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[37u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _411 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[40u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[41u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _426 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[44u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[45u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _435 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[48u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[49u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _524 = fma(as_type(cbuf_20.data[_269]), _411.w, fma(as_type(cbuf_20.data[_242]), _396.w, fma(as_type(cbuf_20.data[_215]), _381.w, fma(as_type(cbuf_20.data[_188]), _366.w, fma(as_type(cbuf_20.data[_169]), _351.w, fma(as_type(cbuf_20.data[_153]), _336.w, fma(as_type(cbuf_20.data[_141]), _309.w, fma(as_type(cbuf_20.data[_130]), _282.w, fma(as_type(cbuf_20.data[_118]), _255.w, fma(as_type(cbuf_20.data[_107]), _228.w, spvFMul(as_type(cbuf_20.data[_92]), _201.w))))))))))); float _526 = fma(as_type(cbuf_20.data[_269]), _411.x, fma(as_type(cbuf_20.data[_242]), _396.x, fma(as_type(cbuf_20.data[_215]), _381.x, fma(as_type(cbuf_20.data[_188]), _366.x, fma(as_type(cbuf_20.data[_169]), _351.x, fma(as_type(cbuf_20.data[_153]), _336.x, fma(as_type(cbuf_20.data[_141]), _309.x, fma(as_type(cbuf_20.data[_130]), _282.x, fma(as_type(cbuf_20.data[_118]), _255.x, fma(as_type(cbuf_20.data[_107]), _228.x, spvFMul(as_type(cbuf_20.data[_92]), _201.x))))))))))); float _528 = fma(as_type(cbuf_20.data[_269]), _411.y, fma(as_type(cbuf_20.data[_242]), _396.y, fma(as_type(cbuf_20.data[_215]), _381.y, fma(as_type(cbuf_20.data[_188]), _366.y, fma(as_type(cbuf_20.data[_169]), _351.y, fma(as_type(cbuf_20.data[_153]), _336.y, fma(as_type(cbuf_20.data[_141]), _309.y, fma(as_type(cbuf_20.data[_130]), _282.y, fma(as_type(cbuf_20.data[_118]), _255.y, fma(as_type(cbuf_20.data[_107]), _228.y, spvFMul(as_type(cbuf_20.data[_92]), _201.y))))))))))); float _530 = fma(as_type(cbuf_20.data[_269]), _411.z, fma(as_type(cbuf_20.data[_242]), _396.z, fma(as_type(cbuf_20.data[_215]), _381.z, fma(as_type(cbuf_20.data[_188]), _366.z, fma(as_type(cbuf_20.data[_169]), _351.z, fma(as_type(cbuf_20.data[_153]), _336.z, fma(as_type(cbuf_20.data[_141]), _309.z, fma(as_type(cbuf_20.data[_130]), _282.z, fma(as_type(cbuf_20.data[_118]), _255.z, fma(as_type(cbuf_20.data[_107]), _228.z, spvFMul(as_type(cbuf_20.data[_92]), _201.z))))))))))); out.frag_color0.x = fma(as_type(cbuf_20.data[_323]), _435.x, fma(as_type(cbuf_20.data[_296]), _426.x, _526)); out.frag_color0.y = fma(as_type(cbuf_20.data[_323]), _435.y, fma(as_type(cbuf_20.data[_296]), _426.y, _528)); out.frag_color0.z = fma(as_type(cbuf_20.data[_323]), _435.z, fma(as_type(cbuf_20.data[_296]), _426.z, _530)); out.frag_color0.w = spvFMul(as_type(cbuf_24.data[1u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u)]), fma(as_type(cbuf_20.data[_323]), _435.w, fma(as_type(cbuf_20.data[_296]), _426.w, _524))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8c08444c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[64]; }; struct fs_cbuf_block_f32_1 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_20 [[buffer(9)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(10)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(11)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint _92 = 6u + buf0_dword_off; uint _95 = 4u + buf1_dword_off; uint _98 = 5u + buf1_dword_off; uint _107 = 2u + buf0_dword_off; uint _118 = 10u + buf0_dword_off; uint _130 = 14u + buf0_dword_off; uint _141 = 18u + buf0_dword_off; uint _153 = 22u + buf0_dword_off; uint _169 = 26u + buf0_dword_off; uint _188 = 30u + buf0_dword_off; float4 _201 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[4u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[5u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _214 = 34u + buf0_dword_off; float4 _227 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[0u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[1u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _240 = 38u + buf0_dword_off; float4 _253 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[8u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[9u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _266 = 42u + buf0_dword_off; float4 _279 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[12u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[13u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _292 = 46u + buf0_dword_off; float4 _305 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[16u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[17u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _318 = 50u + buf0_dword_off; float4 _331 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[20u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[21u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _345 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[24u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[25u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _359 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[28u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[29u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _373 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[32u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[33u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _387 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[36u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[37u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _401 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[40u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[41u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _415 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[44u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[45u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _423 = fs_img4.sample(fs_samp12, float2(fma(as_type(cbuf_16.data[_95]), as_type(cbuf_20.data[48u + buf0_dword_off]), in.fs_in_attr0.x), fma(as_type(cbuf_16.data[_98]), as_type(cbuf_20.data[49u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); uint _451 = 0u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); float _491 = fma(as_type(cbuf_20.data[_266]), _401.x, fma(as_type(cbuf_20.data[_240]), _387.x, fma(as_type(cbuf_20.data[_214]), _373.x, fma(as_type(cbuf_20.data[_188]), _359.x, fma(as_type(cbuf_20.data[_169]), _345.x, fma(as_type(cbuf_20.data[_153]), _331.x, fma(as_type(cbuf_20.data[_141]), _305.x, fma(as_type(cbuf_20.data[_130]), _279.x, fma(as_type(cbuf_20.data[_118]), _253.x, fma(as_type(cbuf_20.data[_107]), _227.x, spvFMul(as_type(cbuf_20.data[_92]), _201.x))))))))))); float _493 = fma(as_type(cbuf_20.data[_266]), _401.y, fma(as_type(cbuf_20.data[_240]), _387.y, fma(as_type(cbuf_20.data[_214]), _373.y, fma(as_type(cbuf_20.data[_188]), _359.y, fma(as_type(cbuf_20.data[_169]), _345.y, fma(as_type(cbuf_20.data[_153]), _331.y, fma(as_type(cbuf_20.data[_141]), _305.y, fma(as_type(cbuf_20.data[_130]), _279.y, fma(as_type(cbuf_20.data[_118]), _253.y, fma(as_type(cbuf_20.data[_107]), _227.y, spvFMul(as_type(cbuf_20.data[_92]), _201.y))))))))))); float _495 = fma(as_type(cbuf_20.data[_266]), _401.z, fma(as_type(cbuf_20.data[_240]), _387.z, fma(as_type(cbuf_20.data[_214]), _373.z, fma(as_type(cbuf_20.data[_188]), _359.z, fma(as_type(cbuf_20.data[_169]), _345.z, fma(as_type(cbuf_20.data[_153]), _331.z, fma(as_type(cbuf_20.data[_141]), _305.z, fma(as_type(cbuf_20.data[_130]), _279.z, fma(as_type(cbuf_20.data[_118]), _253.z, fma(as_type(cbuf_20.data[_107]), _227.z, spvFMul(as_type(cbuf_20.data[_92]), _201.z))))))))))); out.frag_color0.x = spvFMul(as_type(cbuf_24.data[_451]), fma(as_type(cbuf_20.data[_318]), _423.x, fma(as_type(cbuf_20.data[_292]), _415.x, _491))); out.frag_color0.y = spvFMul(as_type(cbuf_24.data[_451]), fma(as_type(cbuf_20.data[_318]), _423.y, fma(as_type(cbuf_20.data[_292]), _415.y, _493))); out.frag_color0.z = spvFMul(as_type(cbuf_24.data[_451]), fma(as_type(cbuf_20.data[_318]), _423.z, fma(as_type(cbuf_20.data[_292]), _415.z, _495))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb57af00c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[12288]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _190 = ((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf5_off) >> 2u; uint _195 = (as_type(as_type(in.vs_in_attr3.y)) + cbuf_12.data[_190]) * 3u; uint _196 = (as_type(as_type(in.vs_in_attr3.x)) + cbuf_12.data[_190]) * 3u; uint _201 = (as_type(as_type(in.vs_in_attr3.z)) + cbuf_12.data[_190]) * 3u; uint _205 = (as_type(as_type(in.vs_in_attr3.w)) + cbuf_12.data[_190]) * 3u; uint _212 = ((0u + ((_195 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _225 = uint4(cbuf_16.data[_212 + 0u], cbuf_16.data[_212 + 1u], cbuf_16.data[_212 + 2u], cbuf_16.data[_212 + 3u]); uint _233 = ((0u + ((_196 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _246 = uint4(cbuf_16.data[_233 + 0u], cbuf_16.data[_233 + 1u], cbuf_16.data[_233 + 2u], cbuf_16.data[_233 + 3u]); uint _254 = ((0u + ((_195 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _267 = uint4(cbuf_16.data[_254 + 0u], cbuf_16.data[_254 + 1u], cbuf_16.data[_254 + 2u], cbuf_16.data[_254 + 3u]); uint _275 = ((0u + ((_196 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _288 = uint4(cbuf_16.data[_275 + 0u], cbuf_16.data[_275 + 1u], cbuf_16.data[_275 + 2u], cbuf_16.data[_275 + 3u]); uint _296 = ((0u + (_195 * 16u)) + buf6_off) >> 2u; uint4 _309 = uint4(cbuf_16.data[_296 + 0u], cbuf_16.data[_296 + 1u], cbuf_16.data[_296 + 2u], cbuf_16.data[_296 + 3u]); uint _317 = ((0u + ((_201 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _330 = uint4(cbuf_16.data[_317 + 0u], cbuf_16.data[_317 + 1u], cbuf_16.data[_317 + 2u], cbuf_16.data[_317 + 3u]); uint _338 = ((0u + (_196 * 16u)) + buf6_off) >> 2u; uint4 _351 = uint4(cbuf_16.data[_338 + 0u], cbuf_16.data[_338 + 1u], cbuf_16.data[_338 + 2u], cbuf_16.data[_338 + 3u]); uint _359 = ((0u + ((_201 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _372 = uint4(cbuf_16.data[_359 + 0u], cbuf_16.data[_359 + 1u], cbuf_16.data[_359 + 2u], cbuf_16.data[_359 + 3u]); uint _380 = ((0u + ((_205 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _393 = uint4(cbuf_16.data[_380 + 0u], cbuf_16.data[_380 + 1u], cbuf_16.data[_380 + 2u], cbuf_16.data[_380 + 3u]); uint _401 = ((0u + (_201 * 16u)) + buf6_off) >> 2u; uint4 _414 = uint4(cbuf_16.data[_401 + 0u], cbuf_16.data[_401 + 1u], cbuf_16.data[_401 + 2u], cbuf_16.data[_401 + 3u]); uint _422 = ((0u + ((_205 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _435 = uint4(cbuf_16.data[_422 + 0u], cbuf_16.data[_422 + 1u], cbuf_16.data[_422 + 2u], cbuf_16.data[_422 + 3u]); uint _443 = ((0u + (_205 * 16u)) + buf6_off) >> 2u; uint4 _456 = uint4(cbuf_16.data[_443 + 0u], cbuf_16.data[_443 + 1u], cbuf_16.data[_443 + 2u], cbuf_16.data[_443 + 3u]); float _468 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _469 = spvFMul(in.vs_in_attr4.y, _468); float _470 = spvFMul(in.vs_in_attr4.x, _468); float _475 = spvFMul(in.vs_in_attr4.z, _468); float _554 = spvFMul(in.vs_in_attr4.w, _468); float _596 = fma(as_type(_393.z), _554, fma(as_type(_330.z), _475, fma(as_type(_246.z), _470, spvFMul(_469, as_type(_225.z))))); float _618 = fma(as_type(_435.z), _554, fma(as_type(_372.z), _475, fma(as_type(_288.z), _470, spvFMul(_469, as_type(_267.z))))); float _622 = fma(as_type(_393.y), _554, fma(as_type(_330.y), _475, fma(as_type(_246.y), _470, spvFMul(_469, as_type(_225.y))))); float _631 = fma(as_type(_456.z), _554, fma(as_type(_414.z), _475, fma(as_type(_351.z), _470, spvFMul(_469, as_type(_309.z))))); float _635 = fma(as_type(_435.y), _554, fma(as_type(_372.y), _475, fma(as_type(_288.y), _470, spvFMul(_469, as_type(_267.y))))); float _637 = fma(as_type(_393.x), _554, fma(as_type(_330.x), _475, fma(as_type(_246.x), _470, spvFMul(_469, as_type(_225.x))))); float _643 = fma(as_type(_456.y), _554, fma(as_type(_414.y), _475, fma(as_type(_351.y), _470, spvFMul(_469, as_type(_309.y))))); float _645 = fma(as_type(_435.x), _554, fma(as_type(_372.x), _475, fma(as_type(_288.x), _470, spvFMul(_469, as_type(_267.x))))); float _650 = fma(as_type(_456.x), _554, fma(as_type(_414.x), _475, fma(as_type(_351.x), _470, spvFMul(_469, as_type(_309.x))))); float _654 = spvFSub(fma(_637, in.vs_in_attr0.x, fma(_622, in.vs_in_attr0.y, fma(_596, in.vs_in_attr0.z, fma(as_type(_393.w), _554, fma(as_type(_330.w), _475, fma(as_type(_246.w), _470, spvFMul(_469, as_type(_225.w)))))))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _657 = spvFSub(fma(_645, in.vs_in_attr0.x, fma(_635, in.vs_in_attr0.y, fma(_618, in.vs_in_attr0.z, fma(as_type(_435.w), _554, fma(as_type(_372.w), _475, fma(as_type(_288.w), _470, spvFMul(_469, as_type(_267.w)))))))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _671 = spvFSub(fma(_650, in.vs_in_attr0.x, fma(_643, in.vs_in_attr0.y, fma(_631, in.vs_in_attr0.z, fma(as_type(_456.w), _554, fma(as_type(_414.w), _475, fma(as_type(_351.w), _470, spvFMul(_469, as_type(_309.w)))))))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _681 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _654, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _683 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _654, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _685 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _654, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _687 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _671, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _657, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _654, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _681; out.gl_Position.y = _683; out.gl_Position.z = _685; out.gl_Position.w = _687; float _714 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _717 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _720 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _722 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _732 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _733 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_650, _733, fma(_643, _722, spvFMul(_631, _717))); out.out_attr0.y = fma(_645, _733, fma(_635, _722, spvFMul(_618, _717))); out.out_attr0.z = fma(_637, _733, fma(_622, _722, spvFMul(_596, _717))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(_650, _732, fma(_643, _720, spvFMul(_631, _714))); out.out_attr1.y = fma(_645, _732, fma(_635, _720, spvFMul(_618, _714))); out.out_attr1.z = fma(_637, _732, fma(_622, _720, spvFMul(_596, _714))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _681; out.out_attr3.y = _683; out.out_attr3.z = _685; out.out_attr3.w = _687; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling cs shader 0x200820a1 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; kernel void main0(texture2d cs_img4 [[texture(0)]], texture3d cs_img16 [[texture(1)]], uint3 gl_WorkGroupID [[threadgroup_position_in_grid]], uint3 gl_LocalInvocationID [[thread_position_in_threadgroup]]) { uint _64 = (gl_WorkGroupID.z << 4u) + gl_LocalInvocationID.y; bool _69; uint _79; bool _65 = true; uint _66 = gl_LocalInvocationID.x; for (;;) { _69 = _65 && (int(16u) > int(_66)); if (!_69) { break; } else { uint4 _74 = as_type(cs_img4.read(uint2(uint2(_66, _64)), 0u)); _79 = _66 + 4u; cs_img16.write((float4(float4(as_type(_74.x), as_type(_74.y), as_type(_74.z), as_type(_74.w)))), uint3(uint3(_66, gl_LocalInvocationID.y, gl_WorkGroupID.z))); if (true) { _65 = _69; _66 = _79; continue; } else { break; } } } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xed4c7668 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #include #include using namespace metal; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], texture3d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp24 [[sampler(1)]]) { float gl_FragDepth; main0_out out = {}; float4 _69 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _84 = fs_img16.sample(fs_samp24, float3(fma(_69.x, 0.9375, 0.03125), fma(_69.y, 0.9375, 0.03125), fma(_69.z, 0.9375, 0.03125))); out.frag_color0.x = fast::max(0.0, _84.x); out.frag_color0.y = fast::max(0.0, _84.y); out.frag_color0.z = fast::max(0.0, _84.z); out.frag_color0.w = fast::max(0.0, _69.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xbd1d09f0 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x1ea84d9a [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(19)]]) { main0_out out = {}; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _173 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _179 = ((0u + ((_173 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _192 = uint4(cbuf_16.data[_179 + 0u], cbuf_16.data[_179 + 1u], cbuf_16.data[_179 + 2u], cbuf_16.data[_179 + 3u]); uint _193 = _192.x; uint _194 = _192.y; uint _195 = _192.z; uint _200 = ((0u + ((_173 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _213 = uint4(cbuf_16.data[_200 + 0u], cbuf_16.data[_200 + 1u], cbuf_16.data[_200 + 2u], cbuf_16.data[_200 + 3u]); uint _214 = _213.x; uint _215 = _213.y; uint _216 = _213.z; uint _221 = ((0u + (_173 * 16u)) + buf7_off) >> 2u; uint4 _234 = uint4(cbuf_16.data[_221 + 0u], cbuf_16.data[_221 + 1u], cbuf_16.data[_221 + 2u], cbuf_16.data[_221 + 3u]); uint _235 = _234.x; uint _236 = _234.y; uint _237 = _234.z; float _330 = fma(as_type(_193), in.vs_in_attr0.x, fma(as_type(_194), in.vs_in_attr0.y, fma(as_type(_195), in.vs_in_attr0.z, as_type(_192.w)))); float _334 = fma(as_type(_214), in.vs_in_attr0.x, fma(as_type(_215), in.vs_in_attr0.y, fma(as_type(_216), in.vs_in_attr0.z, as_type(_213.w)))); float _336 = spvFSub(_330, as_type(cbuf_20.data[191u + buf8_dword_off])); float _338 = fma(as_type(_235), in.vs_in_attr0.x, fma(as_type(_236), in.vs_in_attr0.y, fma(as_type(_237), in.vs_in_attr0.z, as_type(_234.w)))); float _340 = spvFSub(_334, as_type(cbuf_20.data[187u + buf8_dword_off])); float _354 = spvFSub(_338, as_type(cbuf_20.data[183u + buf8_dword_off])); float _364 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _354, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _340, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _336, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _366 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _354, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _340, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _336, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _368 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _354, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _340, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _336, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _370 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _354, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _340, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _336, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _364; out.gl_Position.y = _366; out.gl_Position.z = _368; out.gl_Position.w = _370; out.out_attr3.x = _364; out.out_attr3.y = _366; out.out_attr3.z = _368; out.out_attr3.w = _370; float _413 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _416 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _419 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _421 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _437 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _438 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_235), _438, fma(as_type(_236), _421, spvFMul(as_type(_237), _416))); out.out_attr0.y = fma(as_type(_214), _438, fma(as_type(_215), _421, spvFMul(as_type(_216), _416))); out.out_attr0.z = fma(as_type(_193), _438, fma(as_type(_194), _421, spvFMul(as_type(_195), _416))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_235), _437, fma(as_type(_236), _419, spvFMul(as_type(_237), _413))); out.out_attr1.y = fma(as_type(_214), _437, fma(as_type(_215), _419, spvFMul(as_type(_216), _413))); out.out_attr1.z = fma(as_type(_193), _437, fma(as_type(_194), _419, spvFMul(as_type(_195), _413))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = spvFSub(as_type(cbuf_24.data[12u + buf10_dword_off]), _338); out.out_attr4.y = spvFSub(as_type(cbuf_24.data[13u + buf10_dword_off]), _334); out.out_attr4.z = spvFSub(as_type(cbuf_24.data[14u + buf10_dword_off]), _330); out.out_attr4.w = 1.0; out.out_attr5.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr5.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[72]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct fs_cbuf_block_f32_5 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_32 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_48 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_44 [[buffer(14)]], texture2d fs_img76 [[texture(0)]], texture2d fs_img68 [[texture(1)]], texture2d fs_img60 [[texture(2)]], texture2d fs_img100 [[texture(3)]], texturecube fs_img92 [[texture(4)]], texture2d fs_img108 [[texture(5)]], texturecube fs_img84 [[texture(6)]], texture2d fs_img52 [[texture(7)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp24 [[sampler(3)]], sampler fs_samp4 [[sampler(4)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _150 = uint(gl_FrontFacing); float _161 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _162 = spvFMul(in.fs_in_attr0.x, _161); float _164 = spvFMul(in.fs_in_attr0.y, _161); float _165 = spvFMul(in.fs_in_attr0.z, _161); float _177 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _179 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _181 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _185 = rsqrt(fma(_177, _177, fma(_179, _179, spvFMul(_181, _181)))); float _202 = 1.0 / in.fs_in_attr3.w; float _206 = fma(0.5, spvFMul(in.fs_in_attr3.x, _202), 0.5); float _208 = fma(-0.5, spvFMul(in.fs_in_attr3.y, _202), 0.5); bool _209 = 0u == _150; uint _214; if (_209) { _214 = as_type(fast::max(-_162, -_162)); } else { _214 = _150; } uint _223; uint _224; if (_209) { _223 = as_type(fast::max(-_165, -_165)); _224 = as_type(fast::max(-_164, -_164)); } else { _223 = as_type(_162); _224 = as_type(_165); } uint _227; uint _228; uint _229; if (!_209) { _227 = _223; _228 = as_type(_164); _229 = _224; } else { _227 = _214; _228 = _224; _229 = _223; } float4 _260 = fs_img76.sample(fs_samp16, float2(fma(as_type(cbuf_28.data[12u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_28.data[14u + buf0_dword_off])), fma(as_type(cbuf_28.data[13u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_28.data[15u + buf0_dword_off])))); float4 _289 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[8u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_28.data[10u + buf0_dword_off])), fma(as_type(cbuf_28.data[9u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_28.data[11u + buf0_dword_off])))); float _295 = fma(2.0, _260.y, -1.0); float _296 = spvFMul(fma(2.0, _260.x, -1.0), fma(2.0, _260.w, -1.0)); float _305 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _306 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_296, _296), spvFMul(_295, _295)), 0.0, 1.0))); float _320 = fma(spvFMul(spvFMul(_181, _185), in.fs_in_attr1.w), _296, fma(spvFMul(in.fs_in_attr1.z, _305), _295, spvFMul(as_type(_229), _306))); float _325 = fma(spvFMul(spvFMul(_179, _185), in.fs_in_attr1.w), _296, fma(spvFMul(in.fs_in_attr1.y, _305), _295, spvFMul(as_type(_228), _306))); float _330 = fma(spvFMul(spvFMul(_177, _185), in.fs_in_attr1.w), _296, fma(spvFMul(in.fs_in_attr1.x, _305), _295, spvFMul(as_type(_227), _306))); float _365 = rsqrt(fma(in.fs_in_attr4.x, in.fs_in_attr4.x, fma(in.fs_in_attr4.y, in.fs_in_attr4.y, spvFMul(in.fs_in_attr4.z, in.fs_in_attr4.z)))); float _366 = rsqrt(fma(_330, _330, fma(_325, _325, spvFMul(_320, _320)))); float _367 = spvFMul(in.fs_in_attr4.z, _365); float _368 = spvFMul(_320, _366); float _369 = spvFMul(in.fs_in_attr4.y, _365); float _370 = spvFMul(_325, _366); float _372 = spvFMul(in.fs_in_attr4.x, _365); float _373 = spvFMul(_330, _366); float _377 = fma(_373, _372, fma(_370, _369, spvFMul(_367, _368))); float _380 = spvFMul(fast::max(_377, _377), 2.0); uint _384 = uint(in.fs_in_attr0.w) * 13u; float _391 = spvFMul(_289.x, spvFMul(as_type(cbuf_32.data[8u + buf1_dword_off]), 0.00390625)); float _399 = spvFMul(13.0, _391); float _401 = fma(-in.fs_in_attr4.x, _365, spvFMul(_373, _380)); float _403 = fma(-in.fs_in_attr4.y, _365, spvFMul(_370, _380)); float _405 = fma(-in.fs_in_attr4.z, _365, spvFMul(_368, _380)); float4 _411 = fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[4u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_28.data[6u + buf0_dword_off])), fma(as_type(cbuf_28.data[5u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_28.data[7u + buf0_dword_off])))); float _412 = _411.x; float _413 = _411.y; float _414 = _411.z; float4 _419 = fs_img100.sample(fs_samp20, float2(_206, _208)); float _426 = 1.0 / abs(1.0); float _428 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_399, _399), 0.5))); float _430 = fma(_403, _426, 1.5); float _431 = fma(_401, _426, 1.5); uint _436 = ((0u + ((_384 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _449 = uint4(cbuf_36.data[_436 + 0u], cbuf_36.data[_436 + 1u], cbuf_36.data[_436 + 2u], cbuf_36.data[_436 + 3u]); uint _457 = ((0u + ((_384 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _470 = uint4(cbuf_36.data[_457 + 0u], cbuf_36.data[_457 + 1u], cbuf_36.data[_457 + 2u], cbuf_36.data[_457 + 3u]); uint _478 = ((0u + ((_384 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _491 = uint4(cbuf_36.data[_478 + 0u], cbuf_36.data[_478 + 1u], cbuf_36.data[_478 + 2u], cbuf_36.data[_478 + 3u]); uint _499 = ((0u + ((_384 + 8u) * 16u)) + buf2_off) >> 2u; uint3 _509 = uint3(cbuf_36.data[_499 + 0u], cbuf_36.data[_499 + 1u], cbuf_36.data[_499 + 2u]); uint _510 = _509.x; uint _511 = _509.y; uint _512 = _509.z; float4 _519 = fs_img92.sample(fs_samp20, float3(spvFSub(_431, 1.5), spvFSub(_430, 1.5), _405), level(_428)); float4 _527 = fs_img108.sample(fs_samp24, float2(_206, _208), level(_428)); float4 _538 = fs_img84.sample(fs_samp20, float3(spvFSub(_431, 1.5), spvFSub(_430, 1.5), _405), level(_428)); uint _551 = ((0u + ((_384 + 12u) * 16u)) + buf2_off) >> 2u; float4 _558 = fs_img52.sample(fs_samp4, float2(fma(as_type(cbuf_28.data[0u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_28.data[2u + buf0_dword_off])), fma(as_type(cbuf_28.data[1u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_28.data[3u + buf0_dword_off])))); uint _563 = 12u + buf1_dword_off; uint _568 = 0u + buf3_dword_off; uint _571 = 1u + buf3_dword_off; uint _574 = 2u + buf3_dword_off; uint _577 = 3u + buf3_dword_off; uint _580 = 4u + buf3_dword_off; uint _583 = 5u + buf3_dword_off; uint _586 = 6u + buf3_dword_off; uint _589 = 7u + buf3_dword_off; float _593 = (0.0 != in.fs_in_attr2.x) ? in.fs_in_attr2.x : 1.0; float _601 = fast::clamp(spvFAdd(fma(_401, as_type(_227), fma(_403, as_type(_228), spvFMul(as_type(_229), _405))), 1.0), 0.0, 1.0); float _612 = fma(fma(as_type(cbuf_32.data[_563]), _419.x, 1.0), _593, -spvFMul(as_type(cbuf_32.data[_563]), _593)); float _637 = spvFAdd(_377, _612); bool _650 = (_414 == 0.0) && (_413 == 0.0); float _658 = spvFMul(as_type(cbuf_40.data[_586]), _368); float _659 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_377, _377), 0.0, 1.0))))); float _661 = fast::clamp(spvFAdd(fma(_637, _637, _612), -1.0), 0.0, 1.0); float _677 = spvFMul(as_type(cbuf_40.data[_574]), _368); float _680 = _650 ? _412 : _414; float _681 = _650 ? _412 : _413; float _682 = spvFMul(_659, _661); float _709 = fast::clamp(fma(as_type(cbuf_40.data[_580]), _373, fma(as_type(cbuf_40.data[_583]), _370, _658)), 0.0, 1.0); float _725 = spvFMul(_612, spvFMul(spvFMul(_601, _601), spvFSub(1.0, _527.w))); float _728 = fast::clamp(fma(as_type(cbuf_40.data[_568]), _373, fma(as_type(cbuf_40.data[_571]), _370, _677)), 0.0, 1.0); float _743 = spvFMul(_391, _391); float _744 = fast::max(0.0, spvFAdd(as_type(_449.w), fma(_368, as_type(_449.z), fma(_373, as_type(_449.x), spvFMul(_370, as_type(_449.y)))))); float _745 = fast::max(0.0, spvFAdd(as_type(_470.w), fma(_368, as_type(_470.z), fma(_373, as_type(_470.x), spvFMul(_370, as_type(_470.y)))))); float _746 = fast::max(0.0, spvFAdd(as_type(_491.w), fma(_368, as_type(_491.z), fma(_373, as_type(_491.x), spvFMul(_370, as_type(_491.y)))))); uint _772 = 64u + buf3_dword_off; uint _776 = 65u + buf3_dword_off; float _798 = fma(spvFMul(as_type(cbuf_40.data[16u + buf3_dword_off]), as_type(cbuf_36.data[_551])), fma(-_412, _728, _728), spvFMul(as_type(cbuf_40.data[20u + buf3_dword_off]), fma(-_412, _709, _709))); float _800 = fma(spvFMul(as_type(cbuf_40.data[17u + buf3_dword_off]), as_type(cbuf_36.data[_551])), fma(-_681, _728, _728), spvFMul(as_type(cbuf_40.data[21u + buf3_dword_off]), fma(-_681, _709, _709))); float _802 = fma(spvFMul(as_type(cbuf_40.data[18u + buf3_dword_off]), as_type(cbuf_36.data[_551])), fma(-_680, _728, _728), spvFMul(as_type(cbuf_40.data[22u + buf3_dword_off]), fma(-_680, _709, _709))); uint _849; uint _850; uint _851; if (cbuf_40.data[_772] > 0u) { float _831 = fma(0.5, fma(as_type(cbuf_40.data[8u + buf3_dword_off]), _373, fma(as_type(cbuf_40.data[9u + buf3_dword_off]), _370, spvFMul(as_type(cbuf_40.data[10u + buf3_dword_off]), _368))), 0.5); float _833 = fast::clamp(spvFMul(_831, _831), 0.0, 1.0); _849 = as_type(fma(as_type(cbuf_40.data[24u + buf3_dword_off]), fma(-_412, _833, _833), _798)); _850 = as_type(fma(as_type(cbuf_40.data[26u + buf3_dword_off]), fma(-_680, _833, _833), _802)); _851 = as_type(fma(as_type(cbuf_40.data[25u + buf3_dword_off]), fma(-_681, _833, _833), _800)); } else { _849 = as_type(_798); _850 = as_type(_802); _851 = as_type(_800); } uint _901; uint _902; uint _903; if (cbuf_40.data[_776] > 0u) { float _880 = fma(0.5, fma(as_type(cbuf_40.data[12u + buf3_dword_off]), _373, fma(as_type(cbuf_40.data[13u + buf3_dword_off]), _370, spvFMul(as_type(cbuf_40.data[14u + buf3_dword_off]), _368))), 0.5); float _882 = fast::clamp(spvFMul(_880, _880), 0.0, 1.0); _901 = as_type(fma(as_type(cbuf_40.data[30u + buf3_dword_off]), fma(-_680, _882, _882), as_type(_850))); _902 = as_type(fma(as_type(cbuf_40.data[29u + buf3_dword_off]), fma(-_681, _882, _882), as_type(_851))); _903 = as_type(fma(as_type(cbuf_40.data[28u + buf3_dword_off]), fma(-_412, _882, _882), as_type(_849))); } else { _901 = _850; _902 = _851; _903 = _849; } float _905 = fma(in.fs_in_attr4.z, _365, as_type(cbuf_40.data[_586])); float _907 = fma(in.fs_in_attr4.z, _365, as_type(cbuf_40.data[_574])); float _909 = fma(in.fs_in_attr4.y, _365, as_type(cbuf_40.data[_583])); float _912 = fma(in.fs_in_attr4.y, _365, as_type(cbuf_40.data[_571])); float _915 = fma(in.fs_in_attr4.x, _365, as_type(cbuf_40.data[_580])); float _918 = fma(in.fs_in_attr4.x, _365, as_type(cbuf_40.data[_568])); float _922 = rsqrt(fma(_915, _915, fma(_909, _909, spvFMul(_905, _905)))); float _923 = rsqrt(fma(_918, _918, fma(_912, _912, spvFMul(_907, _907)))); float _924 = spvFMul(_905, _922); float _925 = exp2(_399); float _926 = spvFMul(_907, _923); float _927 = spvFMul(_909, _922); float _953 = spvFMul(_912, _923); float _954 = spvFMul(_915, _922); float _961 = spvFMul(_918, _923); float _985 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_589]), _925), 1.0 / fma(_925, 0.01000213623046875, as_type(cbuf_40.data[_589])))); float _991 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_577]), _925), 1.0 / fma(_925, 0.01000213623046875, as_type(cbuf_40.data[_577])))); float _998 = fma(_985, 0.125, 0.25); float _1013 = exp2(spvFMul(_985, log2(fast::clamp(fma(_954, _373, fma(_927, _370, spvFMul(_368, _924))), 0.0, 1.0)))); float _1015 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_372, _954, fma(_369, _927, spvFMul(_367, _924))), 0.0, 1.0))))); float _1016 = fma(0.125, _991, 0.25); float _1025 = exp2(spvFMul(_991, log2(fast::clamp(fma(_961, _373, fma(_953, _370, spvFMul(_368, _926))), 0.0, 1.0)))); float _1026 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_372, _961, fma(_369, _953, spvFMul(_367, _926))), 0.0, 1.0))))); float _1032 = fast::clamp(spvFMul(fma(as_type(cbuf_40.data[_580]), _373, fma(as_type(cbuf_40.data[_583]), _370, _658)), 16.0), 0.0, 1.0); float _1049 = fast::clamp(spvFMul(fma(as_type(cbuf_40.data[_568]), _373, fma(as_type(cbuf_40.data[_571]), _370, _677)), 16.0), 0.0, 1.0); float _1068 = fma(spvFMul(_1049, spvFMul(_1025, spvFMul(spvFMul(as_type(cbuf_40.data[32u + buf3_dword_off]), as_type(cbuf_36.data[_551])), _1016))), fma(-_412, _1026, spvFAdd(_412, _1026)), spvFMul(fma(-_412, _1015, spvFAdd(_412, _1015)), spvFMul(_1032, spvFMul(_1013, spvFMul(as_type(cbuf_40.data[36u + buf3_dword_off]), _998))))); float _1070 = fma(spvFMul(_1049, spvFMul(_1025, spvFMul(spvFMul(as_type(cbuf_40.data[33u + buf3_dword_off]), as_type(cbuf_36.data[_551])), _1016))), fma(-_681, _1026, spvFAdd(_681, _1026)), spvFMul(fma(-_681, _1015, spvFAdd(_681, _1015)), spvFMul(_1032, spvFMul(_1013, spvFMul(as_type(cbuf_40.data[37u + buf3_dword_off]), _998))))); float _1072 = fma(spvFMul(_1049, spvFMul(_1025, spvFMul(spvFMul(as_type(cbuf_40.data[34u + buf3_dword_off]), as_type(cbuf_36.data[_551])), _1016))), fma(-_680, _1026, spvFAdd(_680, _1026)), spvFMul(fma(-_680, _1015, spvFAdd(_680, _1015)), spvFMul(_1032, spvFMul(_1013, spvFMul(as_type(cbuf_40.data[38u + buf3_dword_off]), _998))))); uint _1165; uint _1166; uint _1167; if (cbuf_40.data[_772] > 0u) { uint _1090 = 11u + buf3_dword_off; float _1106 = fma(in.fs_in_attr4.x, _365, as_type(cbuf_40.data[8u + buf3_dword_off])); float _1108 = fma(in.fs_in_attr4.y, _365, as_type(cbuf_40.data[9u + buf3_dword_off])); float _1110 = fma(in.fs_in_attr4.z, _365, as_type(cbuf_40.data[10u + buf3_dword_off])); float _1114 = rsqrt(fma(_1106, _1106, fma(_1108, _1108, spvFMul(_1110, _1110)))); float _1115 = spvFMul(_1106, _1114); float _1116 = spvFMul(_1108, _1114); float _1117 = spvFMul(_1110, _1114); float _1128 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_1090]), _925), 1.0 / fma(_925, 0.01000213623046875, as_type(cbuf_40.data[_1090])))); float _1131 = exp2(spvFMul(_1128, log2(fast::clamp(fma(_1115, _373, fma(_1116, _370, spvFMul(_368, _1117))), 0.0, 1.0)))); float _1139 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_372, _1115, fma(_369, _1116, spvFMul(_367, _1117))), 0.0, 1.0))))); float _1149 = fma(0.125, _1128, 0.25); _1165 = as_type(fma(spvFMul(_1131, spvFMul(as_type(cbuf_40.data[42u + buf3_dword_off]), _1149)), fma(-_680, _1139, spvFAdd(_680, _1139)), _1072)); _1166 = as_type(fma(spvFMul(_1131, spvFMul(as_type(cbuf_40.data[41u + buf3_dword_off]), _1149)), fma(-_681, _1139, spvFAdd(_681, _1139)), _1070)); _1167 = as_type(fma(spvFMul(_1131, spvFMul(as_type(cbuf_40.data[40u + buf3_dword_off]), _1149)), fma(-_412, _1139, spvFAdd(_412, _1139)), _1068)); } else { _1165 = as_type(_1072); _1166 = as_type(_1070); _1167 = as_type(_1068); } uint _1255; uint _1256; uint _1257; if (cbuf_40.data[_776] > 0u) { uint _1178 = 15u + buf3_dword_off; float _1193 = fma(in.fs_in_attr4.x, _365, as_type(cbuf_40.data[12u + buf3_dword_off])); float _1195 = fma(in.fs_in_attr4.y, _365, as_type(cbuf_40.data[13u + buf3_dword_off])); float _1197 = fma(in.fs_in_attr4.z, _365, as_type(cbuf_40.data[14u + buf3_dword_off])); float _1201 = rsqrt(fma(_1193, _1193, fma(_1195, _1195, spvFMul(_1197, _1197)))); float _1202 = spvFMul(_1193, _1201); float _1203 = spvFMul(_1195, _1201); float _1204 = spvFMul(_1197, _1201); float _1215 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_1178]), _925), 1.0 / fma(_925, 0.01000213623046875, as_type(cbuf_40.data[_1178])))); float _1218 = exp2(spvFMul(_1215, log2(fast::clamp(fma(_1202, _373, fma(_1203, _370, spvFMul(_368, _1204))), 0.0, 1.0)))); float _1226 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_372, _1202, fma(_369, _1203, spvFMul(_367, _1204))), 0.0, 1.0))))); float _1236 = fma(0.125, _1215, 0.25); _1255 = as_type(fma(spvFMul(_1218, spvFMul(as_type(cbuf_40.data[46u + buf3_dword_off]), _1236)), fma(-_680, _1226, spvFAdd(_680, _1226)), as_type(_1165))); _1256 = as_type(fma(spvFMul(_1218, spvFMul(as_type(cbuf_40.data[44u + buf3_dword_off]), _1236)), fma(-_412, _1226, spvFAdd(_412, _1226)), as_type(_1167))); _1257 = as_type(fma(spvFMul(_1218, spvFMul(as_type(cbuf_40.data[45u + buf3_dword_off]), _1236)), fma(-_681, _1226, spvFAdd(_681, _1226)), as_type(_1166))); } else { _1255 = _1165; _1256 = _1167; _1257 = _1166; } uint _1277 = ((0u + ((_384 + 7u) * 16u)) + buf2_off) >> 2u; uint4 _1290 = uint4(cbuf_36.data[_1277 + 0u], cbuf_36.data[_1277 + 1u], cbuf_36.data[_1277 + 2u], cbuf_36.data[_1277 + 3u]); uint _1291 = _1290.x; uint _1292 = _1290.y; uint _1293 = _1290.z; uint _1295 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); uint _1298 = 8u + buf5_dword_off; uint _1304 = 10u + buf5_dword_off; float _1318 = fma(spvFMul(as_type(cbuf_32.data[1u + buf1_dword_off]), _558.y), fma(_612, fma(-_681, _745, _745), as_type(_902)), spvFMul(fma(fma(fma(_659, _661, -spvFMul(_681, _682)), _743, _681), fma(_612, _527.y, spvFMul(fma(as_type(_510), fma(-as_type(_511), _538.y, spvFMul(as_type(_512), _519.y)), spvFMul(as_type(_511), _538.y)), _725)), as_type(_1257)), spvFMul(as_type(cbuf_32.data[5u + buf1_dword_off]), as_type(cbuf_48.data[_1295])))); float _1332 = fma(spvFMul(as_type(cbuf_32.data[0u + buf1_dword_off]), _558.x), fma(_612, fma(-_412, _744, _744), as_type(_903)), spvFMul(fma(fma(fma(_659, _661, -spvFMul(_412, _682)), _743, _412), fma(_612, _527.x, spvFMul(fma(as_type(_510), fma(-as_type(_511), _538.x, spvFMul(as_type(_512), _519.x)), spvFMul(as_type(_511), _538.x)), _725)), as_type(_1256)), spvFMul(as_type(cbuf_32.data[4u + buf1_dword_off]), as_type(cbuf_48.data[_1295])))); float _1333 = fma(spvFMul(as_type(cbuf_32.data[2u + buf1_dword_off]), _558.z), fma(_612, fma(-_680, _746, _746), as_type(_901)), spvFMul(fma(fma(fma(_659, _661, -spvFMul(_680, _682)), _743, _680), fma(_612, _527.z, spvFMul(fma(as_type(_510), fma(-as_type(_511), _538.z, spvFMul(as_type(_512), _519.z)), spvFMul(as_type(_511), _538.z)), _725)), as_type(_1255)), spvFMul(as_type(cbuf_32.data[6u + buf1_dword_off]), as_type(cbuf_48.data[_1295])))); float _1335 = spvFMul(_1318, as_type(_1292)); uint _1342 = 14u + buf5_dword_off; float _1349 = spvFMul(_1332, as_type(_1291)); float _1356 = spvFMul(_1333, as_type(_1293)); float _1384 = spvFAdd(-1.0, fma(_1356, 0.11448000371456146240234375, fma(_1349, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1335)))); float _1388 = fma(as_type(cbuf_44.data[7u + buf5_dword_off]), _1384, 1.0); float _1407 = fast::clamp(spvFAdd(as_type(cbuf_44.data[_1298]), spvFMul(as_type(cbuf_44.data[_1298]), -exp2(-fma(as_type(cbuf_44.data[_1304]), sqrt(fma(-in.fs_in_attr4.x, -in.fs_in_attr4.x, spvFMul(-in.fs_in_attr4.z, -in.fs_in_attr4.z))), -spvFMul(as_type(cbuf_44.data[9u + buf5_dword_off]), as_type(cbuf_44.data[_1304])))))), 0.0, 1.0); float _1421 = fma(as_type(cbuf_44.data[19u + buf5_dword_off]), _1384, 1.0); float _1422 = fma(_1407, fma(-_1332, as_type(_1291), spvFMul(as_type(cbuf_44.data[4u + buf5_dword_off]), _1388)), _1349); float _1423 = fma(_1407, fma(-_1318, as_type(_1292), spvFMul(as_type(cbuf_44.data[5u + buf5_dword_off]), _1388)), _1335); float _1424 = fma(_1407, fma(-_1333, as_type(_1293), spvFMul(as_type(cbuf_44.data[6u + buf5_dword_off]), _1388)), _1356); float _1427 = fast::clamp(spvFMul(as_type(cbuf_44.data[12u + buf5_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_44.data[_1342]), spvFSub(as_type(cbuf_44.data[15u + buf5_dword_off]), in.fs_in_attr4.y)), -spvFMul(as_type(cbuf_44.data[13u + buf5_dword_off]), as_type(cbuf_44.data[_1342]))), 0.0, 1.0)), 0.0, 1.0); if (false) { discard_fragment(); } out.frag_color0.x = fma(_1427, fma(as_type(cbuf_44.data[16u + buf5_dword_off]), _1421, -_1422), _1422); out.frag_color0.y = fma(_1427, fma(as_type(cbuf_44.data[17u + buf5_dword_off]), _1421, -_1423), _1423); out.frag_color0.z = fma(_1427, fma(as_type(cbuf_44.data[18u + buf5_dword_off]), _1421, -_1424), _1424); out.frag_color0.w = spvFMul(spvFMul(_558.w, in.fs_in_attr2.w), as_type(_1290.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x9f9ef267 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[432]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _189 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _190 = _189.x; float4 _195 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _203 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _205 = _203.y; float4 _210 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _211 = _210.x; float _212 = _210.y; float _213 = _210.z; float _284 = fma(2.0, _195.z, -1.0); float _302 = fma(2.0, _195.y, -1.0); float _323 = fma(2.0, _195.x, -1.0); float _331 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _190, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _333 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _190, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _362 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _190, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _363 = spvFMul(_331, _333); float _364 = rsqrt(fma(_323, _323, fma(_302, _302, spvFMul(_284, _284)))); float _366 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _190, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _367 = spvFMul(_362, _333); float _369 = spvFMul(_284, _364); float _370 = spvFMul(_366, _333); float _372 = spvFMul(_302, _364); float _376 = spvFMul(_323, _364); float _381 = rsqrt(fma(_370, _370, fma(_367, _367, spvFMul(_363, _363)))); uint _382 = 4u + buf1_dword_off; uint _385 = 5u + buf1_dword_off; uint _388 = 6u + buf1_dword_off; uint _391 = 7u + buf1_dword_off; float _399 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _376, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _372, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _369))); float _400 = spvFMul(_363, _381); float _403 = fma(-_331, _333, as_type(cbuf_56.data[2u + buf1_dword_off])); float _407 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _376, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _372, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _369))); float _408 = spvFMul(_367, _381); float _413 = fma(-_362, _333, as_type(cbuf_56.data[1u + buf1_dword_off])); float _416 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _376, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _372, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _369))); float _417 = spvFMul(_370, _381); float _422 = fma(-_366, _333, as_type(cbuf_56.data[0u + buf1_dword_off])); float _427 = spvFMul(fma(_416, _417, fma(_407, _408, spvFMul(_399, _400))), 2.0); float _429 = exp2(spvFMul(13.0, _203.x)); float _431 = rsqrt(fma(_422, _422, fma(_413, _413, spvFMul(_403, _403)))); float _434 = fma(_363, _381, -spvFMul(_399, _427)); float _435 = spvFMul(_403, _431); float _442 = fma(_367, _381, -spvFMul(_407, _427)); float _445 = spvFMul(_413, _431); float _452 = fma(_370, _381, -spvFMul(_416, _427)); float _455 = spvFMul(_422, _431); float _463 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_391]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_391])))); float _478 = spvFMul(10.0, _205); float _480 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_417, _416, fma(-_408, _407, spvFMul(_399, -_400)))))); float _482 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[3u + buf1_dword_off]), fma(_422, _422, fma(_413, _413, spvFMul(_403, _403)))), 0.0, 1.0))); float _483 = exp2(spvFMul(spvFMul(0.25, _463), log2(fast::clamp(fma(_452, _455, fma(_442, _445, spvFMul(_434, _435))), 0.0, 1.0)))); float4 _491 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _492 = _491.x; float _493 = spvFMul(_211, _211); float _494 = spvFMul(_212, _212); float _495 = spvFMul(_213, _213); bool _496 = _478 == 0.0; float _497 = fma(2.0, _478, 1.0); float _498 = spvFMul(_480, _480); float _500 = fma(_416, _455, fma(_407, _445, spvFMul(_399, _435))); float _501 = spvFMul(_482, _482); float _502 = spvFMul(_483, fma(0.125, _463, 0.25)); uint _506; if (_496) { _506 = as_type(fast::clamp(fast::max(_500, _500), 0.0, 1.0)); } else { _506 = as_type(_435); } uint _518; uint _519; uint _520; if (_496) { float _508 = spvFMul(_501, as_type(_506)); _518 = as_type(spvFMul(as_type(cbuf_56.data[_388]), _508)); _519 = as_type(spvFMul(as_type(cbuf_56.data[_385]), _508)); _520 = as_type(spvFMul(as_type(cbuf_56.data[_382]), _508)); } else { _518 = as_type(_483); _519 = as_type(_455); _520 = _506; } uint _524; if (!_496) { _524 = as_type(fma(_205, 10.0, _500)); } else { _524 = _518; } uint _563; uint _564; uint _565; if (!_496) { float _553 = fma(_501, spvFMul(fast::max(0.0, as_type(_524)), 1.0 / _497), spvFMul(_478, spvFMul(_501, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_519), _417, fma(_445, _408, spvFMul(_400, as_type(_520)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _498))))); _563 = as_type(spvFMul(as_type(cbuf_56.data[_388]), _553)); _564 = as_type(spvFMul(as_type(cbuf_56.data[_385]), _553)); _565 = as_type(spvFMul(as_type(cbuf_56.data[_382]), _553)); } else { _563 = _524; _564 = _519; _565 = _520; } uint _588 = 20u + buf1_dword_off; uint _591 = 21u + buf1_dword_off; uint _594 = 22u + buf1_dword_off; uint _598 = 23u + buf1_dword_off; float _609 = fma(-_366, _333, as_type(cbuf_56.data[16u + buf1_dword_off])); float _612 = fma(-_362, _333, as_type(cbuf_56.data[17u + buf1_dword_off])); float _615 = fma(-_331, _333, as_type(cbuf_56.data[18u + buf1_dword_off])); float _619 = rsqrt(fma(_609, _609, fma(_612, _612, spvFMul(_615, _615)))); float _620 = spvFMul(_609, _619); float _622 = spvFMul(_612, _619); float _624 = spvFMul(_615, _619); float _627 = fma(_416, _620, fma(_407, _622, spvFMul(_399, _624))); float _636 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[19u + buf1_dword_off]), fma(_609, _609, fma(_612, _612, spvFMul(_615, _615)))), 0.0, 1.0))); float _637 = spvFMul(_636, _636); float _644 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_598]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_598])))); float _652 = exp2(spvFMul(spvFMul(0.25, _644), log2(fast::clamp(fma(_452, _620, fma(_442, _622, spvFMul(_434, _624))), 0.0, 1.0)))); float _655 = spvFMul(_652, fma(0.125, _644, 0.25)); uint _659; if (_496) { _659 = as_type(fast::clamp(fast::max(_627, _627), 0.0, 1.0)); } else { _659 = as_type(_652); } uint _672; uint _673; uint _674; uint _675; if (_496) { float _661 = spvFMul(_637, as_type(_659)); _672 = as_type(spvFMul(as_type(cbuf_56.data[_588]), _661)); _673 = as_type(spvFMul(as_type(cbuf_56.data[_594]), _661)); _674 = as_type(_661); _675 = as_type(spvFMul(as_type(cbuf_56.data[_591]), _661)); } else { _672 = as_type(_622); _673 = as_type(_620); _674 = _659; _675 = as_type(_627); } uint _680; if (!_496) { _680 = as_type(fma(_205, 10.0, as_type(_675))); } else { _680 = _674; } uint _720; uint _721; uint _722; if (!_496) { float _710 = fma(_637, spvFMul(fast::max(0.0, as_type(_680)), 1.0 / _497), spvFMul(_478, spvFMul(_637, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_673), _417, fma(as_type(_672), _408, spvFMul(_400, _624))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _498))))); _720 = as_type(spvFMul(as_type(cbuf_56.data[_594]), _710)); _721 = as_type(spvFMul(as_type(cbuf_56.data[_591]), _710)); _722 = as_type(spvFMul(as_type(cbuf_56.data[_588]), _710)); } else { _720 = _673; _721 = _675; _722 = _672; } uint _749 = 36u + buf1_dword_off; uint _753 = 37u + buf1_dword_off; uint _757 = 38u + buf1_dword_off; uint _761 = 39u + buf1_dword_off; float _787 = fma(-_366, _333, as_type(cbuf_56.data[32u + buf1_dword_off])); float _790 = fma(-_362, _333, as_type(cbuf_56.data[33u + buf1_dword_off])); float _793 = fma(-_331, _333, as_type(cbuf_56.data[34u + buf1_dword_off])); float _797 = rsqrt(fma(_787, _787, fma(_790, _790, spvFMul(_793, _793)))); float _798 = spvFMul(_787, _797); float _800 = spvFMul(_790, _797); float _802 = spvFMul(_793, _797); float _805 = fma(_416, _798, fma(_407, _800, spvFMul(_399, _802))); float _814 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[35u + buf1_dword_off]), fma(_787, _787, fma(_790, _790, spvFMul(_793, _793)))), 0.0, 1.0))); float _815 = spvFMul(_814, _814); float _822 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_761]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_761])))); float _830 = exp2(spvFMul(spvFMul(0.25, _822), log2(fast::clamp(fma(_452, _798, fma(_442, _800, spvFMul(_434, _802))), 0.0, 1.0)))); float _833 = spvFMul(_830, fma(0.125, _822, 0.25)); uint _837; if (_496) { _837 = as_type(fast::clamp(fast::max(_805, _805), 0.0, 1.0)); } else { _837 = as_type(_830); } uint _850; uint _851; uint _852; uint _853; if (_496) { float _839 = spvFMul(_815, as_type(_837)); _850 = as_type(spvFMul(as_type(cbuf_56.data[_749]), _839)); _851 = as_type(spvFMul(as_type(cbuf_56.data[_757]), _839)); _852 = as_type(_839); _853 = as_type(spvFMul(as_type(cbuf_56.data[_753]), _839)); } else { _850 = as_type(_800); _851 = as_type(_798); _852 = _837; _853 = as_type(_805); } uint _858; if (!_496) { _858 = as_type(fma(_205, 10.0, as_type(_853))); } else { _858 = _852; } uint _898; uint _899; uint _900; if (!_496) { float _888 = fma(_815, spvFMul(fast::max(0.0, as_type(_858)), 1.0 / _497), spvFMul(_478, spvFMul(_815, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_851), _417, fma(as_type(_850), _408, spvFMul(_400, _802))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _498))))); _898 = as_type(spvFMul(as_type(cbuf_56.data[_757]), _888)); _899 = as_type(spvFMul(as_type(cbuf_56.data[_753]), _888)); _900 = as_type(spvFMul(as_type(cbuf_56.data[_749]), _888)); } else { _898 = _851; _899 = _853; _900 = _850; } uint _929 = 52u + buf1_dword_off; uint _933 = 53u + buf1_dword_off; uint _937 = 54u + buf1_dword_off; uint _941 = 55u + buf1_dword_off; float _961 = fma(-_366, _333, as_type(cbuf_56.data[48u + buf1_dword_off])); float _964 = fma(-_362, _333, as_type(cbuf_56.data[49u + buf1_dword_off])); float _967 = fma(-_331, _333, as_type(cbuf_56.data[50u + buf1_dword_off])); float _971 = rsqrt(fma(_961, _961, fma(_964, _964, spvFMul(_967, _967)))); float _972 = spvFMul(_961, _971); float _974 = spvFMul(_964, _971); float _976 = spvFMul(_967, _971); float _979 = fma(_416, _972, fma(_407, _974, spvFMul(_399, _976))); float _988 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[51u + buf1_dword_off]), fma(_961, _961, fma(_964, _964, spvFMul(_967, _967)))), 0.0, 1.0))); float _989 = spvFMul(_988, _988); float _996 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_941]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_941])))); float _1004 = exp2(spvFMul(spvFMul(0.25, _996), log2(fast::clamp(fma(_452, _972, fma(_442, _974, spvFMul(_434, _976))), 0.0, 1.0)))); float _1007 = spvFMul(_1004, fma(0.125, _996, 0.25)); uint _1011; if (_496) { _1011 = as_type(fast::clamp(fast::max(_979, _979), 0.0, 1.0)); } else { _1011 = as_type(_1004); } uint _1024; uint _1025; uint _1026; uint _1027; if (_496) { float _1013 = spvFMul(_989, as_type(_1011)); _1024 = as_type(spvFMul(as_type(cbuf_56.data[_929]), _1013)); _1025 = as_type(spvFMul(as_type(cbuf_56.data[_937]), _1013)); _1026 = as_type(_1013); _1027 = as_type(spvFMul(as_type(cbuf_56.data[_933]), _1013)); } else { _1024 = as_type(_974); _1025 = as_type(_972); _1026 = _1011; _1027 = as_type(_979); } uint _1032; if (!_496) { _1032 = as_type(fma(_205, 10.0, as_type(_1027))); } else { _1032 = _1026; } uint _1072; uint _1073; uint _1074; if (!_496) { float _1062 = fma(_989, spvFMul(fast::max(0.0, as_type(_1032)), 1.0 / _497), spvFMul(_478, spvFMul(_989, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1025), _417, fma(as_type(_1024), _408, spvFMul(_400, _976))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _498))))); _1072 = as_type(spvFMul(as_type(cbuf_56.data[_937]), _1062)); _1073 = as_type(spvFMul(as_type(cbuf_56.data[_933]), _1062)); _1074 = as_type(spvFMul(as_type(cbuf_56.data[_929]), _1062)); } else { _1072 = _1025; _1073 = _1027; _1074 = _1024; } uint _1104 = 68u + buf1_dword_off; uint _1108 = 69u + buf1_dword_off; uint _1112 = 70u + buf1_dword_off; uint _1116 = 71u + buf1_dword_off; float _1136 = fma(-_366, _333, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1139 = fma(-_362, _333, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1142 = fma(-_331, _333, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1146 = rsqrt(fma(_1136, _1136, fma(_1139, _1139, spvFMul(_1142, _1142)))); float _1147 = spvFMul(_1136, _1146); float _1149 = spvFMul(_1139, _1146); float _1151 = spvFMul(_1142, _1146); float _1154 = fma(_416, _1147, fma(_407, _1149, spvFMul(_399, _1151))); float _1163 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[67u + buf1_dword_off]), fma(_1136, _1136, fma(_1139, _1139, spvFMul(_1142, _1142)))), 0.0, 1.0))); float _1164 = spvFMul(_1163, _1163); float _1171 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1116]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_1116])))); float _1179 = exp2(spvFMul(spvFMul(0.25, _1171), log2(fast::clamp(fma(_452, _1147, fma(_442, _1149, spvFMul(_434, _1151))), 0.0, 1.0)))); float _1182 = spvFMul(_1179, fma(0.125, _1171, 0.25)); uint _1186; if (_496) { _1186 = as_type(fast::clamp(fast::max(_1154, _1154), 0.0, 1.0)); } else { _1186 = as_type(_1179); } uint _1199; uint _1200; uint _1201; uint _1202; if (_496) { float _1188 = spvFMul(_1164, as_type(_1186)); _1199 = as_type(spvFMul(as_type(cbuf_56.data[_1104]), _1188)); _1200 = as_type(spvFMul(as_type(cbuf_56.data[_1112]), _1188)); _1201 = as_type(_1188); _1202 = as_type(spvFMul(as_type(cbuf_56.data[_1108]), _1188)); } else { _1199 = as_type(_1149); _1200 = as_type(_1147); _1201 = _1186; _1202 = as_type(_1154); } uint _1207; if (!_496) { _1207 = as_type(fma(_205, 10.0, as_type(_1202))); } else { _1207 = _1201; } uint _1247; uint _1248; uint _1249; if (!_496) { float _1237 = fma(_1164, spvFMul(fast::max(0.0, as_type(_1207)), 1.0 / _497), spvFMul(_478, spvFMul(_1164, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1200), _417, fma(as_type(_1199), _408, spvFMul(_400, _1151))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _498))))); _1247 = as_type(spvFMul(as_type(cbuf_56.data[_1112]), _1237)); _1248 = as_type(spvFMul(as_type(cbuf_56.data[_1108]), _1237)); _1249 = as_type(spvFMul(as_type(cbuf_56.data[_1104]), _1237)); } else { _1247 = _1200; _1248 = _1202; _1249 = _1199; } uint _1279 = 84u + buf1_dword_off; uint _1283 = 85u + buf1_dword_off; uint _1287 = 86u + buf1_dword_off; uint _1291 = 87u + buf1_dword_off; float _1311 = fma(-_366, _333, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1314 = fma(-_362, _333, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1317 = fma(-_331, _333, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1321 = rsqrt(fma(_1311, _1311, fma(_1314, _1314, spvFMul(_1317, _1317)))); float _1322 = spvFMul(_1311, _1321); float _1324 = spvFMul(_1314, _1321); float _1326 = spvFMul(_1317, _1321); float _1329 = fma(_416, _1322, fma(_407, _1324, spvFMul(_399, _1326))); float _1338 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[83u + buf1_dword_off]), fma(_1311, _1311, fma(_1314, _1314, spvFMul(_1317, _1317)))), 0.0, 1.0))); float _1339 = spvFMul(_1338, _1338); float _1346 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1291]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_1291])))); float _1354 = exp2(spvFMul(spvFMul(0.25, _1346), log2(fast::clamp(fma(_452, _1322, fma(_442, _1324, spvFMul(_434, _1326))), 0.0, 1.0)))); float _1357 = spvFMul(_1354, fma(0.125, _1346, 0.25)); uint _1361; if (_496) { _1361 = as_type(fast::clamp(fast::max(_1329, _1329), 0.0, 1.0)); } else { _1361 = as_type(_1354); } uint _1374; uint _1375; uint _1376; uint _1377; if (_496) { float _1363 = spvFMul(_1339, as_type(_1361)); _1374 = as_type(spvFMul(as_type(cbuf_56.data[_1279]), _1363)); _1375 = as_type(spvFMul(as_type(cbuf_56.data[_1287]), _1363)); _1376 = as_type(_1363); _1377 = as_type(spvFMul(as_type(cbuf_56.data[_1283]), _1363)); } else { _1374 = as_type(_1324); _1375 = as_type(_1322); _1376 = _1361; _1377 = as_type(_1329); } uint _1382; if (!_496) { _1382 = as_type(fma(_205, 10.0, as_type(_1377))); } else { _1382 = _1376; } uint _1422; uint _1423; uint _1424; if (!_496) { float _1412 = fma(_1339, spvFMul(fast::max(0.0, as_type(_1382)), 1.0 / _497), spvFMul(_478, spvFMul(_1339, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1375), _417, fma(as_type(_1374), _408, spvFMul(_400, _1326))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _498))))); _1422 = as_type(spvFMul(as_type(cbuf_56.data[_1287]), _1412)); _1423 = as_type(spvFMul(as_type(cbuf_56.data[_1283]), _1412)); _1424 = as_type(spvFMul(as_type(cbuf_56.data[_1279]), _1412)); } else { _1422 = _1375; _1423 = _1377; _1424 = _1374; } uint _1454 = 100u + buf1_dword_off; uint _1458 = 101u + buf1_dword_off; uint _1462 = 102u + buf1_dword_off; uint _1466 = 103u + buf1_dword_off; float _1486 = fma(-_366, _333, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1489 = fma(-_362, _333, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1492 = fma(-_331, _333, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1496 = rsqrt(fma(_1486, _1486, fma(_1489, _1489, spvFMul(_1492, _1492)))); float _1497 = spvFMul(_1486, _1496); float _1499 = spvFMul(_1489, _1496); float _1501 = spvFMul(_1492, _1496); float _1504 = fma(_416, _1497, fma(_407, _1499, spvFMul(_399, _1501))); float _1513 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[99u + buf1_dword_off]), fma(_1486, _1486, fma(_1489, _1489, spvFMul(_1492, _1492)))), 0.0, 1.0))); float _1514 = spvFMul(_1513, _1513); float _1521 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1466]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_1466])))); float _1529 = exp2(spvFMul(spvFMul(0.25, _1521), log2(fast::clamp(fma(_452, _1497, fma(_442, _1499, spvFMul(_434, _1501))), 0.0, 1.0)))); float _1532 = spvFMul(_1529, fma(0.125, _1521, 0.25)); uint _1536; if (_496) { _1536 = as_type(fast::clamp(fast::max(_1504, _1504), 0.0, 1.0)); } else { _1536 = as_type(_1529); } uint _1549; uint _1550; uint _1551; uint _1552; if (_496) { float _1538 = spvFMul(_1514, as_type(_1536)); _1549 = as_type(spvFMul(as_type(cbuf_56.data[_1454]), _1538)); _1550 = as_type(spvFMul(as_type(cbuf_56.data[_1462]), _1538)); _1551 = as_type(_1538); _1552 = as_type(spvFMul(as_type(cbuf_56.data[_1458]), _1538)); } else { _1549 = as_type(_1499); _1550 = as_type(_1497); _1551 = _1536; _1552 = as_type(_1504); } uint _1557; if (!_496) { _1557 = as_type(fma(_205, 10.0, as_type(_1552))); } else { _1557 = _1551; } uint _1597; uint _1598; uint _1599; if (!_496) { float _1587 = fma(_1514, spvFMul(fast::max(0.0, as_type(_1557)), 1.0 / _497), spvFMul(_478, spvFMul(_1514, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1550), _417, fma(as_type(_1549), _408, spvFMul(_400, _1501))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _498))))); _1597 = as_type(spvFMul(as_type(cbuf_56.data[_1462]), _1587)); _1598 = as_type(spvFMul(as_type(cbuf_56.data[_1458]), _1587)); _1599 = as_type(spvFMul(as_type(cbuf_56.data[_1454]), _1587)); } else { _1597 = _1550; _1598 = _1552; _1599 = _1549; } uint _1629 = 116u + buf1_dword_off; uint _1633 = 117u + buf1_dword_off; uint _1637 = 118u + buf1_dword_off; uint _1641 = 119u + buf1_dword_off; float _1661 = fma(-_366, _333, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1664 = fma(-_362, _333, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1667 = fma(-_331, _333, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1671 = rsqrt(fma(_1661, _1661, fma(_1664, _1664, spvFMul(_1667, _1667)))); float _1672 = spvFMul(_1661, _1671); float _1674 = spvFMul(_1664, _1671); float _1676 = spvFMul(_1667, _1671); float _1679 = fma(_416, _1672, fma(_407, _1674, spvFMul(_399, _1676))); float _1688 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[115u + buf1_dword_off]), fma(_1661, _1661, fma(_1664, _1664, spvFMul(_1667, _1667)))), 0.0, 1.0))); float _1689 = spvFMul(_1688, _1688); float _1696 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1641]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_1641])))); float _1704 = exp2(spvFMul(spvFMul(0.25, _1696), log2(fast::clamp(fma(_452, _1672, fma(_442, _1674, spvFMul(_434, _1676))), 0.0, 1.0)))); float _1707 = spvFMul(_1704, fma(0.125, _1696, 0.25)); uint _1711; if (_496) { _1711 = as_type(fast::clamp(fast::max(_1679, _1679), 0.0, 1.0)); } else { _1711 = as_type(_1704); } uint _1724; uint _1725; uint _1726; uint _1727; if (_496) { float _1713 = spvFMul(_1689, as_type(_1711)); _1724 = as_type(spvFMul(as_type(cbuf_56.data[_1629]), _1713)); _1725 = as_type(spvFMul(as_type(cbuf_56.data[_1637]), _1713)); _1726 = as_type(_1713); _1727 = as_type(spvFMul(as_type(cbuf_56.data[_1633]), _1713)); } else { _1724 = as_type(_1674); _1725 = as_type(_1672); _1726 = _1711; _1727 = as_type(_1679); } uint _1732; if (!_496) { _1732 = as_type(fma(_205, 10.0, as_type(_1727))); } else { _1732 = _1726; } uint _1772; uint _1773; uint _1774; if (!_496) { float _1762 = fma(_1689, spvFMul(fast::max(0.0, as_type(_1732)), 1.0 / _497), spvFMul(_478, spvFMul(_1689, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1725), _417, fma(as_type(_1724), _408, spvFMul(_400, _1676))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), _498))))); _1772 = as_type(spvFMul(as_type(cbuf_56.data[_1637]), _1762)); _1773 = as_type(spvFMul(as_type(cbuf_56.data[_1633]), _1762)); _1774 = as_type(spvFMul(as_type(cbuf_56.data[_1629]), _1762)); } else { _1772 = _1725; _1773 = _1727; _1774 = _1724; } uint _1804 = 132u + buf1_dword_off; uint _1808 = 133u + buf1_dword_off; uint _1812 = 134u + buf1_dword_off; uint _1816 = 135u + buf1_dword_off; float _1836 = fma(-_366, _333, as_type(cbuf_56.data[128u + buf1_dword_off])); float _1839 = fma(-_362, _333, as_type(cbuf_56.data[129u + buf1_dword_off])); float _1842 = fma(-_331, _333, as_type(cbuf_56.data[130u + buf1_dword_off])); float _1846 = rsqrt(fma(_1836, _1836, fma(_1839, _1839, spvFMul(_1842, _1842)))); float _1847 = spvFMul(_1836, _1846); float _1849 = spvFMul(_1839, _1846); float _1851 = spvFMul(_1842, _1846); float _1854 = fma(_416, _1847, fma(_407, _1849, spvFMul(_399, _1851))); float _1863 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[131u + buf1_dword_off]), fma(_1836, _1836, fma(_1839, _1839, spvFMul(_1842, _1842)))), 0.0, 1.0))); float _1864 = spvFMul(_1863, _1863); float _1871 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1816]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_1816])))); float _1879 = exp2(spvFMul(spvFMul(0.25, _1871), log2(fast::clamp(fma(_452, _1847, fma(_442, _1849, spvFMul(_434, _1851))), 0.0, 1.0)))); float _1882 = spvFMul(_1879, fma(0.125, _1871, 0.25)); uint _1886; if (_496) { _1886 = as_type(fast::clamp(fast::max(_1854, _1854), 0.0, 1.0)); } else { _1886 = as_type(_1879); } uint _1899; uint _1900; uint _1901; uint _1902; if (_496) { float _1888 = spvFMul(_1864, as_type(_1886)); _1899 = as_type(spvFMul(as_type(cbuf_56.data[_1804]), _1888)); _1900 = as_type(spvFMul(as_type(cbuf_56.data[_1812]), _1888)); _1901 = as_type(_1888); _1902 = as_type(spvFMul(as_type(cbuf_56.data[_1808]), _1888)); } else { _1899 = as_type(_1849); _1900 = as_type(_1847); _1901 = _1886; _1902 = as_type(_1854); } uint _1907; if (!_496) { _1907 = as_type(fma(_205, 10.0, as_type(_1902))); } else { _1907 = _1901; } uint _1947; uint _1948; uint _1949; if (!_496) { float _1937 = fma(_1864, spvFMul(fast::max(0.0, as_type(_1907)), 1.0 / _497), spvFMul(_478, spvFMul(_1864, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[141u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1900), _417, fma(as_type(_1899), _408, spvFMul(_400, _1851))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[140u + buf1_dword_off]), _498))))); _1947 = as_type(spvFMul(as_type(cbuf_56.data[_1812]), _1937)); _1948 = as_type(spvFMul(as_type(cbuf_56.data[_1808]), _1937)); _1949 = as_type(spvFMul(as_type(cbuf_56.data[_1804]), _1937)); } else { _1947 = _1900; _1948 = _1902; _1949 = _1899; } uint _1979 = 148u + buf1_dword_off; uint _1983 = 149u + buf1_dword_off; uint _1987 = 150u + buf1_dword_off; uint _1991 = 151u + buf1_dword_off; float _2006 = fma(spvFMul(as_type(cbuf_56.data[136u + buf1_dword_off]), _1882), _1864, fma(spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1707), _1689, fma(spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1532), _1514, fma(spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1357), _1339, fma(spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1182), _1164, fma(spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1007), _989, fma(spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _833), _815, fma(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _502), _501, spvFMul(_637, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _655)))))))))); float _2007 = fma(spvFMul(as_type(cbuf_56.data[137u + buf1_dword_off]), _1882), _1864, fma(spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1707), _1689, fma(spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1532), _1514, fma(spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1357), _1339, fma(spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1182), _1164, fma(spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1007), _989, fma(spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _833), _815, fma(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _502), _501, spvFMul(_637, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _655)))))))))); float _2008 = fma(spvFMul(as_type(cbuf_56.data[138u + buf1_dword_off]), _1882), _1864, fma(spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1707), _1689, fma(spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1532), _1514, fma(spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1357), _1339, fma(spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1182), _1164, fma(spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1007), _989, fma(spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _833), _815, fma(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _502), _501, spvFMul(_637, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _655)))))))))); float _2011 = fma(-_366, _333, as_type(cbuf_56.data[144u + buf1_dword_off])); float _2014 = fma(-_362, _333, as_type(cbuf_56.data[145u + buf1_dword_off])); float _2017 = fma(-_331, _333, as_type(cbuf_56.data[146u + buf1_dword_off])); float _2021 = rsqrt(fma(_2011, _2011, fma(_2014, _2014, spvFMul(_2017, _2017)))); float _2022 = spvFMul(_2011, _2021); float _2024 = spvFMul(_2014, _2021); float _2026 = spvFMul(_2017, _2021); float _2029 = fma(_416, _2022, fma(_407, _2024, spvFMul(_399, _2026))); float _2038 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[147u + buf1_dword_off]), fma(_2011, _2011, fma(_2014, _2014, spvFMul(_2017, _2017)))), 0.0, 1.0))); float _2039 = spvFMul(_2038, _2038); float _2046 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1991]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_1991])))); float _2054 = exp2(spvFMul(spvFMul(0.25, _2046), log2(fast::clamp(fma(_452, _2022, fma(_442, _2024, spvFMul(_434, _2026))), 0.0, 1.0)))); float _2057 = spvFMul(_2054, fma(0.125, _2046, 0.25)); uint _2061; if (_496) { _2061 = as_type(fast::clamp(fast::max(_2029, _2029), 0.0, 1.0)); } else { _2061 = as_type(_2054); } uint _2074; uint _2075; uint _2076; uint _2077; if (_496) { float _2063 = spvFMul(_2039, as_type(_2061)); _2074 = as_type(spvFMul(as_type(cbuf_56.data[_1979]), _2063)); _2075 = as_type(spvFMul(as_type(cbuf_56.data[_1987]), _2063)); _2076 = as_type(_2063); _2077 = as_type(spvFMul(as_type(cbuf_56.data[_1983]), _2063)); } else { _2074 = as_type(_2024); _2075 = as_type(_2022); _2076 = _2061; _2077 = as_type(_2029); } uint _2082; if (!_496) { _2082 = as_type(fma(_205, 10.0, as_type(_2077))); } else { _2082 = _2076; } uint _2122; uint _2123; uint _2124; if (!_496) { float _2112 = fma(_2039, spvFMul(fast::max(0.0, as_type(_2082)), 1.0 / _497), spvFMul(_478, spvFMul(_2039, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[157u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_2075), _417, fma(as_type(_2074), _408, spvFMul(_400, _2026))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[156u + buf1_dword_off]), _498))))); _2122 = as_type(spvFMul(as_type(cbuf_56.data[_1987]), _2112)); _2123 = as_type(spvFMul(as_type(cbuf_56.data[_1983]), _2112)); _2124 = as_type(spvFMul(as_type(cbuf_56.data[_1979]), _2112)); } else { _2122 = _2075; _2123 = _2077; _2124 = _2074; } uint _2154 = 164u + buf1_dword_off; uint _2158 = 165u + buf1_dword_off; uint _2162 = 166u + buf1_dword_off; uint _2166 = 167u + buf1_dword_off; float _2186 = fma(-_366, _333, as_type(cbuf_56.data[160u + buf1_dword_off])); float _2189 = fma(-_362, _333, as_type(cbuf_56.data[161u + buf1_dword_off])); float _2192 = fma(-_331, _333, as_type(cbuf_56.data[162u + buf1_dword_off])); float _2196 = rsqrt(fma(_2186, _2186, fma(_2189, _2189, spvFMul(_2192, _2192)))); float _2197 = spvFMul(_2186, _2196); float _2199 = spvFMul(_2189, _2196); float _2201 = spvFMul(_2192, _2196); float _2204 = fma(_416, _2197, fma(_407, _2199, spvFMul(_399, _2201))); float _2213 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[163u + buf1_dword_off]), fma(_2186, _2186, fma(_2189, _2189, spvFMul(_2192, _2192)))), 0.0, 1.0))); float _2214 = spvFMul(_2213, _2213); float _2221 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_2166]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_2166])))); float _2229 = exp2(spvFMul(spvFMul(0.25, _2221), log2(fast::clamp(fma(_452, _2197, fma(_442, _2199, spvFMul(_434, _2201))), 0.0, 1.0)))); float _2232 = spvFMul(_2229, fma(0.125, _2221, 0.25)); uint _2236; if (_496) { _2236 = as_type(fast::clamp(fast::max(_2204, _2204), 0.0, 1.0)); } else { _2236 = as_type(_2229); } uint _2249; uint _2250; uint _2251; uint _2252; if (_496) { float _2238 = spvFMul(_2214, as_type(_2236)); _2249 = as_type(spvFMul(as_type(cbuf_56.data[_2154]), _2238)); _2250 = as_type(spvFMul(as_type(cbuf_56.data[_2162]), _2238)); _2251 = as_type(_2238); _2252 = as_type(spvFMul(as_type(cbuf_56.data[_2158]), _2238)); } else { _2249 = as_type(_2199); _2250 = as_type(_2197); _2251 = _2236; _2252 = as_type(_2204); } uint _2257; if (!_496) { _2257 = as_type(fma(_205, 10.0, as_type(_2252))); } else { _2257 = _2251; } uint _2297; uint _2298; uint _2299; if (!_496) { float _2287 = fma(_2214, spvFMul(fast::max(0.0, as_type(_2257)), 1.0 / _497), spvFMul(_478, spvFMul(_2214, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[173u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_2250), _417, fma(as_type(_2249), _408, spvFMul(_400, _2201))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[172u + buf1_dword_off]), _498))))); _2297 = as_type(spvFMul(as_type(cbuf_56.data[_2162]), _2287)); _2298 = as_type(spvFMul(as_type(cbuf_56.data[_2158]), _2287)); _2299 = as_type(spvFMul(as_type(cbuf_56.data[_2154]), _2287)); } else { _2297 = _2250; _2298 = _2252; _2299 = _2249; } uint _2317 = 180u + buf1_dword_off; uint _2321 = 181u + buf1_dword_off; uint _2325 = 182u + buf1_dword_off; uint _2329 = 183u + buf1_dword_off; float _2340 = fma(-_331, _333, as_type(cbuf_56.data[178u + buf1_dword_off])); float _2343 = fma(-_362, _333, as_type(cbuf_56.data[177u + buf1_dword_off])); float _2347 = fma(-_366, _333, as_type(cbuf_56.data[176u + buf1_dword_off])); float _2350 = rsqrt(fma(_2347, _2347, fma(_2343, _2343, spvFMul(_2340, _2340)))); float _2351 = spvFMul(_2340, _2350); float _2366 = spvFMul(_2343, _2350); float _2372 = spvFMul(_2347, _2350); float _2377 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_2329]), _429), 1.0 / fma(_429, 0.01000213623046875, as_type(cbuf_56.data[_2329])))); float _2395 = spvFSub(1.0, sqrt(fast::clamp(spvFMul(as_type(cbuf_56.data[179u + buf1_dword_off]), fma(_2347, _2347, fma(_2343, _2343, spvFMul(_2340, _2340)))), 0.0, 1.0))); float _2402 = fma(_416, _2372, fma(_407, _2366, spvFMul(_399, _2351))); float _2403 = spvFMul(_2395, _2395); float _2404 = spvFMul(exp2(spvFMul(spvFMul(0.25, _2377), log2(fast::clamp(fma(_452, _2372, fma(_442, _2366, spvFMul(_434, _2351))), 0.0, 1.0)))), fma(0.125, _2377, 0.25)); uint _2408; if (_496) { _2408 = as_type(fast::clamp(fast::max(_2402, _2402), 0.0, 1.0)); } else { _2408 = as_type(_498); } uint _2421; uint _2422; uint _2423; uint _2424; if (_496) { float _2410 = spvFMul(_2403, as_type(_2408)); _2421 = as_type(spvFMul(as_type(cbuf_56.data[_2317]), _2410)); _2422 = as_type(spvFMul(as_type(cbuf_56.data[_2325]), _2410)); _2423 = as_type(spvFMul(as_type(cbuf_56.data[_2321]), _2410)); _2424 = as_type(_2410); } else { _2421 = as_type(_2395); _2422 = as_type(_408); _2423 = as_type(_417); _2424 = _2408; } uint _2428; if (!_496) { _2428 = as_type(fma(_205, 10.0, _2402)); } else { _2428 = _2421; } uint _2469; uint _2470; uint _2471; if (!_496) { float _2459 = fma(_2403, spvFMul(fast::max(0.0, as_type(_2428)), 1.0 / _497), spvFMul(_478, spvFMul(_2403, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[189u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_2372, as_type(_2423), fma(_2366, as_type(_2422), spvFMul(_400, _2351))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[188u + buf1_dword_off]), as_type(_2424)))))); _2469 = as_type(spvFMul(as_type(cbuf_56.data[_2325]), _2459)); _2470 = as_type(spvFMul(as_type(cbuf_56.data[_2321]), _2459)); _2471 = as_type(spvFMul(as_type(cbuf_56.data[_2317]), _2459)); } else { _2469 = _2422; _2470 = _2423; _2471 = _2428; } float _2485 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_565), as_type(_722)), as_type(_900)), as_type(_1074)), as_type(_1249)), as_type(_1424)), as_type(_1599)), as_type(_1774)), as_type(_1949)), as_type(_2124)), as_type(_2299)), as_type(_2471)); float _2487 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_564), as_type(_721)), as_type(_899)), as_type(_1073)), as_type(_1248)), as_type(_1423)), as_type(_1598)), as_type(_1773)), as_type(_1948)), as_type(_2123)), as_type(_2298)), as_type(_2470)); float _2489 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_563), as_type(_720)), as_type(_898)), as_type(_1072)), as_type(_1247)), as_type(_1422)), as_type(_1597)), as_type(_1772)), as_type(_1947)), as_type(_2122)), as_type(_2297)), as_type(_2469)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_493, spvFMul(_492, fma(spvFMul(as_type(cbuf_56.data[184u + buf1_dword_off]), _2404), _2403, fma(spvFMul(as_type(cbuf_56.data[168u + buf1_dword_off]), _2232), _2214, fma(spvFMul(as_type(cbuf_56.data[152u + buf1_dword_off]), _2057), _2039, _2006))))); out.frag_color1.y = spvFMul(_494, spvFMul(_492, fma(spvFMul(as_type(cbuf_56.data[185u + buf1_dword_off]), _2404), _2403, fma(spvFMul(as_type(cbuf_56.data[169u + buf1_dword_off]), _2232), _2214, fma(spvFMul(as_type(cbuf_56.data[153u + buf1_dword_off]), _2057), _2039, _2007))))); out.frag_color1.z = spvFMul(_495, spvFMul(_492, fma(spvFMul(as_type(cbuf_56.data[186u + buf1_dword_off]), _2404), _2403, fma(spvFMul(as_type(cbuf_56.data[170u + buf1_dword_off]), _2232), _2214, fma(spvFMul(as_type(cbuf_56.data[154u + buf1_dword_off]), _2057), _2039, _2008))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_492, spvFSub(_2485, spvFMul(spvFMul(_493, _2485), 0.5))); out.frag_color0.y = spvFMul(_492, spvFSub(_2487, spvFMul(spvFMul(_494, _2487), 0.5))); out.frag_color0.z = spvFMul(_492, spvFSub(_2489, spvFMul(spvFMul(_495, _2489), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0x8453cd1c (permutation) [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xda35f466 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct vs_cbuf_block_f32_1 { uint data[104]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32_1& cbuf_4 [[buffer(12)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; float _84 = spvFAdd(-0.5, gl_TessCoord.y); float _85 = spvFAdd(-0.5, gl_TessCoord.x); float _122 = spvFSub(float(_84 > 0.0), float(0.0 > _84)); float _187 = fma(_84, 0.8786799907684326171875, spvFMul(0.06065998971462249755859375, _122)); float _199 = spvFSub(_85, spvFMul(spvFMul(fma(_122, -0.20710666477680206298828125, _187), spvFMul(_85, _122)), 2.0)); float _200 = spvFAdd(_187, gl_in[0u].in_attrs[0u].y); float _203 = spvFAdd(_199, gl_in[0u].in_attrs[0u].x); float _209 = fma(gl_in[0u].in_attrs[5u].x, _203, fma(gl_in[0u].in_attrs[5u].y, _200, fma(gl_in[0u].in_attrs[5u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[5u].w, gl_in[0u].in_attrs[0u].w)))); float _211 = fma(gl_in[0u].in_attrs[4u].x, _203, fma(gl_in[0u].in_attrs[4u].y, _200, fma(gl_in[0u].in_attrs[4u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[4u].w, gl_in[0u].in_attrs[0u].w)))); float _224 = fma(gl_in[0u].in_attrs[3u].x, _203, fma(gl_in[0u].in_attrs[3u].y, _200, fma(gl_in[0u].in_attrs[3u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[3u].w, gl_in[0u].in_attrs[0u].w)))); float _240 = fma(as_type(cbuf_4.data[12u + buf3_dword_off]), _224, fma(as_type(cbuf_4.data[13u + buf3_dword_off]), _211, fma(as_type(cbuf_4.data[14u + buf3_dword_off]), _209, as_type(cbuf_4.data[15u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_4.data[0u + buf3_dword_off]), _224, fma(as_type(cbuf_4.data[1u + buf3_dword_off]), _211, fma(as_type(cbuf_4.data[2u + buf3_dword_off]), _209, as_type(cbuf_4.data[3u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_4.data[4u + buf3_dword_off]), _224, fma(as_type(cbuf_4.data[5u + buf3_dword_off]), _211, fma(as_type(cbuf_4.data[6u + buf3_dword_off]), _209, as_type(cbuf_4.data[7u + buf3_dword_off])))); out.gl_Position.z = fma(as_type(cbuf_4.data[8u + buf3_dword_off]), _224, fma(as_type(cbuf_4.data[9u + buf3_dword_off]), _211, fma(as_type(cbuf_4.data[10u + buf3_dword_off]), _209, as_type(cbuf_4.data[11u + buf3_dword_off])))); out.gl_Position.w = _240; uint _258 = 92u + buf3_dword_off; uint _266 = 94u + buf3_dword_off; float _273 = spvFMul(1.0, _199); float _275 = spvFMul(-1.0, _187); float _277 = spvFSub(_209, as_type(cbuf_4.data[90u + buf3_dword_off])); float _279 = spvFSub(_211, as_type(cbuf_4.data[89u + buf3_dword_off])); uint _286 = 65u + buf3_dword_off; float _290 = spvFSub(_224, as_type(cbuf_4.data[88u + buf3_dword_off])); float _323 = sqrt(fma(_290, _290, fma(_279, _279, spvFMul(_277, _277)))); float _338 = fma(-spvFSub(as_type(cbuf_4.data[_258]), fast::min(as_type(cbuf_4.data[_258]), _323)), 1.0 / as_type(cbuf_4.data[93u + buf3_dword_off]), 1.0); out.out_attr0.x = gl_in[0u].in_attrs[1u].x; out.out_attr0.y = gl_in[0u].in_attrs[1u].y; out.out_attr0.z = gl_in[0u].in_attrs[1u].z; out.out_attr0.w = spvFMul(gl_in[0u].in_attrs[1u].w, fma(-spvFMul(spvFSub(fast::max(as_type(cbuf_4.data[_266]), _323), as_type(cbuf_4.data[_266])), 1.0 / as_type(cbuf_4.data[95u + buf3_dword_off])), _338, _338)); out.out_attr1.x = spvFSub(as_type(cbuf_4.data[19u + buf3_dword_off]), _224); out.out_attr1.y = spvFSub(as_type(cbuf_4.data[23u + buf3_dword_off]), _211); out.out_attr1.z = spvFSub(as_type(cbuf_4.data[27u + buf3_dword_off]), _209); out.out_attr1.w = 0.0; out.out_attr2.x = fma(_273, gl_in[0u].in_attrs[6u].x, gl_in[0u].in_attrs[2u].x); out.out_attr2.y = fma(_275, gl_in[0u].in_attrs[6u].y, gl_in[0u].in_attrs[2u].y); out.out_attr2.z = fast::clamp(spvFAdd(spvFMul(as_type(cbuf_4.data[_286]), _240), -spvFMul(as_type(cbuf_4.data[64u + buf3_dword_off]), as_type(cbuf_4.data[_286]))), 0.0, 1.0); out.out_attr2.w = 1.0; out.out_attr3.x = fma(gl_in[0u].in_attrs[6u].x, _273, gl_in[0u].in_attrs[2u].z); out.out_attr3.y = fma(gl_in[0u].in_attrs[6u].y, _275, gl_in[0u].in_attrs[2u].w); out.out_attr3.z = gl_in[0u].in_attrs[6u].z; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x6a833138 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[216]; }; struct vs_cbuf_block_f32_1 { uint data[104]; }; struct vs_cbuf_block_f32_2 { uint data[192]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _245 = gl_InstanceIndex * 13u; float _260 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _261 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _262 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _270 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _271 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _272 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _291 = ((0u + ((_245 + 3u) * 16u)) + buf8_off) >> 2u; uint4 _304 = uint4(cbuf_12.data[_291 + 0u], cbuf_12.data[_291 + 1u], cbuf_12.data[_291 + 2u], cbuf_12.data[_291 + 3u]); uint _310 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + ((_245 + 5u) * 16u)) + buf8_off) >> 2u]) * 3u; uint _323 = ((0u + (_310 * 16u)) + buf9_off) >> 2u; uint4 _336 = uint4(cbuf_16.data[_323 + 0u], cbuf_16.data[_323 + 1u], cbuf_16.data[_323 + 2u], cbuf_16.data[_323 + 3u]); uint _337 = _336.x; uint _338 = _336.y; uint _339 = _336.z; uint _344 = ((0u + ((_310 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _357 = uint4(cbuf_16.data[_344 + 0u], cbuf_16.data[_344 + 1u], cbuf_16.data[_344 + 2u], cbuf_16.data[_344 + 3u]); uint _358 = _357.x; uint _359 = _357.y; uint _360 = _357.z; uint _365 = ((0u + ((_310 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _378 = uint4(cbuf_16.data[_365 + 0u], cbuf_16.data[_365 + 1u], cbuf_16.data[_365 + 2u], cbuf_16.data[_365 + 3u]); uint _379 = _378.x; uint _380 = _378.y; uint _381 = _378.z; float _405 = spvFSub(fma(as_type(_337), in.vs_in_attr0.x, fma(as_type(_338), in.vs_in_attr0.y, fma(as_type(_339), in.vs_in_attr0.z, as_type(_336.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _407 = spvFSub(fma(as_type(_358), in.vs_in_attr0.x, fma(as_type(_359), in.vs_in_attr0.y, fma(as_type(_360), in.vs_in_attr0.z, as_type(_357.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _409 = spvFSub(fma(as_type(_379), in.vs_in_attr0.x, fma(as_type(_380), in.vs_in_attr0.y, fma(as_type(_381), in.vs_in_attr0.z, as_type(_378.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _431 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _409, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _433 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _409, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _435 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _409, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _437 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _405, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _407, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _409, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _431; out.gl_Position.y = _433; out.gl_Position.z = _435; out.gl_Position.w = _437; out.out_attr4.x = _431; out.out_attr4.y = _433; out.out_attr4.z = _435; out.out_attr4.w = _437; out.out_attr0.x = fma(as_type(_337), _270, fma(as_type(_338), _271, spvFMul(as_type(_339), _272))); out.out_attr0.y = fma(as_type(_358), _270, fma(as_type(_359), _271, spvFMul(as_type(_360), _272))); out.out_attr0.z = fma(as_type(_379), _270, fma(as_type(_380), _271, spvFMul(as_type(_381), _272))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_337), _260, fma(as_type(_338), _261, spvFMul(as_type(_339), _262))); out.out_attr1.y = fma(as_type(_358), _260, fma(as_type(_359), _261, spvFMul(as_type(_360), _262))); out.out_attr1.z = fma(as_type(_379), _260, fma(as_type(_380), _261, spvFMul(as_type(_381), _262))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(_304.x), as_type(_304.z)); out.out_attr3.w = fma(spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(_304.y), as_type(_304.w)); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 39 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 37 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 36 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmInstanceCreate:155: called context = 1, codec_type = At9Dec, flags = 0x421 [Lib.Ajm] ajm_context.cpp:InstanceCreate:164: instance = 35 [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 7 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 39 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 2 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 37 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 6 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 36 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 3 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 35 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x97f2d384 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _163 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _169 = ((0u + ((_163 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _182 = uint4(cbuf_16.data[_169 + 0u], cbuf_16.data[_169 + 1u], cbuf_16.data[_169 + 2u], cbuf_16.data[_169 + 3u]); uint _183 = _182.x; uint _184 = _182.y; uint _185 = _182.z; uint _190 = ((0u + ((_163 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _203 = uint4(cbuf_16.data[_190 + 0u], cbuf_16.data[_190 + 1u], cbuf_16.data[_190 + 2u], cbuf_16.data[_190 + 3u]); uint _204 = _203.x; uint _205 = _203.y; uint _206 = _203.z; uint _211 = ((0u + (_163 * 16u)) + buf6_off) >> 2u; uint4 _224 = uint4(cbuf_16.data[_211 + 0u], cbuf_16.data[_211 + 1u], cbuf_16.data[_211 + 2u], cbuf_16.data[_211 + 3u]); uint _225 = _224.x; uint _226 = _224.y; uint _227 = _224.z; float _326 = spvFSub(fma(as_type(_183), in.vs_in_attr0.x, fma(as_type(_184), in.vs_in_attr0.y, fma(as_type(_185), in.vs_in_attr0.z, as_type(_182.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _330 = spvFSub(fma(as_type(_204), in.vs_in_attr0.x, fma(as_type(_205), in.vs_in_attr0.y, fma(as_type(_206), in.vs_in_attr0.z, as_type(_203.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _344 = spvFSub(fma(as_type(_225), in.vs_in_attr0.x, fma(as_type(_226), in.vs_in_attr0.y, fma(as_type(_227), in.vs_in_attr0.z, as_type(_224.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _354 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _326, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _356 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _326, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _358 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _326, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _360 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _326, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _354; out.gl_Position.y = _356; out.gl_Position.z = _358; out.gl_Position.w = _360; float _387 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _390 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _393 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _411 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _412 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_225), _412, fma(as_type(_226), _395, spvFMul(as_type(_227), _390))); out.out_attr0.y = fma(as_type(_204), _412, fma(as_type(_205), _395, spvFMul(as_type(_206), _390))); out.out_attr0.z = fma(as_type(_183), _412, fma(as_type(_184), _395, spvFMul(as_type(_185), _390))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_225), _411, fma(as_type(_226), _393, spvFMul(as_type(_227), _387))); out.out_attr1.y = fma(as_type(_204), _411, fma(as_type(_205), _393, spvFMul(as_type(_206), _387))); out.out_attr1.z = fma(as_type(_183), _411, fma(as_type(_184), _393, spvFMul(as_type(_185), _387))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _354; out.out_attr3.y = _356; out.out_attr3.z = _358; out.out_attr3.w = _360; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img68 [[texture(0)]], texture2d fs_img60 [[texture(1)]], texture2d fs_img52 [[texture(2)]], texturecube fs_img84 [[texture(3)]], texturecube fs_img76 [[texture(4)]], texture2d fs_img44 [[texture(5)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint _132 = uint(gl_FrontFacing); float _143 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _144 = spvFMul(in.fs_in_attr0.x, _143); float _146 = spvFMul(in.fs_in_attr0.y, _143); float _147 = spvFMul(in.fs_in_attr0.z, _143); float _159 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _161 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _163 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _167 = rsqrt(fma(_159, _159, fma(_161, _161, spvFMul(_163, _163)))); float _281 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float _296 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _281, as_type(cbuf_36.data[183u + buf0_dword_off])); float _299 = fma(-fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))), _281, as_type(cbuf_36.data[187u + buf0_dword_off])); float _302 = fma(-fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _281, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _303 = 0u == _132; uint _316; uint _317; uint _318; if (_303) { _316 = as_type(fast::max(-_144, -_144)); _317 = as_type(fast::max(-_147, -_147)); _318 = as_type(fast::max(-_146, -_146)); } else { _316 = as_type(_144); _317 = as_type(_147); _318 = _132; } uint _321; if (!_303) { _321 = as_type(_146); } else { _321 = _318; } float4 _352 = fs_img68.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _381 = fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _387 = fma(2.0, _352.y, -1.0); float _388 = spvFMul(fma(2.0, _352.x, -1.0), fma(2.0, _352.w, -1.0)); float _397 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _398 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_388, _388), spvFMul(_387, _387)), 0.0, 1.0))); float _410 = fma(spvFMul(spvFMul(_163, _167), in.fs_in_attr1.w), _388, fma(spvFMul(in.fs_in_attr1.z, _397), _387, spvFMul(as_type(_317), _398))); float _413 = fma(spvFMul(spvFMul(_161, _167), in.fs_in_attr1.w), _388, fma(spvFMul(in.fs_in_attr1.y, _397), _387, spvFMul(as_type(_321), _398))); float _416 = fma(spvFMul(spvFMul(_159, _167), in.fs_in_attr1.w), _388, fma(spvFMul(in.fs_in_attr1.x, _397), _387, spvFMul(as_type(_316), _398))); float _448 = rsqrt(fma(_296, _296, fma(_299, _299, spvFMul(_302, _302)))); float _449 = rsqrt(fma(_416, _416, fma(_413, _413, spvFMul(_410, _410)))); float _454 = spvFMul(_410, _449); float _456 = spvFMul(_413, _449); float _459 = spvFMul(_416, _449); float _461 = fma(_459, spvFMul(_296, _448), fma(_456, spvFMul(_299, _448), spvFMul(spvFMul(_302, _448), _454))); float _472 = spvFMul(fast::max(_461, _461), 2.0); float _475 = spvFMul(as_type(cbuf_28.data[8u + buf2_dword_off]), 0.00390625); uint _479 = uint(in.fs_in_attr0.w) * 13u; float4 _484 = fs_img52.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _485 = _484.x; float _486 = _484.y; float _487 = _484.z; float _488 = spvFMul(_381.x, _475); float _490 = fma(-_296, _448, spvFMul(_459, _472)); float _492 = fma(-_299, _448, spvFMul(_456, _472)); float _494 = fma(-_302, _448, spvFMul(_454, _472)); float _506 = 1.0 / abs(1.0); float _508 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_488, 13.0), 0.5))); float _510 = fma(_492, _506, 1.5); float _511 = fma(_490, _506, 1.5); uint _517 = ((0u + ((_479 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _530 = uint4(cbuf_32.data[_517 + 0u], cbuf_32.data[_517 + 1u], cbuf_32.data[_517 + 2u], cbuf_32.data[_517 + 3u]); uint _531 = _530.x; uint _532 = _530.y; uint _533 = _530.z; float4 _541 = fs_img84.sample(fs_samp20, float3(spvFSub(_511, 1.5), spvFSub(_510, 1.5), _494), level(_508)); uint _548 = ((0u + ((_479 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _561 = uint4(cbuf_32.data[_548 + 0u], cbuf_32.data[_548 + 1u], cbuf_32.data[_548 + 2u], cbuf_32.data[_548 + 3u]); uint _569 = ((0u + ((_479 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _582 = uint4(cbuf_32.data[_569 + 0u], cbuf_32.data[_569 + 1u], cbuf_32.data[_569 + 2u], cbuf_32.data[_569 + 3u]); uint _590 = ((0u + ((_479 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _603 = uint4(cbuf_32.data[_590 + 0u], cbuf_32.data[_590 + 1u], cbuf_32.data[_590 + 2u], cbuf_32.data[_590 + 3u]); float4 _614 = fs_img76.sample(fs_samp20, float3(spvFSub(_511, 1.5), spvFSub(_510, 1.5), _494), level(_508)); float _615 = _614.x; float _616 = _614.y; float _617 = _614.z; float4 _628 = fs_img44.sample(fs_samp4, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); uint _652 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _656 = fast::clamp(spvFAdd(fma(_490, as_type(_316), fma(_492, as_type(_321), spvFMul(as_type(_317), _494))), 1.0), 0.0, 1.0); float _670 = spvFAdd(1.0, _461); bool _685 = (_487 == 0.0) && (_486 == 0.0); float _687 = fast::clamp(spvFMul(_670, _670), 0.0, 1.0); float _688 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_461, _461), 0.0, 1.0))))); float _698 = spvFMul(_687, _688); float _699 = _685 ? _485 : _487; float _700 = _685 ? _485 : _486; float _745 = spvFMul(_488, _488); float _752 = spvFMul(_656, _656); float _776 = fast::max(0.0, spvFAdd(as_type(_561.w), fma(_454, as_type(_561.z), fma(_459, as_type(_561.x), spvFMul(_456, as_type(_561.y)))))); float _777 = fast::max(0.0, spvFAdd(as_type(_582.w), fma(_454, as_type(_582.z), fma(_459, as_type(_582.x), spvFMul(_456, as_type(_582.y)))))); float _778 = fast::max(0.0, spvFAdd(as_type(_603.w), fma(_454, as_type(_603.z), fma(_459, as_type(_603.x), spvFMul(_456, as_type(_603.y)))))); float _789 = spvFMul(spvFMul(_628.w, in.fs_in_attr2.w), as_type(cbuf_32.data[((12u + ((_479 + 7u) * 16u)) + buf3_off) >> 2u])); bool _793 = as_type(cbuf_28.data[22u + buf2_dword_off]) != 0.0; float _816 = _793 ? _789 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_687, _688, -spvFMul(_485, _698)), _745, _485), spvFMul(fma(as_type(_531), fma(-as_type(_532), _615, spvFMul(as_type(_533), _541.x)), spvFMul(as_type(_532), _615)), _752)), spvFMul(as_type(cbuf_28.data[4u + buf2_dword_off]), as_type(cbuf_40.data[_652]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_687, _688, -spvFMul(_700, _698)), _745, _700), spvFMul(fma(as_type(_531), fma(-as_type(_532), _616, spvFMul(as_type(_533), _541.y)), spvFMul(as_type(_532), _616)), _752)), spvFMul(as_type(cbuf_28.data[5u + buf2_dword_off]), as_type(cbuf_40.data[_652]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_687, _688, -spvFMul(_699, _698)), _745, _699), spvFMul(fma(as_type(_531), fma(-as_type(_532), _617, spvFMul(as_type(_533), _541.z)), spvFMul(as_type(_532), _617)), _752)), spvFMul(as_type(cbuf_28.data[6u + buf2_dword_off]), as_type(cbuf_40.data[_652]))); out.frag_color5.w = _793 ? _789 : as_type(_530.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_485, _776, _776); out.frag_color4.y = fma(-_700, _777, _777); out.frag_color4.z = fma(-_699, _778, _778); out.frag_color4.w = _793 ? _789 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_485); out.frag_color3.y = sqrt(_700); out.frag_color3.z = sqrt(_699); out.frag_color3.w = _793 ? _789 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_479 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_28.data[0u + buf2_dword_off]), _628.x); out.frag_color2.y = spvFMul(as_type(cbuf_28.data[1u + buf2_dword_off]), _628.y); out.frag_color2.z = spvFMul(as_type(cbuf_28.data[2u + buf2_dword_off]), _628.z); out.frag_color2.w = _789; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_475, _488); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_32.data[((0u + ((_479 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _816; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _459, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _456, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _454, 0.500488758087158203125); out.frag_color0.w = _816; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001137.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001137.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001143.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001143.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001154.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001154.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001171.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001171.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001206.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001206.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001143.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001154.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001137.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001171.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/m21_00_00_00_001206.flver.dcx [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x71874d2c [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x1ea84d9a (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(20)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _173 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _179 = ((0u + ((_173 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _192 = uint4(cbuf_16.data[_179 + 0u], cbuf_16.data[_179 + 1u], cbuf_16.data[_179 + 2u], cbuf_16.data[_179 + 3u]); uint _193 = _192.x; uint _194 = _192.y; uint _195 = _192.z; uint _200 = ((0u + ((_173 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _213 = uint4(cbuf_16.data[_200 + 0u], cbuf_16.data[_200 + 1u], cbuf_16.data[_200 + 2u], cbuf_16.data[_200 + 3u]); uint _214 = _213.x; uint _215 = _213.y; uint _216 = _213.z; uint _221 = ((0u + (_173 * 16u)) + buf8_off) >> 2u; uint4 _234 = uint4(cbuf_16.data[_221 + 0u], cbuf_16.data[_221 + 1u], cbuf_16.data[_221 + 2u], cbuf_16.data[_221 + 3u]); uint _235 = _234.x; uint _236 = _234.y; uint _237 = _234.z; float _330 = fma(as_type(_193), in.vs_in_attr0.x, fma(as_type(_194), in.vs_in_attr0.y, fma(as_type(_195), in.vs_in_attr0.z, as_type(_192.w)))); float _334 = fma(as_type(_214), in.vs_in_attr0.x, fma(as_type(_215), in.vs_in_attr0.y, fma(as_type(_216), in.vs_in_attr0.z, as_type(_213.w)))); float _336 = spvFSub(_330, as_type(cbuf_20.data[191u + buf9_dword_off])); float _338 = fma(as_type(_235), in.vs_in_attr0.x, fma(as_type(_236), in.vs_in_attr0.y, fma(as_type(_237), in.vs_in_attr0.z, as_type(_234.w)))); float _340 = spvFSub(_334, as_type(cbuf_20.data[187u + buf9_dword_off])); float _354 = spvFSub(_338, as_type(cbuf_20.data[183u + buf9_dword_off])); float _364 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _354, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _336, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _366 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _354, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _336, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _368 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _354, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _336, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _370 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _354, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _340, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _336, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _364; out.gl_Position.y = _366; out.gl_Position.z = _368; out.gl_Position.w = _370; out.out_attr3.x = _364; out.out_attr3.y = _366; out.out_attr3.z = _368; out.out_attr3.w = _370; float _413 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _416 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _419 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _421 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _437 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _438 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_235), _438, fma(as_type(_236), _421, spvFMul(as_type(_237), _416))); out.out_attr0.y = fma(as_type(_214), _438, fma(as_type(_215), _421, spvFMul(as_type(_216), _416))); out.out_attr0.z = fma(as_type(_193), _438, fma(as_type(_194), _421, spvFMul(as_type(_195), _416))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_235), _437, fma(as_type(_236), _419, spvFMul(as_type(_237), _413))); out.out_attr1.y = fma(as_type(_214), _437, fma(as_type(_215), _419, spvFMul(as_type(_216), _413))); out.out_attr1.z = fma(as_type(_193), _437, fma(as_type(_194), _419, spvFMul(as_type(_195), _413))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = spvFSub(as_type(cbuf_24.data[12u + buf11_dword_off]), _338); out.out_attr4.y = spvFSub(as_type(cbuf_24.data[13u + buf11_dword_off]), _334); out.out_attr4.z = spvFSub(as_type(cbuf_24.data[14u + buf11_dword_off]), _330); out.out_attr4.w = 1.0; out.out_attr5.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr5.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[72]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_48 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_36 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_52 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_44 [[buffer(15)]], texture2d fs_img112 [[texture(0)]], texture2d fs_img80 [[texture(1)]], texture2d fs_img72 [[texture(2)]], texture2d fs_img64 [[texture(3)]], texture2d fs_img104 [[texture(4)]], texturecube fs_img96 [[texture(5)]], texture2d fs_img120 [[texture(6)]], texturecube fs_img88 [[texture(7)]], texture2d fs_img56 [[texture(8)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp24 [[sampler(3)]], sampler fs_samp4 [[sampler(4)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _160 = uint(gl_FrontFacing); float _188 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _194 = 1.0 / in.fs_in_attr3.w; float _197 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _203 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _206 = fma(0.5, spvFMul(in.fs_in_attr3.x, _194), 0.5); float _208 = fma(-0.5, spvFMul(in.fs_in_attr3.y, _194), 0.5); float _216 = rsqrt(fma(_203, _203, fma(_197, _197, spvFMul(_188, _188)))); float _220 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float4 _230 = fs_img112.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_48.data[4u + buf0_dword_off]), _206)), spvFMul(0.25, spvFMul(as_type(cbuf_48.data[5u + buf0_dword_off]), _208)))); float _232 = spvFMul(in.fs_in_attr0.x, _220); float _234 = spvFMul(in.fs_in_attr0.y, _220); float _236 = spvFMul(in.fs_in_attr0.z, _220); bool _240 = 0u == _160; uint _253; uint _254; uint _255; if (_240) { _253 = as_type(fast::max(-_234, -_234)); _254 = as_type(fast::max(-_232, -_232)); _255 = as_type(fast::max(-_236, -_236)); } else { _253 = as_type(_234); _254 = _160; _255 = as_type(_232); } uint _258; uint _259; if (!_240) { _258 = _255; _259 = as_type(_236); } else { _258 = _254; _259 = _255; } float4 _291 = fs_img80.sample(fs_samp16, float2(fma(as_type(cbuf_28.data[12u + buf1_dword_off]), in.fs_in_attr5.x, as_type(cbuf_28.data[14u + buf1_dword_off])), fma(as_type(cbuf_28.data[13u + buf1_dword_off]), in.fs_in_attr5.y, as_type(cbuf_28.data[15u + buf1_dword_off])))); float4 _320 = fs_img72.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[8u + buf1_dword_off]), in.fs_in_attr5.x, as_type(cbuf_28.data[10u + buf1_dword_off])), fma(as_type(cbuf_28.data[9u + buf1_dword_off]), in.fs_in_attr5.y, as_type(cbuf_28.data[11u + buf1_dword_off])))); float _326 = fma(2.0, _291.y, -1.0); float _327 = spvFMul(fma(2.0, _291.x, -1.0), fma(2.0, _291.w, -1.0)); float _336 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _337 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_327, _327), spvFMul(_326, _326)), 0.0, 1.0))); float _351 = fma(spvFMul(spvFMul(_188, _216), in.fs_in_attr1.w), _327, fma(spvFMul(in.fs_in_attr1.z, _336), _326, spvFMul(as_type(_259), _337))); float _356 = fma(spvFMul(spvFMul(_197, _216), in.fs_in_attr1.w), _327, fma(spvFMul(in.fs_in_attr1.y, _336), _326, spvFMul(as_type(_253), _337))); float _361 = fma(spvFMul(spvFMul(_203, _216), in.fs_in_attr1.w), _327, fma(spvFMul(in.fs_in_attr1.x, _336), _326, spvFMul(as_type(_258), _337))); float _394 = rsqrt(fma(in.fs_in_attr4.x, in.fs_in_attr4.x, fma(in.fs_in_attr4.y, in.fs_in_attr4.y, spvFMul(in.fs_in_attr4.z, in.fs_in_attr4.z)))); float _395 = rsqrt(fma(_361, _361, fma(_356, _356, spvFMul(_351, _351)))); float _396 = spvFMul(in.fs_in_attr4.z, _394); float _397 = spvFMul(_351, _395); float _398 = spvFMul(in.fs_in_attr4.y, _394); float _399 = spvFMul(_356, _395); float _401 = spvFMul(in.fs_in_attr4.x, _394); float _402 = spvFMul(_361, _395); float _406 = fma(_402, _401, fma(_399, _398, spvFMul(_396, _397))); float _409 = spvFMul(fast::max(_406, _406), 2.0); uint _413 = uint(in.fs_in_attr0.w) * 13u; float _420 = spvFMul(_320.x, spvFMul(as_type(cbuf_32.data[8u + buf2_dword_off]), 0.00390625)); float _428 = spvFMul(13.0, _420); float _430 = fma(-in.fs_in_attr4.x, _394, spvFMul(_402, _409)); float _432 = fma(-in.fs_in_attr4.y, _394, spvFMul(_399, _409)); float _434 = fma(-in.fs_in_attr4.z, _394, spvFMul(_397, _409)); float4 _440 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[4u + buf1_dword_off]), in.fs_in_attr5.x, as_type(cbuf_28.data[6u + buf1_dword_off])), fma(as_type(cbuf_28.data[5u + buf1_dword_off]), in.fs_in_attr5.y, as_type(cbuf_28.data[7u + buf1_dword_off])))); float _441 = _440.x; float _442 = _440.y; float _443 = _440.z; float4 _448 = fs_img104.sample(fs_samp20, float2(_206, _208)); float _455 = 1.0 / abs(1.0); float _457 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_428, _428), 0.5))); float _459 = fma(_432, _455, 1.5); float _460 = fma(_430, _455, 1.5); uint _465 = ((0u + ((_413 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _478 = uint4(cbuf_36.data[_465 + 0u], cbuf_36.data[_465 + 1u], cbuf_36.data[_465 + 2u], cbuf_36.data[_465 + 3u]); uint _486 = ((0u + ((_413 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _499 = uint4(cbuf_36.data[_486 + 0u], cbuf_36.data[_486 + 1u], cbuf_36.data[_486 + 2u], cbuf_36.data[_486 + 3u]); uint _507 = ((0u + ((_413 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _520 = uint4(cbuf_36.data[_507 + 0u], cbuf_36.data[_507 + 1u], cbuf_36.data[_507 + 2u], cbuf_36.data[_507 + 3u]); uint _528 = ((0u + ((_413 + 8u) * 16u)) + buf3_off) >> 2u; uint3 _538 = uint3(cbuf_36.data[_528 + 0u], cbuf_36.data[_528 + 1u], cbuf_36.data[_528 + 2u]); uint _539 = _538.x; uint _540 = _538.y; uint _541 = _538.z; float4 _548 = fs_img96.sample(fs_samp20, float3(spvFSub(_460, 1.5), spvFSub(_459, 1.5), _434), level(_457)); float4 _556 = fs_img120.sample(fs_samp24, float2(_206, _208), level(_457)); float4 _567 = fs_img88.sample(fs_samp20, float3(spvFSub(_460, 1.5), spvFSub(_459, 1.5), _434), level(_457)); uint _580 = ((0u + ((_413 + 12u) * 16u)) + buf3_off) >> 2u; float4 _587 = fs_img56.sample(fs_samp4, float2(fma(in.fs_in_attr5.x, as_type(cbuf_28.data[0u + buf1_dword_off]), as_type(cbuf_28.data[2u + buf1_dword_off])), fma(in.fs_in_attr5.y, as_type(cbuf_28.data[1u + buf1_dword_off]), as_type(cbuf_28.data[3u + buf1_dword_off])))); uint _592 = 12u + buf2_dword_off; uint _597 = 0u + buf4_dword_off; uint _600 = 1u + buf4_dword_off; uint _603 = 2u + buf4_dword_off; uint _606 = 3u + buf4_dword_off; uint _609 = 4u + buf4_dword_off; uint _612 = 5u + buf4_dword_off; uint _615 = 6u + buf4_dword_off; uint _618 = 7u + buf4_dword_off; float _622 = (0.0 != in.fs_in_attr2.x) ? in.fs_in_attr2.x : 1.0; float _630 = fast::clamp(spvFAdd(fma(_430, as_type(_258), fma(_432, as_type(_253), spvFMul(as_type(_259), _434))), 1.0), 0.0, 1.0); float _641 = fma(fma(as_type(cbuf_32.data[_592]), _448.x, 1.0), _622, -spvFMul(as_type(cbuf_32.data[_592]), _622)); float _666 = spvFAdd(_406, _641); bool _679 = (_443 == 0.0) && (_442 == 0.0); float _687 = spvFMul(as_type(cbuf_40.data[_615]), _397); float _688 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_406, _406), 0.0, 1.0))))); float _690 = fast::clamp(spvFAdd(fma(_666, _666, _641), -1.0), 0.0, 1.0); float _706 = spvFMul(as_type(cbuf_40.data[_603]), _397); float _709 = _679 ? _441 : _443; float _710 = _679 ? _441 : _442; float _711 = spvFMul(_688, _690); float _738 = fast::clamp(fma(as_type(cbuf_40.data[_609]), _402, fma(as_type(cbuf_40.data[_612]), _399, _687)), 0.0, 1.0); float _754 = spvFMul(_641, spvFMul(spvFMul(_630, _630), spvFSub(1.0, _556.w))); float _757 = fast::clamp(fma(as_type(cbuf_40.data[_597]), _402, fma(as_type(cbuf_40.data[_600]), _399, _706)), 0.0, 1.0); float _772 = spvFMul(_420, _420); float _773 = fast::max(0.0, spvFAdd(as_type(_478.w), fma(_397, as_type(_478.z), fma(_402, as_type(_478.x), spvFMul(_399, as_type(_478.y)))))); float _774 = fast::max(0.0, spvFAdd(as_type(_499.w), fma(_397, as_type(_499.z), fma(_402, as_type(_499.x), spvFMul(_399, as_type(_499.y)))))); float _775 = fast::max(0.0, spvFAdd(as_type(_520.w), fma(_397, as_type(_520.z), fma(_402, as_type(_520.x), spvFMul(_399, as_type(_520.y)))))); uint _801 = 64u + buf4_dword_off; uint _805 = 65u + buf4_dword_off; float _808 = spvFMul(_587.w, in.fs_in_attr2.w); float _827 = fma(spvFMul(as_type(cbuf_40.data[16u + buf4_dword_off]), as_type(cbuf_36.data[_580])), fma(-_441, _757, _757), spvFMul(as_type(cbuf_40.data[20u + buf4_dword_off]), fma(-_441, _738, _738))); float _829 = fma(spvFMul(as_type(cbuf_40.data[17u + buf4_dword_off]), as_type(cbuf_36.data[_580])), fma(-_710, _757, _757), spvFMul(as_type(cbuf_40.data[21u + buf4_dword_off]), fma(-_710, _738, _738))); float _831 = fma(spvFMul(as_type(cbuf_40.data[18u + buf4_dword_off]), as_type(cbuf_36.data[_580])), fma(-_709, _757, _757), spvFMul(as_type(cbuf_40.data[22u + buf4_dword_off]), fma(-_709, _738, _738))); uint _878; uint _879; uint _880; if (cbuf_40.data[_801] > 0u) { float _860 = fma(0.5, fma(as_type(cbuf_40.data[8u + buf4_dword_off]), _402, fma(as_type(cbuf_40.data[9u + buf4_dword_off]), _399, spvFMul(as_type(cbuf_40.data[10u + buf4_dword_off]), _397))), 0.5); float _862 = fast::clamp(spvFMul(_860, _860), 0.0, 1.0); _878 = as_type(fma(as_type(cbuf_40.data[24u + buf4_dword_off]), fma(-_441, _862, _862), _827)); _879 = as_type(fma(as_type(cbuf_40.data[26u + buf4_dword_off]), fma(-_709, _862, _862), _831)); _880 = as_type(fma(as_type(cbuf_40.data[25u + buf4_dword_off]), fma(-_710, _862, _862), _829)); } else { _878 = as_type(_827); _879 = as_type(_831); _880 = as_type(_829); } uint _930; uint _931; uint _932; if (cbuf_40.data[_805] > 0u) { float _909 = fma(0.5, fma(as_type(cbuf_40.data[12u + buf4_dword_off]), _402, fma(as_type(cbuf_40.data[13u + buf4_dword_off]), _399, spvFMul(as_type(cbuf_40.data[14u + buf4_dword_off]), _397))), 0.5); float _911 = fast::clamp(spvFMul(_909, _909), 0.0, 1.0); _930 = as_type(fma(as_type(cbuf_40.data[30u + buf4_dword_off]), fma(-_709, _911, _911), as_type(_879))); _931 = as_type(fma(as_type(cbuf_40.data[29u + buf4_dword_off]), fma(-_710, _911, _911), as_type(_880))); _932 = as_type(fma(as_type(cbuf_40.data[28u + buf4_dword_off]), fma(-_441, _911, _911), as_type(_878))); } else { _930 = _879; _931 = _880; _932 = _878; } float _934 = fma(in.fs_in_attr4.z, _394, as_type(cbuf_40.data[_615])); float _936 = fma(in.fs_in_attr4.z, _394, as_type(cbuf_40.data[_603])); float _938 = fma(in.fs_in_attr4.y, _394, as_type(cbuf_40.data[_612])); float _941 = fma(in.fs_in_attr4.y, _394, as_type(cbuf_40.data[_600])); float _944 = fma(in.fs_in_attr4.x, _394, as_type(cbuf_40.data[_609])); float _947 = fma(in.fs_in_attr4.x, _394, as_type(cbuf_40.data[_597])); float _951 = rsqrt(fma(_944, _944, fma(_938, _938, spvFMul(_934, _934)))); float _952 = rsqrt(fma(_947, _947, fma(_941, _941, spvFMul(_936, _936)))); float _953 = spvFMul(_934, _951); float _954 = exp2(_428); float _955 = spvFMul(_936, _952); float _956 = spvFMul(_938, _951); float _982 = spvFMul(_941, _952); float _983 = spvFMul(_944, _951); float _990 = spvFMul(_947, _952); float _1014 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_618]), _954), 1.0 / fma(_954, 0.01000213623046875, as_type(cbuf_40.data[_618])))); float _1020 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_606]), _954), 1.0 / fma(_954, 0.01000213623046875, as_type(cbuf_40.data[_606])))); float _1026 = fma(_1014, 0.125, 0.25); float _1041 = exp2(spvFMul(_1014, log2(fast::clamp(fma(_983, _402, fma(_956, _399, spvFMul(_397, _953))), 0.0, 1.0)))); float _1043 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_401, _983, fma(_398, _956, spvFMul(_396, _953))), 0.0, 1.0))))); float _1044 = fma(0.125, _1020, 0.25); float _1053 = exp2(spvFMul(_1020, log2(fast::clamp(fma(_990, _402, fma(_982, _399, spvFMul(_397, _955))), 0.0, 1.0)))); float _1054 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_401, _990, fma(_398, _982, spvFMul(_396, _955))), 0.0, 1.0))))); float _1060 = fast::clamp(spvFMul(fma(as_type(cbuf_40.data[_609]), _402, fma(as_type(cbuf_40.data[_612]), _399, _687)), 16.0), 0.0, 1.0); float _1077 = fast::clamp(spvFMul(fma(as_type(cbuf_40.data[_597]), _402, fma(as_type(cbuf_40.data[_600]), _399, _706)), 16.0), 0.0, 1.0); float _1096 = fma(spvFMul(_1077, spvFMul(_1053, spvFMul(spvFMul(as_type(cbuf_40.data[32u + buf4_dword_off]), as_type(cbuf_36.data[_580])), _1044))), fma(-_441, _1054, spvFAdd(_441, _1054)), spvFMul(fma(-_441, _1043, spvFAdd(_441, _1043)), spvFMul(_1060, spvFMul(_1041, spvFMul(as_type(cbuf_40.data[36u + buf4_dword_off]), _1026))))); float _1098 = fma(spvFMul(_1077, spvFMul(_1053, spvFMul(spvFMul(as_type(cbuf_40.data[33u + buf4_dword_off]), as_type(cbuf_36.data[_580])), _1044))), fma(-_710, _1054, spvFAdd(_710, _1054)), spvFMul(fma(-_710, _1043, spvFAdd(_710, _1043)), spvFMul(_1060, spvFMul(_1041, spvFMul(as_type(cbuf_40.data[37u + buf4_dword_off]), _1026))))); float _1100 = fma(spvFMul(_1077, spvFMul(_1053, spvFMul(spvFMul(as_type(cbuf_40.data[34u + buf4_dword_off]), as_type(cbuf_36.data[_580])), _1044))), fma(-_709, _1054, spvFAdd(_709, _1054)), spvFMul(fma(-_709, _1043, spvFAdd(_709, _1043)), spvFMul(_1060, spvFMul(_1041, spvFMul(as_type(cbuf_40.data[38u + buf4_dword_off]), _1026))))); uint _1193; uint _1194; uint _1195; if (cbuf_40.data[_801] > 0u) { uint _1118 = 11u + buf4_dword_off; float _1134 = fma(in.fs_in_attr4.x, _394, as_type(cbuf_40.data[8u + buf4_dword_off])); float _1136 = fma(in.fs_in_attr4.y, _394, as_type(cbuf_40.data[9u + buf4_dword_off])); float _1138 = fma(in.fs_in_attr4.z, _394, as_type(cbuf_40.data[10u + buf4_dword_off])); float _1142 = rsqrt(fma(_1134, _1134, fma(_1136, _1136, spvFMul(_1138, _1138)))); float _1143 = spvFMul(_1134, _1142); float _1144 = spvFMul(_1136, _1142); float _1145 = spvFMul(_1138, _1142); float _1156 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_1118]), _954), 1.0 / fma(_954, 0.01000213623046875, as_type(cbuf_40.data[_1118])))); float _1159 = exp2(spvFMul(_1156, log2(fast::clamp(fma(_1143, _402, fma(_1144, _399, spvFMul(_397, _1145))), 0.0, 1.0)))); float _1167 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_401, _1143, fma(_398, _1144, spvFMul(_396, _1145))), 0.0, 1.0))))); float _1177 = fma(0.125, _1156, 0.25); _1193 = as_type(fma(spvFMul(_1159, spvFMul(as_type(cbuf_40.data[42u + buf4_dword_off]), _1177)), fma(-_709, _1167, spvFAdd(_709, _1167)), _1100)); _1194 = as_type(fma(spvFMul(_1159, spvFMul(as_type(cbuf_40.data[41u + buf4_dword_off]), _1177)), fma(-_710, _1167, spvFAdd(_710, _1167)), _1098)); _1195 = as_type(fma(spvFMul(_1159, spvFMul(as_type(cbuf_40.data[40u + buf4_dword_off]), _1177)), fma(-_441, _1167, spvFAdd(_441, _1167)), _1096)); } else { _1193 = as_type(_1100); _1194 = as_type(_1098); _1195 = as_type(_1096); } uint _1283; uint _1284; uint _1285; if (cbuf_40.data[_805] > 0u) { uint _1206 = 15u + buf4_dword_off; float _1221 = fma(in.fs_in_attr4.x, _394, as_type(cbuf_40.data[12u + buf4_dword_off])); float _1223 = fma(in.fs_in_attr4.y, _394, as_type(cbuf_40.data[13u + buf4_dword_off])); float _1225 = fma(in.fs_in_attr4.z, _394, as_type(cbuf_40.data[14u + buf4_dword_off])); float _1229 = rsqrt(fma(_1221, _1221, fma(_1223, _1223, spvFMul(_1225, _1225)))); float _1230 = spvFMul(_1221, _1229); float _1231 = spvFMul(_1223, _1229); float _1232 = spvFMul(_1225, _1229); float _1243 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[_1206]), _954), 1.0 / fma(_954, 0.01000213623046875, as_type(cbuf_40.data[_1206])))); float _1246 = exp2(spvFMul(_1243, log2(fast::clamp(fma(_1230, _402, fma(_1231, _399, spvFMul(_397, _1232))), 0.0, 1.0)))); float _1254 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_401, _1230, fma(_398, _1231, spvFMul(_396, _1232))), 0.0, 1.0))))); float _1264 = fma(0.125, _1243, 0.25); _1283 = as_type(fma(spvFMul(_1246, spvFMul(as_type(cbuf_40.data[46u + buf4_dword_off]), _1264)), fma(-_709, _1254, spvFAdd(_709, _1254)), as_type(_1193))); _1284 = as_type(fma(spvFMul(_1246, spvFMul(as_type(cbuf_40.data[44u + buf4_dword_off]), _1264)), fma(-_441, _1254, spvFAdd(_441, _1254)), as_type(_1195))); _1285 = as_type(fma(spvFMul(_1246, spvFMul(as_type(cbuf_40.data[45u + buf4_dword_off]), _1264)), fma(-_710, _1254, spvFAdd(_710, _1254)), as_type(_1194))); } else { _1283 = _1193; _1284 = _1195; _1285 = _1194; } float _1288 = fma(fma(fma(_688, _690, -spvFMul(_710, _711)), _772, _710), fma(_641, _556.y, spvFMul(fma(as_type(_539), fma(-as_type(_540), _567.y, spvFMul(as_type(_541), _548.y)), spvFMul(as_type(_540), _567.y)), _754)), as_type(_1285)); float _1293 = fma(fma(fma(_688, _690, -spvFMul(_709, _711)), _772, _709), fma(_641, _556.z, spvFMul(fma(as_type(_539), fma(-as_type(_540), _567.z, spvFMul(as_type(_541), _548.z)), spvFMul(as_type(_540), _567.z)), _754)), as_type(_1283)); uint _1298 = ((0u + ((_413 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _1311 = uint4(cbuf_36.data[_1298 + 0u], cbuf_36.data[_1298 + 1u], cbuf_36.data[_1298 + 2u], cbuf_36.data[_1298 + 3u]); uint _1312 = _1311.x; uint _1313 = _1311.y; uint _1314 = _1311.z; uint _1315 = _1311.w; float _1327 = spvFMul(_808, as_type(_1315)); bool _1329 = (as_type(cbuf_32.data[20u + buf2_dword_off]) > fma(as_type(cbuf_32.data[21u + buf2_dword_off]), spvFAdd(-0.5, _230.w), _808)) || (_1327 == 0.0); uint _1488; uint _1489; uint _1490; if (!_1329) { uint _1340 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); uint _1343 = 8u + buf6_dword_off; uint _1349 = 10u + buf6_dword_off; float _1363 = fma(spvFMul(as_type(cbuf_32.data[1u + buf2_dword_off]), _587.y), fma(_641, fma(-_710, _774, _774), as_type(_931)), spvFMul(_1288, spvFMul(as_type(cbuf_32.data[5u + buf2_dword_off]), as_type(cbuf_52.data[_1340])))); float _1377 = fma(spvFMul(as_type(cbuf_32.data[0u + buf2_dword_off]), _587.x), fma(_641, fma(-_441, _773, _773), as_type(_932)), spvFMul(fma(fma(fma(_688, _690, -spvFMul(_441, _711)), _772, _441), fma(_641, _556.x, spvFMul(fma(as_type(_539), fma(-as_type(_540), _567.x, spvFMul(as_type(_541), _548.x)), spvFMul(as_type(_540), _567.x)), _754)), as_type(_1284)), spvFMul(as_type(cbuf_32.data[4u + buf2_dword_off]), as_type(cbuf_52.data[_1340])))); float _1379 = spvFMul(_1363, as_type(_1313)); uint _1386 = 14u + buf6_dword_off; float _1392 = fma(spvFMul(as_type(cbuf_32.data[2u + buf2_dword_off]), _587.z), fma(_641, fma(-_709, _775, _775), as_type(_930)), spvFMul(_1293, spvFMul(as_type(cbuf_32.data[6u + buf2_dword_off]), as_type(cbuf_52.data[_1340])))); float _1394 = spvFMul(_1377, as_type(_1312)); float _1401 = spvFMul(_1392, as_type(_1314)); float _1429 = spvFAdd(-1.0, fma(_1401, 0.11448000371456146240234375, fma(_1394, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1379)))); float _1433 = fma(as_type(cbuf_44.data[7u + buf6_dword_off]), _1429, 1.0); float _1452 = fast::clamp(spvFAdd(as_type(cbuf_44.data[_1343]), spvFMul(as_type(cbuf_44.data[_1343]), -exp2(-fma(as_type(cbuf_44.data[_1349]), sqrt(fma(-in.fs_in_attr4.x, -in.fs_in_attr4.x, spvFMul(-in.fs_in_attr4.z, -in.fs_in_attr4.z))), -spvFMul(as_type(cbuf_44.data[9u + buf6_dword_off]), as_type(cbuf_44.data[_1349])))))), 0.0, 1.0); float _1466 = fma(as_type(cbuf_44.data[19u + buf6_dword_off]), _1429, 1.0); float _1467 = fma(_1452, fma(-_1377, as_type(_1312), spvFMul(as_type(cbuf_44.data[4u + buf6_dword_off]), _1433)), _1394); float _1468 = fma(_1452, fma(-_1363, as_type(_1313), spvFMul(as_type(cbuf_44.data[5u + buf6_dword_off]), _1433)), _1379); float _1469 = fma(_1452, fma(-_1392, as_type(_1314), spvFMul(as_type(cbuf_44.data[6u + buf6_dword_off]), _1433)), _1401); float _1472 = fast::clamp(spvFMul(as_type(cbuf_44.data[12u + buf6_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_44.data[_1386]), spvFSub(as_type(cbuf_44.data[15u + buf6_dword_off]), in.fs_in_attr4.y)), -spvFMul(as_type(cbuf_44.data[13u + buf6_dword_off]), as_type(cbuf_44.data[_1386]))), 0.0, 1.0)), 0.0, 1.0); _1488 = as_type(fma(_1472, fma(as_type(cbuf_44.data[18u + buf6_dword_off]), _1466, -_1469), _1469)); _1489 = as_type(fma(_1472, fma(as_type(cbuf_44.data[17u + buf6_dword_off]), _1466, -_1468), _1468)); _1490 = as_type(fma(_1472, fma(as_type(cbuf_44.data[16u + buf6_dword_off]), _1466, -_1467), _1467)); } else { _1488 = _1315; _1489 = as_type(_1288); _1490 = as_type(_1293); } if (_1329) { discard_fragment(); } out.frag_color0.x = as_type(_1490); out.frag_color0.y = as_type(_1489); out.frag_color0.z = as_type(_1488); out.frag_color0.w = _1327; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x93332b58 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8180e3e2 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.gl_Position.x = fma(as_type(cbuf_8.data[8u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[9u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[10u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[11u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[12u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[13u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[14u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[15u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr1.x = as_type(cbuf_8.data[0u + buf0_dword_off]); out.out_attr1.y = as_type(cbuf_8.data[1u + buf0_dword_off]); out.out_attr1.z = as_type(cbuf_8.data[2u + buf0_dword_off]); out.out_attr1.w = as_type(cbuf_8.data[3u + buf0_dword_off]); out.out_attr2.x = as_type(cbuf_8.data[4u + buf0_dword_off]); out.out_attr2.y = as_type(cbuf_8.data[5u + buf0_dword_off]); out.out_attr2.z = as_type(cbuf_8.data[6u + buf0_dword_off]); out.out_attr2.w = as_type(cbuf_8.data[7u + buf0_dword_off]); out.out_attr3.x = fma(as_type(cbuf_8.data[16u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[17u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[18u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[19u + buf0_dword_off]), 1.0)))); out.out_attr3.y = fma(as_type(cbuf_8.data[20u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[21u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[22u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[23u + buf0_dword_off]), 1.0)))); out.out_attr3.z = fma(as_type(cbuf_8.data[24u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[25u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[26u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[27u + buf0_dword_off]), 1.0)))); out.out_attr3.w = fma(as_type(cbuf_8.data[28u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[29u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[30u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[31u + buf0_dword_off]), 1.0)))); float4 _280 = out.gl_Position; _280.z = (_280.z + _280.w) * 0.5; out.gl_Position = _280; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _74 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y)); float4 _83 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _84 = _83.x; float _85 = _83.y; float _86 = _83.z; float _87 = _83.w; out.frag_color0.x = fma(fma(in.fs_in_attr0.x, spvFSub(_74.x, _84), _84), in.fs_in_attr2.x, in.fs_in_attr1.x); out.frag_color0.y = fma(fma(in.fs_in_attr0.x, spvFSub(_74.y, _85), _85), in.fs_in_attr2.y, in.fs_in_attr1.y); out.frag_color0.z = fma(fma(in.fs_in_attr0.x, spvFSub(_74.z, _86), _86), in.fs_in_attr2.z, in.fs_in_attr1.z); out.frag_color0.w = spvFMul(fma(fma(in.fs_in_attr0.x, spvFSub(_74.w, _87), _87), in.fs_in_attr2.w, in.fs_in_attr1.w), in.fs_in_attr0.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x4416dfc [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x1988cecf [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[24]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; out.out_attr0.x = in.vs_in_attr0.x; out.out_attr0.y = in.vs_in_attr0.y; out.out_attr0.z = in.vs_in_attr0.z; out.out_attr0.w = in.vs_in_attr0.w; out.gl_Position.x = fma(as_type(cbuf_8.data[0u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[1u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[2u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[3u + buf0_dword_off]), 1.0)))); out.gl_Position.y = fma(as_type(cbuf_8.data[4u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[5u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[6u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[7u + buf0_dword_off]), 1.0)))); out.gl_Position.z = 0.0; out.gl_Position.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[8u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[9u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[10u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[11u + buf0_dword_off]), 1.0)))); out.out_attr1.y = fma(as_type(cbuf_8.data[12u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[13u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[14u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[15u + buf0_dword_off]), 1.0)))); out.out_attr1.z = fma(as_type(cbuf_8.data[16u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[17u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[18u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[19u + buf0_dword_off]), 1.0)))); out.out_attr1.w = fma(as_type(cbuf_8.data[20u + buf0_dword_off]), in.vs_in_attr1.x, fma(as_type(cbuf_8.data[21u + buf0_dword_off]), in.vs_in_attr1.y, fma(as_type(cbuf_8.data[22u + buf0_dword_off]), 0.0, spvFMul(as_type(cbuf_8.data[23u + buf0_dword_off]), 1.0)))); float4 _230 = out.gl_Position; _230.z = (_230.z + _230.w) * 0.5; out.gl_Position = _230; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _72 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _81 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.z, in.fs_in_attr1.w)); float _82 = _81.x; float _83 = _81.y; float _84 = _81.z; float _85 = _81.w; out.frag_color0.x = fma(in.fs_in_attr0.x, spvFSub(_72.x, _82), _82); out.frag_color0.y = fma(in.fs_in_attr0.x, spvFSub(_72.y, _83), _83); out.frag_color0.z = fma(in.fs_in_attr0.x, spvFSub(_72.z, _84), _84); out.frag_color0.w = spvFMul(fma(in.fs_in_attr0.x, spvFSub(_72.w, _85), _85), in.fs_in_attr0.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xb382dd8f [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0xa26750c1 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xc96b77eb [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling ls shader 0x8b2c5098 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; }; kernel void main0(main0_in in [[stage_in]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(18)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr0.x; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr0.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr0.z; ((device float*)&out.out_attrs[0u])[3u] = 1.0; ((device float*)&out.out_attrs[1u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[1u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[1u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[1u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[2u])[0u] = in.vs_in_attr2.x; ((device float*)&out.out_attrs[2u])[1u] = in.vs_in_attr2.y; ((device float*)&out.out_attrs[2u])[2u] = in.vs_in_attr2.z; ((device float*)&out.out_attrs[2u])[3u] = in.vs_in_attr2.w; ((device float*)&out.out_attrs[3u])[0u] = in.vs_in_attr3.x; ((device float*)&out.out_attrs[3u])[1u] = in.vs_in_attr3.y; ((device float*)&out.out_attrs[3u])[2u] = in.vs_in_attr3.z; ((device float*)&out.out_attrs[3u])[3u] = in.vs_in_attr3.w; ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr4.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr4.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr4.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr4.w; ((device float*)&out.out_attrs[5u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[5u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[5u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[5u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[6u])[0u] = in.vs_in_attr6.x; ((device float*)&out.out_attrs[6u])[1u] = in.vs_in_attr6.y; ((device float*)&out.out_attrs[6u])[2u] = in.vs_in_attr6.z; ((device float*)&out.out_attrs[6u])[3u] = in.vs_in_attr6.w; ((device float*)&out.out_attrs[7u])[0u] = in.vs_in_attr7.x; ((device float*)&out.out_attrs[7u])[1u] = in.vs_in_attr7.y; ((device float*)&out.out_attrs[7u])[2u] = in.vs_in_attr7.z; ((device float*)&out.out_attrs[7u])[3u] = in.vs_in_attr7.w; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; }; kernel void main0(main0_in in [[stage_in]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(18)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr0.x; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr0.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr0.z; ((device float*)&out.out_attrs[0u])[3u] = 1.0; ((device float*)&out.out_attrs[1u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[1u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[1u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[1u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[2u])[0u] = in.vs_in_attr2.x; ((device float*)&out.out_attrs[2u])[1u] = in.vs_in_attr2.y; ((device float*)&out.out_attrs[2u])[2u] = in.vs_in_attr2.z; ((device float*)&out.out_attrs[2u])[3u] = in.vs_in_attr2.w; ((device float*)&out.out_attrs[3u])[0u] = in.vs_in_attr3.x; ((device float*)&out.out_attrs[3u])[1u] = in.vs_in_attr3.y; ((device float*)&out.out_attrs[3u])[2u] = in.vs_in_attr3.z; ((device float*)&out.out_attrs[3u])[3u] = in.vs_in_attr3.w; ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr4.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr4.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr4.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr4.w; ((device float*)&out.out_attrs[5u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[5u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[5u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[5u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[6u])[0u] = in.vs_in_attr6.x; ((device float*)&out.out_attrs[6u])[1u] = in.vs_in_attr6.y; ((device float*)&out.out_attrs[6u])[2u] = in.vs_in_attr6.z; ((device float*)&out.out_attrs[6u])[3u] = in.vs_in_attr6.w; ((device float*)&out.out_attrs[7u])[0u] = in.vs_in_attr7.x; ((device float*)&out.out_attrs[7u])[1u] = in.vs_in_attr7.y; ((device float*)&out.out_attrs[7u])[2u] = in.vs_in_attr7.z; ((device float*)&out.out_attrs[7u])[3u] = in.vs_in_attr7.w; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; }; kernel void main0(main0_in in [[stage_in]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(18)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr0.x; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr0.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr0.z; ((device float*)&out.out_attrs[0u])[3u] = 1.0; ((device float*)&out.out_attrs[1u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[1u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[1u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[1u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[2u])[0u] = in.vs_in_attr2.x; ((device float*)&out.out_attrs[2u])[1u] = in.vs_in_attr2.y; ((device float*)&out.out_attrs[2u])[2u] = in.vs_in_attr2.z; ((device float*)&out.out_attrs[2u])[3u] = in.vs_in_attr2.w; ((device float*)&out.out_attrs[3u])[0u] = in.vs_in_attr3.x; ((device float*)&out.out_attrs[3u])[1u] = in.vs_in_attr3.y; ((device float*)&out.out_attrs[3u])[2u] = in.vs_in_attr3.z; ((device float*)&out.out_attrs[3u])[3u] = in.vs_in_attr3.w; ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr4.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr4.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr4.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr4.w; ((device float*)&out.out_attrs[5u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[5u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[5u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[5u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[6u])[0u] = in.vs_in_attr6.x; ((device float*)&out.out_attrs[6u])[1u] = in.vs_in_attr6.y; ((device float*)&out.out_attrs[6u])[2u] = in.vs_in_attr6.z; ((device float*)&out.out_attrs[6u])[3u] = in.vs_in_attr6.w; ((device float*)&out.out_attrs[7u])[0u] = in.vs_in_attr7.x; ((device float*)&out.out_attrs[7u])[1u] = in.vs_in_attr7.y; ((device float*)&out.out_attrs[7u])[2u] = in.vs_in_attr7.z; ((device float*)&out.out_attrs[7u])[3u] = in.vs_in_attr7.w; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct vs_cbuf_block_f32_1 { uint data[104]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32_1& cbuf_4 [[buffer(12)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; float _84 = spvFAdd(-0.5, gl_TessCoord.y); float _85 = spvFAdd(-0.5, gl_TessCoord.x); float _119 = spvFSub(float(_84 > 0.0), float(0.0 > _84)); float _187 = fma(_84, 0.8786799907684326171875, spvFMul(0.06065998971462249755859375, _119)); float _195 = spvFSub(_85, spvFMul(spvFMul(fma(_119, -0.20710666477680206298828125, _187), spvFMul(_85, _119)), 2.0)); float _196 = spvFAdd(_187, gl_in[0u].in_attrs[0u].y); float _199 = spvFAdd(_195, gl_in[0u].in_attrs[0u].x); float _205 = fma(gl_in[0u].in_attrs[7u].x, _199, fma(gl_in[0u].in_attrs[7u].y, _196, fma(gl_in[0u].in_attrs[7u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[7u].w, gl_in[0u].in_attrs[0u].w)))); float _207 = fma(gl_in[0u].in_attrs[6u].x, _199, fma(gl_in[0u].in_attrs[6u].y, _196, fma(gl_in[0u].in_attrs[6u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[6u].w, gl_in[0u].in_attrs[0u].w)))); float _220 = fma(gl_in[0u].in_attrs[5u].x, _199, fma(gl_in[0u].in_attrs[5u].y, _196, fma(gl_in[0u].in_attrs[5u].z, gl_in[0u].in_attrs[0u].z, spvFMul(gl_in[0u].in_attrs[5u].w, gl_in[0u].in_attrs[0u].w)))); float _236 = fma(as_type(cbuf_4.data[12u + buf3_dword_off]), _220, fma(as_type(cbuf_4.data[13u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[14u + buf3_dword_off]), _205, as_type(cbuf_4.data[15u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_4.data[0u + buf3_dword_off]), _220, fma(as_type(cbuf_4.data[1u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[2u + buf3_dword_off]), _205, as_type(cbuf_4.data[3u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_4.data[4u + buf3_dword_off]), _220, fma(as_type(cbuf_4.data[5u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[6u + buf3_dword_off]), _205, as_type(cbuf_4.data[7u + buf3_dword_off])))); out.gl_Position.z = fma(as_type(cbuf_4.data[8u + buf3_dword_off]), _220, fma(as_type(cbuf_4.data[9u + buf3_dword_off]), _207, fma(as_type(cbuf_4.data[10u + buf3_dword_off]), _205, as_type(cbuf_4.data[11u + buf3_dword_off])))); out.gl_Position.w = _236; uint _254 = 92u + buf3_dword_off; uint _262 = 94u + buf3_dword_off; float _270 = spvFAdd(0.5, _195); float _271 = spvFSub(0.5, _187); float _273 = spvFSub(_205, as_type(cbuf_4.data[90u + buf3_dword_off])); float _299 = spvFSub(_207, as_type(cbuf_4.data[89u + buf3_dword_off])); uint _306 = 65u + buf3_dword_off; float _310 = spvFSub(_220, as_type(cbuf_4.data[88u + buf3_dword_off])); float _333 = sqrt(fma(_310, _310, fma(_299, _299, spvFMul(_273, _273)))); float _354 = fma(-spvFSub(as_type(cbuf_4.data[_254]), fast::min(as_type(cbuf_4.data[_254]), _333)), 1.0 / as_type(cbuf_4.data[93u + buf3_dword_off]), 1.0); out.out_attr0.x = gl_in[0u].in_attrs[1u].x; out.out_attr0.y = gl_in[0u].in_attrs[1u].y; out.out_attr0.z = gl_in[0u].in_attrs[1u].z; out.out_attr0.w = spvFMul(gl_in[0u].in_attrs[1u].w, fma(-spvFMul(spvFSub(fast::max(as_type(cbuf_4.data[_262]), _333), as_type(cbuf_4.data[_262])), 1.0 / as_type(cbuf_4.data[95u + buf3_dword_off])), _354, _354)); out.out_attr1.x = spvFAdd(0.5, fma(gl_in[0u].in_attrs[3u].z, -0.5, fma(_270, gl_in[0u].in_attrs[3u].z, gl_in[0u].in_attrs[2u].x))); out.out_attr1.y = spvFAdd(0.5, fma(gl_in[0u].in_attrs[3u].w, -0.5, fma(_271, gl_in[0u].in_attrs[3u].w, gl_in[0u].in_attrs[2u].y))); out.out_attr1.z = spvFAdd(0.5, fma(gl_in[0u].in_attrs[4u].x, -0.5, fma(gl_in[0u].in_attrs[4u].x, _270, gl_in[0u].in_attrs[2u].z))); out.out_attr1.w = spvFAdd(0.5, fma(gl_in[0u].in_attrs[4u].y, -0.5, fma(gl_in[0u].in_attrs[4u].y, _271, gl_in[0u].in_attrs[2u].w))); out.out_attr2.x = spvFSub(as_type(cbuf_4.data[19u + buf3_dword_off]), _220); out.out_attr2.y = spvFSub(as_type(cbuf_4.data[23u + buf3_dword_off]), _207); out.out_attr2.z = spvFSub(as_type(cbuf_4.data[27u + buf3_dword_off]), _205); out.out_attr2.w = 0.0; out.out_attr3.x = spvFAdd(0.5, fma(gl_in[0u].in_attrs[4u].z, -0.5, fma(_270, gl_in[0u].in_attrs[4u].z, gl_in[0u].in_attrs[3u].x))); out.out_attr3.y = spvFAdd(0.5, fma(gl_in[0u].in_attrs[4u].w, -0.5, fma(_271, gl_in[0u].in_attrs[4u].w, gl_in[0u].in_attrs[3u].y))); out.out_attr3.z = fast::clamp(spvFAdd(spvFMul(as_type(cbuf_4.data[_306]), _236), -spvFMul(as_type(cbuf_4.data[64u + buf3_dword_off]), as_type(cbuf_4.data[_306]))), 0.0, 1.0); out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct fs_cbuf_block_f32_1 { uint data[56]; }; constant uint _122 = {}; constant uint _123 = {}; constant uint _124 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_24 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_28 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; bool _153 = cbuf_24.data[108u + buf0_dword_off] == 0u; uint _797; uint _798; uint _799; uint _800; uint _801; uint _802; if (_153) { float4 _159 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _160 = _159.x; float _161 = _159.y; float _162 = _159.z; float _163 = _159.w; float4 _168 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.z, in.fs_in_attr1.w)); float _169 = _168.x; float _171 = _168.y; float _173 = _168.z; uint _177 = 92u + buf0_dword_off; uint _181 = 93u + buf0_dword_off; uint _185 = 95u + buf0_dword_off; uint _189 = 96u + buf0_dword_off; uint _193 = 97u + buf0_dword_off; uint _197 = 98u + buf0_dword_off; uint _201 = 99u + buf0_dword_off; uint _205 = 100u + buf0_dword_off; uint _209 = 101u + buf0_dword_off; uint _213 = 102u + buf0_dword_off; float _221 = spvFMul(as_type(cbuf_24.data[_189]), _160); float _223 = spvFMul(as_type(cbuf_24.data[_193]), _161); float _225 = spvFMul(as_type(cbuf_24.data[_197]), _162); float _227 = spvFMul(as_type(cbuf_24.data[_201]), _163); uint _228 = as_type(_227); float _230 = spvFMul(as_type(cbuf_24.data[_205]), _169); float _232 = spvFMul(as_type(cbuf_24.data[_209]), _171); float _234 = spvFMul(as_type(cbuf_24.data[_213]), _173); float _237 = spvFMul(as_type(cbuf_24.data[103u + buf0_dword_off]), _168.w); bool _239 = cbuf_24.data[_177] == 0u; uint _241; if (_239) { _241 = 0u; } else { _241 = _124; } uint _248; if (!_239) { bool _242 = cbuf_24.data[_177] == 1u; uint _244; if (_242) { _244 = 1u; } else { _244 = _241; } uint _247; if (!_242) { _247 = uint(cbuf_24.data[_177] == 2u); } else { _247 = _244; } _248 = _247; } else { _248 = _241; } bool _249 = 0u != _248; uint _254; if (_249) { _254 = as_type(fma(_161, as_type(cbuf_24.data[_193]), _225)); } else { _254 = as_type(_173); } uint _317; uint _318; uint _319; uint _320; uint _321; uint _322; if (_249) { float _264 = fma(as_type(cbuf_24.data[_205]), _169, fma(as_type(cbuf_24.data[_209]), _171, _234)); float _266 = spvFMul(0.3333333432674407958984375, _264); float _268 = spvFMul(_237, _266); bool _269 = cbuf_24.data[_181] == 0u; uint _278; uint _279; if (_269) { float _274 = fma(_237, fma(_237, _266, -1.0), 1.0); _278 = as_type(_274); _279 = as_type(spvFMul(spvFMul(_227, spvFMul(0.3333333432674407958984375, fma(as_type(cbuf_24.data[_189]), _160, as_type(_254)))), _274)); } else { _278 = as_type(_266); _279 = _228; } uint _313; if (!_269) { bool _280 = cbuf_24.data[_181] == 1u; uint _285; if (_280) { _285 = as_type(fma(_237, _268, as_type(_279))); } else { _285 = _279; } uint _312; if (!_280) { uint _311; if (cbuf_24.data[_181] == 2u) { float _293 = fma(-_237, as_type(_278), 1.0); _311 = as_type(fma(_237, fma(-_163, as_type(cbuf_24.data[_201]), (0.5 > as_type(_285)) ? spvFMul(spvFMul(as_type(_285), _268), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_293, _293), 2.0), spvFMul(spvFMul(as_type(_285), _293), 2.0)))), as_type(_285))); } else { _311 = _285; } _312 = _311; } else { _312 = _285; } _313 = _312; } else { _313 = _279; } _317 = _313; _318 = as_type(_264); _319 = _313; _320 = as_type(_225); _321 = as_type(_223); _322 = as_type(_221); } else { _317 = _228; _318 = as_type(_234); _319 = as_type(_237); _320 = _254; _321 = as_type(_171); _322 = as_type(_169); } uint _449; uint _450; uint _451; uint _452; if (!_249) { bool _324 = cbuf_24.data[_181] == 0u; uint _347; uint _348; uint _349; if (_324) { _347 = as_type(spvFMul(_225, fma(as_type(_319), fma(as_type(_320), as_type(cbuf_24.data[_213]), -1.0), 1.0))); _348 = as_type(spvFMul(_223, fma(as_type(_319), fma(as_type(_321), as_type(cbuf_24.data[_209]), -1.0), 1.0))); _349 = as_type(spvFMul(_221, fma(as_type(_319), fma(as_type(_322), as_type(cbuf_24.data[_205]), -1.0), 1.0))); } else { _347 = _320; _348 = _321; _349 = _322; } uint _446; uint _447; uint _448; if (!_324) { bool _350 = cbuf_24.data[_181] == 1u; uint _368; uint _369; uint _370; if (_350) { _368 = as_type(fma(as_type(cbuf_24.data[_197]), _162, spvFMul(as_type(_318), as_type(_319)))); _369 = as_type(fma(as_type(cbuf_24.data[_193]), _161, spvFMul(_232, as_type(_319)))); _370 = as_type(fma(as_type(cbuf_24.data[_189]), _160, spvFMul(_230, as_type(_319)))); } else { _368 = _347; _369 = _348; _370 = _349; } uint _443; uint _444; uint _445; if (!_350) { bool _371 = cbuf_24.data[_181] == 2u; uint _434; uint _435; uint _436; if (_371) { float _383 = fma(-as_type(_370), as_type(cbuf_24.data[_205]), 1.0); float _387 = fma(-as_type(_369), as_type(cbuf_24.data[_209]), 1.0); float _391 = fma(-as_type(_368), as_type(cbuf_24.data[_213]), 1.0); _434 = as_type(fma(as_type(_319), fma(-_162, as_type(cbuf_24.data[_197]), (0.5 > _225) ? spvFMul(spvFMul(_225, as_type(_318)), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_391, _391), 2.0), spvFMul(spvFMul(_225, _391), 2.0)))), _225)); _435 = as_type(fma(as_type(_319), fma(-_161, as_type(cbuf_24.data[_193]), (_223 < 0.5) ? spvFMul(spvFMul(_223, _232), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_387, _387), 2.0), spvFMul(spvFMul(_223, _387), 2.0)))), _223)); _436 = as_type(fma(as_type(_319), fma(-_160, as_type(cbuf_24.data[_189]), (_221 < 0.5) ? spvFMul(spvFMul(_221, _230), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_383, _383), 2.0), spvFMul(spvFMul(_221, _383), 2.0)))), _221)); } else { _434 = _368; _435 = _369; _436 = _370; } uint _440; uint _441; uint _442; if (!_371) { _440 = as_type(_225); _441 = as_type(_223); _442 = as_type(_221); } else { _440 = _434; _441 = _435; _442 = _436; } _443 = _440; _444 = _441; _445 = _442; } else { _443 = _368; _444 = _369; _445 = _370; } _446 = _443; _447 = _444; _448 = _445; } else { _446 = _347; _447 = _348; _448 = _349; } _449 = _317; _450 = _446; _451 = _447; _452 = _448; } else { _449 = _319; _450 = _320; _451 = _321; _452 = _322; } bool _453 = cbuf_24.data[_185] == 2u; uint _553; uint _554; uint _555; uint _556; uint _557; if (_453) { uint _456 = 36u + buf0_dword_off; uint _460 = 37u + buf0_dword_off; uint _464 = 38u + buf0_dword_off; uint _468 = 39u + buf0_dword_off; float _489 = spvFMul(as_type(_452), as_type(_449)); float _492 = spvFMul(as_type(_451), as_type(_449)); float _495 = spvFMul(as_type(_450), as_type(_449)); float _504 = fma(-as_type(cbuf_24.data[_456]), in.fs_in_attr0.x, 1.0); float _507 = fma(-as_type(cbuf_24.data[_460]), in.fs_in_attr0.y, 1.0); float _510 = fma(-as_type(cbuf_24.data[_464]), in.fs_in_attr0.z, 1.0); float _541 = (_489 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_456]), in.fs_in_attr0.x), _489), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_504, _504), 2.0), spvFMul(spvFMul(as_type(_449), spvFMul(as_type(_452), _504)), 2.0))); float _542 = (_492 < 0.5) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_460]), in.fs_in_attr0.y), _492), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_507, _507), 2.0), spvFMul(spvFMul(as_type(_449), spvFMul(as_type(_451), _507)), 2.0))); float _543 = (0.5 > _495) ? spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[_464]), in.fs_in_attr0.z), _495), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_510, _510), 2.0), spvFMul(spvFMul(as_type(_449), spvFMul(as_type(_450), _510)), 2.0))); _553 = as_type(spvFMul(as_type(_449), spvFMul(as_type(cbuf_24.data[_468]), in.fs_in_attr0.w))); _554 = as_type(spvFMul(_543, _543)); _555 = as_type(spvFMul(_542, _542)); _556 = as_type(spvFMul(_541, _541)); _557 = cbuf_24.data[_468]; } else { _553 = _449; _554 = _450; _555 = _451; _556 = _452; _557 = cbuf_24.data[_185]; } uint _606; uint _607; uint _608; uint _609; if (!_453) { uint _602; uint _603; uint _604; uint _605; if (_557 == 0u) { float _588 = spvFMul(as_type(_556), spvFMul(as_type(cbuf_24.data[36u + buf0_dword_off]), in.fs_in_attr0.x)); float _590 = spvFMul(as_type(_555), spvFMul(as_type(cbuf_24.data[37u + buf0_dword_off]), in.fs_in_attr0.y)); float _592 = spvFMul(as_type(_554), spvFMul(as_type(cbuf_24.data[38u + buf0_dword_off]), in.fs_in_attr0.z)); _602 = as_type(spvFMul(_592, _592)); _603 = as_type(spvFMul(_590, _590)); _604 = as_type(spvFMul(_588, _588)); _605 = as_type(spvFMul(as_type(_553), spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), in.fs_in_attr0.w))); } else { _602 = _554; _603 = _555; _604 = _556; _605 = _553; } _606 = _602; _607 = _603; _608 = _604; _609 = _605; } else { _606 = _554; _607 = _555; _608 = _556; _609 = _553; } bool _611 = 0.0 < as_type(_609); uint _779; uint _780; uint _781; if (_611) { uint _613 = 47u + buf0_dword_off; uint _617 = 43u + buf0_dword_off; uint _621 = 51u + buf0_dword_off; uint _624 = 8u + buf1_dword_off; uint _632 = 10u + buf1_dword_off; float _653 = spvFMul(as_type(cbuf_24.data[_613]), as_type(_607)); uint _665 = 14u + buf1_dword_off; float _674 = spvFMul(as_type(cbuf_24.data[_617]), as_type(_608)); float _684 = spvFMul(as_type(cbuf_24.data[_621]), as_type(_606)); float _715 = spvFAdd(-1.0, fma(_684, 0.11448000371456146240234375, fma(_674, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _653)))); float _721 = fma(as_type(cbuf_28.data[7u + buf1_dword_off]), _715, 1.0); float _740 = fast::clamp(spvFAdd(as_type(cbuf_28.data[_624]), spvFMul(as_type(cbuf_28.data[_624]), -exp2(-fma(as_type(cbuf_28.data[_632]), sqrt(fma(-in.fs_in_attr2.x, -in.fs_in_attr2.x, spvFMul(-in.fs_in_attr2.z, -in.fs_in_attr2.z))), -spvFMul(as_type(cbuf_28.data[9u + buf1_dword_off]), as_type(cbuf_28.data[_632])))))), 0.0, 1.0); float _757 = fma(as_type(cbuf_28.data[19u + buf1_dword_off]), _715, 1.0); float _758 = fma(_740, fma(-as_type(_608), as_type(cbuf_24.data[_617]), spvFMul(as_type(cbuf_28.data[4u + buf1_dword_off]), _721)), _674); float _759 = fma(_740, fma(-as_type(_607), as_type(cbuf_24.data[_613]), spvFMul(as_type(cbuf_28.data[5u + buf1_dword_off]), _721)), _653); float _760 = fma(_740, fma(-as_type(_606), as_type(cbuf_24.data[_621]), spvFMul(as_type(cbuf_28.data[6u + buf1_dword_off]), _721)), _684); float _763 = fast::clamp(spvFMul(as_type(cbuf_28.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_28.data[_665]), spvFSub(as_type(cbuf_28.data[15u + buf1_dword_off]), in.fs_in_attr2.y)), -spvFMul(as_type(cbuf_28.data[13u + buf1_dword_off]), as_type(cbuf_28.data[_665]))), 0.0, 1.0)), 0.0, 1.0); _779 = as_type(fma(_763, fma(as_type(cbuf_28.data[17u + buf1_dword_off]), _757, -_759), _759)); _780 = as_type(fma(_763, fma(as_type(cbuf_28.data[16u + buf1_dword_off]), _757, -_758), _758)); _781 = as_type(fma(_763, fma(as_type(cbuf_28.data[18u + buf1_dword_off]), _757, -_760), _760)); } else { _779 = _607; _780 = _606; _781 = _608; } uint _783; uint _784; if (!_611) { _783 = _780; _784 = _781; } else { _783 = _781; _784 = _780; } _797 = as_type(fast::max(0.0, as_type(_779))); _798 = as_type(fast::max(0.0, as_type(_784))); _799 = _609; _800 = _784; _801 = as_type(fast::max(0.0, as_type(_609))); _802 = as_type(fast::max(0.0, as_type(_783))); } else { _797 = _122; _798 = _123; _799 = as_type(in.fs_in_attr1.w); _800 = as_type(in.fs_in_attr1.z); _801 = as_type(in.fs_in_attr1.y); _802 = as_type(in.fs_in_attr1.x); } uint _1026; uint _1027; uint _1028; uint _1029; if (!_153) { float4 _809 = fs_img4.sample(fs_samp12, float2(as_type(_802), as_type(_801))); float _810 = _809.x; float _811 = _809.y; float _812 = _809.z; float4 _820 = fs_img16.sample(fs_samp12, float2(as_type(_800), as_type(_799))); float _821 = _820.x; float _822 = _820.y; float _823 = _820.z; float _863 = spvFMul(_820.w, spvFMul(_809.w, spvFMul(as_type(cbuf_24.data[39u + buf0_dword_off]), in.fs_in_attr0.w))); float _864 = spvFMul(spvFMul(_821, _821), spvFMul(spvFMul(_810, _810), spvFMul(as_type(cbuf_24.data[36u + buf0_dword_off]), in.fs_in_attr0.x))); float _866 = spvFMul(spvFMul(_822, _822), spvFMul(spvFMul(_811, _811), spvFMul(as_type(cbuf_24.data[37u + buf0_dword_off]), in.fs_in_attr0.y))); float _868 = spvFMul(spvFMul(_823, _823), spvFMul(spvFMul(_812, _812), spvFMul(as_type(cbuf_24.data[38u + buf0_dword_off]), in.fs_in_attr0.z))); uint _1012; uint _1013; uint _1014; if (0.0 < _863) { uint _871 = 47u + buf0_dword_off; uint _874 = 43u + buf0_dword_off; uint _877 = 51u + buf0_dword_off; uint _880 = 8u + buf1_dword_off; uint _886 = 10u + buf1_dword_off; float _902 = spvFMul(as_type(cbuf_24.data[_871]), _866); uint _911 = 14u + buf1_dword_off; float _918 = spvFMul(as_type(cbuf_24.data[_874]), _864); float _926 = spvFMul(as_type(cbuf_24.data[_877]), _868); float _951 = spvFAdd(-1.0, fma(_926, 0.11448000371456146240234375, fma(_918, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _902)))); float _957 = fma(as_type(cbuf_28.data[7u + buf1_dword_off]), _951, 1.0); float _976 = fast::clamp(spvFAdd(as_type(cbuf_28.data[_880]), spvFMul(as_type(cbuf_28.data[_880]), -exp2(-fma(as_type(cbuf_28.data[_886]), sqrt(fma(-in.fs_in_attr2.x, -in.fs_in_attr2.x, spvFMul(-in.fs_in_attr2.z, -in.fs_in_attr2.z))), -spvFMul(as_type(cbuf_28.data[9u + buf1_dword_off]), as_type(cbuf_28.data[_886])))))), 0.0, 1.0); float _990 = fma(as_type(cbuf_28.data[19u + buf1_dword_off]), _951, 1.0); float _991 = fma(_976, fma(-_864, as_type(cbuf_24.data[_874]), spvFMul(as_type(cbuf_28.data[4u + buf1_dword_off]), _957)), _918); float _992 = fma(_976, fma(-_866, as_type(cbuf_24.data[_871]), spvFMul(as_type(cbuf_28.data[5u + buf1_dword_off]), _957)), _902); float _993 = fma(_976, fma(-_868, as_type(cbuf_24.data[_877]), spvFMul(as_type(cbuf_28.data[6u + buf1_dword_off]), _957)), _926); float _996 = fast::clamp(spvFMul(as_type(cbuf_28.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_28.data[_911]), spvFSub(as_type(cbuf_28.data[15u + buf1_dword_off]), in.fs_in_attr2.y)), -spvFMul(as_type(cbuf_28.data[13u + buf1_dword_off]), as_type(cbuf_28.data[_911]))), 0.0, 1.0)), 0.0, 1.0); _1012 = as_type(fma(_996, fma(as_type(cbuf_28.data[18u + buf1_dword_off]), _990, -_993), _993)); _1013 = as_type(fma(_996, fma(as_type(cbuf_28.data[17u + buf1_dword_off]), _990, -_992), _992)); _1014 = as_type(fma(_996, fma(as_type(cbuf_28.data[16u + buf1_dword_off]), _990, -_991), _991)); } else { _1012 = as_type(_868); _1013 = as_type(_866); _1014 = as_type(_864); } _1026 = as_type(fast::max(0.0, _863)); _1027 = as_type(fast::max(0.0, as_type(_1012))); _1028 = as_type(fast::max(0.0, as_type(_1013))); _1029 = as_type(fast::max(0.0, as_type(_1014))); } else { _1026 = _801; _1027 = _802; _1028 = _797; _1029 = _798; } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_1029); out.frag_color0.y = as_type(_1028); out.frag_color0.z = as_type(_1027); out.frag_color0.w = as_type(_1026); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x31c21c09 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x65dd13b5 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[100]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float _161 = fma(as_type(cbuf_8.data[48u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[49u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[50u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[51u + buf1_dword_off])))); float _163 = fma(as_type(cbuf_8.data[52u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[53u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[54u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[55u + buf1_dword_off])))); float _167 = fma(as_type(cbuf_8.data[60u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[61u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[62u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[63u + buf1_dword_off])))); out.gl_Position.x = _161; out.gl_Position.y = _163; out.gl_Position.z = fma(as_type(cbuf_8.data[56u + buf1_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[57u + buf1_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[58u + buf1_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[59u + buf1_dword_off])))); out.gl_Position.w = _167; uint _174 = 88u + buf1_dword_off; uint _178 = 89u + buf1_dword_off; bool _206 = (-0.100000001490116119384765625) > in.vs_in_attr0.z; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = fma(as_type(cbuf_8.data[_174]), _161, spvFMul(as_type(cbuf_8.data[_178]), spvFAdd(-1.0, spvFMul(fast::max(in.vs_in_attr1.x, in.vs_in_attr1.x), 2.0)))); out.out_attr0.w = fma(as_type(cbuf_8.data[_174]), -_163, spvFMul(as_type(cbuf_8.data[_178]), spvFAdd(-1.0, spvFMul(fast::max(in.vs_in_attr1.y, in.vs_in_attr1.y), 2.0)))); out.out_attr1.x = fma(as_type(cbuf_8.data[_174]), _167, as_type(cbuf_8.data[_178])); out.out_attr1.y = _206 ? (-1.0) : 1.0; out.out_attr1.z = _206 ? 3.1415927410125732421875 : 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = spvFSub(as_type(cbuf_8.data[84u + buf1_dword_off]), in.vs_in_attr0.x); out.out_attr2.y = spvFSub(as_type(cbuf_8.data[85u + buf1_dword_off]), in.vs_in_attr0.y); out.out_attr2.z = spvFSub(as_type(cbuf_8.data[86u + buf1_dword_off]), in.vs_in_attr0.z); out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img32 [[texture(1)]], texture2d fs_img4 [[texture(2)]], texture2d fs_img24 [[texture(3)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _78 = 20u + buf0_dword_off; uint _86 = 22u + buf0_dword_off; float4 _115 = fs_img16.sample(fs_samp12, float2(fma(as_type(cbuf_40.data[24u + buf0_dword_off]), as_type(cbuf_40.data[_78]), in.fs_in_attr0.x), fma(-as_type(cbuf_40.data[25u + buf0_dword_off]), as_type(cbuf_40.data[_78]), in.fs_in_attr0.y))); float _119 = spvFAdd(-0.5, in.fs_in_attr0.x); float _120 = spvFAdd(-0.5, in.fs_in_attr0.y); float _125 = spvFMul(fast::max(abs(_119), abs(_119)), 2.0); float _129 = spvFMul(fast::max(abs(_120), abs(_120)), 2.0); float _145 = 1.0 / in.fs_in_attr1.x; float _147 = spvFMul(0.00999999977648258209228515625, fast::max(0.0, fma(-sqrt(fma(_129, _129, spvFMul(_125, _125))), as_type(cbuf_40.data[21u + buf0_dword_off]), 1.0))); float _151 = fma(0.5, spvFMul(in.fs_in_attr0.z, _145), 0.5); float _153 = fma(0.5, spvFMul(in.fs_in_attr0.w, _145), 0.5); float _161 = fma(as_type(cbuf_40.data[_86]), spvFMul(_147, fma(20.0, _115.x, -1.0)), _151); float _163 = fma(as_type(cbuf_40.data[_86]), spvFMul(_147, fma(20.0, _115.y, -1.0)), _153); float4 _168 = fs_img32.sample(fs_samp12, float2(_151, _153)); float4 _180 = fs_img4.sample(fs_samp12, float2(_161, _163)); float _181 = _180.x; float _182 = _180.y; float _183 = _180.z; float4 _188 = fs_img4.sample(fs_samp12, float2(_151, _153)); uint _193 = 16u + buf0_dword_off; uint _197 = 17u + buf0_dword_off; uint _201 = 18u + buf0_dword_off; float _221 = float(spvFMul(-as_type(cbuf_40.data[_193]), 1.0 / fma(as_type(cbuf_40.data[_197]), _168.x, -as_type(cbuf_40.data[_201]))) >= spvFMul(-as_type(cbuf_40.data[_193]), 1.0 / fma(as_type(cbuf_40.data[_197]), fs_img32.sample(fs_samp12, float2(_161, _163)).x, -as_type(cbuf_40.data[_201])))); float _224 = spvFSub(_188.y, _182); float _226 = spvFSub(_188.z, _183); float _232 = fma(_221, spvFSub(_188.x, _181), _181); float _233 = fma(_221, _224, _182); float _234 = fma(_221, _226, _183); bool _235 = cbuf_40.data[95u + buf0_dword_off] == 2u; uint _339; uint _340; uint _341; uint _342; uint _343; uint _344; if (_235) { float4 _241 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y)); float _242 = _241.x; float _243 = _241.y; float _244 = _241.z; float _276 = spvFMul(as_type(cbuf_40.data[0u + buf0_dword_off]), as_type(cbuf_40.data[36u + buf0_dword_off])); float _279 = spvFMul(as_type(cbuf_40.data[1u + buf0_dword_off]), as_type(cbuf_40.data[37u + buf0_dword_off])); float _282 = spvFMul(as_type(cbuf_40.data[2u + buf0_dword_off]), as_type(cbuf_40.data[38u + buf0_dword_off])); float _286 = spvFMul(_242, _242); float _287 = spvFMul(_243, _243); float _288 = spvFMul(_244, _244); float _293 = spvFMul(1.0, _232); float _294 = spvFMul(1.0, _233); float _295 = spvFMul(1.0, _234); float _303 = fma(-_276, _286, 1.0); float _305 = fma(-_279, _287, 1.0); float _307 = fma(-_282, _288, 1.0); float _324 = spvFSub(1.0, spvFSub(spvFMul(fast::max(_305, _305), 2.0), spvFMul(spvFMul(_233, _305), 2.0))); float _326 = spvFSub(1.0, spvFSub(spvFMul(fast::max(_307, _307), 2.0), spvFMul(spvFMul(_234, _307), 2.0))); _339 = as_type((_294 < 0.5) ? spvFMul(spvFMul(spvFMul(_279, _287), _294), 2.0) : _324); _340 = as_type(spvFMul(1.0, spvFMul(spvFMul(as_type(cbuf_40.data[3u + buf0_dword_off]), as_type(cbuf_40.data[39u + buf0_dword_off])), _241.w))); _341 = as_type((0.5 > _295) ? spvFMul(spvFMul(spvFMul(_282, _288), _295), 2.0) : _326); _342 = as_type((_293 < 0.5) ? spvFMul(spvFMul(spvFMul(_276, _286), _293), 2.0) : spvFSub(1.0, spvFSub(spvFMul(fast::max(_303, _303), 2.0), spvFMul(spvFMul(_232, _303), 2.0)))); _343 = as_type(_326); _344 = as_type(_324); } else { _339 = as_type(_151); _340 = as_type(_226); _341 = as_type(_224); _342 = as_type(_221); _343 = as_type(in.fs_in_attr0.y); _344 = as_type(in.fs_in_attr0.x); } uint _406; uint _407; uint _408; uint _409; if (!_235) { float4 _351 = fs_img24.sample(fs_samp12, float2(as_type(_344), as_type(_343))); float _352 = _351.x; float _353 = _351.y; float _354 = _351.z; _406 = as_type(spvFMul(spvFMul(as_type(cbuf_40.data[38u + buf0_dword_off]), spvFMul(as_type(cbuf_40.data[2u + buf0_dword_off]), _234)), spvFMul(_354, _354))); _407 = as_type(spvFMul(spvFMul(as_type(cbuf_40.data[37u + buf0_dword_off]), spvFMul(as_type(cbuf_40.data[1u + buf0_dword_off]), _233)), spvFMul(_353, _353))); _408 = as_type(spvFMul(spvFMul(as_type(cbuf_40.data[36u + buf0_dword_off]), spvFMul(as_type(cbuf_40.data[0u + buf0_dword_off]), _232)), spvFMul(_352, _352))); _409 = as_type(spvFMul(spvFMul(as_type(cbuf_40.data[3u + buf0_dword_off]), as_type(cbuf_40.data[39u + buf0_dword_off])), _351.w)); } else { _406 = _341; _407 = _339; _408 = _342; _409 = _340; } if (false) { discard_fragment(); } out.frag_color0.x = fast::max(0.0, as_type(_408)); out.frag_color0.y = fast::max(0.0, as_type(_407)); out.frag_color0.z = fast::max(0.0, as_type(_406)); out.frag_color0.w = fast::max(0.0, ((((_163 > 1.0) || (_163 < 0.0)) || (_161 > 1.0)) || (_161 < 0.0)) ? 0.0 : as_type(_409)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x3a15aa1e [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb4994e6e [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(11)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(12)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(13)]]) { main0_out out = {}; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint _165 = 20u + (extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _174 = (cbuf_12.data[_165] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _175 = (cbuf_12.data[_165] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _180 = (cbuf_12.data[_165] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _184 = (cbuf_12.data[_165] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _191 = ((0u + ((_174 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _204 = uint4(cbuf_16.data[_191 + 0u], cbuf_16.data[_191 + 1u], cbuf_16.data[_191 + 2u], cbuf_16.data[_191 + 3u]); uint _212 = ((0u + ((_175 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _225 = uint4(cbuf_16.data[_212 + 0u], cbuf_16.data[_212 + 1u], cbuf_16.data[_212 + 2u], cbuf_16.data[_212 + 3u]); uint _233 = ((0u + ((_174 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _246 = uint4(cbuf_16.data[_233 + 0u], cbuf_16.data[_233 + 1u], cbuf_16.data[_233 + 2u], cbuf_16.data[_233 + 3u]); uint _254 = ((0u + ((_175 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _267 = uint4(cbuf_16.data[_254 + 0u], cbuf_16.data[_254 + 1u], cbuf_16.data[_254 + 2u], cbuf_16.data[_254 + 3u]); uint _275 = ((0u + (_174 * 16u)) + buf2_off) >> 2u; uint4 _288 = uint4(cbuf_16.data[_275 + 0u], cbuf_16.data[_275 + 1u], cbuf_16.data[_275 + 2u], cbuf_16.data[_275 + 3u]); uint _296 = ((0u + ((_180 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _309 = uint4(cbuf_16.data[_296 + 0u], cbuf_16.data[_296 + 1u], cbuf_16.data[_296 + 2u], cbuf_16.data[_296 + 3u]); uint _317 = ((0u + (_175 * 16u)) + buf2_off) >> 2u; uint4 _330 = uint4(cbuf_16.data[_317 + 0u], cbuf_16.data[_317 + 1u], cbuf_16.data[_317 + 2u], cbuf_16.data[_317 + 3u]); uint _338 = ((0u + ((_180 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _351 = uint4(cbuf_16.data[_338 + 0u], cbuf_16.data[_338 + 1u], cbuf_16.data[_338 + 2u], cbuf_16.data[_338 + 3u]); uint _359 = ((0u + ((_184 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _372 = uint4(cbuf_16.data[_359 + 0u], cbuf_16.data[_359 + 1u], cbuf_16.data[_359 + 2u], cbuf_16.data[_359 + 3u]); uint _380 = ((0u + (_180 * 16u)) + buf2_off) >> 2u; uint4 _393 = uint4(cbuf_16.data[_380 + 0u], cbuf_16.data[_380 + 1u], cbuf_16.data[_380 + 2u], cbuf_16.data[_380 + 3u]); uint _401 = ((0u + ((_184 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _414 = uint4(cbuf_16.data[_401 + 0u], cbuf_16.data[_401 + 1u], cbuf_16.data[_401 + 2u], cbuf_16.data[_401 + 3u]); uint _422 = ((0u + (_184 * 16u)) + buf2_off) >> 2u; uint4 _435 = uint4(cbuf_16.data[_422 + 0u], cbuf_16.data[_422 + 1u], cbuf_16.data[_422 + 2u], cbuf_16.data[_422 + 3u]); float _447 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _448 = spvFMul(in.vs_in_attr2.y, _447); float _449 = spvFMul(in.vs_in_attr2.x, _447); float _454 = spvFMul(in.vs_in_attr2.z, _447); float _533 = spvFMul(in.vs_in_attr2.w, _447); float _633 = spvFSub(fma(fma(as_type(_372.x), _533, fma(as_type(_309.x), _454, fma(as_type(_225.x), _449, spvFMul(_448, as_type(_204.x))))), in.vs_in_attr0.x, fma(fma(as_type(_372.y), _533, fma(as_type(_309.y), _454, fma(as_type(_225.y), _449, spvFMul(_448, as_type(_204.y))))), in.vs_in_attr0.y, fma(fma(as_type(_372.z), _533, fma(as_type(_309.z), _454, fma(as_type(_225.z), _449, spvFMul(_448, as_type(_204.z))))), in.vs_in_attr0.z, fma(as_type(_372.w), _533, fma(as_type(_309.w), _454, fma(as_type(_225.w), _449, spvFMul(_448, as_type(_204.w)))))))), as_type(cbuf_20.data[191u + buf3_dword_off])); float _636 = spvFSub(fma(fma(as_type(_414.x), _533, fma(as_type(_351.x), _454, fma(as_type(_267.x), _449, spvFMul(_448, as_type(_246.x))))), in.vs_in_attr0.x, fma(fma(as_type(_414.y), _533, fma(as_type(_351.y), _454, fma(as_type(_267.y), _449, spvFMul(_448, as_type(_246.y))))), in.vs_in_attr0.y, fma(fma(as_type(_414.z), _533, fma(as_type(_351.z), _454, fma(as_type(_267.z), _449, spvFMul(_448, as_type(_246.z))))), in.vs_in_attr0.z, fma(as_type(_414.w), _533, fma(as_type(_351.w), _454, fma(as_type(_267.w), _449, spvFMul(_448, as_type(_246.w)))))))), as_type(cbuf_20.data[187u + buf3_dword_off])); float _650 = spvFSub(fma(fma(as_type(_435.x), _533, fma(as_type(_393.x), _454, fma(as_type(_330.x), _449, spvFMul(_448, as_type(_288.x))))), in.vs_in_attr0.x, fma(fma(as_type(_435.y), _533, fma(as_type(_393.y), _454, fma(as_type(_330.y), _449, spvFMul(_448, as_type(_288.y))))), in.vs_in_attr0.y, fma(fma(as_type(_435.z), _533, fma(as_type(_393.z), _454, fma(as_type(_330.z), _449, spvFMul(_448, as_type(_288.z))))), in.vs_in_attr0.z, fma(as_type(_435.w), _533, fma(as_type(_393.w), _454, fma(as_type(_330.w), _449, spvFMul(_448, as_type(_288.w)))))))), as_type(cbuf_20.data[183u + buf3_dword_off])); float _664 = fma(as_type(cbuf_20.data[208u + buf3_dword_off]), _650, fma(as_type(cbuf_20.data[209u + buf3_dword_off]), _636, fma(as_type(cbuf_20.data[210u + buf3_dword_off]), _633, as_type(cbuf_20.data[211u + buf3_dword_off])))); float _666 = fma(as_type(cbuf_20.data[212u + buf3_dword_off]), _650, fma(as_type(cbuf_20.data[213u + buf3_dword_off]), _636, fma(as_type(cbuf_20.data[214u + buf3_dword_off]), _633, as_type(cbuf_20.data[215u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf3_dword_off]), _650, fma(as_type(cbuf_20.data[201u + buf3_dword_off]), _636, fma(as_type(cbuf_20.data[202u + buf3_dword_off]), _633, as_type(cbuf_20.data[203u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf3_dword_off]), _650, fma(as_type(cbuf_20.data[205u + buf3_dword_off]), _636, fma(as_type(cbuf_20.data[206u + buf3_dword_off]), _633, as_type(cbuf_20.data[207u + buf3_dword_off])))); out.gl_Position.z = _664; out.gl_Position.w = _666; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = in.vs_in_attr3.w; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf4_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf4_dword_off])); out.out_attr1.z = fma(as_type(cbuf_8.data[4u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.z))))), as_type(cbuf_8.data[6u + buf4_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[5u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.w))))), as_type(cbuf_8.data[7u + buf4_dword_off])); out.out_attr3.x = _664; out.out_attr3.y = _666; out.out_attr3.z = fma(as_type(cbuf_8.data[8u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[10u + buf4_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[9u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[11u + buf4_dword_off])); out.out_attr4.x = 0.0; out.out_attr4.y = 0.0; out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[60]; }; struct main0_in { float4 fs_in_attr3 [[user(locn3)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float _78 = spvFMul(in.fs_in_attr3.x, 1.0 / in.fs_in_attr3.y); float _87 = fract(spvFMul(255.0, _78)); bool _90 = as_type(cbuf_4.data[20u + buf0_dword_off]) > fma(as_type(cbuf_4.data[21u + buf0_dword_off]), -0.5, 1.0); float _91 = fract(spvFMul(65025.0, _78)); float _93 = spvFMul(0.0039215688593685626983642578125, _87); uint _102; uint _103; if (!_90) { _102 = as_type(fma(_78, 1.0, -_93)); _103 = as_type(fma(_91, -0.0039215688593685626983642578125, _87)); } else { _102 = as_type(_93); _103 = as_type(_87); } if (_90) { discard_fragment(); } frag_color0.x = _91; frag_color0.y = as_type(_103); frag_color0.z = as_type(_102); frag_color0.w = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(14)]]) { main0_out out = {}; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _145 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); uint _150 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _151 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _156 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _160 = (cbuf_12.data[_145] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _167 = ((0u + ((_150 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _180 = uint4(cbuf_16.data[_167 + 0u], cbuf_16.data[_167 + 1u], cbuf_16.data[_167 + 2u], cbuf_16.data[_167 + 3u]); uint _188 = ((0u + ((_151 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _201 = uint4(cbuf_16.data[_188 + 0u], cbuf_16.data[_188 + 1u], cbuf_16.data[_188 + 2u], cbuf_16.data[_188 + 3u]); uint _209 = ((0u + ((_150 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _222 = uint4(cbuf_16.data[_209 + 0u], cbuf_16.data[_209 + 1u], cbuf_16.data[_209 + 2u], cbuf_16.data[_209 + 3u]); uint _230 = ((0u + ((_151 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _243 = uint4(cbuf_16.data[_230 + 0u], cbuf_16.data[_230 + 1u], cbuf_16.data[_230 + 2u], cbuf_16.data[_230 + 3u]); uint _251 = ((0u + (_150 * 16u)) + buf3_off) >> 2u; uint4 _264 = uint4(cbuf_16.data[_251 + 0u], cbuf_16.data[_251 + 1u], cbuf_16.data[_251 + 2u], cbuf_16.data[_251 + 3u]); uint _272 = ((0u + ((_156 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _285 = uint4(cbuf_16.data[_272 + 0u], cbuf_16.data[_272 + 1u], cbuf_16.data[_272 + 2u], cbuf_16.data[_272 + 3u]); uint _293 = ((0u + (_151 * 16u)) + buf3_off) >> 2u; uint4 _306 = uint4(cbuf_16.data[_293 + 0u], cbuf_16.data[_293 + 1u], cbuf_16.data[_293 + 2u], cbuf_16.data[_293 + 3u]); uint _314 = ((0u + ((_156 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _327 = uint4(cbuf_16.data[_314 + 0u], cbuf_16.data[_314 + 1u], cbuf_16.data[_314 + 2u], cbuf_16.data[_314 + 3u]); uint _335 = ((0u + ((_160 + 2u) * 16u)) + buf3_off) >> 2u; uint4 _348 = uint4(cbuf_16.data[_335 + 0u], cbuf_16.data[_335 + 1u], cbuf_16.data[_335 + 2u], cbuf_16.data[_335 + 3u]); uint _356 = ((0u + (_156 * 16u)) + buf3_off) >> 2u; uint4 _369 = uint4(cbuf_16.data[_356 + 0u], cbuf_16.data[_356 + 1u], cbuf_16.data[_356 + 2u], cbuf_16.data[_356 + 3u]); uint _377 = ((0u + ((_160 + 1u) * 16u)) + buf3_off) >> 2u; uint4 _390 = uint4(cbuf_16.data[_377 + 0u], cbuf_16.data[_377 + 1u], cbuf_16.data[_377 + 2u], cbuf_16.data[_377 + 3u]); uint _398 = ((0u + (_160 * 16u)) + buf3_off) >> 2u; uint4 _411 = uint4(cbuf_16.data[_398 + 0u], cbuf_16.data[_398 + 1u], cbuf_16.data[_398 + 2u], cbuf_16.data[_398 + 3u]); float _423 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _424 = spvFMul(in.vs_in_attr2.y, _423); float _425 = spvFMul(in.vs_in_attr2.x, _423); float _430 = spvFMul(in.vs_in_attr2.z, _423); float _509 = spvFMul(in.vs_in_attr2.w, _423); float _609 = spvFSub(fma(fma(as_type(_348.x), _509, fma(as_type(_285.x), _430, fma(as_type(_201.x), _425, spvFMul(_424, as_type(_180.x))))), in.vs_in_attr0.x, fma(fma(as_type(_348.y), _509, fma(as_type(_285.y), _430, fma(as_type(_201.y), _425, spvFMul(_424, as_type(_180.y))))), in.vs_in_attr0.y, fma(fma(as_type(_348.z), _509, fma(as_type(_285.z), _430, fma(as_type(_201.z), _425, spvFMul(_424, as_type(_180.z))))), in.vs_in_attr0.z, fma(as_type(_348.w), _509, fma(as_type(_285.w), _430, fma(as_type(_201.w), _425, spvFMul(_424, as_type(_180.w)))))))), as_type(cbuf_20.data[191u + buf4_dword_off])); float _612 = spvFSub(fma(fma(as_type(_390.x), _509, fma(as_type(_327.x), _430, fma(as_type(_243.x), _425, spvFMul(_424, as_type(_222.x))))), in.vs_in_attr0.x, fma(fma(as_type(_390.y), _509, fma(as_type(_327.y), _430, fma(as_type(_243.y), _425, spvFMul(_424, as_type(_222.y))))), in.vs_in_attr0.y, fma(fma(as_type(_390.z), _509, fma(as_type(_327.z), _430, fma(as_type(_243.z), _425, spvFMul(_424, as_type(_222.z))))), in.vs_in_attr0.z, fma(as_type(_390.w), _509, fma(as_type(_327.w), _430, fma(as_type(_243.w), _425, spvFMul(_424, as_type(_222.w)))))))), as_type(cbuf_20.data[187u + buf4_dword_off])); float _626 = spvFSub(fma(fma(as_type(_411.x), _509, fma(as_type(_369.x), _430, fma(as_type(_306.x), _425, spvFMul(_424, as_type(_264.x))))), in.vs_in_attr0.x, fma(fma(as_type(_411.y), _509, fma(as_type(_369.y), _430, fma(as_type(_306.y), _425, spvFMul(_424, as_type(_264.y))))), in.vs_in_attr0.y, fma(fma(as_type(_411.z), _509, fma(as_type(_369.z), _430, fma(as_type(_306.z), _425, spvFMul(_424, as_type(_264.z))))), in.vs_in_attr0.z, fma(as_type(_411.w), _509, fma(as_type(_369.w), _430, fma(as_type(_306.w), _425, spvFMul(_424, as_type(_264.w)))))))), as_type(cbuf_20.data[183u + buf4_dword_off])); float _640 = fma(as_type(cbuf_20.data[208u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[209u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[210u + buf4_dword_off]), _609, as_type(cbuf_20.data[211u + buf4_dword_off])))); float _642 = fma(as_type(cbuf_20.data[212u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[213u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[214u + buf4_dword_off]), _609, as_type(cbuf_20.data[215u + buf4_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[201u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[202u + buf4_dword_off]), _609, as_type(cbuf_20.data[203u + buf4_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf4_dword_off]), _626, fma(as_type(cbuf_20.data[205u + buf4_dword_off]), _612, fma(as_type(cbuf_20.data[206u + buf4_dword_off]), _609, as_type(cbuf_20.data[207u + buf4_dword_off])))); out.gl_Position.z = _640; out.gl_Position.w = _642; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf5_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf5_dword_off])); out.out_attr1.z = fma(as_type(cbuf_8.data[4u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.z))))), as_type(cbuf_8.data[6u + buf5_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[5u + buf5_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.w))))), as_type(cbuf_8.data[7u + buf5_dword_off])); out.out_attr2.x = _640; out.out_attr2.y = _642; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _110 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.x, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.y, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _122 = spvFMul(_110.w, in.fs_in_attr0.w); float _135 = spvFMul(in.fs_in_attr2.x, 1.0 / in.fs_in_attr2.y); float _140 = fract(spvFMul(255.0, _135)); bool _142 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _122)) || (_122 == 0.0); float _143 = fract(spvFMul(65025.0, _135)); float _145 = spvFMul(0.0039215688593685626983642578125, _140); uint _154; uint _155; if (!_142) { _154 = as_type(fma(_135, 1.0, -_145)); _155 = as_type(fma(_143, -0.0039215688593685626983642578125, _140)); } else { _154 = as_type(_145); _155 = as_type(_140); } if (_142) { discard_fragment(); } frag_color0.x = _143; frag_color0.y = as_type(_155); frag_color0.z = as_type(_154); frag_color0.w = _122; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[164]; }; struct main0_in { float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _109 = fs_img4.sample(fs_samp12, float2(fma(in.fs_in_attr1.x, as_type(cbuf_16.data[0u + buf0_dword_off]), as_type(cbuf_16.data[2u + buf0_dword_off])), fma(in.fs_in_attr1.y, as_type(cbuf_16.data[1u + buf0_dword_off]), as_type(cbuf_16.data[3u + buf0_dword_off])))); float _110 = _109.w; float _131 = spvFMul(in.fs_in_attr2.x, 1.0 / in.fs_in_attr2.y); float _136 = fract(spvFMul(255.0, _131)); bool _138 = (as_type(cbuf_20.data[20u + buf1_dword_off]) > fma(as_type(cbuf_20.data[21u + buf1_dword_off]), -0.5, _110)) || (_110 == 0.0); float _139 = fract(spvFMul(65025.0, _131)); float _141 = spvFMul(0.0039215688593685626983642578125, _136); uint _150; uint _151; if (!_138) { _150 = as_type(fma(_131, 1.0, -_141)); _151 = as_type(fma(_139, -0.0039215688593685626983642578125, _136)); } else { _150 = as_type(_141); _151 = as_type(_136); } if (_138) { discard_fragment(); } frag_color0.x = _139; frag_color0.y = as_type(_151); frag_color0.z = as_type(_150); frag_color0.w = _110; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[576]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_24 [[buffer(13)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(14)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(15)]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _111 = as_type(as_type(in.vs_in_attr1.x)); uint _115 = as_type(as_type(in.vs_in_attr1.y)); uint _119 = as_type(as_type(in.vs_in_attr1.z)); uint _124 = as_type(as_type(in.vs_in_attr1.w)); uint _150 = 20u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u); float _236 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _237 = spvFMul(in.vs_in_attr2.x, _236); float _238 = spvFMul(in.vs_in_attr2.y, _236); float _239 = spvFMul(in.vs_in_attr2.z, _236); float _240 = spvFMul(in.vs_in_attr2.w, _236); uint _241 = _111 * 3u; uint _244 = _115 * 3u; uint _247 = _119 * 3u; uint _252 = ((0u + (_241 * 16u)) + buf4_off) >> 2u; uint4 _265 = uint4(cbuf_24.data[_252 + 0u], cbuf_24.data[_252 + 1u], cbuf_24.data[_252 + 2u], cbuf_24.data[_252 + 3u]); uint _273 = ((0u + ((_241 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _286 = uint4(cbuf_24.data[_273 + 0u], cbuf_24.data[_273 + 1u], cbuf_24.data[_273 + 2u], cbuf_24.data[_273 + 3u]); uint _294 = ((0u + ((_241 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _307 = uint4(cbuf_24.data[_294 + 0u], cbuf_24.data[_294 + 1u], cbuf_24.data[_294 + 2u], cbuf_24.data[_294 + 3u]); uint _315 = ((0u + (_244 * 16u)) + buf4_off) >> 2u; uint4 _328 = uint4(cbuf_24.data[_315 + 0u], cbuf_24.data[_315 + 1u], cbuf_24.data[_315 + 2u], cbuf_24.data[_315 + 3u]); uint _336 = ((0u + ((_244 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _349 = uint4(cbuf_24.data[_336 + 0u], cbuf_24.data[_336 + 1u], cbuf_24.data[_336 + 2u], cbuf_24.data[_336 + 3u]); uint _357 = ((0u + ((_244 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _370 = uint4(cbuf_24.data[_357 + 0u], cbuf_24.data[_357 + 1u], cbuf_24.data[_357 + 2u], cbuf_24.data[_357 + 3u]); uint _378 = ((0u + (_247 * 16u)) + buf4_off) >> 2u; uint4 _391 = uint4(cbuf_24.data[_378 + 0u], cbuf_24.data[_378 + 1u], cbuf_24.data[_378 + 2u], cbuf_24.data[_378 + 3u]); uint _399 = ((0u + ((_247 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _412 = uint4(cbuf_24.data[_399 + 0u], cbuf_24.data[_399 + 1u], cbuf_24.data[_399 + 2u], cbuf_24.data[_399 + 3u]); uint _482 = _124 * 3u; uint _486 = (cbuf_12.data[_150] + _111) * 3u; uint _490 = (cbuf_12.data[_150] + _115) * 3u; uint _494 = ((0u + ((_247 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _507 = uint4(cbuf_24.data[_494 + 0u], cbuf_24.data[_494 + 1u], cbuf_24.data[_494 + 2u], cbuf_24.data[_494 + 3u]); uint _515 = ((0u + (_482 * 16u)) + buf4_off) >> 2u; uint4 _528 = uint4(cbuf_24.data[_515 + 0u], cbuf_24.data[_515 + 1u], cbuf_24.data[_515 + 2u], cbuf_24.data[_515 + 3u]); uint _536 = ((0u + ((_482 + 1u) * 16u)) + buf4_off) >> 2u; uint4 _549 = uint4(cbuf_24.data[_536 + 0u], cbuf_24.data[_536 + 1u], cbuf_24.data[_536 + 2u], cbuf_24.data[_536 + 3u]); uint _557 = ((0u + ((_482 + 2u) * 16u)) + buf4_off) >> 2u; uint4 _570 = uint4(cbuf_24.data[_557 + 0u], cbuf_24.data[_557 + 1u], cbuf_24.data[_557 + 2u], cbuf_24.data[_557 + 3u]); uint _578 = ((0u + (_486 * 16u)) + buf5_off) >> 2u; uint4 _591 = uint4(cbuf_16.data[_578 + 0u], cbuf_16.data[_578 + 1u], cbuf_16.data[_578 + 2u], cbuf_16.data[_578 + 3u]); uint _599 = ((0u + ((_486 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _612 = uint4(cbuf_16.data[_599 + 0u], cbuf_16.data[_599 + 1u], cbuf_16.data[_599 + 2u], cbuf_16.data[_599 + 3u]); uint _620 = ((0u + ((_486 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _633 = uint4(cbuf_16.data[_620 + 0u], cbuf_16.data[_620 + 1u], cbuf_16.data[_620 + 2u], cbuf_16.data[_620 + 3u]); uint _641 = ((0u + (_490 * 16u)) + buf5_off) >> 2u; uint4 _654 = uint4(cbuf_16.data[_641 + 0u], cbuf_16.data[_641 + 1u], cbuf_16.data[_641 + 2u], cbuf_16.data[_641 + 3u]); float _697 = fma(fma(as_type(_528.x), _240, fma(as_type(_391.x), _239, fma(as_type(_265.x), _237, spvFMul(_238, as_type(_328.x))))), in.vs_in_attr0.x, fma(fma(as_type(_528.y), _240, fma(as_type(_391.y), _239, fma(as_type(_265.y), _237, spvFMul(_238, as_type(_328.y))))), in.vs_in_attr0.y, fma(fma(as_type(_528.z), _240, fma(as_type(_391.z), _239, fma(as_type(_265.z), _237, spvFMul(_238, as_type(_328.z))))), in.vs_in_attr0.z, fma(as_type(_528.w), _240, fma(as_type(_391.w), _239, fma(as_type(_265.w), _237, spvFMul(_238, as_type(_328.w)))))))); float _698 = fma(fma(as_type(_549.x), _240, fma(as_type(_412.x), _239, fma(as_type(_286.x), _237, spvFMul(_238, as_type(_349.x))))), in.vs_in_attr0.x, fma(fma(as_type(_549.y), _240, fma(as_type(_412.y), _239, fma(as_type(_286.y), _237, spvFMul(_238, as_type(_349.y))))), in.vs_in_attr0.y, fma(fma(as_type(_549.z), _240, fma(as_type(_412.z), _239, fma(as_type(_286.z), _237, spvFMul(_238, as_type(_349.z))))), in.vs_in_attr0.z, fma(as_type(_549.w), _240, fma(as_type(_412.w), _239, fma(as_type(_286.w), _237, spvFMul(_238, as_type(_349.w)))))))); float _699 = fma(fma(as_type(_570.x), _240, fma(as_type(_507.x), _239, fma(as_type(_307.x), _237, spvFMul(_238, as_type(_370.x))))), in.vs_in_attr0.x, fma(fma(as_type(_570.y), _240, fma(as_type(_507.y), _239, fma(as_type(_307.y), _237, spvFMul(_238, as_type(_370.y))))), in.vs_in_attr0.y, fma(fma(as_type(_570.z), _240, fma(as_type(_507.z), _239, fma(as_type(_307.z), _237, spvFMul(_238, as_type(_370.z))))), in.vs_in_attr0.z, fma(as_type(_570.w), _240, fma(as_type(_507.w), _239, fma(as_type(_307.w), _237, spvFMul(_238, as_type(_370.w)))))))); uint _719 = (cbuf_12.data[_150] + _119) * 3u; uint _723 = (cbuf_12.data[_150] + _124) * 3u; uint _729 = ((0u + ((_490 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _742 = uint4(cbuf_16.data[_729 + 0u], cbuf_16.data[_729 + 1u], cbuf_16.data[_729 + 2u], cbuf_16.data[_729 + 3u]); uint _750 = ((0u + ((_490 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _763 = uint4(cbuf_16.data[_750 + 0u], cbuf_16.data[_750 + 1u], cbuf_16.data[_750 + 2u], cbuf_16.data[_750 + 3u]); uint _771 = ((0u + (_719 * 16u)) + buf5_off) >> 2u; uint4 _784 = uint4(cbuf_16.data[_771 + 0u], cbuf_16.data[_771 + 1u], cbuf_16.data[_771 + 2u], cbuf_16.data[_771 + 3u]); uint _792 = ((0u + ((_719 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _805 = uint4(cbuf_16.data[_792 + 0u], cbuf_16.data[_792 + 1u], cbuf_16.data[_792 + 2u], cbuf_16.data[_792 + 3u]); uint _813 = ((0u + ((_719 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _826 = uint4(cbuf_16.data[_813 + 0u], cbuf_16.data[_813 + 1u], cbuf_16.data[_813 + 2u], cbuf_16.data[_813 + 3u]); uint _834 = ((0u + (_723 * 16u)) + buf5_off) >> 2u; uint4 _847 = uint4(cbuf_16.data[_834 + 0u], cbuf_16.data[_834 + 1u], cbuf_16.data[_834 + 2u], cbuf_16.data[_834 + 3u]); float _920 = spvFSub(fma(fma(as_type(_847.x), _240, fma(as_type(_784.x), _239, fma(as_type(_591.x), _237, spvFMul(_238, as_type(_654.x))))), _697, fma(fma(as_type(_847.y), _240, fma(as_type(_784.y), _239, fma(as_type(_591.y), _237, spvFMul(_238, as_type(_654.y))))), _698, fma(fma(as_type(_847.z), _240, fma(as_type(_784.z), _239, fma(as_type(_591.z), _237, spvFMul(_238, as_type(_654.z))))), _699, fma(as_type(_847.w), _240, fma(as_type(_784.w), _239, fma(as_type(_591.w), _237, spvFMul(_238, as_type(_654.w)))))))), as_type(cbuf_20.data[183u + buf3_dword_off])); out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; uint _937 = ((0u + ((_723 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _950 = uint4(cbuf_16.data[_937 + 0u], cbuf_16.data[_937 + 1u], cbuf_16.data[_937 + 2u], cbuf_16.data[_937 + 3u]); uint _958 = ((0u + ((_723 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _971 = uint4(cbuf_16.data[_958 + 0u], cbuf_16.data[_958 + 1u], cbuf_16.data[_958 + 2u], cbuf_16.data[_958 + 3u]); float _999 = spvFSub(fma(fma(as_type(_950.x), _240, fma(as_type(_805.x), _239, fma(as_type(_612.x), _237, spvFMul(_238, as_type(_742.x))))), _697, fma(fma(as_type(_950.y), _240, fma(as_type(_805.y), _239, fma(as_type(_612.y), _237, spvFMul(_238, as_type(_742.y))))), _698, fma(fma(as_type(_950.z), _240, fma(as_type(_805.z), _239, fma(as_type(_612.z), _237, spvFMul(_238, as_type(_742.z))))), _699, fma(as_type(_950.w), _240, fma(as_type(_805.w), _239, fma(as_type(_612.w), _237, spvFMul(_238, as_type(_742.w)))))))), as_type(cbuf_20.data[187u + buf3_dword_off])); float _1001 = spvFSub(fma(fma(as_type(_971.x), _240, fma(as_type(_826.x), _239, fma(as_type(_633.x), _237, spvFMul(_238, as_type(_763.x))))), _697, fma(fma(as_type(_971.y), _240, fma(as_type(_826.y), _239, fma(as_type(_633.y), _237, spvFMul(_238, as_type(_763.y))))), _698, fma(fma(as_type(_971.z), _240, fma(as_type(_826.z), _239, fma(as_type(_633.z), _237, spvFMul(_238, as_type(_763.z))))), _699, fma(as_type(_971.w), _240, fma(as_type(_826.w), _239, fma(as_type(_633.w), _237, spvFMul(_238, as_type(_763.w)))))))), as_type(cbuf_20.data[191u + buf3_dword_off])); float _1027 = fma(as_type(cbuf_20.data[208u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[209u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[210u + buf3_dword_off]), _1001, as_type(cbuf_20.data[211u + buf3_dword_off])))); float _1029 = fma(as_type(cbuf_20.data[212u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[213u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[214u + buf3_dword_off]), _1001, as_type(cbuf_20.data[215u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[201u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[202u + buf3_dword_off]), _1001, as_type(cbuf_20.data[203u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf3_dword_off]), _920, fma(as_type(cbuf_20.data[205u + buf3_dword_off]), _999, fma(as_type(cbuf_20.data[206u + buf3_dword_off]), _1001, as_type(cbuf_20.data[207u + buf3_dword_off])))); out.gl_Position.z = _1027; out.gl_Position.w = _1029; out.out_attr2.x = _1027; out.out_attr2.y = _1029; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf6_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf6_dword_off])); out.out_attr1.z = fma(as_type(cbuf_8.data[4u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.z))))), as_type(cbuf_8.data[6u + buf6_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[5u + buf6_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.w))))), as_type(cbuf_8.data[7u + buf6_dword_off])); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[576]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; constant uint _91 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(11)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(12)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(13)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(14)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(15)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(16)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; bool _179 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u)] == 0u; uint _224; uint _225; uint _226; uint _227; uint _228; uint _229; uint _230; uint _231; uint _232; uint _233; uint _234; uint _235; if (!_179) { _224 = cbuf_24.data[2u + buf3_dword_off]; _225 = cbuf_24.data[4u + buf3_dword_off]; _226 = cbuf_24.data[11u + buf3_dword_off]; _227 = cbuf_24.data[10u + buf3_dword_off]; _228 = cbuf_24.data[9u + buf3_dword_off]; _229 = cbuf_24.data[8u + buf3_dword_off]; _230 = cbuf_24.data[3u + buf3_dword_off]; _231 = cbuf_24.data[1u + buf3_dword_off]; _232 = cbuf_24.data[0u + buf3_dword_off]; _233 = cbuf_24.data[7u + buf3_dword_off]; _234 = cbuf_24.data[6u + buf3_dword_off]; _235 = cbuf_24.data[5u + buf3_dword_off]; } else { _224 = _91; _225 = 1065353216u; _226 = gl_InstanceIndex; _227 = push_data.sr1; _228 = push_data.sr0; _229 = as_type(in.vs_in_attr2.w); _230 = as_type(in.vs_in_attr2.z); _231 = as_type(in.vs_in_attr2.x); _232 = as_type(as_type(in.vs_in_attr1.w)); _233 = as_type(as_type(in.vs_in_attr1.z)); _234 = as_type(as_type(in.vs_in_attr1.y)); _235 = as_type(as_type(in.vs_in_attr1.x)); } uint _634; uint _635; uint _636; uint _637; uint _638; uint _639; uint _640; uint _641; uint _642; uint _643; uint _644; uint _645; if (_179) { uint _237 = 20u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); uint _242 = (cbuf_16.data[_237] + _234) * 3u; uint _243 = (cbuf_16.data[_237] + _235) * 3u; uint _249 = (cbuf_16.data[_237] + _233) * 3u; uint _253 = (cbuf_16.data[_237] + _232) * 3u; uint _259 = ((0u + (_242 * 16u)) + buf5_off) >> 2u; uint4 _272 = uint4(cbuf_20.data[_259 + 0u], cbuf_20.data[_259 + 1u], cbuf_20.data[_259 + 2u], cbuf_20.data[_259 + 3u]); uint _280 = ((0u + ((_242 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _293 = uint4(cbuf_20.data[_280 + 0u], cbuf_20.data[_280 + 1u], cbuf_20.data[_280 + 2u], cbuf_20.data[_280 + 3u]); uint _301 = ((0u + ((_242 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _314 = uint4(cbuf_20.data[_301 + 0u], cbuf_20.data[_301 + 1u], cbuf_20.data[_301 + 2u], cbuf_20.data[_301 + 3u]); uint _322 = ((0u + (_243 * 16u)) + buf5_off) >> 2u; uint4 _335 = uint4(cbuf_20.data[_322 + 0u], cbuf_20.data[_322 + 1u], cbuf_20.data[_322 + 2u], cbuf_20.data[_322 + 3u]); uint _343 = ((0u + ((_243 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _356 = uint4(cbuf_20.data[_343 + 0u], cbuf_20.data[_343 + 1u], cbuf_20.data[_343 + 2u], cbuf_20.data[_343 + 3u]); uint _364 = ((0u + ((_243 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _377 = uint4(cbuf_20.data[_364 + 0u], cbuf_20.data[_364 + 1u], cbuf_20.data[_364 + 2u], cbuf_20.data[_364 + 3u]); uint _385 = ((0u + (_249 * 16u)) + buf5_off) >> 2u; uint4 _398 = uint4(cbuf_20.data[_385 + 0u], cbuf_20.data[_385 + 1u], cbuf_20.data[_385 + 2u], cbuf_20.data[_385 + 3u]); uint _406 = ((0u + ((_249 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _419 = uint4(cbuf_20.data[_406 + 0u], cbuf_20.data[_406 + 1u], cbuf_20.data[_406 + 2u], cbuf_20.data[_406 + 3u]); uint _427 = ((0u + ((_249 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _440 = uint4(cbuf_20.data[_427 + 0u], cbuf_20.data[_427 + 1u], cbuf_20.data[_427 + 2u], cbuf_20.data[_427 + 3u]); uint _448 = ((0u + (_253 * 16u)) + buf5_off) >> 2u; uint4 _461 = uint4(cbuf_20.data[_448 + 0u], cbuf_20.data[_448 + 1u], cbuf_20.data[_448 + 2u], cbuf_20.data[_448 + 3u]); uint _469 = ((0u + ((_253 + 1u) * 16u)) + buf5_off) >> 2u; uint4 _482 = uint4(cbuf_20.data[_469 + 0u], cbuf_20.data[_469 + 1u], cbuf_20.data[_469 + 2u], cbuf_20.data[_469 + 3u]); uint _490 = ((0u + ((_253 + 2u) * 16u)) + buf5_off) >> 2u; uint4 _503 = uint4(cbuf_20.data[_490 + 0u], cbuf_20.data[_490 + 1u], cbuf_20.data[_490 + 2u], cbuf_20.data[_490 + 3u]); float _518 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(as_type(_229), spvFAdd(as_type(_230), spvFAdd(as_type(_231), in.vs_in_attr2.y)))); float _519 = spvFMul(in.vs_in_attr2.y, _518); float _521 = spvFMul(as_type(_231), _518); float _547 = spvFMul(as_type(_230), _518); float _573 = spvFMul(as_type(_229), _518); _634 = as_type(fma(as_type(_461.x), _573, fma(as_type(_398.x), _547, fma(as_type(_335.x), _521, spvFMul(_519, as_type(_272.x)))))); _635 = as_type(fma(as_type(_482.x), _573, fma(as_type(_419.x), _547, fma(as_type(_356.x), _521, spvFMul(_519, as_type(_293.x)))))); _636 = as_type(fma(as_type(_461.y), _573, fma(as_type(_398.y), _547, fma(as_type(_335.y), _521, spvFMul(_519, as_type(_272.y)))))); _637 = as_type(fma(as_type(_503.x), _573, fma(as_type(_440.x), _547, fma(as_type(_377.x), _521, spvFMul(_519, as_type(_314.x)))))); _638 = as_type(fma(as_type(_482.y), _573, fma(as_type(_419.y), _547, fma(as_type(_356.y), _521, spvFMul(_519, as_type(_293.y)))))); _639 = as_type(fma(as_type(_461.w), _573, fma(as_type(_398.w), _547, fma(as_type(_335.w), _521, spvFMul(_519, as_type(_272.w)))))); _640 = as_type(fma(as_type(_461.z), _573, fma(as_type(_398.z), _547, fma(as_type(_335.z), _521, spvFMul(_519, as_type(_272.z)))))); _641 = as_type(fma(as_type(_503.y), _573, fma(as_type(_440.y), _547, fma(as_type(_377.y), _521, spvFMul(_519, as_type(_314.y)))))); _642 = as_type(fma(as_type(_482.w), _573, fma(as_type(_419.w), _547, fma(as_type(_356.w), _521, spvFMul(_519, as_type(_293.w)))))); _643 = as_type(fma(as_type(_482.z), _573, fma(as_type(_419.z), _547, fma(as_type(_356.z), _521, spvFMul(_519, as_type(_293.z)))))); _644 = as_type(fma(as_type(_503.w), _573, fma(as_type(_440.w), _547, fma(as_type(_377.w), _521, spvFMul(_519, as_type(_314.w)))))); _645 = as_type(fma(as_type(_503.z), _573, fma(as_type(_440.z), _547, fma(as_type(_377.z), _521, spvFMul(_519, as_type(_314.z)))))); } else { _634 = _232; _635 = _225; _636 = _231; _637 = _229; _638 = _235; _639 = _230; _640 = _224; _641 = _228; _642 = _233; _643 = _234; _644 = _226; _645 = _227; } float _742 = spvFSub(fma(as_type(_637), in.vs_in_attr0.x, fma(as_type(_641), in.vs_in_attr0.y, fma(as_type(_645), in.vs_in_attr0.z, as_type(_644)))), as_type(cbuf_28.data[191u + buf6_dword_off])); float _746 = spvFSub(fma(as_type(_635), in.vs_in_attr0.x, fma(as_type(_638), in.vs_in_attr0.y, fma(as_type(_643), in.vs_in_attr0.z, as_type(_642)))), as_type(cbuf_28.data[187u + buf6_dword_off])); float _760 = spvFSub(fma(as_type(_634), in.vs_in_attr0.x, fma(as_type(_636), in.vs_in_attr0.y, fma(as_type(_640), in.vs_in_attr0.z, as_type(_639)))), as_type(cbuf_28.data[183u + buf6_dword_off])); float _774 = fma(as_type(cbuf_28.data[208u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[209u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[210u + buf6_dword_off]), _742, as_type(cbuf_28.data[211u + buf6_dword_off])))); float _776 = fma(as_type(cbuf_28.data[212u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[213u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[214u + buf6_dword_off]), _742, as_type(cbuf_28.data[215u + buf6_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_28.data[200u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[201u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[202u + buf6_dword_off]), _742, as_type(cbuf_28.data[203u + buf6_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_28.data[204u + buf6_dword_off]), _760, fma(as_type(cbuf_28.data[205u + buf6_dword_off]), _746, fma(as_type(cbuf_28.data[206u + buf6_dword_off]), _742, as_type(cbuf_28.data[207u + buf6_dword_off])))); out.gl_Position.z = _774; out.gl_Position.w = _776; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = fma(as_type(cbuf_8.data[0u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf7_dword_off])); out.out_attr1.y = fma(as_type(cbuf_8.data[1u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf7_dword_off])); out.out_attr1.z = fma(as_type(cbuf_8.data[4u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.z))))), as_type(cbuf_8.data[6u + buf7_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[5u + buf7_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.w))))), as_type(cbuf_8.data[7u + buf7_dword_off])); out.out_attr2.x = _774; out.out_attr2.y = _776; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x55ed0d8b [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x228a5307 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(11)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(12)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(13)]]) { main0_out out = {}; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint _136 = 20u + (extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u); uint _141 = (cbuf_12.data[_136] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _142 = (cbuf_12.data[_136] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _147 = (cbuf_12.data[_136] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _151 = (cbuf_12.data[_136] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _158 = ((0u + ((_141 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _171 = uint4(cbuf_16.data[_158 + 0u], cbuf_16.data[_158 + 1u], cbuf_16.data[_158 + 2u], cbuf_16.data[_158 + 3u]); uint _179 = ((0u + ((_142 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _192 = uint4(cbuf_16.data[_179 + 0u], cbuf_16.data[_179 + 1u], cbuf_16.data[_179 + 2u], cbuf_16.data[_179 + 3u]); uint _200 = ((0u + ((_141 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _213 = uint4(cbuf_16.data[_200 + 0u], cbuf_16.data[_200 + 1u], cbuf_16.data[_200 + 2u], cbuf_16.data[_200 + 3u]); uint _221 = ((0u + ((_142 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _234 = uint4(cbuf_16.data[_221 + 0u], cbuf_16.data[_221 + 1u], cbuf_16.data[_221 + 2u], cbuf_16.data[_221 + 3u]); uint _242 = ((0u + (_141 * 16u)) + buf2_off) >> 2u; uint4 _255 = uint4(cbuf_16.data[_242 + 0u], cbuf_16.data[_242 + 1u], cbuf_16.data[_242 + 2u], cbuf_16.data[_242 + 3u]); uint _263 = ((0u + ((_147 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _276 = uint4(cbuf_16.data[_263 + 0u], cbuf_16.data[_263 + 1u], cbuf_16.data[_263 + 2u], cbuf_16.data[_263 + 3u]); uint _284 = ((0u + (_142 * 16u)) + buf2_off) >> 2u; uint4 _297 = uint4(cbuf_16.data[_284 + 0u], cbuf_16.data[_284 + 1u], cbuf_16.data[_284 + 2u], cbuf_16.data[_284 + 3u]); uint _305 = ((0u + ((_147 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _318 = uint4(cbuf_16.data[_305 + 0u], cbuf_16.data[_305 + 1u], cbuf_16.data[_305 + 2u], cbuf_16.data[_305 + 3u]); uint _326 = ((0u + ((_151 + 2u) * 16u)) + buf2_off) >> 2u; uint4 _339 = uint4(cbuf_16.data[_326 + 0u], cbuf_16.data[_326 + 1u], cbuf_16.data[_326 + 2u], cbuf_16.data[_326 + 3u]); uint _347 = ((0u + (_147 * 16u)) + buf2_off) >> 2u; uint4 _360 = uint4(cbuf_16.data[_347 + 0u], cbuf_16.data[_347 + 1u], cbuf_16.data[_347 + 2u], cbuf_16.data[_347 + 3u]); uint _368 = ((0u + ((_151 + 1u) * 16u)) + buf2_off) >> 2u; uint4 _381 = uint4(cbuf_16.data[_368 + 0u], cbuf_16.data[_368 + 1u], cbuf_16.data[_368 + 2u], cbuf_16.data[_368 + 3u]); uint _389 = ((0u + (_151 * 16u)) + buf2_off) >> 2u; uint4 _402 = uint4(cbuf_16.data[_389 + 0u], cbuf_16.data[_389 + 1u], cbuf_16.data[_389 + 2u], cbuf_16.data[_389 + 3u]); float _414 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _415 = spvFMul(in.vs_in_attr2.y, _414); float _416 = spvFMul(in.vs_in_attr2.x, _414); float _421 = spvFMul(in.vs_in_attr2.z, _414); float _500 = spvFMul(in.vs_in_attr2.w, _414); float _600 = spvFSub(fma(fma(as_type(_339.x), _500, fma(as_type(_276.x), _421, fma(as_type(_192.x), _416, spvFMul(_415, as_type(_171.x))))), in.vs_in_attr0.x, fma(fma(as_type(_339.y), _500, fma(as_type(_276.y), _421, fma(as_type(_192.y), _416, spvFMul(_415, as_type(_171.y))))), in.vs_in_attr0.y, fma(fma(as_type(_339.z), _500, fma(as_type(_276.z), _421, fma(as_type(_192.z), _416, spvFMul(_415, as_type(_171.z))))), in.vs_in_attr0.z, fma(as_type(_339.w), _500, fma(as_type(_276.w), _421, fma(as_type(_192.w), _416, spvFMul(_415, as_type(_171.w)))))))), as_type(cbuf_20.data[191u + buf3_dword_off])); float _603 = spvFSub(fma(fma(as_type(_381.x), _500, fma(as_type(_318.x), _421, fma(as_type(_234.x), _416, spvFMul(_415, as_type(_213.x))))), in.vs_in_attr0.x, fma(fma(as_type(_381.y), _500, fma(as_type(_318.y), _421, fma(as_type(_234.y), _416, spvFMul(_415, as_type(_213.y))))), in.vs_in_attr0.y, fma(fma(as_type(_381.z), _500, fma(as_type(_318.z), _421, fma(as_type(_234.z), _416, spvFMul(_415, as_type(_213.z))))), in.vs_in_attr0.z, fma(as_type(_381.w), _500, fma(as_type(_318.w), _421, fma(as_type(_234.w), _416, spvFMul(_415, as_type(_213.w)))))))), as_type(cbuf_20.data[187u + buf3_dword_off])); float _617 = spvFSub(fma(fma(as_type(_402.x), _500, fma(as_type(_360.x), _421, fma(as_type(_297.x), _416, spvFMul(_415, as_type(_255.x))))), in.vs_in_attr0.x, fma(fma(as_type(_402.y), _500, fma(as_type(_360.y), _421, fma(as_type(_297.y), _416, spvFMul(_415, as_type(_255.y))))), in.vs_in_attr0.y, fma(fma(as_type(_402.z), _500, fma(as_type(_360.z), _421, fma(as_type(_297.z), _416, spvFMul(_415, as_type(_255.z))))), in.vs_in_attr0.z, fma(as_type(_402.w), _500, fma(as_type(_360.w), _421, fma(as_type(_297.w), _416, spvFMul(_415, as_type(_255.w)))))))), as_type(cbuf_20.data[183u + buf3_dword_off])); float _631 = fma(as_type(cbuf_20.data[208u + buf3_dword_off]), _617, fma(as_type(cbuf_20.data[209u + buf3_dword_off]), _603, fma(as_type(cbuf_20.data[210u + buf3_dword_off]), _600, as_type(cbuf_20.data[211u + buf3_dword_off])))); float _633 = fma(as_type(cbuf_20.data[212u + buf3_dword_off]), _617, fma(as_type(cbuf_20.data[213u + buf3_dword_off]), _603, fma(as_type(cbuf_20.data[214u + buf3_dword_off]), _600, as_type(cbuf_20.data[215u + buf3_dword_off])))); out.gl_Position.x = fma(as_type(cbuf_20.data[200u + buf3_dword_off]), _617, fma(as_type(cbuf_20.data[201u + buf3_dword_off]), _603, fma(as_type(cbuf_20.data[202u + buf3_dword_off]), _600, as_type(cbuf_20.data[203u + buf3_dword_off])))); out.gl_Position.y = fma(as_type(cbuf_20.data[204u + buf3_dword_off]), _617, fma(as_type(cbuf_20.data[205u + buf3_dword_off]), _603, fma(as_type(cbuf_20.data[206u + buf3_dword_off]), _600, as_type(cbuf_20.data[207u + buf3_dword_off])))); out.gl_Position.z = _631; out.gl_Position.w = _633; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _631; out.out_attr1.y = _633; out.out_attr1.z = fma(as_type(cbuf_8.data[0u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf4_dword_off])); out.out_attr1.w = fma(as_type(cbuf_8.data[1u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf4_dword_off])); out.out_attr2.x = 0.0; out.out_attr2.y = 0.0; out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[164]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_4 [[buffer(9)]]) { float4 frag_color0; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float _89 = spvFMul(in.fs_in_attr1.x, 1.0 / in.fs_in_attr1.y); float _94 = fract(spvFMul(255.0, _89)); bool _96 = (as_type(cbuf_4.data[20u + buf0_dword_off]) > fma(as_type(cbuf_4.data[21u + buf0_dword_off]), -0.5, in.fs_in_attr0.w)) || (in.fs_in_attr0.w == 0.0); float _97 = fract(spvFMul(65025.0, _89)); float _99 = spvFMul(0.0039215688593685626983642578125, _94); uint _108; uint _109; if (!_96) { _108 = as_type(fma(_89, 1.0, -_99)); _109 = as_type(fma(_97, -0.0039215688593685626983642578125, _94)); } else { _108 = as_type(_99); _109 = as_type(_94); } if (_96) { discard_fragment(); } frag_color0.x = _97; frag_color0.y = as_type(_109); frag_color0.z = as_type(_108); frag_color0.w = in.fs_in_attr0.w; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x4abd4333 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x77d1c63 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 out_attr7 [[user(locn7)]]; float4 out_attr8 [[user(locn8)]]; float4 out_attr9 [[user(locn9)]]; float4 out_attr10 [[user(locn10)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; uint4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; float4 vs_in_attr7 [[attribute(7)]]; float4 vs_in_attr8 [[attribute(8)]]; int4 vs_in_attr9 [[attribute(9)]]; int4 vs_in_attr10 [[attribute(10)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(18)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(19)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(20)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(21)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(22)]]) { main0_out out = {}; uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _251 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); out.out_attr4.x = in.vs_in_attr8.x; out.out_attr4.y = in.vs_in_attr8.y; out.out_attr4.z = in.vs_in_attr8.z; out.out_attr4.w = in.vs_in_attr7.w; out.out_attr6.x = in.vs_in_attr7.x; out.out_attr6.y = in.vs_in_attr7.y; out.out_attr6.z = in.vs_in_attr7.z; out.out_attr6.w = in.vs_in_attr7.w; uint _264 = (cbuf_12.data[_251] + as_type(as_type(in.vs_in_attr5.y))) * 3u; uint _265 = (cbuf_12.data[_251] + as_type(as_type(in.vs_in_attr5.x))) * 3u; uint _270 = (cbuf_12.data[_251] + as_type(as_type(in.vs_in_attr5.z))) * 3u; uint _274 = (cbuf_12.data[_251] + as_type(as_type(in.vs_in_attr5.w))) * 3u; uint _281 = ((0u + ((_264 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _294 = uint4(cbuf_16.data[_281 + 0u], cbuf_16.data[_281 + 1u], cbuf_16.data[_281 + 2u], cbuf_16.data[_281 + 3u]); uint _302 = ((0u + ((_265 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _315 = uint4(cbuf_16.data[_302 + 0u], cbuf_16.data[_302 + 1u], cbuf_16.data[_302 + 2u], cbuf_16.data[_302 + 3u]); uint _323 = ((0u + ((_264 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _336 = uint4(cbuf_16.data[_323 + 0u], cbuf_16.data[_323 + 1u], cbuf_16.data[_323 + 2u], cbuf_16.data[_323 + 3u]); uint _344 = ((0u + ((_265 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _357 = uint4(cbuf_16.data[_344 + 0u], cbuf_16.data[_344 + 1u], cbuf_16.data[_344 + 2u], cbuf_16.data[_344 + 3u]); uint _365 = ((0u + (_264 * 16u)) + buf10_off) >> 2u; uint4 _378 = uint4(cbuf_16.data[_365 + 0u], cbuf_16.data[_365 + 1u], cbuf_16.data[_365 + 2u], cbuf_16.data[_365 + 3u]); uint _386 = ((0u + ((_270 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _399 = uint4(cbuf_16.data[_386 + 0u], cbuf_16.data[_386 + 1u], cbuf_16.data[_386 + 2u], cbuf_16.data[_386 + 3u]); uint _407 = ((0u + (_265 * 16u)) + buf10_off) >> 2u; uint4 _420 = uint4(cbuf_16.data[_407 + 0u], cbuf_16.data[_407 + 1u], cbuf_16.data[_407 + 2u], cbuf_16.data[_407 + 3u]); uint _428 = ((0u + ((_270 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _441 = uint4(cbuf_16.data[_428 + 0u], cbuf_16.data[_428 + 1u], cbuf_16.data[_428 + 2u], cbuf_16.data[_428 + 3u]); uint _449 = ((0u + ((_274 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _462 = uint4(cbuf_16.data[_449 + 0u], cbuf_16.data[_449 + 1u], cbuf_16.data[_449 + 2u], cbuf_16.data[_449 + 3u]); uint _470 = ((0u + (_270 * 16u)) + buf10_off) >> 2u; uint4 _483 = uint4(cbuf_16.data[_470 + 0u], cbuf_16.data[_470 + 1u], cbuf_16.data[_470 + 2u], cbuf_16.data[_470 + 3u]); uint _491 = ((0u + ((_274 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _504 = uint4(cbuf_16.data[_491 + 0u], cbuf_16.data[_491 + 1u], cbuf_16.data[_491 + 2u], cbuf_16.data[_491 + 3u]); uint _512 = ((0u + (_274 * 16u)) + buf10_off) >> 2u; uint4 _525 = uint4(cbuf_16.data[_512 + 0u], cbuf_16.data[_512 + 1u], cbuf_16.data[_512 + 2u], cbuf_16.data[_512 + 3u]); float _537 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr6.w, spvFAdd(in.vs_in_attr6.z, spvFAdd(in.vs_in_attr6.x, in.vs_in_attr6.y)))); float _538 = spvFMul(in.vs_in_attr6.y, _537); float _539 = spvFMul(in.vs_in_attr6.x, _537); float _544 = spvFMul(in.vs_in_attr6.z, _537); float _623 = spvFMul(in.vs_in_attr6.w, _537); float _665 = fma(as_type(_462.z), _623, fma(as_type(_399.z), _544, fma(as_type(_315.z), _539, spvFMul(_538, as_type(_294.z))))); float _687 = fma(as_type(_504.z), _623, fma(as_type(_441.z), _544, fma(as_type(_357.z), _539, spvFMul(_538, as_type(_336.z))))); float _691 = fma(as_type(_462.y), _623, fma(as_type(_399.y), _544, fma(as_type(_315.y), _539, spvFMul(_538, as_type(_294.y))))); float _700 = fma(as_type(_525.z), _623, fma(as_type(_483.z), _544, fma(as_type(_420.z), _539, spvFMul(_538, as_type(_378.z))))); float _704 = fma(as_type(_504.y), _623, fma(as_type(_441.y), _544, fma(as_type(_357.y), _539, spvFMul(_538, as_type(_336.y))))); float _706 = fma(as_type(_462.x), _623, fma(as_type(_399.x), _544, fma(as_type(_315.x), _539, spvFMul(_538, as_type(_294.x))))); float _712 = fma(as_type(_525.y), _623, fma(as_type(_483.y), _544, fma(as_type(_420.y), _539, spvFMul(_538, as_type(_378.y))))); float _714 = fma(as_type(_504.x), _623, fma(as_type(_441.x), _544, fma(as_type(_357.x), _539, spvFMul(_538, as_type(_336.x))))); float _717 = fma(_706, in.vs_in_attr0.x, fma(_691, in.vs_in_attr0.y, fma(_665, in.vs_in_attr0.z, fma(as_type(_462.w), _623, fma(as_type(_399.w), _544, fma(as_type(_315.w), _539, spvFMul(_538, as_type(_294.w)))))))); float _719 = fma(as_type(_525.x), _623, fma(as_type(_483.x), _544, fma(as_type(_420.x), _539, spvFMul(_538, as_type(_378.x))))); float _721 = fma(_714, in.vs_in_attr0.x, fma(_704, in.vs_in_attr0.y, fma(_687, in.vs_in_attr0.z, fma(as_type(_504.w), _623, fma(as_type(_441.w), _544, fma(as_type(_357.w), _539, spvFMul(_538, as_type(_336.w)))))))); float _723 = spvFSub(_717, as_type(cbuf_20.data[191u + buf11_dword_off])); float _724 = fma(_719, in.vs_in_attr0.x, fma(_712, in.vs_in_attr0.y, fma(_700, in.vs_in_attr0.z, fma(as_type(_525.w), _623, fma(as_type(_483.w), _544, fma(as_type(_420.w), _539, spvFMul(_538, as_type(_378.w)))))))); float _726 = spvFSub(_721, as_type(cbuf_20.data[187u + buf11_dword_off])); float _740 = spvFSub(_724, as_type(cbuf_20.data[183u + buf11_dword_off])); float _750 = fma(as_type(cbuf_20.data[200u + buf11_dword_off]), _740, fma(as_type(cbuf_20.data[201u + buf11_dword_off]), _726, fma(as_type(cbuf_20.data[202u + buf11_dword_off]), _723, as_type(cbuf_20.data[203u + buf11_dword_off])))); float _752 = fma(as_type(cbuf_20.data[204u + buf11_dword_off]), _740, fma(as_type(cbuf_20.data[205u + buf11_dword_off]), _726, fma(as_type(cbuf_20.data[206u + buf11_dword_off]), _723, as_type(cbuf_20.data[207u + buf11_dword_off])))); float _754 = fma(as_type(cbuf_20.data[208u + buf11_dword_off]), _740, fma(as_type(cbuf_20.data[209u + buf11_dword_off]), _726, fma(as_type(cbuf_20.data[210u + buf11_dword_off]), _723, as_type(cbuf_20.data[211u + buf11_dword_off])))); float _756 = fma(as_type(cbuf_20.data[212u + buf11_dword_off]), _740, fma(as_type(cbuf_20.data[213u + buf11_dword_off]), _726, fma(as_type(cbuf_20.data[214u + buf11_dword_off]), _723, as_type(cbuf_20.data[215u + buf11_dword_off])))); out.gl_Position.x = _750; out.gl_Position.y = _752; out.gl_Position.z = _754; out.gl_Position.w = _756; out.out_attr8.x = _750; out.out_attr8.y = _752; out.out_attr8.z = _754; out.out_attr8.w = _756; float _899 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _902 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _905 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.z))), -127.0), 0.0078740157186985015869140625); float _908 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _911 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _914 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _917 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.y))), -127.0), 0.0078740157186985015869140625); float _919 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _951 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _953 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _955 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr4.x))))); float _956 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_719, _956, fma(_712, _919, spvFMul(_700, _908))); out.out_attr0.y = fma(_714, _956, fma(_704, _919, spvFMul(_687, _908))); out.out_attr0.z = fma(_706, _956, fma(_691, _919, spvFMul(_665, _908))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_719, _951, fma(_712, _911, spvFMul(_700, _899))); out.out_attr1.y = fma(_714, _951, fma(_704, _911, spvFMul(_687, _899))); out.out_attr1.z = fma(_706, _951, fma(_691, _911, spvFMul(_665, _899))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr2.x = fma(_719, _953, fma(_712, _914, spvFMul(_700, _902))); out.out_attr2.y = fma(_714, _953, fma(_704, _914, spvFMul(_687, _902))); out.out_attr2.z = fma(_706, _953, fma(_691, _914, spvFMul(_665, _902))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(_719, _955, fma(_712, _917, spvFMul(_700, _905))); out.out_attr3.y = fma(_714, _955, fma(_704, _917, spvFMul(_687, _905))); out.out_attr3.z = fma(_706, _955, fma(_691, _917, spvFMul(_665, _905))); out.out_attr3.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.w))), -127.0), 0.0078740157186985015869140625); out.out_attr5.x = fma(as_type(cbuf_8.data[0u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.x))))), as_type(cbuf_8.data[2u + buf12_dword_off])); out.out_attr5.y = fma(as_type(cbuf_8.data[1u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.y))))), as_type(cbuf_8.data[3u + buf12_dword_off])); out.out_attr5.z = fma(as_type(cbuf_8.data[4u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.z))))), as_type(cbuf_8.data[6u + buf12_dword_off])); out.out_attr5.w = fma(as_type(cbuf_8.data[5u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr9.w))))), as_type(cbuf_8.data[7u + buf12_dword_off])); out.out_attr7.x = fma(as_type(cbuf_20.data[84u + buf11_dword_off]), _724, fma(as_type(cbuf_20.data[85u + buf11_dword_off]), _721, fma(as_type(cbuf_20.data[86u + buf11_dword_off]), _717, as_type(cbuf_20.data[87u + buf11_dword_off])))); out.out_attr7.y = fma(as_type(cbuf_20.data[88u + buf11_dword_off]), _724, fma(as_type(cbuf_20.data[89u + buf11_dword_off]), _721, fma(as_type(cbuf_20.data[90u + buf11_dword_off]), _717, as_type(cbuf_20.data[91u + buf11_dword_off])))); out.out_attr7.z = fma(as_type(cbuf_20.data[92u + buf11_dword_off]), _724, fma(as_type(cbuf_20.data[93u + buf11_dword_off]), _721, fma(as_type(cbuf_20.data[94u + buf11_dword_off]), _717, as_type(cbuf_20.data[95u + buf11_dword_off])))); out.out_attr7.w = fma(as_type(cbuf_20.data[96u + buf11_dword_off]), _724, fma(as_type(cbuf_20.data[97u + buf11_dword_off]), _721, fma(as_type(cbuf_20.data[98u + buf11_dword_off]), _717, as_type(cbuf_20.data[99u + buf11_dword_off])))); out.out_attr9.x = spvFSub(as_type(cbuf_24.data[12u + buf13_dword_off]), _724); out.out_attr9.y = spvFSub(as_type(cbuf_24.data[13u + buf13_dword_off]), _721); out.out_attr9.z = spvFSub(as_type(cbuf_24.data[14u + buf13_dword_off]), _717); out.out_attr9.w = 1.0; out.out_attr10.x = fma(as_type(cbuf_8.data[8u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr10.x))))), as_type(cbuf_8.data[10u + buf12_dword_off])); out.out_attr10.y = fma(as_type(cbuf_8.data[9u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr10.y))))), as_type(cbuf_8.data[11u + buf12_dword_off])); out.out_attr10.z = 0.0; out.out_attr10.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct fs_cbuf_block_f32_2 { uint data[60]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct fs_cbuf_block_f32_5 { uint data[8]; }; struct fs_cbuf_block_f32_6 { uint data[72]; }; struct fs_cbuf_block_f32_7 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; float4 fs_in_attr8 [[user(locn8)]]; float4 fs_in_attr9 [[user(locn9)]]; float4 fs_in_attr10 [[user(locn10)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_152 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_180 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_160 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_164 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_176 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_156 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_168 [[buffer(15)]], constant fs_cbuf_block_f32_4& cbuf_184 [[buffer(16)]], constant fs_cbuf_block_f32_7& cbuf_172 [[buffer(17)]], texture2d fs_img128 [[texture(0)]], texture2d fs_img56 [[texture(1)]], texture2d fs_img88 [[texture(2)]], texture2d fs_img48 [[texture(3)]], texture2d fs_img80 [[texture(4)]], texture2d fs_img136 [[texture(5)]], texture2d fs_img40 [[texture(6)]], texture2d fs_img72 [[texture(7)]], texture2d fs_img120 [[texture(8)]], texture2d fs_img64 [[texture(9)]], depth2d fs_img112 [[texture(10)]], texture2d fs_img32 [[texture(11)]], texturecube fs_img104 [[texture(12)]], texture2d fs_img144 [[texture(13)]], texturecube fs_img96 [[texture(14)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf1_dword_off = buf1_off >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _189 = uint(gl_FrontFacing); float _200 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _201 = spvFMul(in.fs_in_attr0.x, _200); float _203 = spvFMul(in.fs_in_attr0.y, _200); float _205 = spvFMul(in.fs_in_attr0.z, _200); float _218 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _219 = spvFMul(in.fs_in_attr1.x, _218); float _220 = spvFMul(in.fs_in_attr1.y, _218); float _221 = spvFMul(in.fs_in_attr1.z, _218); float _231 = spvFMul(in.fs_in_attr1.w, fma(_203, _221, -spvFMul(_205, _220))); float _232 = spvFMul(in.fs_in_attr1.w, fma(_205, _219, -spvFMul(_201, _221))); float _233 = spvFMul(in.fs_in_attr1.w, fma(_201, _220, -spvFMul(_203, _219))); float _245 = rsqrt(fma(in.fs_in_attr2.x, in.fs_in_attr2.x, fma(in.fs_in_attr2.y, in.fs_in_attr2.y, spvFMul(in.fs_in_attr2.z, in.fs_in_attr2.z)))); float _246 = spvFMul(in.fs_in_attr2.x, _245); float _247 = spvFMul(in.fs_in_attr2.y, _245); float _248 = spvFMul(in.fs_in_attr2.z, _245); float _258 = spvFMul(in.fs_in_attr2.w, fma(_203, _248, -spvFMul(_205, _247))); float _259 = spvFMul(in.fs_in_attr2.w, fma(_205, _246, -spvFMul(_201, _248))); float _260 = spvFMul(in.fs_in_attr2.w, fma(_201, _247, -spvFMul(_203, _246))); float _268 = 1.0 / in.fs_in_attr8.w; float _269 = spvFMul(in.fs_in_attr8.x, _268); float _270 = spvFMul(in.fs_in_attr8.y, _268); float _272 = fma(0.5, _269, 0.5); float _274 = fma(-0.5, _270, 0.5); bool _279 = 0u == _189; float4 _284 = fs_img128.sample(fs_samp4, float2(in.fs_in_attr10.x, in.fs_in_attr10.y)); float _288 = _284.w; uint _301; uint _302; uint _303; if (_279) { _301 = as_type(fast::max(-_201, -_201)); _302 = as_type(fast::max(-_205, -_205)); _303 = as_type(fast::max(-_203, -_203)); } else { _301 = _189; _302 = as_type(_203); _303 = as_type(_201); } uint _306; uint _307; uint _308; if (!_279) { _306 = _303; _307 = _302; _308 = as_type(_205); } else { _306 = _301; _307 = _303; _308 = _302; } float4 _424 = fs_img56.sample(fs_samp16, float2(fma(as_type(cbuf_152.data[12u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_152.data[14u + buf0_dword_off])), fma(as_type(cbuf_152.data[13u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_152.data[15u + buf0_dword_off])))); float4 _432 = fs_img88.sample(fs_samp16, float2(fma(in.fs_in_attr5.z, as_type(cbuf_152.data[40u + buf0_dword_off]), as_type(cbuf_152.data[42u + buf0_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_152.data[41u + buf0_dword_off]), as_type(cbuf_152.data[43u + buf0_dword_off])))); float _438 = spvFMul(in.fs_in_attr8.z, _268); float _465 = 1.0 / fma(as_type(cbuf_180.data[48u + buf1_dword_off]), _269, fma(as_type(cbuf_180.data[49u + buf1_dword_off]), _270, fma(as_type(cbuf_180.data[50u + buf1_dword_off]), _438, as_type(cbuf_180.data[51u + buf1_dword_off])))); float _466 = spvFMul(fma(as_type(cbuf_180.data[44u + buf1_dword_off]), _269, fma(as_type(cbuf_180.data[45u + buf1_dword_off]), _270, fma(as_type(cbuf_180.data[46u + buf1_dword_off]), _438, as_type(cbuf_180.data[47u + buf1_dword_off])))), _465); uint _511 = ((((as_type((as_type(cbuf_180.data[176u + buf1_dword_off]) < _466) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(as_type(cbuf_180.data[177u + buf1_dword_off]) < _466)) + uint(abs(int(0u)))) + uint(_466 > as_type(cbuf_180.data[178u + buf1_dword_off]))) << 2u; float4 _536 = fs_img48.sample(fs_samp8, float2(fma(as_type(cbuf_152.data[8u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_152.data[10u + buf0_dword_off])), fma(as_type(cbuf_152.data[9u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_152.data[11u + buf0_dword_off])))); float _537 = _536.x; float4 _548 = fs_img136.sample(fs_samp8, float2(in.fs_in_attr10.x, in.fs_in_attr10.y)); float _550 = _548.y; uint _554 = ((0u + ((_511 + 28u) * 16u)) + buf1_off) >> 2u; uint4 _567 = uint4(cbuf_180.data[_554 + 0u], cbuf_180.data[_554 + 1u], cbuf_180.data[_554 + 2u], cbuf_180.data[_554 + 3u]); uint _575 = ((0u + ((_511 + 29u) * 16u)) + buf1_off) >> 2u; uint4 _588 = uint4(cbuf_180.data[_575 + 0u], cbuf_180.data[_575 + 1u], cbuf_180.data[_575 + 2u], cbuf_180.data[_575 + 3u]); uint _596 = ((0u + ((_511 + 31u) * 16u)) + buf1_off) >> 2u; uint4 _609 = uint4(cbuf_180.data[_596 + 0u], cbuf_180.data[_596 + 1u], cbuf_180.data[_596 + 2u], cbuf_180.data[_596 + 3u]); uint _617 = ((0u + ((_511 + 30u) * 16u)) + buf1_off) >> 2u; uint4 _630 = uint4(cbuf_180.data[_617 + 0u], cbuf_180.data[_617 + 1u], cbuf_180.data[_617 + 2u], cbuf_180.data[_617 + 3u]); float _641 = fma(2.0, _424.y, -1.0); float _642 = spvFMul(fma(2.0, _424.x, -1.0), fma(2.0, _424.w, -1.0)); float _643 = fma(2.0, _432.y, -1.0); float _644 = spvFMul(fma(2.0, _432.x, -1.0), fma(2.0, _432.w, -1.0)); float _661 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_642, _642), spvFMul(_641, _641)), 0.0, 1.0))); float _662 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_644, _644), spvFMul(_643, _643)), 0.0, 1.0))); float _663 = rsqrt(fma(_231, _231, fma(_232, _232, spvFMul(_233, _233)))); float _664 = rsqrt(fma(_258, _258, fma(_259, _259, spvFMul(_260, _260)))); float _682 = fma(spvFMul(_233, _663), _642, fma(_221, _641, spvFMul(as_type(_308), _661))); float _724 = fma(spvFMul(_232, _663), _642, fma(_220, _641, spvFMul(as_type(_307), _661))); float _730 = fma(spvFMul(_231, _663), _642, fma(_219, _641, spvFMul(as_type(_306), _661))); float _733 = fma(in.fs_in_attr4.w, spvFSub(fma(spvFMul(_260, _664), _644, fma(_248, _643, spvFMul(as_type(_308), _662))), _682), _682); float _738 = fma(in.fs_in_attr4.w, spvFSub(fma(spvFMul(_259, _664), _644, fma(_247, _643, spvFMul(as_type(_307), _662))), _724), _724); float _743 = fma(in.fs_in_attr4.w, spvFSub(fma(spvFMul(_258, _664), _644, fma(_246, _643, spvFMul(as_type(_306), _662))), _730), _730); uint _750 = 24u + buf2_dword_off; float _753 = rsqrt(fma(in.fs_in_attr9.x, in.fs_in_attr9.x, fma(in.fs_in_attr9.y, in.fs_in_attr9.y, spvFMul(in.fs_in_attr9.z, in.fs_in_attr9.z)))); float _754 = rsqrt(fma(_743, _743, fma(_738, _738, spvFMul(_733, _733)))); uint _771 = 73u + buf1_dword_off; uint _775 = 74u + buf1_dword_off; uint _779 = 75u + buf1_dword_off; float _782 = spvFMul(in.fs_in_attr9.z, _753); float _784 = spvFMul(_733, _754); float _810 = spvFMul(in.fs_in_attr9.y, _753); float _811 = spvFMul(_738, _754); float _813 = fma(in.fs_in_attr4.w, spvFSub(fs_img80.sample(fs_samp8, float2(fma(in.fs_in_attr5.z, as_type(cbuf_152.data[36u + buf0_dword_off]), as_type(cbuf_152.data[38u + buf0_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_152.data[37u + buf0_dword_off]), as_type(cbuf_152.data[39u + buf0_dword_off])))).x, _537), _537); float4 _818 = fs_img40.sample(fs_samp8, float2(fma(as_type(cbuf_152.data[4u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_152.data[6u + buf0_dword_off])), fma(as_type(cbuf_152.data[5u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_152.data[7u + buf0_dword_off])))); float _819 = _818.x; float _820 = _818.y; float _821 = _818.z; float4 _826 = fs_img72.sample(fs_samp8, float2(fma(in.fs_in_attr5.z, as_type(cbuf_152.data[32u + buf0_dword_off]), as_type(cbuf_152.data[34u + buf0_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_152.data[33u + buf0_dword_off]), as_type(cbuf_152.data[35u + buf0_dword_off])))); float _827 = _826.x; float _828 = _826.y; float _829 = _826.z; float _830 = spvFMul(in.fs_in_attr9.x, _753); float _831 = spvFMul(_743, _754); float _845 = fma(_831, _830, fma(_811, _810, spvFMul(_782, _784))); float _858 = spvFMul(fast::max(_845, _845), 2.0); uint _864 = uint(in.fs_in_attr0.w) * 13u; float _868 = fma(as_type(_567.x), _269, fma(as_type(_567.y), _270, fma(as_type(_567.z), _438, as_type(_567.w)))); float _870 = fma(as_type(_588.x), _269, fma(as_type(_588.y), _270, fma(as_type(_588.z), _438, as_type(_588.w)))); float _872 = fma(as_type(_609.x), _269, fma(as_type(_609.y), _270, fma(as_type(_609.z), _438, as_type(_609.w)))); float _873 = spvFMul(fma(as_type(cbuf_160.data[_750]), spvFSub(fma(_813, _288, _548.x), _813), _813), spvFMul(as_type(cbuf_160.data[8u + buf2_dword_off]), 0.00390625)); float _882 = 1.0 / _872; float _895 = spvFMul(13.0, _873); float _897 = fma(-in.fs_in_attr9.x, _753, spvFMul(_831, _858)); float _899 = fma(-in.fs_in_attr9.y, _753, spvFMul(_811, _858)); float _901 = fma(-in.fs_in_attr9.z, _753, spvFMul(_784, _858)); float _908 = spvFMul(fma(as_type(_630.x), _269, fma(as_type(_630.y), _270, fma(as_type(_630.z), _438, as_type(_630.w)))), _882); float4 _915 = fs_img120.sample(fs_samp20, float2(_272, _274)); float4 _937 = fs_img64.sample(fs_samp4, float2(fma(in.fs_in_attr5.z, as_type(cbuf_152.data[28u + buf0_dword_off]), as_type(cbuf_152.data[30u + buf0_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_152.data[29u + buf0_dword_off]), as_type(cbuf_152.data[31u + buf0_dword_off])))); float _951 = 1.0 / abs(1.0); float4 _963 = fs_img32.sample(fs_samp4, float2(fma(as_type(cbuf_152.data[0u + buf0_dword_off]), in.fs_in_attr5.x, as_type(cbuf_152.data[2u + buf0_dword_off])), fma(as_type(cbuf_152.data[1u + buf0_dword_off]), in.fs_in_attr5.y, as_type(cbuf_152.data[3u + buf0_dword_off])))); float _975 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_895, _895), 0.5))); float _977 = fma(_899, _951, 1.5); float _978 = fma(_897, _951, 1.5); uint _984 = ((0u + ((_864 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _997 = uint4(cbuf_164.data[_984 + 0u], cbuf_164.data[_984 + 1u], cbuf_164.data[_984 + 2u], cbuf_164.data[_984 + 3u]); uint _1005 = ((0u + ((_864 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _1018 = uint4(cbuf_164.data[_1005 + 0u], cbuf_164.data[_1005 + 1u], cbuf_164.data[_1005 + 2u], cbuf_164.data[_1005 + 3u]); uint _1026 = ((0u + ((_864 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _1039 = uint4(cbuf_164.data[_1026 + 0u], cbuf_164.data[_1026 + 1u], cbuf_164.data[_1026 + 2u], cbuf_164.data[_1026 + 3u]); uint _1054 = ((0u + ((_864 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _1067 = uint4(cbuf_164.data[_1054 + 0u], cbuf_164.data[_1054 + 1u], cbuf_164.data[_1054 + 2u], cbuf_164.data[_1054 + 3u]); uint _1068 = _1067.x; uint _1069 = _1067.y; uint _1070 = _1067.z; uint _1071 = _1067.w; float4 _1078 = fs_img104.sample(fs_samp20, float3(spvFSub(_978, 1.5), spvFSub(_977, 1.5), _901), level(_975)); float4 _1086 = fs_img144.sample(fs_samp24, float2(_272, _274), level(_975)); uint _1094 = ((0u + ((_864 + 12u) * 16u)) + buf3_off) >> 2u; float4 _1110 = fs_img96.sample(fs_samp20, float3(spvFSub(_978, 1.5), spvFSub(_977, 1.5), _901), level(_975)); float _1111 = _1110.x; float _1112 = _1110.y; float _1113 = _1110.z; uint _1114 = 12u + buf2_dword_off; uint _1129 = 24u + buf4_dword_off; uint _1133 = 25u + buf4_dword_off; uint _1137 = 26u + buf4_dword_off; float _1149 = spvFMul(fma(as_type(cbuf_180.data[40u + buf1_dword_off]), _269, fma(as_type(cbuf_180.data[41u + buf1_dword_off]), _270, fma(as_type(cbuf_180.data[42u + buf1_dword_off]), _438, as_type(cbuf_180.data[43u + buf1_dword_off])))), _465); bool _1151 = (_821 == 0.0) && (_820 == 0.0); bool _1152 = (_829 == 0.0) && (_828 == 0.0); float _1153 = (in.fs_in_attr4.x != 0.0) ? in.fs_in_attr4.x : 1.0; float _1154 = spvFMul(fma(as_type(cbuf_180.data[36u + buf1_dword_off]), _269, fma(as_type(cbuf_180.data[37u + buf1_dword_off]), _270, fma(as_type(cbuf_180.data[38u + buf1_dword_off]), _438, as_type(cbuf_180.data[39u + buf1_dword_off])))), _465); float _1170 = _1151 ? _819 : _821; float _1171 = _1151 ? _819 : _820; float _1186 = fma(fma(as_type(cbuf_160.data[_1114]), _915.x, 1.0), _1153, -spvFMul(as_type(cbuf_160.data[_1114]), _1153)); float _1191 = fma(in.fs_in_attr4.w, spvFSub(_827, _819), _819); float _1199 = fast::clamp(spvFAdd(as_type(cbuf_176.data[_1129]), sqrt(_937.x)), 0.0, 1.0); float _1202 = fast::clamp(spvFAdd(as_type(cbuf_176.data[_1133]), sqrt(_937.y)), 0.0, 1.0); float _1205 = fast::clamp(spvFAdd(as_type(cbuf_176.data[_1137]), sqrt(_937.z)), 0.0, 1.0); float _1206 = fma(in.fs_in_attr4.w, spvFSub(_1152 ? _827 : _828, _1171), _1171); float _1207 = fma(in.fs_in_attr4.w, spvFSub(_1152 ? _827 : _829, _1170), _1170); uint _1215 = 4u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _1221 = spvFMul(_550, _550); float _1222 = spvFAdd(_845, _1186); float _1235 = fast::clamp(spvFAdd(sqrt(_963.x), as_type(cbuf_176.data[_1129])), 0.0, 1.0); float _1238 = fast::clamp(spvFAdd(sqrt(_963.y), as_type(cbuf_176.data[_1133])), 0.0, 1.0); float _1241 = fast::clamp(spvFAdd(sqrt(_963.z), as_type(cbuf_176.data[_1137])), 0.0, 1.0); float _1248 = fma(_1206, _288, _1221); float _1253 = fast::clamp(spvFAdd(fma(_897, as_type(_306), fma(_899, as_type(_307), spvFMul(as_type(_308), _901))), 1.0), 0.0, 1.0); float _1273 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_845, _845), 0.0, 1.0))))); float _1278 = fast::clamp(spvFAdd(fma(_1222, _1222, _1186), -1.0), 0.0, 1.0); float _1295 = spvFMul(as_type(cbuf_164.data[_1094]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_180.data[72u + buf1_dword_off]), as_type(cbuf_180.data[_771])), -spvFMul(as_type(cbuf_180.data[_771]), sqrt(fma(_1154, _1154, fma(_1149, _1149, spvFMul(_466, _466)))))), 0.0, 1.0)); float _1296 = fma(in.fs_in_attr4.w, fma(-_1235, _1235, spvFMul(_1199, _1199)), spvFMul(_1235, _1235)); float _1297 = fma(in.fs_in_attr4.w, fma(-_1238, _1238, spvFMul(_1202, _1202)), spvFMul(_1238, _1238)); float _1298 = fma(in.fs_in_attr4.w, fma(-_1241, _1241, spvFMul(_1205, _1205)), spvFMul(_1241, _1241)); float _1300 = fma(as_type(cbuf_160.data[_750]), spvFSub(fma(_1191, _288, _1221), _1191), _1191); float _1302 = fma(as_type(cbuf_160.data[_750]), spvFSub(_1248, _1206), _1206); float _1304 = fma(as_type(cbuf_160.data[_750]), spvFSub(fma(_1207, _288, _1221), _1207), _1207); float _1305 = spvFMul(_1273, _1278); float _1322 = fma(_784, as_type(_997.z), fma(_831, as_type(_997.x), spvFMul(_811, as_type(_997.y)))); float _1329 = spvFSub(1.0, fma(float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(-_872, as_type(cbuf_180.data[_779]), _868), _882), spvFMul(fma(as_type(cbuf_180.data[_775]), _872, _870), _882)), _908, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(-_872, as_type(cbuf_180.data[_775]), _868), _882), spvFMul(fma(-_872, as_type(cbuf_180.data[_779]), _870), _882)), _908, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(_872, as_type(cbuf_180.data[_775]), _868), _882), spvFMul(fma(_872, as_type(cbuf_180.data[_779]), _870), _882)), _908, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(_872, as_type(cbuf_180.data[_779]), _868), _882), spvFMul(fma(-_872, as_type(cbuf_180.data[_775]), _870), _882)), _908, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1354 = spvFMul(_1186, spvFMul(spvFMul(_1253, _1253), spvFSub(1.0, _1086.w))); float _1357 = fma(-_1329, spvFMul(as_type(cbuf_180.data[76u + buf1_dword_off]), _1295), as_type(cbuf_164.data[_1094])); float _1360 = fma(-_1329, spvFMul(as_type(cbuf_180.data[77u + buf1_dword_off]), _1295), as_type(cbuf_164.data[_1094])); float _1363 = fma(-_1329, spvFMul(as_type(cbuf_180.data[78u + buf1_dword_off]), _1295), as_type(cbuf_164.data[_1094])); float _1382 = spvFMul(_873, _873); float _1383 = fast::max(0.0, spvFAdd(as_type(_997.w), _1322)); float _1384 = fast::max(0.0, spvFAdd(as_type(_1018.w), fma(_784, as_type(_1018.z), fma(_831, as_type(_1018.x), spvFMul(_811, as_type(_1018.y)))))); float _1385 = fast::max(0.0, spvFAdd(as_type(_1039.w), fma(_784, as_type(_1039.z), fma(_831, as_type(_1039.x), spvFMul(_811, as_type(_1039.y)))))); float _1403 = spvFMul(as_type(cbuf_160.data[2u + buf2_dword_off]), in.fs_in_attr6.z); float _1406 = spvFMul(as_type(cbuf_156.data[_1215]), in.fs_in_attr4.y); float _1435 = spvFMul(as_type(cbuf_164.data[_1094]), fma(as_type(_1071), spvFAdd(-1.0, _1357), 1.0)); float _1437 = spvFMul(as_type(cbuf_164.data[_1094]), fma(as_type(_1071), spvFAdd(-1.0, _1360), 1.0)); float _1439 = spvFMul(as_type(cbuf_164.data[_1094]), fma(as_type(_1071), spvFAdd(-1.0, _1363), 1.0)); bool _1440 = _1406 == 0.0; uint _1527; uint _1528; uint _1529; uint _1530; if (_1440) { float _1492 = fast::clamp(fma(as_type(cbuf_168.data[4u + buf6_dword_off]), _831, fma(as_type(cbuf_168.data[5u + buf6_dword_off]), _811, spvFMul(as_type(cbuf_168.data[6u + buf6_dword_off]), _784))), 0.0, 1.0); float _1495 = fast::clamp(fma(as_type(cbuf_168.data[0u + buf6_dword_off]), _831, fma(as_type(cbuf_168.data[1u + buf6_dword_off]), _811, spvFMul(as_type(cbuf_168.data[2u + buf6_dword_off]), _784))), 0.0, 1.0); float _1519 = spvFMul(as_type(cbuf_168.data[22u + buf6_dword_off]), fma(-_1304, _1492, _1492)); _1527 = as_type(fma(spvFMul(as_type(cbuf_168.data[17u + buf6_dword_off]), _1360), fma(-_1302, _1495, _1495), spvFMul(as_type(cbuf_168.data[21u + buf6_dword_off]), fma(-_1302, _1492, _1492)))); _1528 = as_type(fma(spvFMul(as_type(cbuf_168.data[16u + buf6_dword_off]), _1357), fma(-_1300, _1495, _1495), spvFMul(as_type(cbuf_168.data[20u + buf6_dword_off]), fma(-_1300, _1492, _1492)))); _1529 = as_type(fma(spvFMul(as_type(cbuf_168.data[18u + buf6_dword_off]), _1363), fma(-_1304, _1495, _1495), _1519)); _1530 = as_type(_1519); } else { _1527 = as_type(_1322); _1528 = as_type(_1248); _1529 = as_type(_1403); _1530 = as_type(in.fs_in_attr4.y); } uint _1610; uint _1611; uint _1612; if (!_1440) { float _1585 = 1.0 / fma(2.0, _1406, 1.0); float _1586 = spvFMul(fast::max(0.0, fma(as_type(cbuf_156.data[_1215]), as_type(_1530), fma(as_type(cbuf_168.data[0u + buf6_dword_off]), _831, fma(as_type(cbuf_168.data[1u + buf6_dword_off]), _811, spvFMul(as_type(cbuf_168.data[2u + buf6_dword_off]), _784))))), _1585); float _1597 = spvFMul(fast::max(0.0, fma(as_type(cbuf_156.data[_1215]), as_type(_1530), fma(as_type(cbuf_168.data[4u + buf6_dword_off]), _831, fma(as_type(cbuf_168.data[5u + buf6_dword_off]), _811, spvFMul(as_type(cbuf_168.data[6u + buf6_dword_off]), _784))))), _1585); _1610 = as_type(fma(spvFMul(as_type(cbuf_168.data[17u + buf6_dword_off]), _1360), _1586, spvFMul(as_type(cbuf_168.data[21u + buf6_dword_off]), _1597))); _1611 = as_type(fma(spvFMul(as_type(cbuf_168.data[16u + buf6_dword_off]), _1357), _1586, spvFMul(as_type(cbuf_168.data[20u + buf6_dword_off]), _1597))); _1612 = as_type(fma(spvFMul(as_type(cbuf_168.data[18u + buf6_dword_off]), _1363), _1586, spvFMul(as_type(cbuf_168.data[22u + buf6_dword_off]), _1597))); } else { _1610 = _1527; _1611 = _1528; _1612 = _1529; } uint _1614 = 64u + buf6_dword_off; uint _1618 = 65u + buf6_dword_off; uint _1667; uint _1668; uint _1669; if (cbuf_168.data[_1614] > 0u) { float _1646 = fma(0.5, fma(as_type(cbuf_168.data[8u + buf6_dword_off]), _831, fma(as_type(cbuf_168.data[9u + buf6_dword_off]), _811, spvFMul(as_type(cbuf_168.data[10u + buf6_dword_off]), _784))), 0.5); float _1648 = fast::clamp(spvFMul(_1646, _1646), 0.0, 1.0); _1667 = as_type(fma(as_type(cbuf_168.data[25u + buf6_dword_off]), fma(-_1302, _1648, _1648), as_type(_1610))); _1668 = as_type(fma(as_type(cbuf_168.data[24u + buf6_dword_off]), fma(-_1300, _1648, _1648), as_type(_1611))); _1669 = as_type(fma(as_type(cbuf_168.data[26u + buf6_dword_off]), fma(-_1304, _1648, _1648), as_type(_1612))); } else { _1667 = _1610; _1668 = _1611; _1669 = _1612; } uint _1716; uint _1717; uint _1718; if (cbuf_168.data[_1618] > 0u) { float _1695 = fma(0.5, fma(as_type(cbuf_168.data[12u + buf6_dword_off]), _831, fma(as_type(cbuf_168.data[13u + buf6_dword_off]), _811, spvFMul(as_type(cbuf_168.data[14u + buf6_dword_off]), _784))), 0.5); float _1697 = fast::clamp(spvFMul(_1695, _1695), 0.0, 1.0); _1716 = as_type(fma(as_type(cbuf_168.data[29u + buf6_dword_off]), fma(-_1302, _1697, _1697), as_type(_1667))); _1717 = as_type(fma(as_type(cbuf_168.data[28u + buf6_dword_off]), fma(-_1300, _1697, _1697), as_type(_1668))); _1718 = as_type(fma(as_type(cbuf_168.data[30u + buf6_dword_off]), fma(-_1304, _1697, _1697), as_type(_1669))); } else { _1716 = _1667; _1717 = _1668; _1718 = _1669; } uint _1719 = 0u + buf6_dword_off; uint _1722 = 1u + buf6_dword_off; uint _1725 = 2u + buf6_dword_off; uint _1728 = 3u + buf6_dword_off; uint _1731 = 4u + buf6_dword_off; uint _1734 = 5u + buf6_dword_off; uint _1737 = 6u + buf6_dword_off; uint _1740 = 7u + buf6_dword_off; float _1761 = exp2(_895); float _1781 = fma(in.fs_in_attr9.x, _753, as_type(cbuf_168.data[_1719])); float _1783 = fma(in.fs_in_attr9.y, _753, as_type(cbuf_168.data[_1722])); float _1785 = fma(in.fs_in_attr9.z, _753, as_type(cbuf_168.data[_1725])); float _1789 = rsqrt(fma(_1781, _1781, fma(_1783, _1783, spvFMul(_1785, _1785)))); float _1790 = spvFMul(_1781, _1789); float _1791 = spvFMul(_1783, _1789); float _1792 = spvFMul(_1785, _1789); float _1794 = fma(in.fs_in_attr9.x, _753, as_type(cbuf_168.data[_1731])); float _1796 = fma(in.fs_in_attr9.y, _753, as_type(cbuf_168.data[_1734])); float _1798 = fma(in.fs_in_attr9.z, _753, as_type(cbuf_168.data[_1737])); float _1802 = rsqrt(fma(_1794, _1794, fma(_1796, _1796, spvFMul(_1798, _1798)))); float _1803 = spvFMul(_1794, _1802); float _1804 = spvFMul(_1796, _1802); float _1805 = spvFMul(_1798, _1802); float _1821 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_168.data[_1728]), _1761), 1.0 / fma(_1761, 0.01000213623046875, as_type(cbuf_168.data[_1728])))); float _1828 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_168.data[_1740]), _1761), 1.0 / fma(_1761, 0.01000213623046875, as_type(cbuf_168.data[_1740])))); float _1833 = exp2(spvFMul(_1821, log2(fast::clamp(fma(_1790, _831, fma(_1791, _811, spvFMul(_784, _1792))), 0.0, 1.0)))); float _1834 = exp2(spvFMul(_1828, log2(fast::clamp(fma(_1803, _831, fma(_1804, _811, spvFMul(_784, _1805))), 0.0, 1.0)))); float _1849 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_830, _1790, fma(_810, _1791, spvFMul(_782, _1792))), 0.0, 1.0))))); float _1850 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_830, _1803, fma(_810, _1804, spvFMul(_782, _1805))), 0.0, 1.0))))); float _1871 = fast::clamp(spvFMul(fma(as_type(cbuf_168.data[_1719]), _831, fma(as_type(cbuf_168.data[_1722]), _811, spvFMul(as_type(cbuf_168.data[_1725]), _784))), 16.0), 0.0, 1.0); float _1873 = fast::clamp(spvFMul(fma(as_type(cbuf_168.data[_1731]), _831, fma(as_type(cbuf_168.data[_1734]), _811, spvFMul(as_type(cbuf_168.data[_1737]), _784))), 16.0), 0.0, 1.0); float _1875 = fma(_1821, 0.125, 0.25); float _1876 = fma(0.125, _1828, 0.25); float _1901 = fma(spvFMul(_1871, spvFMul(_1833, spvFMul(spvFMul(as_type(cbuf_168.data[32u + buf6_dword_off]), _1357), _1875))), fma(-_1300, _1849, spvFAdd(_1300, _1849)), spvFMul(fma(-_1300, _1850, spvFAdd(_1300, _1850)), spvFMul(_1873, spvFMul(_1834, spvFMul(as_type(cbuf_168.data[36u + buf6_dword_off]), _1876))))); float _1903 = fma(spvFMul(_1871, spvFMul(_1833, spvFMul(spvFMul(as_type(cbuf_168.data[33u + buf6_dword_off]), _1360), _1875))), fma(-_1302, _1849, spvFAdd(_1302, _1849)), spvFMul(fma(-_1302, _1850, spvFAdd(_1302, _1850)), spvFMul(_1873, spvFMul(_1834, spvFMul(as_type(cbuf_168.data[37u + buf6_dword_off]), _1876))))); float _1905 = fma(spvFMul(_1871, spvFMul(_1833, spvFMul(spvFMul(as_type(cbuf_168.data[34u + buf6_dword_off]), _1363), _1875))), fma(-_1304, _1849, spvFAdd(_1304, _1849)), spvFMul(fma(-_1304, _1850, spvFAdd(_1304, _1850)), spvFMul(_1873, spvFMul(_1834, spvFMul(as_type(cbuf_168.data[38u + buf6_dword_off]), _1876))))); uint _1989; uint _1990; uint _1991; if (cbuf_168.data[_1614] > 0u) { uint _1917 = 11u + buf6_dword_off; float _1930 = fma(in.fs_in_attr9.x, _753, as_type(cbuf_168.data[8u + buf6_dword_off])); float _1932 = fma(in.fs_in_attr9.y, _753, as_type(cbuf_168.data[9u + buf6_dword_off])); float _1934 = fma(in.fs_in_attr9.z, _753, as_type(cbuf_168.data[10u + buf6_dword_off])); float _1938 = rsqrt(fma(_1930, _1930, fma(_1932, _1932, spvFMul(_1934, _1934)))); float _1939 = spvFMul(_1930, _1938); float _1940 = spvFMul(_1932, _1938); float _1941 = spvFMul(_1934, _1938); float _1952 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_168.data[_1917]), _1761), 1.0 / fma(_1761, 0.01000213623046875, as_type(cbuf_168.data[_1917])))); float _1955 = exp2(spvFMul(_1952, log2(fast::clamp(fma(_1939, _831, fma(_1940, _811, spvFMul(_784, _1941))), 0.0, 1.0)))); float _1963 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_830, _1939, fma(_810, _1940, spvFMul(_782, _1941))), 0.0, 1.0))))); float _1973 = fma(0.125, _1952, 0.25); _1989 = as_type(fma(spvFMul(_1955, spvFMul(as_type(cbuf_168.data[42u + buf6_dword_off]), _1973)), fma(-_1304, _1963, spvFAdd(_1304, _1963)), _1905)); _1990 = as_type(fma(spvFMul(_1955, spvFMul(as_type(cbuf_168.data[41u + buf6_dword_off]), _1973)), fma(-_1302, _1963, spvFAdd(_1302, _1963)), _1903)); _1991 = as_type(fma(spvFMul(_1955, spvFMul(as_type(cbuf_168.data[40u + buf6_dword_off]), _1973)), fma(-_1300, _1963, spvFAdd(_1300, _1963)), _1901)); } else { _1989 = as_type(_1905); _1990 = as_type(_1903); _1991 = as_type(_1901); } uint _2077; uint _2078; uint _2079; if (cbuf_168.data[_1618] > 0u) { uint _2002 = 15u + buf6_dword_off; float _2015 = fma(in.fs_in_attr9.x, _753, as_type(cbuf_168.data[12u + buf6_dword_off])); float _2017 = fma(in.fs_in_attr9.y, _753, as_type(cbuf_168.data[13u + buf6_dword_off])); float _2019 = fma(in.fs_in_attr9.z, _753, as_type(cbuf_168.data[14u + buf6_dword_off])); float _2023 = rsqrt(fma(_2015, _2015, fma(_2017, _2017, spvFMul(_2019, _2019)))); float _2024 = spvFMul(_2015, _2023); float _2025 = spvFMul(_2017, _2023); float _2026 = spvFMul(_2019, _2023); float _2037 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_168.data[_2002]), _1761), 1.0 / fma(_1761, 0.01000213623046875, as_type(cbuf_168.data[_2002])))); float _2040 = exp2(spvFMul(_2037, log2(fast::clamp(fma(_2024, _831, fma(_2025, _811, spvFMul(_784, _2026))), 0.0, 1.0)))); float _2048 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_830, _2024, fma(_810, _2025, spvFMul(_782, _2026))), 0.0, 1.0))))); float _2058 = fma(0.125, _2037, 0.25); _2077 = as_type(fma(spvFMul(_2040, spvFMul(as_type(cbuf_168.data[46u + buf6_dword_off]), _2058)), fma(-_1304, _2048, spvFAdd(_1304, _2048)), as_type(_1989))); _2078 = as_type(fma(spvFMul(_2040, spvFMul(as_type(cbuf_168.data[45u + buf6_dword_off]), _2058)), fma(-_1302, _2048, spvFAdd(_1302, _2048)), as_type(_1990))); _2079 = as_type(fma(spvFMul(_2040, spvFMul(as_type(cbuf_168.data[44u + buf6_dword_off]), _2058)), fma(-_1300, _2048, spvFAdd(_1300, _2048)), as_type(_1991))); } else { _2077 = _1989; _2078 = _1990; _2079 = _1991; } uint _2095 = 12u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _2100 = spvFMul(as_type(cbuf_160.data[4u + buf2_dword_off]), as_type(cbuf_184.data[_2095])); bool _2108 = 0.0 < _1406; uint _2184; uint _2185; uint _2186; if (_2108) { float _2133 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, _845))); float _2138 = spvFMul(_2133, _2133); float _2139 = spvFMul(exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_168.data[_1719]), -_830, fma(as_type(cbuf_168.data[_1722]), -_810, spvFMul(as_type(cbuf_168.data[_1725]), -_782))), 0.0, 1.0)))), _2138); float _2168 = spvFMul(_2138, exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_168.data[_1731]), -_830, fma(as_type(cbuf_168.data[_1734]), -_810, spvFMul(as_type(cbuf_168.data[_1737]), -_782))), 0.0, 1.0))))); _2184 = as_type(fma(spvFMul(as_type(cbuf_168.data[17u + buf6_dword_off]), _2139), _1406, spvFMul(_1406, spvFMul(as_type(cbuf_168.data[21u + buf6_dword_off]), _2168)))); _2185 = as_type(fma(spvFMul(as_type(cbuf_168.data[18u + buf6_dword_off]), _2139), _1406, spvFMul(_1406, spvFMul(as_type(cbuf_168.data[22u + buf6_dword_off]), _2168)))); _2186 = as_type(fma(spvFMul(as_type(cbuf_168.data[16u + buf6_dword_off]), _2139), _1406, spvFMul(_1406, spvFMul(as_type(cbuf_168.data[20u + buf6_dword_off]), _2168)))); } else { _2184 = as_type(_2100); _2185 = as_type(_782); _2186 = _2079; } uint _2188; uint _2189; uint _2190; if (!_2108) { _2188 = 0u; _2189 = 0u; _2190 = 0u; } else { _2188 = _2185; _2189 = _2186; _2190 = _2184; } uint _2205 = ((0u + ((_864 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _2218 = uint4(cbuf_164.data[_2205 + 0u], cbuf_164.data[_2205 + 1u], cbuf_164.data[_2205 + 2u], cbuf_164.data[_2205 + 3u]); uint _2219 = _2218.x; uint _2220 = _2218.y; uint _2221 = _2218.z; float _2224 = fma(spvFMul(fma(as_type(cbuf_160.data[_750]), spvFSub(fma(_288, _1297, _284.y), _1297), _1297), spvFMul(as_type(cbuf_160.data[1u + buf2_dword_off]), in.fs_in_attr6.y)), fma(spvFMul(_1186, fma(-_1302, _1384, _1384)), _1437, spvFAdd(as_type(_1716), as_type(_2190))), spvFMul(spvFMul(as_type(cbuf_160.data[5u + buf2_dword_off]), as_type(cbuf_184.data[_2095])), fma(spvFMul(fma(fma(_1273, _1278, -spvFMul(_1302, _1305)), _1382, _1302), fma(_1186, _1086.y, spvFMul(fma(as_type(_1068), fma(-as_type(_1069), _1112, spvFMul(as_type(_1070), _1078.y)), spvFMul(as_type(_1069), _1112)), _1354))), _1437, as_type(_2078)))); float _2226 = fma(spvFMul(fma(as_type(cbuf_160.data[_750]), spvFSub(fma(_288, _1296, _284.x), _1296), _1296), spvFMul(as_type(cbuf_160.data[0u + buf2_dword_off]), in.fs_in_attr6.x)), fma(spvFMul(_1186, fma(-_1300, _1383, _1383)), _1435, spvFAdd(as_type(_1717), as_type(_2189))), spvFMul(_2100, fma(spvFMul(fma(fma(_1273, _1278, -spvFMul(_1300, _1305)), _1382, _1300), fma(_1186, _1086.x, spvFMul(fma(as_type(_1068), fma(-as_type(_1069), _1111, spvFMul(as_type(_1070), _1078.x)), spvFMul(as_type(_1069), _1111)), _1354))), _1435, as_type(_2079)))); uint _2227 = 8u + buf8_dword_off; uint _2233 = 10u + buf8_dword_off; float _2248 = fma(spvFMul(fma(as_type(cbuf_160.data[_750]), spvFSub(fma(_288, _1298, _284.z), _1298), _1298), _1403), fma(spvFMul(_1186, fma(-_1304, _1385, _1385)), _1439, spvFAdd(as_type(_1718), as_type(_2188))), spvFMul(spvFMul(as_type(cbuf_160.data[6u + buf2_dword_off]), as_type(cbuf_184.data[_2095])), fma(spvFMul(fma(fma(_1273, _1278, -spvFMul(_1304, _1305)), _1382, _1304), fma(_1186, _1086.z, spvFMul(fma(as_type(_1068), fma(-as_type(_1069), _1113, spvFMul(as_type(_1070), _1078.z)), spvFMul(as_type(_1069), _1113)), _1354))), _1439, as_type(_2077)))); float _2250 = spvFMul(_2224, as_type(_2220)); uint _2257 = 14u + buf8_dword_off; float _2264 = spvFMul(_2226, as_type(_2219)); float _2271 = spvFMul(_2248, as_type(_2221)); float _2299 = spvFAdd(-1.0, fma(_2271, 0.11448000371456146240234375, fma(_2264, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _2250)))); float _2303 = fma(as_type(cbuf_172.data[7u + buf8_dword_off]), _2299, 1.0); float _2322 = fast::clamp(spvFAdd(as_type(cbuf_172.data[_2227]), spvFMul(as_type(cbuf_172.data[_2227]), -exp2(-fma(as_type(cbuf_172.data[_2233]), sqrt(fma(-in.fs_in_attr9.x, -in.fs_in_attr9.x, spvFMul(-in.fs_in_attr9.z, -in.fs_in_attr9.z))), -spvFMul(as_type(cbuf_172.data[9u + buf8_dword_off]), as_type(cbuf_172.data[_2233])))))), 0.0, 1.0); float _2336 = fma(as_type(cbuf_172.data[19u + buf8_dword_off]), _2299, 1.0); float _2337 = fma(_2322, fma(-_2226, as_type(_2219), spvFMul(as_type(cbuf_172.data[4u + buf8_dword_off]), _2303)), _2264); float _2338 = fma(_2322, fma(-_2224, as_type(_2220), spvFMul(as_type(cbuf_172.data[5u + buf8_dword_off]), _2303)), _2250); float _2339 = fma(_2322, fma(-_2248, as_type(_2221), spvFMul(as_type(cbuf_172.data[6u + buf8_dword_off]), _2303)), _2271); float _2342 = fast::clamp(spvFMul(as_type(cbuf_172.data[12u + buf8_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_172.data[_2257]), spvFSub(as_type(cbuf_172.data[15u + buf8_dword_off]), in.fs_in_attr9.y)), -spvFMul(as_type(cbuf_172.data[13u + buf8_dword_off]), as_type(cbuf_172.data[_2257]))), 0.0, 1.0)), 0.0, 1.0); if (false) { discard_fragment(); } out.frag_color0.x = fma(_2342, fma(as_type(cbuf_172.data[16u + buf8_dword_off]), _2336, -_2337), _2337); out.frag_color0.y = fma(_2342, fma(as_type(cbuf_172.data[17u + buf8_dword_off]), _2336, -_2338), _2338); out.frag_color0.z = fma(_2342, fma(as_type(cbuf_172.data[18u + buf8_dword_off]), _2336, -_2339), _2339); out.frag_color0.w = as_type(_2218.w); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xd4b1af6a [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4d1dd4a5 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[96]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(19)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(20)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(21)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(22)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(23)]]) { main0_out out = {}; uint buf11_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u); uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint buf14_dword_off = extract_bits(push_data.buf_offsets0[3u], 16u, 8u) >> 2u; uint _197 = 20u + (extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _207 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _212 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _216 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _223 = ((0u + ((_206 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _236 = uint4(cbuf_16.data[_223 + 0u], cbuf_16.data[_223 + 1u], cbuf_16.data[_223 + 2u], cbuf_16.data[_223 + 3u]); uint _244 = ((0u + ((_207 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _257 = uint4(cbuf_16.data[_244 + 0u], cbuf_16.data[_244 + 1u], cbuf_16.data[_244 + 2u], cbuf_16.data[_244 + 3u]); uint _265 = ((0u + ((_206 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _278 = uint4(cbuf_16.data[_265 + 0u], cbuf_16.data[_265 + 1u], cbuf_16.data[_265 + 2u], cbuf_16.data[_265 + 3u]); uint _286 = ((0u + ((_207 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _299 = uint4(cbuf_16.data[_286 + 0u], cbuf_16.data[_286 + 1u], cbuf_16.data[_286 + 2u], cbuf_16.data[_286 + 3u]); uint _307 = ((0u + (_206 * 16u)) + buf11_off) >> 2u; uint4 _320 = uint4(cbuf_16.data[_307 + 0u], cbuf_16.data[_307 + 1u], cbuf_16.data[_307 + 2u], cbuf_16.data[_307 + 3u]); uint _328 = ((0u + ((_212 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _341 = uint4(cbuf_16.data[_328 + 0u], cbuf_16.data[_328 + 1u], cbuf_16.data[_328 + 2u], cbuf_16.data[_328 + 3u]); uint _349 = ((0u + (_207 * 16u)) + buf11_off) >> 2u; uint4 _362 = uint4(cbuf_16.data[_349 + 0u], cbuf_16.data[_349 + 1u], cbuf_16.data[_349 + 2u], cbuf_16.data[_349 + 3u]); uint _370 = ((0u + ((_212 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _383 = uint4(cbuf_16.data[_370 + 0u], cbuf_16.data[_370 + 1u], cbuf_16.data[_370 + 2u], cbuf_16.data[_370 + 3u]); uint _391 = ((0u + ((_216 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _404 = uint4(cbuf_16.data[_391 + 0u], cbuf_16.data[_391 + 1u], cbuf_16.data[_391 + 2u], cbuf_16.data[_391 + 3u]); uint _412 = ((0u + (_212 * 16u)) + buf11_off) >> 2u; uint4 _425 = uint4(cbuf_16.data[_412 + 0u], cbuf_16.data[_412 + 1u], cbuf_16.data[_412 + 2u], cbuf_16.data[_412 + 3u]); uint _433 = ((0u + ((_216 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _446 = uint4(cbuf_16.data[_433 + 0u], cbuf_16.data[_433 + 1u], cbuf_16.data[_433 + 2u], cbuf_16.data[_433 + 3u]); uint _454 = ((0u + (_216 * 16u)) + buf11_off) >> 2u; uint4 _467 = uint4(cbuf_16.data[_454 + 0u], cbuf_16.data[_454 + 1u], cbuf_16.data[_454 + 2u], cbuf_16.data[_454 + 3u]); float _479 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _480 = spvFMul(in.vs_in_attr4.y, _479); float _481 = spvFMul(in.vs_in_attr4.x, _479); float _486 = spvFMul(in.vs_in_attr4.z, _479); float _565 = spvFMul(in.vs_in_attr4.w, _479); float _607 = fma(as_type(_404.z), _565, fma(as_type(_341.z), _486, fma(as_type(_257.z), _481, spvFMul(_480, as_type(_236.z))))); float _629 = fma(as_type(_446.z), _565, fma(as_type(_383.z), _486, fma(as_type(_299.z), _481, spvFMul(_480, as_type(_278.z))))); float _633 = fma(as_type(_404.y), _565, fma(as_type(_341.y), _486, fma(as_type(_257.y), _481, spvFMul(_480, as_type(_236.y))))); float _642 = fma(as_type(_467.z), _565, fma(as_type(_425.z), _486, fma(as_type(_362.z), _481, spvFMul(_480, as_type(_320.z))))); float _646 = fma(as_type(_446.y), _565, fma(as_type(_383.y), _486, fma(as_type(_299.y), _481, spvFMul(_480, as_type(_278.y))))); float _648 = fma(as_type(_404.x), _565, fma(as_type(_341.x), _486, fma(as_type(_257.x), _481, spvFMul(_480, as_type(_236.x))))); float _654 = fma(as_type(_467.y), _565, fma(as_type(_425.y), _486, fma(as_type(_362.y), _481, spvFMul(_480, as_type(_320.y))))); float _656 = fma(as_type(_446.x), _565, fma(as_type(_383.x), _486, fma(as_type(_299.x), _481, spvFMul(_480, as_type(_278.x))))); float _659 = fma(_648, in.vs_in_attr0.x, fma(_633, in.vs_in_attr0.y, fma(_607, in.vs_in_attr0.z, fma(as_type(_404.w), _565, fma(as_type(_341.w), _486, fma(as_type(_257.w), _481, spvFMul(_480, as_type(_236.w)))))))); float _661 = fma(as_type(_467.x), _565, fma(as_type(_425.x), _486, fma(as_type(_362.x), _481, spvFMul(_480, as_type(_320.x))))); float _663 = fma(_656, in.vs_in_attr0.x, fma(_646, in.vs_in_attr0.y, fma(_629, in.vs_in_attr0.z, fma(as_type(_446.w), _565, fma(as_type(_383.w), _486, fma(as_type(_299.w), _481, spvFMul(_480, as_type(_278.w)))))))); float _665 = spvFSub(_659, as_type(cbuf_20.data[191u + buf12_dword_off])); float _666 = fma(_661, in.vs_in_attr0.x, fma(_654, in.vs_in_attr0.y, fma(_642, in.vs_in_attr0.z, fma(as_type(_467.w), _565, fma(as_type(_425.w), _486, fma(as_type(_362.w), _481, spvFMul(_480, as_type(_320.w)))))))); float _668 = spvFSub(_663, as_type(cbuf_20.data[187u + buf12_dword_off])); float _682 = spvFSub(_666, as_type(cbuf_20.data[183u + buf12_dword_off])); float _692 = fma(as_type(cbuf_20.data[200u + buf12_dword_off]), _682, fma(as_type(cbuf_20.data[201u + buf12_dword_off]), _668, fma(as_type(cbuf_20.data[202u + buf12_dword_off]), _665, as_type(cbuf_20.data[203u + buf12_dword_off])))); float _694 = fma(as_type(cbuf_20.data[204u + buf12_dword_off]), _682, fma(as_type(cbuf_20.data[205u + buf12_dword_off]), _668, fma(as_type(cbuf_20.data[206u + buf12_dword_off]), _665, as_type(cbuf_20.data[207u + buf12_dword_off])))); float _696 = fma(as_type(cbuf_20.data[208u + buf12_dword_off]), _682, fma(as_type(cbuf_20.data[209u + buf12_dword_off]), _668, fma(as_type(cbuf_20.data[210u + buf12_dword_off]), _665, as_type(cbuf_20.data[211u + buf12_dword_off])))); float _698 = fma(as_type(cbuf_20.data[212u + buf12_dword_off]), _682, fma(as_type(cbuf_20.data[213u + buf12_dword_off]), _668, fma(as_type(cbuf_20.data[214u + buf12_dword_off]), _665, as_type(cbuf_20.data[215u + buf12_dword_off])))); out.gl_Position.x = _692; out.gl_Position.y = _694; out.gl_Position.z = _696; out.gl_Position.w = _698; out.out_attr5.x = _692; out.out_attr5.y = _694; out.out_attr5.z = _696; out.out_attr5.w = _698; float _820 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _823 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _826 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _828 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _852 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _853 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_661, _853, fma(_654, _828, spvFMul(_823, _642))); out.out_attr0.y = fma(_656, _853, fma(_646, _828, spvFMul(_823, _629))); out.out_attr0.z = fma(_648, _853, fma(_633, _828, spvFMul(_823, _607))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_661, _852, fma(_654, _826, spvFMul(_820, _642))); out.out_attr1.y = fma(_656, _852, fma(_646, _826, spvFMul(_820, _629))); out.out_attr1.z = fma(_648, _852, fma(_633, _826, spvFMul(_820, _607))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf13_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf13_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf13_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf13_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf12_dword_off]), _666, fma(as_type(cbuf_20.data[85u + buf12_dword_off]), _663, fma(as_type(cbuf_20.data[86u + buf12_dword_off]), _659, as_type(cbuf_20.data[87u + buf12_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf12_dword_off]), _666, fma(as_type(cbuf_20.data[89u + buf12_dword_off]), _663, fma(as_type(cbuf_20.data[90u + buf12_dword_off]), _659, as_type(cbuf_20.data[91u + buf12_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf12_dword_off]), _666, fma(as_type(cbuf_20.data[93u + buf12_dword_off]), _663, fma(as_type(cbuf_20.data[94u + buf12_dword_off]), _659, as_type(cbuf_20.data[95u + buf12_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf12_dword_off]), _666, fma(as_type(cbuf_20.data[97u + buf12_dword_off]), _663, fma(as_type(cbuf_20.data[98u + buf12_dword_off]), _659, as_type(cbuf_20.data[99u + buf12_dword_off])))); out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf14_dword_off]), _666); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf14_dword_off]), _663); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf14_dword_off]), _659); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct srt_flatbuf_ty { uint data[164]; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[44]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[72]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; constant uint _147 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant srt_flatbuf_ty& srt_flatbuf_ubo [[buffer(9)]], constant fs_cbuf_block_f32& cbuf_156 [[buffer(10)]], constant fs_cbuf_block_f32_1& cbuf_128 [[buffer(11)]], constant srt_flatbuf_ty& cbuf_136 [[buffer(12)]], constant fs_cbuf_block_f32_2& cbuf_140 [[buffer(13)]], constant fs_cbuf_block_f32_3& cbuf_152 [[buffer(14)]], constant fs_cbuf_block_f32_4& cbuf_132 [[buffer(15)]], constant fs_cbuf_block_f32_5& cbuf_144 [[buffer(16)]], constant fs_cbuf_block_f32_3& cbuf_160 [[buffer(17)]], constant fs_cbuf_block_f32_6& cbuf_148 [[buffer(18)]], texture2d fs_img96 [[texture(0)]], texture2d fs_img104 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texture2d fs_img48 [[texture(3)]], texture2d fs_img112 [[texture(4)]], texture2d fs_img40 [[texture(5)]], texture2d fs_img88 [[texture(6)]], depth2d fs_img80 [[texture(7)]], texture2d fs_img32 [[texture(8)]], texturecube fs_img72 [[texture(9)]], texture2d fs_img120 [[texture(10)]], texturecube fs_img64 [[texture(11)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf1_dword_off = buf1_off >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint _194 = uint(gl_FrontFacing); float _225 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _226 = spvFMul(in.fs_in_attr0.x, _225); float _228 = spvFMul(in.fs_in_attr0.y, _225); float _229 = spvFMul(in.fs_in_attr0.z, _225); float _249 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _250 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _251 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _259 = 1.0 / in.fs_in_attr5.w; float _260 = spvFMul(in.fs_in_attr5.x, _259); float _261 = spvFMul(in.fs_in_attr5.y, _259); float _263 = fma(0.5, _260, 0.5); float _265 = fma(-0.5, _261, 0.5); float4 _281 = fs_img96.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_156.data[4u + buf1_dword_off]), _263)), spvFMul(0.25, spvFMul(as_type(cbuf_156.data[5u + buf1_dword_off]), _265)))); float4 _287 = fs_img104.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _291 = _287.w; bool _292 = 0u == _194; uint _297; if (_292) { _297 = as_type(fast::max(-_226, -_226)); } else { _297 = _194; } uint _306; uint _307; if (_292) { _306 = as_type(fast::max(-_229, -_229)); _307 = as_type(fast::max(-_228, -_228)); } else { _306 = as_type(_226); _307 = as_type(_229); } uint _310; uint _311; uint _312; if (!_292) { _310 = _306; _311 = as_type(_228); _312 = _307; } else { _310 = _297; _311 = _307; _312 = _306; } float _326 = spvFAdd(-0.5, _281.w); float _419 = spvFMul(in.fs_in_attr5.z, _259); float4 _424 = fs_img56.sample(fs_samp16, float2(fma(as_type(cbuf_128.data[12u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_128.data[14u + buf2_dword_off])), fma(as_type(cbuf_128.data[13u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_128.data[15u + buf2_dword_off])))); float _454 = 1.0 / fma(as_type(cbuf_156.data[48u + buf1_dword_off]), _260, fma(as_type(cbuf_156.data[49u + buf1_dword_off]), _261, fma(as_type(cbuf_156.data[50u + buf1_dword_off]), _419, as_type(cbuf_156.data[51u + buf1_dword_off])))); float _455 = spvFMul(fma(as_type(cbuf_156.data[44u + buf1_dword_off]), _260, fma(as_type(cbuf_156.data[45u + buf1_dword_off]), _261, fma(as_type(cbuf_156.data[46u + buf1_dword_off]), _419, as_type(cbuf_156.data[47u + buf1_dword_off])))), _454); uint _488 = ((((as_type((as_type(cbuf_156.data[176u + buf1_dword_off]) < _455) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_455 > as_type(cbuf_156.data[177u + buf1_dword_off]))) + uint(abs(int(0u)))) + uint(_455 > as_type(cbuf_156.data[178u + buf1_dword_off]))) << 2u; float4 _507 = fs_img48.sample(fs_samp8, float2(fma(as_type(cbuf_128.data[8u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_128.data[10u + buf2_dword_off])), fma(as_type(cbuf_128.data[9u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_128.data[11u + buf2_dword_off])))); float _508 = _507.x; float4 _513 = fs_img112.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _515 = _513.y; uint _519 = ((0u + ((_488 + 28u) * 16u)) + buf1_off) >> 2u; uint4 _532 = uint4(cbuf_156.data[_519 + 0u], cbuf_156.data[_519 + 1u], cbuf_156.data[_519 + 2u], cbuf_156.data[_519 + 3u]); uint _540 = ((0u + ((_488 + 29u) * 16u)) + buf1_off) >> 2u; uint4 _553 = uint4(cbuf_156.data[_540 + 0u], cbuf_156.data[_540 + 1u], cbuf_156.data[_540 + 2u], cbuf_156.data[_540 + 3u]); uint _561 = ((0u + ((_488 + 31u) * 16u)) + buf1_off) >> 2u; uint4 _574 = uint4(cbuf_156.data[_561 + 0u], cbuf_156.data[_561 + 1u], cbuf_156.data[_561 + 2u], cbuf_156.data[_561 + 3u]); uint _582 = ((0u + ((_488 + 30u) * 16u)) + buf1_off) >> 2u; uint4 _595 = uint4(cbuf_156.data[_582 + 0u], cbuf_156.data[_582 + 1u], cbuf_156.data[_582 + 2u], cbuf_156.data[_582 + 3u]); float _604 = fma(2.0, _424.y, -1.0); float _605 = spvFMul(fma(2.0, _424.x, -1.0), fma(2.0, _424.w, -1.0)); float _616 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _618 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_605, _605), spvFMul(_604, _604)), 0.0, 1.0))); float _620 = rsqrt(fma(_249, _249, fma(_250, _250, spvFMul(_251, _251)))); float _635 = fma(spvFMul(_251, _620), _605, fma(spvFMul(in.fs_in_attr1.z, _616), _604, spvFMul(as_type(_312), _618))); float _655 = fma(spvFMul(_250, _620), _605, fma(spvFMul(in.fs_in_attr1.y, _616), _604, spvFMul(as_type(_311), _618))); float _660 = fma(spvFMul(_249, _620), _605, fma(spvFMul(in.fs_in_attr1.x, _616), _604, spvFMul(as_type(_310), _618))); uint _667 = 24u + buf3_dword_off; float _670 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _671 = rsqrt(fma(_660, _660, fma(_655, _655, spvFMul(_635, _635)))); uint _676 = 73u + buf1_dword_off; uint _680 = 74u + buf1_dword_off; uint _684 = 75u + buf1_dword_off; float _687 = spvFMul(in.fs_in_attr6.z, _670); float _688 = spvFMul(_635, _671); float _689 = spvFMul(in.fs_in_attr6.y, _670); float _690 = spvFMul(_655, _671); float _704 = spvFMul(in.fs_in_attr6.x, _670); float _705 = spvFMul(_660, _671); float _725 = fma(_705, _704, fma(_690, _689, spvFMul(_687, _688))); float4 _741 = fs_img40.sample(fs_samp8, float2(fma(as_type(cbuf_128.data[4u + buf2_dword_off]), in.fs_in_attr3.x, as_type(cbuf_128.data[6u + buf2_dword_off])), fma(as_type(cbuf_128.data[5u + buf2_dword_off]), in.fs_in_attr3.y, as_type(cbuf_128.data[7u + buf2_dword_off])))); float _742 = _741.x; float _743 = _741.y; float _744 = _741.z; float _746 = spvFMul(fast::max(_725, _725), 2.0); uint _752 = uint(in.fs_in_attr0.w) * 13u; float _756 = fma(as_type(_532.x), _260, fma(as_type(_532.y), _261, fma(as_type(_532.z), _419, as_type(_532.w)))); float _758 = fma(as_type(_553.x), _260, fma(as_type(_553.y), _261, fma(as_type(_553.z), _419, as_type(_553.w)))); float _760 = fma(as_type(_574.x), _260, fma(as_type(_574.y), _261, fma(as_type(_574.z), _419, as_type(_574.w)))); float _761 = spvFMul(fma(as_type(cbuf_136.data[_667]), spvFSub(fma(_291, _508, _513.x), _508), _508), spvFMul(as_type(cbuf_136.data[8u + buf3_dword_off]), 0.00390625)); float _770 = 1.0 / _760; float _777 = spvFMul(13.0, _761); float _779 = fma(-in.fs_in_attr6.x, _670, spvFMul(_705, _746)); float _781 = fma(-in.fs_in_attr6.y, _670, spvFMul(_690, _746)); float _783 = fma(-in.fs_in_attr6.z, _670, spvFMul(_688, _746)); float _790 = spvFMul(fma(as_type(_595.x), _260, fma(as_type(_595.y), _261, fma(as_type(_595.z), _419, as_type(_595.w)))), _770); float _825 = 1.0 / abs(1.0); float _841 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_777, _777), 0.5))); float _843 = fma(_781, _825, 1.5); float _844 = fma(_779, _825, 1.5); float4 _851 = fs_img32.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_128.data[0u + buf2_dword_off]), as_type(cbuf_128.data[2u + buf2_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_128.data[1u + buf2_dword_off]), as_type(cbuf_128.data[3u + buf2_dword_off])))); uint _859 = ((0u + ((_752 + 9u) * 16u)) + buf4_off) >> 2u; uint4 _872 = uint4(cbuf_140.data[_859 + 0u], cbuf_140.data[_859 + 1u], cbuf_140.data[_859 + 2u], cbuf_140.data[_859 + 3u]); uint _880 = ((0u + ((_752 + 10u) * 16u)) + buf4_off) >> 2u; uint4 _893 = uint4(cbuf_140.data[_880 + 0u], cbuf_140.data[_880 + 1u], cbuf_140.data[_880 + 2u], cbuf_140.data[_880 + 3u]); uint _901 = ((0u + ((_752 + 11u) * 16u)) + buf4_off) >> 2u; uint4 _914 = uint4(cbuf_140.data[_901 + 0u], cbuf_140.data[_901 + 1u], cbuf_140.data[_901 + 2u], cbuf_140.data[_901 + 3u]); uint _929 = ((0u + ((_752 + 8u) * 16u)) + buf4_off) >> 2u; uint4 _942 = uint4(cbuf_140.data[_929 + 0u], cbuf_140.data[_929 + 1u], cbuf_140.data[_929 + 2u], cbuf_140.data[_929 + 3u]); uint _943 = _942.x; uint _944 = _942.y; uint _945 = _942.z; uint _946 = _942.w; float4 _953 = fs_img72.sample(fs_samp20, float3(spvFSub(_844, 1.5), spvFSub(_843, 1.5), _783), level(_841)); float4 _961 = fs_img120.sample(fs_samp24, float2(_263, _265), level(_841)); uint _969 = ((0u + ((_752 + 12u) * 16u)) + buf4_off) >> 2u; float4 _985 = fs_img64.sample(fs_samp20, float3(spvFSub(_844, 1.5), spvFSub(_843, 1.5), _783), level(_841)); uint _989 = 12u + buf3_dword_off; float _1011 = spvFMul(fma(as_type(cbuf_156.data[40u + buf1_dword_off]), _260, fma(as_type(cbuf_156.data[41u + buf1_dword_off]), _261, fma(as_type(cbuf_156.data[42u + buf1_dword_off]), _419, as_type(cbuf_156.data[43u + buf1_dword_off])))), _454); float _1024 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _1025 = spvFMul(fma(as_type(cbuf_156.data[36u + buf1_dword_off]), _260, fma(as_type(cbuf_156.data[37u + buf1_dword_off]), _261, fma(as_type(cbuf_156.data[38u + buf1_dword_off]), _419, as_type(cbuf_156.data[39u + buf1_dword_off])))), _454); bool _1044 = (_744 == 0.0) && (_743 == 0.0); uint _1054 = 4u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); float _1062 = fma(fma(as_type(cbuf_136.data[_989]), fs_img88.sample(fs_samp20, float2(_263, _265)).x, 1.0), _1024, -spvFMul(as_type(cbuf_136.data[_989]), _1024)); float _1066 = fast::clamp(spvFAdd(fma(_779, as_type(_310), fma(_781, as_type(_311), spvFMul(as_type(_312), _783))), 1.0), 0.0, 1.0); float _1067 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_725, _725), 0.0, 1.0))))); float _1069 = _1044 ? _742 : _744; float _1070 = _1044 ? _742 : _743; float _1071 = spvFMul(_515, _515); float _1072 = spvFAdd(_725, _1062); float _1105 = fast::clamp(spvFAdd(sqrt(_851.x), as_type(cbuf_152.data[24u + buf5_dword_off])), 0.0, 1.0); float _1108 = fast::clamp(spvFAdd(sqrt(_851.y), as_type(cbuf_152.data[25u + buf5_dword_off])), 0.0, 1.0); float _1111 = fast::clamp(spvFAdd(sqrt(_851.z), as_type(cbuf_152.data[26u + buf5_dword_off])), 0.0, 1.0); float _1116 = fast::clamp(spvFAdd(fma(_1072, _1072, _1062), -1.0), 0.0, 1.0); float _1133 = spvFMul(as_type(cbuf_140.data[_969]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_156.data[72u + buf1_dword_off]), as_type(cbuf_156.data[_676])), -spvFMul(as_type(cbuf_156.data[_676]), sqrt(fma(_1025, _1025, fma(_1011, _1011, spvFMul(_455, _455)))))), 0.0, 1.0)); float _1134 = spvFMul(_1105, _1105); float _1135 = spvFMul(_1108, _1108); float _1136 = spvFMul(_1111, _1111); float _1138 = fma(as_type(cbuf_136.data[_667]), spvFSub(fma(_291, _742, _1071), _742), _742); float _1140 = fma(as_type(cbuf_136.data[_667]), spvFSub(fma(_291, _1070, _1071), _1070), _1070); float _1142 = fma(as_type(cbuf_136.data[_667]), spvFSub(fma(_291, _1069, _1071), _1069), _1069); float _1143 = spvFMul(_1067, _1116); float _1166 = spvFSub(1.0, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_760, as_type(cbuf_156.data[_684]), _756), _770), spvFMul(fma(as_type(cbuf_156.data[_680]), _760, _758), _770)), _790, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_760, as_type(cbuf_156.data[_680]), _756), _770), spvFMul(fma(-_760, as_type(cbuf_156.data[_684]), _758), _770)), _790, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(_760, as_type(cbuf_156.data[_680]), _756), _770), spvFMul(fma(_760, as_type(cbuf_156.data[_684]), _758), _770)), _790, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(_760, as_type(cbuf_156.data[_684]), _756), _770), spvFMul(fma(-_760, as_type(cbuf_156.data[_680]), _758), _770)), _790, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1187 = fma(as_type(_943), fma(-as_type(_944), _985.z, spvFMul(as_type(_945), _953.z)), spvFMul(as_type(_944), _985.z)); float _1195 = spvFMul(_1062, spvFMul(spvFMul(_1066, _1066), spvFSub(1.0, _961.w))); float _1198 = fma(-_1166, spvFMul(as_type(cbuf_156.data[76u + buf1_dword_off]), _1133), as_type(cbuf_140.data[_969])); float _1201 = fma(-_1166, spvFMul(as_type(cbuf_156.data[77u + buf1_dword_off]), _1133), as_type(cbuf_140.data[_969])); float _1204 = fma(-_1166, spvFMul(as_type(cbuf_156.data[78u + buf1_dword_off]), _1133), as_type(cbuf_140.data[_969])); float _1222 = spvFMul(_761, _761); float _1223 = fast::max(0.0, spvFAdd(as_type(_872.w), fma(_688, as_type(_872.z), fma(_705, as_type(_872.x), spvFMul(_690, as_type(_872.y)))))); float _1224 = fast::max(0.0, spvFAdd(as_type(_893.w), fma(_688, as_type(_893.z), fma(_705, as_type(_893.x), spvFMul(_690, as_type(_893.y)))))); float _1225 = fast::max(0.0, spvFAdd(as_type(_914.w), fma(_688, as_type(_914.z), fma(_705, as_type(_914.x), spvFMul(_690, as_type(_914.y)))))); float _1240 = spvFMul(as_type(cbuf_132.data[_1054]), in.fs_in_attr2.y); float _1256 = fma(as_type(_946), spvFAdd(-1.0, _1201), 1.0); float _1266 = fast::max(0.0, fast::min(1.0, fma(_851.w, in.fs_in_attr2.w, 0.800000011920928955078125))); float _1270 = spvFMul(fma(fma(_1067, _1116, -spvFMul(_1138, _1143)), _1222, _1138), fma(_1062, _961.x, spvFMul(fma(as_type(_943), fma(-as_type(_944), _985.x, spvFMul(as_type(_945), _953.x)), spvFMul(as_type(_944), _985.x)), _1195))); float _1275 = spvFMul(as_type(cbuf_140.data[_969]), fma(as_type(_946), spvFAdd(-1.0, _1198), 1.0)); float _1277 = spvFMul(as_type(cbuf_140.data[_969]), _1256); float _1279 = spvFMul(as_type(cbuf_140.data[_969]), fma(as_type(_946), spvFAdd(-1.0, _1204), 1.0)); bool _1280 = _1240 == 0.0; uint _1367; uint _1368; uint _1369; uint _1370; if (_1280) { float _1332 = fast::clamp(fma(as_type(cbuf_144.data[4u + buf7_dword_off]), _705, fma(as_type(cbuf_144.data[5u + buf7_dword_off]), _690, spvFMul(as_type(cbuf_144.data[6u + buf7_dword_off]), _688))), 0.0, 1.0); float _1335 = fast::clamp(fma(as_type(cbuf_144.data[0u + buf7_dword_off]), _705, fma(as_type(cbuf_144.data[1u + buf7_dword_off]), _690, spvFMul(as_type(cbuf_144.data[2u + buf7_dword_off]), _688))), 0.0, 1.0); float _1359 = spvFMul(as_type(cbuf_144.data[22u + buf7_dword_off]), fma(-_1142, _1332, _1332)); _1367 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf7_dword_off]), _1201), fma(-_1140, _1335, _1335), spvFMul(as_type(cbuf_144.data[21u + buf7_dword_off]), fma(-_1140, _1332, _1332)))); _1368 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf7_dword_off]), _1198), fma(-_1138, _1335, _1335), spvFMul(as_type(cbuf_144.data[20u + buf7_dword_off]), fma(-_1138, _1332, _1332)))); _1369 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf7_dword_off]), _1204), fma(-_1142, _1335, _1335), _1359)); _1370 = as_type(_1359); } else { _1367 = as_type(_1187); _1368 = as_type(in.fs_in_attr2.w); _1369 = as_type(_1256); _1370 = as_type(in.fs_in_attr2.y); } uint _1450; uint _1451; uint _1452; if (!_1280) { float _1425 = 1.0 / fma(2.0, _1240, 1.0); float _1426 = spvFMul(fast::max(0.0, fma(as_type(cbuf_132.data[_1054]), as_type(_1370), fma(as_type(cbuf_144.data[0u + buf7_dword_off]), _705, fma(as_type(cbuf_144.data[1u + buf7_dword_off]), _690, spvFMul(as_type(cbuf_144.data[2u + buf7_dword_off]), _688))))), _1425); float _1437 = spvFMul(fast::max(0.0, fma(as_type(cbuf_132.data[_1054]), as_type(_1370), fma(as_type(cbuf_144.data[4u + buf7_dword_off]), _705, fma(as_type(cbuf_144.data[5u + buf7_dword_off]), _690, spvFMul(as_type(cbuf_144.data[6u + buf7_dword_off]), _688))))), _1425); _1450 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf7_dword_off]), _1201), _1426, spvFMul(as_type(cbuf_144.data[21u + buf7_dword_off]), _1437))); _1451 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf7_dword_off]), _1198), _1426, spvFMul(as_type(cbuf_144.data[20u + buf7_dword_off]), _1437))); _1452 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf7_dword_off]), _1204), _1426, spvFMul(as_type(cbuf_144.data[22u + buf7_dword_off]), _1437))); } else { _1450 = _1367; _1451 = _1368; _1452 = _1369; } uint _1454 = 64u + buf7_dword_off; uint _1458 = 65u + buf7_dword_off; uint _1507; uint _1508; uint _1509; if (cbuf_144.data[_1454] > 0u) { float _1486 = fma(0.5, fma(as_type(cbuf_144.data[8u + buf7_dword_off]), _705, fma(as_type(cbuf_144.data[9u + buf7_dword_off]), _690, spvFMul(as_type(cbuf_144.data[10u + buf7_dword_off]), _688))), 0.5); float _1488 = fast::clamp(spvFMul(_1486, _1486), 0.0, 1.0); _1507 = as_type(fma(as_type(cbuf_144.data[25u + buf7_dword_off]), fma(-_1140, _1488, _1488), as_type(_1450))); _1508 = as_type(fma(as_type(cbuf_144.data[24u + buf7_dword_off]), fma(-_1138, _1488, _1488), as_type(_1451))); _1509 = as_type(fma(as_type(cbuf_144.data[26u + buf7_dword_off]), fma(-_1142, _1488, _1488), as_type(_1452))); } else { _1507 = _1450; _1508 = _1451; _1509 = _1452; } uint _1556; uint _1557; uint _1558; if (cbuf_144.data[_1458] > 0u) { float _1535 = fma(0.5, fma(as_type(cbuf_144.data[12u + buf7_dword_off]), _705, fma(as_type(cbuf_144.data[13u + buf7_dword_off]), _690, spvFMul(as_type(cbuf_144.data[14u + buf7_dword_off]), _688))), 0.5); float _1537 = fast::clamp(spvFMul(_1535, _1535), 0.0, 1.0); _1556 = as_type(fma(as_type(cbuf_144.data[29u + buf7_dword_off]), fma(-_1140, _1537, _1537), as_type(_1507))); _1557 = as_type(fma(as_type(cbuf_144.data[28u + buf7_dword_off]), fma(-_1138, _1537, _1537), as_type(_1508))); _1558 = as_type(fma(as_type(cbuf_144.data[30u + buf7_dword_off]), fma(-_1142, _1537, _1537), as_type(_1509))); } else { _1556 = _1507; _1557 = _1508; _1558 = _1509; } uint _1559 = 0u + buf7_dword_off; uint _1562 = 1u + buf7_dword_off; uint _1565 = 2u + buf7_dword_off; uint _1568 = 3u + buf7_dword_off; uint _1571 = 4u + buf7_dword_off; uint _1574 = 5u + buf7_dword_off; uint _1577 = 6u + buf7_dword_off; uint _1580 = 7u + buf7_dword_off; float _1604 = exp2(_777); float _1624 = fma(in.fs_in_attr6.x, _670, as_type(cbuf_144.data[_1559])); float _1626 = fma(in.fs_in_attr6.y, _670, as_type(cbuf_144.data[_1562])); float _1628 = fma(in.fs_in_attr6.z, _670, as_type(cbuf_144.data[_1565])); float _1632 = rsqrt(fma(_1624, _1624, fma(_1626, _1626, spvFMul(_1628, _1628)))); float _1633 = spvFMul(_1624, _1632); float _1634 = spvFMul(_1626, _1632); float _1635 = spvFMul(_1628, _1632); float _1637 = fma(in.fs_in_attr6.x, _670, as_type(cbuf_144.data[_1571])); float _1639 = fma(in.fs_in_attr6.y, _670, as_type(cbuf_144.data[_1574])); float _1641 = fma(in.fs_in_attr6.z, _670, as_type(cbuf_144.data[_1577])); float _1645 = rsqrt(fma(_1637, _1637, fma(_1639, _1639, spvFMul(_1641, _1641)))); float _1646 = spvFMul(_1637, _1645); float _1647 = spvFMul(_1639, _1645); float _1648 = spvFMul(_1641, _1645); float _1664 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1568]), _1604), 1.0 / fma(_1604, 0.01000213623046875, as_type(cbuf_144.data[_1568])))); float _1671 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1580]), _1604), 1.0 / fma(_1604, 0.01000213623046875, as_type(cbuf_144.data[_1580])))); float _1676 = exp2(spvFMul(_1664, log2(fast::clamp(fma(_1633, _705, fma(_1634, _690, spvFMul(_688, _1635))), 0.0, 1.0)))); float _1677 = exp2(spvFMul(_1671, log2(fast::clamp(fma(_1646, _705, fma(_1647, _690, spvFMul(_688, _1648))), 0.0, 1.0)))); float _1692 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_704, _1633, fma(_689, _1634, spvFMul(_687, _1635))), 0.0, 1.0))))); float _1693 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_704, _1646, fma(_689, _1647, spvFMul(_687, _1648))), 0.0, 1.0))))); float _1714 = fast::clamp(spvFMul(fma(as_type(cbuf_144.data[_1559]), _705, fma(as_type(cbuf_144.data[_1562]), _690, spvFMul(as_type(cbuf_144.data[_1565]), _688))), 16.0), 0.0, 1.0); float _1716 = fast::clamp(spvFMul(fma(as_type(cbuf_144.data[_1571]), _705, fma(as_type(cbuf_144.data[_1574]), _690, spvFMul(as_type(cbuf_144.data[_1577]), _688))), 16.0), 0.0, 1.0); float _1718 = fma(_1664, 0.125, 0.25); float _1719 = fma(0.125, _1671, 0.25); float _1744 = fma(spvFMul(_1714, spvFMul(_1676, spvFMul(spvFMul(as_type(cbuf_144.data[32u + buf7_dword_off]), _1198), _1718))), fma(-_1138, _1692, spvFAdd(_1138, _1692)), spvFMul(fma(-_1138, _1693, spvFAdd(_1138, _1693)), spvFMul(_1716, spvFMul(_1677, spvFMul(as_type(cbuf_144.data[36u + buf7_dword_off]), _1719))))); float _1746 = fma(spvFMul(_1714, spvFMul(_1676, spvFMul(spvFMul(as_type(cbuf_144.data[33u + buf7_dword_off]), _1201), _1718))), fma(-_1140, _1692, spvFAdd(_1140, _1692)), spvFMul(fma(-_1140, _1693, spvFAdd(_1140, _1693)), spvFMul(_1716, spvFMul(_1677, spvFMul(as_type(cbuf_144.data[37u + buf7_dword_off]), _1719))))); float _1748 = fma(spvFMul(_1714, spvFMul(_1676, spvFMul(spvFMul(as_type(cbuf_144.data[34u + buf7_dword_off]), _1204), _1718))), fma(-_1142, _1692, spvFAdd(_1142, _1692)), spvFMul(fma(-_1142, _1693, spvFAdd(_1142, _1693)), spvFMul(_1716, spvFMul(_1677, spvFMul(as_type(cbuf_144.data[38u + buf7_dword_off]), _1719))))); uint _1832; uint _1833; uint _1834; if (cbuf_144.data[_1454] > 0u) { uint _1760 = 11u + buf7_dword_off; float _1773 = fma(in.fs_in_attr6.x, _670, as_type(cbuf_144.data[8u + buf7_dword_off])); float _1775 = fma(in.fs_in_attr6.y, _670, as_type(cbuf_144.data[9u + buf7_dword_off])); float _1777 = fma(in.fs_in_attr6.z, _670, as_type(cbuf_144.data[10u + buf7_dword_off])); float _1781 = rsqrt(fma(_1773, _1773, fma(_1775, _1775, spvFMul(_1777, _1777)))); float _1782 = spvFMul(_1773, _1781); float _1783 = spvFMul(_1775, _1781); float _1784 = spvFMul(_1777, _1781); float _1795 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1760]), _1604), 1.0 / fma(_1604, 0.01000213623046875, as_type(cbuf_144.data[_1760])))); float _1798 = exp2(spvFMul(_1795, log2(fast::clamp(fma(_1782, _705, fma(_1783, _690, spvFMul(_688, _1784))), 0.0, 1.0)))); float _1806 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_704, _1782, fma(_689, _1783, spvFMul(_687, _1784))), 0.0, 1.0))))); float _1816 = fma(0.125, _1795, 0.25); _1832 = as_type(fma(spvFMul(_1798, spvFMul(as_type(cbuf_144.data[42u + buf7_dword_off]), _1816)), fma(-_1142, _1806, spvFAdd(_1142, _1806)), _1748)); _1833 = as_type(fma(spvFMul(_1798, spvFMul(as_type(cbuf_144.data[41u + buf7_dword_off]), _1816)), fma(-_1140, _1806, spvFAdd(_1140, _1806)), _1746)); _1834 = as_type(fma(spvFMul(_1798, spvFMul(as_type(cbuf_144.data[40u + buf7_dword_off]), _1816)), fma(-_1138, _1806, spvFAdd(_1138, _1806)), _1744)); } else { _1832 = as_type(_1748); _1833 = as_type(_1746); _1834 = as_type(_1744); } uint _1920; uint _1921; uint _1922; if (cbuf_144.data[_1458] > 0u) { uint _1845 = 15u + buf7_dword_off; float _1858 = fma(in.fs_in_attr6.x, _670, as_type(cbuf_144.data[12u + buf7_dword_off])); float _1860 = fma(in.fs_in_attr6.y, _670, as_type(cbuf_144.data[13u + buf7_dword_off])); float _1862 = fma(in.fs_in_attr6.z, _670, as_type(cbuf_144.data[14u + buf7_dword_off])); float _1866 = rsqrt(fma(_1858, _1858, fma(_1860, _1860, spvFMul(_1862, _1862)))); float _1867 = spvFMul(_1858, _1866); float _1868 = spvFMul(_1860, _1866); float _1869 = spvFMul(_1862, _1866); float _1880 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1845]), _1604), 1.0 / fma(_1604, 0.01000213623046875, as_type(cbuf_144.data[_1845])))); float _1883 = exp2(spvFMul(_1880, log2(fast::clamp(fma(_1867, _705, fma(_1868, _690, spvFMul(_688, _1869))), 0.0, 1.0)))); float _1891 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_704, _1867, fma(_689, _1868, spvFMul(_687, _1869))), 0.0, 1.0))))); float _1901 = fma(0.125, _1880, 0.25); _1920 = as_type(fma(spvFMul(_1883, spvFMul(as_type(cbuf_144.data[46u + buf7_dword_off]), _1901)), fma(-_1142, _1891, spvFAdd(_1142, _1891)), as_type(_1832))); _1921 = as_type(fma(spvFMul(_1883, spvFMul(as_type(cbuf_144.data[45u + buf7_dword_off]), _1901)), fma(-_1140, _1891, spvFAdd(_1140, _1891)), as_type(_1833))); _1922 = as_type(fma(spvFMul(_1883, spvFMul(as_type(cbuf_144.data[44u + buf7_dword_off]), _1901)), fma(-_1138, _1891, spvFAdd(_1138, _1891)), as_type(_1834))); } else { _1920 = _1832; _1921 = _1833; _1922 = _1834; } uint _1929 = 12u + (extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u); float _1943 = spvFMul(as_type(cbuf_136.data[4u + buf3_dword_off]), as_type(cbuf_160.data[_1929])); bool _1951 = 0.0 < _1240; uint _2027; uint _2028; uint _2029; if (_1951) { float _1976 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, _725))); float _1981 = spvFMul(_1976, _1976); float _1982 = spvFMul(exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_144.data[_1559]), -_704, fma(as_type(cbuf_144.data[_1562]), -_689, spvFMul(as_type(cbuf_144.data[_1565]), -_687))), 0.0, 1.0)))), _1981); float _2011 = spvFMul(_1981, exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_144.data[_1571]), -_704, fma(as_type(cbuf_144.data[_1574]), -_689, spvFMul(as_type(cbuf_144.data[_1577]), -_687))), 0.0, 1.0))))); _2027 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf7_dword_off]), _1982), _1240, spvFMul(_1240, spvFMul(as_type(cbuf_144.data[21u + buf7_dword_off]), _2011)))); _2028 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf7_dword_off]), _1982), _1240, spvFMul(_1240, spvFMul(as_type(cbuf_144.data[22u + buf7_dword_off]), _2011)))); _2029 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf7_dword_off]), _1982), _1240, spvFMul(_1240, spvFMul(as_type(cbuf_144.data[20u + buf7_dword_off]), _2011)))); } else { _2027 = as_type(_1270); _2028 = as_type(_1943); _2029 = _1922; } uint _2031; uint _2032; uint _2033; if (!_1951) { _2031 = 0u; _2032 = 0u; _2033 = 0u; } else { _2031 = _2028; _2032 = _2029; _2033 = _2027; } uint _2051 = ((0u + ((_752 + 7u) * 16u)) + buf4_off) >> 2u; uint4 _2064 = uint4(cbuf_140.data[_2051 + 0u], cbuf_140.data[_2051 + 1u], cbuf_140.data[_2051 + 2u], cbuf_140.data[_2051 + 3u]); uint _2065 = _2064.x; uint _2066 = _2064.y; uint _2067 = _2064.z; float _2077 = fma(spvFMul(as_type(cbuf_136.data[1u + buf3_dword_off]), fma(as_type(cbuf_136.data[_667]), fma(-_1108, _1108, fma(_291, _1135, _287.y)), _1135)), fma(spvFMul(_1062, fma(-_1140, _1224, _1224)), _1277, spvFAdd(as_type(_1556), as_type(_2033))), spvFMul(spvFMul(as_type(cbuf_136.data[5u + buf3_dword_off]), as_type(cbuf_160.data[_1929])), fma(spvFMul(fma(fma(_1067, _1116, -spvFMul(_1140, _1143)), _1222, _1140), fma(_1062, _961.y, spvFMul(fma(as_type(_943), fma(-as_type(_944), _985.y, spvFMul(as_type(_945), _953.y)), spvFMul(as_type(_944), _985.y)), _1195))), _1277, as_type(_1921)))); float _2078 = fma(spvFMul(_1062, fma(-_1142, _1225, _1225)), _1279, spvFAdd(as_type(_1558), as_type(_2031))); float _2080 = fma(spvFMul(as_type(cbuf_136.data[0u + buf3_dword_off]), fma(as_type(cbuf_136.data[_667]), fma(-_1105, _1105, fma(_291, _1134, _287.x)), _1134)), fma(spvFMul(_1062, fma(-_1138, _1223, _1223)), _1275, spvFAdd(as_type(_1557), as_type(_2032))), spvFMul(_1943, fma(_1270, _1275, as_type(_1922)))); float _2081 = fma(spvFMul(as_type(cbuf_136.data[2u + buf3_dword_off]), fma(as_type(cbuf_136.data[_667]), fma(-_1111, _1111, fma(_291, _1136, _287.z)), _1136)), _2078, spvFMul(spvFMul(as_type(cbuf_136.data[6u + buf3_dword_off]), as_type(cbuf_160.data[_1929])), fma(spvFMul(fma(fma(_1067, _1116, -spvFMul(_1142, _1143)), _1222, _1142), fma(_1062, _961.z, spvFMul(_1187, _1195))), _1279, as_type(_1920)))); float _2083 = spvFMul(_1266, as_type(_2064.w)); bool _2085 = (as_type(cbuf_136.data[20u + buf3_dword_off]) > fma(as_type(cbuf_136.data[21u + buf3_dword_off]), _326, _1266)) || (_2083 == 0.0); uint _2217; uint _2218; uint _2219; if (!_2085) { uint _2087 = 8u + buf9_dword_off; uint _2093 = 10u + buf9_dword_off; float _2109 = spvFMul(_2077, as_type(_2066)); uint _2116 = 14u + buf9_dword_off; float _2123 = spvFMul(_2080, as_type(_2065)); float _2130 = spvFMul(_2081, as_type(_2067)); float _2158 = spvFAdd(-1.0, fma(_2130, 0.11448000371456146240234375, fma(_2123, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _2109)))); float _2162 = fma(as_type(cbuf_148.data[7u + buf9_dword_off]), _2158, 1.0); float _2181 = fast::clamp(spvFAdd(as_type(cbuf_148.data[_2087]), spvFMul(as_type(cbuf_148.data[_2087]), -exp2(-fma(as_type(cbuf_148.data[_2093]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_148.data[9u + buf9_dword_off]), as_type(cbuf_148.data[_2093])))))), 0.0, 1.0); float _2195 = fma(as_type(cbuf_148.data[19u + buf9_dword_off]), _2158, 1.0); float _2196 = fma(_2181, fma(-_2080, as_type(_2065), spvFMul(as_type(cbuf_148.data[4u + buf9_dword_off]), _2162)), _2123); float _2197 = fma(_2181, fma(-_2077, as_type(_2066), spvFMul(as_type(cbuf_148.data[5u + buf9_dword_off]), _2162)), _2109); float _2198 = fma(_2181, fma(-_2081, as_type(_2067), spvFMul(as_type(cbuf_148.data[6u + buf9_dword_off]), _2162)), _2130); float _2201 = fast::clamp(spvFMul(as_type(cbuf_148.data[12u + buf9_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_148.data[_2116]), spvFSub(as_type(cbuf_148.data[15u + buf9_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_148.data[13u + buf9_dword_off]), as_type(cbuf_148.data[_2116]))), 0.0, 1.0)), 0.0, 1.0); _2217 = as_type(fma(_2201, fma(as_type(cbuf_148.data[18u + buf9_dword_off]), _2195, -_2198), _2198)); _2218 = as_type(fma(_2201, fma(as_type(cbuf_148.data[17u + buf9_dword_off]), _2195, -_2197), _2197)); _2219 = as_type(fma(_2201, fma(as_type(cbuf_148.data[16u + buf9_dword_off]), _2195, -_2196), _2196)); } else { _2217 = as_type(_326); _2218 = 0u; _2219 = as_type(_2078); } if (_2085) { discard_fragment(); } out.frag_color0.x = as_type(_2219); out.frag_color0.y = as_type(_2218); out.frag_color0.z = as_type(_2217); out.frag_color0.w = _2083; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x34d212e1 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4d1dd4a5 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[1008]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(18)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(19)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(20)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(21)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(22)]]) { main0_out out = {}; uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _197 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _207 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _212 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _216 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _223 = ((0u + ((_206 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _236 = uint4(cbuf_16.data[_223 + 0u], cbuf_16.data[_223 + 1u], cbuf_16.data[_223 + 2u], cbuf_16.data[_223 + 3u]); uint _244 = ((0u + ((_207 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _257 = uint4(cbuf_16.data[_244 + 0u], cbuf_16.data[_244 + 1u], cbuf_16.data[_244 + 2u], cbuf_16.data[_244 + 3u]); uint _265 = ((0u + ((_206 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _278 = uint4(cbuf_16.data[_265 + 0u], cbuf_16.data[_265 + 1u], cbuf_16.data[_265 + 2u], cbuf_16.data[_265 + 3u]); uint _286 = ((0u + ((_207 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _299 = uint4(cbuf_16.data[_286 + 0u], cbuf_16.data[_286 + 1u], cbuf_16.data[_286 + 2u], cbuf_16.data[_286 + 3u]); uint _307 = ((0u + (_206 * 16u)) + buf10_off) >> 2u; uint4 _320 = uint4(cbuf_16.data[_307 + 0u], cbuf_16.data[_307 + 1u], cbuf_16.data[_307 + 2u], cbuf_16.data[_307 + 3u]); uint _328 = ((0u + ((_212 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _341 = uint4(cbuf_16.data[_328 + 0u], cbuf_16.data[_328 + 1u], cbuf_16.data[_328 + 2u], cbuf_16.data[_328 + 3u]); uint _349 = ((0u + (_207 * 16u)) + buf10_off) >> 2u; uint4 _362 = uint4(cbuf_16.data[_349 + 0u], cbuf_16.data[_349 + 1u], cbuf_16.data[_349 + 2u], cbuf_16.data[_349 + 3u]); uint _370 = ((0u + ((_212 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _383 = uint4(cbuf_16.data[_370 + 0u], cbuf_16.data[_370 + 1u], cbuf_16.data[_370 + 2u], cbuf_16.data[_370 + 3u]); uint _391 = ((0u + ((_216 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _404 = uint4(cbuf_16.data[_391 + 0u], cbuf_16.data[_391 + 1u], cbuf_16.data[_391 + 2u], cbuf_16.data[_391 + 3u]); uint _412 = ((0u + (_212 * 16u)) + buf10_off) >> 2u; uint4 _425 = uint4(cbuf_16.data[_412 + 0u], cbuf_16.data[_412 + 1u], cbuf_16.data[_412 + 2u], cbuf_16.data[_412 + 3u]); uint _433 = ((0u + ((_216 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _446 = uint4(cbuf_16.data[_433 + 0u], cbuf_16.data[_433 + 1u], cbuf_16.data[_433 + 2u], cbuf_16.data[_433 + 3u]); uint _454 = ((0u + (_216 * 16u)) + buf10_off) >> 2u; uint4 _467 = uint4(cbuf_16.data[_454 + 0u], cbuf_16.data[_454 + 1u], cbuf_16.data[_454 + 2u], cbuf_16.data[_454 + 3u]); float _479 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _480 = spvFMul(in.vs_in_attr4.y, _479); float _481 = spvFMul(in.vs_in_attr4.x, _479); float _486 = spvFMul(in.vs_in_attr4.z, _479); float _565 = spvFMul(in.vs_in_attr4.w, _479); float _607 = fma(as_type(_404.z), _565, fma(as_type(_341.z), _486, fma(as_type(_257.z), _481, spvFMul(_480, as_type(_236.z))))); float _629 = fma(as_type(_446.z), _565, fma(as_type(_383.z), _486, fma(as_type(_299.z), _481, spvFMul(_480, as_type(_278.z))))); float _633 = fma(as_type(_404.y), _565, fma(as_type(_341.y), _486, fma(as_type(_257.y), _481, spvFMul(_480, as_type(_236.y))))); float _642 = fma(as_type(_467.z), _565, fma(as_type(_425.z), _486, fma(as_type(_362.z), _481, spvFMul(_480, as_type(_320.z))))); float _646 = fma(as_type(_446.y), _565, fma(as_type(_383.y), _486, fma(as_type(_299.y), _481, spvFMul(_480, as_type(_278.y))))); float _648 = fma(as_type(_404.x), _565, fma(as_type(_341.x), _486, fma(as_type(_257.x), _481, spvFMul(_480, as_type(_236.x))))); float _654 = fma(as_type(_467.y), _565, fma(as_type(_425.y), _486, fma(as_type(_362.y), _481, spvFMul(_480, as_type(_320.y))))); float _656 = fma(as_type(_446.x), _565, fma(as_type(_383.x), _486, fma(as_type(_299.x), _481, spvFMul(_480, as_type(_278.x))))); float _659 = fma(_648, in.vs_in_attr0.x, fma(_633, in.vs_in_attr0.y, fma(_607, in.vs_in_attr0.z, fma(as_type(_404.w), _565, fma(as_type(_341.w), _486, fma(as_type(_257.w), _481, spvFMul(_480, as_type(_236.w)))))))); float _661 = fma(as_type(_467.x), _565, fma(as_type(_425.x), _486, fma(as_type(_362.x), _481, spvFMul(_480, as_type(_320.x))))); float _663 = fma(_656, in.vs_in_attr0.x, fma(_646, in.vs_in_attr0.y, fma(_629, in.vs_in_attr0.z, fma(as_type(_446.w), _565, fma(as_type(_383.w), _486, fma(as_type(_299.w), _481, spvFMul(_480, as_type(_278.w)))))))); float _665 = spvFSub(_659, as_type(cbuf_20.data[191u + buf11_dword_off])); float _666 = fma(_661, in.vs_in_attr0.x, fma(_654, in.vs_in_attr0.y, fma(_642, in.vs_in_attr0.z, fma(as_type(_467.w), _565, fma(as_type(_425.w), _486, fma(as_type(_362.w), _481, spvFMul(_480, as_type(_320.w)))))))); float _668 = spvFSub(_663, as_type(cbuf_20.data[187u + buf11_dword_off])); float _682 = spvFSub(_666, as_type(cbuf_20.data[183u + buf11_dword_off])); float _692 = fma(as_type(cbuf_20.data[200u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[201u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[202u + buf11_dword_off]), _665, as_type(cbuf_20.data[203u + buf11_dword_off])))); float _694 = fma(as_type(cbuf_20.data[204u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[205u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[206u + buf11_dword_off]), _665, as_type(cbuf_20.data[207u + buf11_dword_off])))); float _696 = fma(as_type(cbuf_20.data[208u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[209u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[210u + buf11_dword_off]), _665, as_type(cbuf_20.data[211u + buf11_dword_off])))); float _698 = fma(as_type(cbuf_20.data[212u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[213u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[214u + buf11_dword_off]), _665, as_type(cbuf_20.data[215u + buf11_dword_off])))); out.gl_Position.x = _692; out.gl_Position.y = _694; out.gl_Position.z = _696; out.gl_Position.w = _698; out.out_attr5.x = _692; out.out_attr5.y = _694; out.out_attr5.z = _696; out.out_attr5.w = _698; float _821 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _824 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _827 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _829 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _853 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _854 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_661, _854, fma(_654, _829, spvFMul(_824, _642))); out.out_attr0.y = fma(_656, _854, fma(_646, _829, spvFMul(_824, _629))); out.out_attr0.z = fma(_648, _854, fma(_633, _829, spvFMul(_824, _607))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_661, _853, fma(_654, _827, spvFMul(_821, _642))); out.out_attr1.y = fma(_656, _853, fma(_646, _827, spvFMul(_821, _629))); out.out_attr1.z = fma(_648, _853, fma(_633, _827, spvFMul(_821, _607))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf12_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf12_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf12_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf12_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[85u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[86u + buf11_dword_off]), _659, as_type(cbuf_20.data[87u + buf11_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[89u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[90u + buf11_dword_off]), _659, as_type(cbuf_20.data[91u + buf11_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[93u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[94u + buf11_dword_off]), _659, as_type(cbuf_20.data[95u + buf11_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[97u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[98u + buf11_dword_off]), _659, as_type(cbuf_20.data[99u + buf11_dword_off])))); out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf13_dword_off]), _666); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf13_dword_off]), _663); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf13_dword_off]), _659); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct fs_cbuf_block_f32_5 { uint data[8]; }; struct fs_cbuf_block_f32_6 { uint data[72]; }; struct fs_cbuf_block_f32_7 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_120 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_148 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_128 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_132 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_144 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_124 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_136 [[buffer(15)]], constant fs_cbuf_block_f32_4& cbuf_152 [[buffer(16)]], constant fs_cbuf_block_f32_7& cbuf_140 [[buffer(17)]], texture2d fs_img96 [[texture(0)]], texture2d fs_img56 [[texture(1)]], texture2d fs_img48 [[texture(2)]], texture2d fs_img104 [[texture(3)]], texture2d fs_img40 [[texture(4)]], texture2d fs_img88 [[texture(5)]], depth2d fs_img80 [[texture(6)]], texture2d fs_img32 [[texture(7)]], texturecube fs_img72 [[texture(8)]], texture2d fs_img112 [[texture(9)]], texturecube fs_img64 [[texture(10)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf1_dword_off = buf1_off >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _184 = uint(gl_FrontFacing); float _212 = 1.0 / in.fs_in_attr5.w; float _217 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _226 = spvFMul(in.fs_in_attr5.x, _212); float _227 = spvFMul(in.fs_in_attr5.y, _212); float4 _232 = fs_img96.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _236 = _232.w; float _237 = spvFMul(in.fs_in_attr0.x, _217); float _238 = spvFMul(in.fs_in_attr0.y, _217); float _240 = spvFMul(in.fs_in_attr0.z, _217); float _242 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _243 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _244 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _246 = fma(0.5, _226, 0.5); float _248 = fma(-0.5, _227, 0.5); bool _249 = 0u == _184; uint _254; if (_249) { _254 = as_type(fast::max(-_237, -_237)); } else { _254 = _184; } uint _263; uint _264; if (_249) { _263 = as_type(fast::max(-_240, -_240)); _264 = as_type(fast::max(-_238, -_238)); } else { _263 = as_type(_238); _264 = as_type(_240); } uint _267; uint _268; uint _269; if (!_249) { _267 = as_type(_237); _268 = _263; _269 = _264; } else { _267 = _254; _268 = _264; _269 = _263; } float _361 = spvFMul(in.fs_in_attr5.z, _212); float4 _366 = fs_img56.sample(fs_samp16, float2(fma(as_type(cbuf_120.data[12u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_120.data[14u + buf0_dword_off])), fma(as_type(cbuf_120.data[13u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_120.data[15u + buf0_dword_off])))); float _396 = 1.0 / fma(as_type(cbuf_148.data[48u + buf1_dword_off]), _226, fma(as_type(cbuf_148.data[49u + buf1_dword_off]), _227, fma(as_type(cbuf_148.data[50u + buf1_dword_off]), _361, as_type(cbuf_148.data[51u + buf1_dword_off])))); float _397 = spvFMul(fma(as_type(cbuf_148.data[44u + buf1_dword_off]), _226, fma(as_type(cbuf_148.data[45u + buf1_dword_off]), _227, fma(as_type(cbuf_148.data[46u + buf1_dword_off]), _361, as_type(cbuf_148.data[47u + buf1_dword_off])))), _396); uint _430 = ((((as_type((as_type(cbuf_148.data[176u + buf1_dword_off]) < _397) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_397 > as_type(cbuf_148.data[177u + buf1_dword_off]))) + uint(abs(int(0u)))) + uint(_397 > as_type(cbuf_148.data[178u + buf1_dword_off]))) << 2u; float4 _449 = fs_img48.sample(fs_samp8, float2(fma(as_type(cbuf_120.data[8u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_120.data[10u + buf0_dword_off])), fma(as_type(cbuf_120.data[9u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_120.data[11u + buf0_dword_off])))); float _450 = _449.x; float4 _455 = fs_img104.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _457 = _455.y; uint _461 = ((0u + ((_430 + 28u) * 16u)) + buf1_off) >> 2u; uint4 _474 = uint4(cbuf_148.data[_461 + 0u], cbuf_148.data[_461 + 1u], cbuf_148.data[_461 + 2u], cbuf_148.data[_461 + 3u]); uint _482 = ((0u + ((_430 + 29u) * 16u)) + buf1_off) >> 2u; uint4 _495 = uint4(cbuf_148.data[_482 + 0u], cbuf_148.data[_482 + 1u], cbuf_148.data[_482 + 2u], cbuf_148.data[_482 + 3u]); uint _503 = ((0u + ((_430 + 31u) * 16u)) + buf1_off) >> 2u; uint4 _516 = uint4(cbuf_148.data[_503 + 0u], cbuf_148.data[_503 + 1u], cbuf_148.data[_503 + 2u], cbuf_148.data[_503 + 3u]); uint _524 = ((0u + ((_430 + 30u) * 16u)) + buf1_off) >> 2u; uint4 _537 = uint4(cbuf_148.data[_524 + 0u], cbuf_148.data[_524 + 1u], cbuf_148.data[_524 + 2u], cbuf_148.data[_524 + 3u]); float _546 = fma(2.0, _366.y, -1.0); float _547 = spvFMul(fma(2.0, _366.x, -1.0), fma(2.0, _366.w, -1.0)); float _558 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _560 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_547, _547), spvFMul(_546, _546)), 0.0, 1.0))); float _562 = rsqrt(fma(_242, _242, fma(_243, _243, spvFMul(_244, _244)))); float _577 = fma(spvFMul(_244, _562), _547, fma(spvFMul(in.fs_in_attr1.z, _558), _546, spvFMul(as_type(_269), _560))); float _599 = fma(spvFMul(_243, _562), _547, fma(spvFMul(in.fs_in_attr1.y, _558), _546, spvFMul(as_type(_268), _560))); float _604 = fma(spvFMul(_242, _562), _547, fma(spvFMul(in.fs_in_attr1.x, _558), _546, spvFMul(as_type(_267), _560))); uint _611 = 24u + buf2_dword_off; float _614 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _615 = rsqrt(fma(_604, _604, fma(_599, _599, spvFMul(_577, _577)))); uint _620 = 73u + buf1_dword_off; uint _624 = 74u + buf1_dword_off; uint _628 = 75u + buf1_dword_off; float _631 = spvFMul(in.fs_in_attr6.z, _614); float _632 = spvFMul(_577, _615); float _633 = spvFMul(in.fs_in_attr6.y, _614); float _634 = spvFMul(_599, _615); float _648 = spvFMul(in.fs_in_attr6.x, _614); float _649 = spvFMul(_604, _615); float _669 = fma(_649, _648, fma(_634, _633, spvFMul(_631, _632))); float4 _685 = fs_img40.sample(fs_samp8, float2(fma(as_type(cbuf_120.data[4u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_120.data[6u + buf0_dword_off])), fma(as_type(cbuf_120.data[5u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_120.data[7u + buf0_dword_off])))); float _686 = _685.x; float _687 = _685.y; float _688 = _685.z; float _690 = spvFMul(fast::max(_669, _669), 2.0); uint _696 = uint(in.fs_in_attr0.w) * 13u; float _700 = fma(as_type(_474.x), _226, fma(as_type(_474.y), _227, fma(as_type(_474.z), _361, as_type(_474.w)))); float _702 = fma(as_type(_495.x), _226, fma(as_type(_495.y), _227, fma(as_type(_495.z), _361, as_type(_495.w)))); float _704 = fma(as_type(_516.x), _226, fma(as_type(_516.y), _227, fma(as_type(_516.z), _361, as_type(_516.w)))); float _705 = spvFMul(fma(as_type(cbuf_128.data[_611]), spvFSub(fma(_236, _450, _455.x), _450), _450), spvFMul(as_type(cbuf_128.data[8u + buf2_dword_off]), 0.00390625)); float _714 = 1.0 / _704; float _721 = spvFMul(13.0, _705); float _723 = fma(-in.fs_in_attr6.x, _614, spvFMul(_649, _690)); float _725 = fma(-in.fs_in_attr6.y, _614, spvFMul(_634, _690)); float _727 = fma(-in.fs_in_attr6.z, _614, spvFMul(_632, _690)); float _734 = spvFMul(fma(as_type(_537.x), _226, fma(as_type(_537.y), _227, fma(as_type(_537.z), _361, as_type(_537.w)))), _714); float _769 = 1.0 / abs(1.0); float _785 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_721, _721), 0.5))); float _787 = fma(_725, _769, 1.5); float _788 = fma(_723, _769, 1.5); float4 _795 = fs_img32.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_120.data[0u + buf0_dword_off]), as_type(cbuf_120.data[2u + buf0_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_120.data[1u + buf0_dword_off]), as_type(cbuf_120.data[3u + buf0_dword_off])))); uint _803 = ((0u + ((_696 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _816 = uint4(cbuf_132.data[_803 + 0u], cbuf_132.data[_803 + 1u], cbuf_132.data[_803 + 2u], cbuf_132.data[_803 + 3u]); uint _824 = ((0u + ((_696 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _837 = uint4(cbuf_132.data[_824 + 0u], cbuf_132.data[_824 + 1u], cbuf_132.data[_824 + 2u], cbuf_132.data[_824 + 3u]); uint _845 = ((0u + ((_696 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _858 = uint4(cbuf_132.data[_845 + 0u], cbuf_132.data[_845 + 1u], cbuf_132.data[_845 + 2u], cbuf_132.data[_845 + 3u]); uint _873 = ((0u + ((_696 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _886 = uint4(cbuf_132.data[_873 + 0u], cbuf_132.data[_873 + 1u], cbuf_132.data[_873 + 2u], cbuf_132.data[_873 + 3u]); uint _887 = _886.x; uint _888 = _886.y; uint _889 = _886.z; uint _890 = _886.w; float4 _897 = fs_img72.sample(fs_samp20, float3(spvFSub(_788, 1.5), spvFSub(_787, 1.5), _727), level(_785)); float4 _905 = fs_img112.sample(fs_samp24, float2(_246, _248), level(_785)); uint _913 = ((0u + ((_696 + 12u) * 16u)) + buf3_off) >> 2u; float4 _929 = fs_img64.sample(fs_samp20, float3(spvFSub(_788, 1.5), spvFSub(_787, 1.5), _727), level(_785)); uint _933 = 12u + buf2_dword_off; float _955 = spvFMul(fma(as_type(cbuf_148.data[40u + buf1_dword_off]), _226, fma(as_type(cbuf_148.data[41u + buf1_dword_off]), _227, fma(as_type(cbuf_148.data[42u + buf1_dword_off]), _361, as_type(cbuf_148.data[43u + buf1_dword_off])))), _396); float _968 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _969 = spvFMul(fma(as_type(cbuf_148.data[36u + buf1_dword_off]), _226, fma(as_type(cbuf_148.data[37u + buf1_dword_off]), _227, fma(as_type(cbuf_148.data[38u + buf1_dword_off]), _361, as_type(cbuf_148.data[39u + buf1_dword_off])))), _396); bool _988 = (_688 == 0.0) && (_687 == 0.0); uint _998 = 4u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _1006 = fma(fma(as_type(cbuf_128.data[_933]), fs_img88.sample(fs_samp20, float2(_246, _248)).x, 1.0), _968, -spvFMul(as_type(cbuf_128.data[_933]), _968)); float _1010 = fast::clamp(spvFAdd(fma(_723, as_type(_267), fma(_725, as_type(_268), spvFMul(as_type(_269), _727))), 1.0), 0.0, 1.0); float _1011 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_669, _669), 0.0, 1.0))))); float _1014 = _988 ? _686 : _688; float _1015 = _988 ? _686 : _687; float _1016 = spvFMul(_457, _457); float _1017 = spvFAdd(_669, _1006); float _1050 = fast::clamp(spvFAdd(sqrt(_795.x), as_type(cbuf_144.data[24u + buf4_dword_off])), 0.0, 1.0); float _1053 = fast::clamp(spvFAdd(sqrt(_795.y), as_type(cbuf_144.data[25u + buf4_dword_off])), 0.0, 1.0); float _1056 = fast::clamp(spvFAdd(sqrt(_795.z), as_type(cbuf_144.data[26u + buf4_dword_off])), 0.0, 1.0); float _1061 = fast::clamp(spvFAdd(fma(_1017, _1017, _1006), -1.0), 0.0, 1.0); float _1078 = spvFMul(as_type(cbuf_132.data[_913]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_148.data[72u + buf1_dword_off]), as_type(cbuf_148.data[_620])), -spvFMul(as_type(cbuf_148.data[_620]), sqrt(fma(_969, _969, fma(_955, _955, spvFMul(_397, _397)))))), 0.0, 1.0)); float _1079 = spvFMul(_1050, _1050); float _1080 = spvFMul(_1053, _1053); float _1081 = spvFMul(_1056, _1056); float _1083 = fma(as_type(cbuf_128.data[_611]), spvFSub(fma(_236, _686, _1016), _686), _686); float _1085 = fma(as_type(cbuf_128.data[_611]), spvFSub(fma(_236, _1015, _1016), _1015), _1015); float _1087 = fma(as_type(cbuf_128.data[_611]), spvFSub(fma(_236, _1014, _1016), _1014), _1014); float _1089 = spvFMul(_1011, _1061); float _1112 = spvFSub(1.0, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_704, as_type(cbuf_148.data[_628]), _700), _714), spvFMul(fma(as_type(cbuf_148.data[_624]), _704, _702), _714)), _734, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_704, as_type(cbuf_148.data[_624]), _700), _714), spvFMul(fma(-_704, as_type(cbuf_148.data[_628]), _702), _714)), _734, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(_704, as_type(cbuf_148.data[_624]), _700), _714), spvFMul(fma(_704, as_type(cbuf_148.data[_628]), _702), _714)), _734, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(_704, as_type(cbuf_148.data[_628]), _700), _714), spvFMul(fma(-_704, as_type(cbuf_148.data[_624]), _702), _714)), _734, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1133 = fma(as_type(_887), fma(-as_type(_888), _929.z, spvFMul(as_type(_889), _897.z)), spvFMul(as_type(_888), _929.z)); float _1141 = spvFMul(_1006, spvFMul(spvFMul(_1010, _1010), spvFSub(1.0, _905.w))); float _1144 = fma(-_1112, spvFMul(as_type(cbuf_148.data[76u + buf1_dword_off]), _1078), as_type(cbuf_132.data[_913])); float _1147 = fma(-_1112, spvFMul(as_type(cbuf_148.data[77u + buf1_dword_off]), _1078), as_type(cbuf_132.data[_913])); float _1150 = fma(-_1112, spvFMul(as_type(cbuf_148.data[78u + buf1_dword_off]), _1078), as_type(cbuf_132.data[_913])); float _1168 = spvFMul(_705, _705); float _1169 = fast::max(0.0, spvFAdd(as_type(_816.w), fma(_632, as_type(_816.z), fma(_649, as_type(_816.x), spvFMul(_634, as_type(_816.y)))))); float _1170 = fast::max(0.0, spvFAdd(as_type(_837.w), fma(_632, as_type(_837.z), fma(_649, as_type(_837.x), spvFMul(_634, as_type(_837.y)))))); float _1171 = fast::max(0.0, spvFAdd(as_type(_858.w), fma(_632, as_type(_858.z), fma(_649, as_type(_858.x), spvFMul(_634, as_type(_858.y)))))); float _1186 = spvFMul(as_type(cbuf_124.data[_998]), in.fs_in_attr2.y); float _1202 = fma(as_type(_890), spvFAdd(-1.0, _1147), 1.0); float _1220 = spvFMul(as_type(cbuf_132.data[_913]), fma(as_type(_890), spvFAdd(-1.0, _1144), 1.0)); float _1222 = spvFMul(as_type(cbuf_132.data[_913]), _1202); float _1224 = spvFMul(as_type(cbuf_132.data[_913]), fma(as_type(_890), spvFAdd(-1.0, _1150), 1.0)); bool _1225 = _1186 == 0.0; uint _1312; uint _1313; uint _1314; uint _1315; if (_1225) { float _1277 = fast::clamp(fma(as_type(cbuf_136.data[4u + buf6_dword_off]), _649, fma(as_type(cbuf_136.data[5u + buf6_dword_off]), _634, spvFMul(as_type(cbuf_136.data[6u + buf6_dword_off]), _632))), 0.0, 1.0); float _1280 = fast::clamp(fma(as_type(cbuf_136.data[0u + buf6_dword_off]), _649, fma(as_type(cbuf_136.data[1u + buf6_dword_off]), _634, spvFMul(as_type(cbuf_136.data[2u + buf6_dword_off]), _632))), 0.0, 1.0); float _1304 = spvFMul(as_type(cbuf_136.data[22u + buf6_dword_off]), fma(-_1087, _1277, _1277)); _1312 = as_type(fma(spvFMul(as_type(cbuf_136.data[17u + buf6_dword_off]), _1147), fma(-_1085, _1280, _1280), spvFMul(as_type(cbuf_136.data[21u + buf6_dword_off]), fma(-_1085, _1277, _1277)))); _1313 = as_type(fma(spvFMul(as_type(cbuf_136.data[16u + buf6_dword_off]), _1144), fma(-_1083, _1280, _1280), spvFMul(as_type(cbuf_136.data[20u + buf6_dword_off]), fma(-_1083, _1277, _1277)))); _1314 = as_type(fma(spvFMul(as_type(cbuf_136.data[18u + buf6_dword_off]), _1150), fma(-_1087, _1280, _1280), _1304)); _1315 = as_type(_1304); } else { _1312 = as_type(_1133); _1313 = as_type(in.fs_in_attr2.w); _1314 = as_type(_1202); _1315 = as_type(in.fs_in_attr2.y); } uint _1395; uint _1396; uint _1397; if (!_1225) { float _1370 = 1.0 / fma(2.0, _1186, 1.0); float _1371 = spvFMul(fast::max(0.0, fma(as_type(cbuf_124.data[_998]), as_type(_1315), fma(as_type(cbuf_136.data[0u + buf6_dword_off]), _649, fma(as_type(cbuf_136.data[1u + buf6_dword_off]), _634, spvFMul(as_type(cbuf_136.data[2u + buf6_dword_off]), _632))))), _1370); float _1382 = spvFMul(fast::max(0.0, fma(as_type(cbuf_124.data[_998]), as_type(_1315), fma(as_type(cbuf_136.data[4u + buf6_dword_off]), _649, fma(as_type(cbuf_136.data[5u + buf6_dword_off]), _634, spvFMul(as_type(cbuf_136.data[6u + buf6_dword_off]), _632))))), _1370); _1395 = as_type(fma(spvFMul(as_type(cbuf_136.data[17u + buf6_dword_off]), _1147), _1371, spvFMul(as_type(cbuf_136.data[21u + buf6_dword_off]), _1382))); _1396 = as_type(fma(spvFMul(as_type(cbuf_136.data[16u + buf6_dword_off]), _1144), _1371, spvFMul(as_type(cbuf_136.data[20u + buf6_dword_off]), _1382))); _1397 = as_type(fma(spvFMul(as_type(cbuf_136.data[18u + buf6_dword_off]), _1150), _1371, spvFMul(as_type(cbuf_136.data[22u + buf6_dword_off]), _1382))); } else { _1395 = _1312; _1396 = _1313; _1397 = _1314; } uint _1399 = 64u + buf6_dword_off; uint _1403 = 65u + buf6_dword_off; uint _1452; uint _1453; uint _1454; if (cbuf_136.data[_1399] > 0u) { float _1431 = fma(0.5, fma(as_type(cbuf_136.data[8u + buf6_dword_off]), _649, fma(as_type(cbuf_136.data[9u + buf6_dword_off]), _634, spvFMul(as_type(cbuf_136.data[10u + buf6_dword_off]), _632))), 0.5); float _1433 = fast::clamp(spvFMul(_1431, _1431), 0.0, 1.0); _1452 = as_type(fma(as_type(cbuf_136.data[25u + buf6_dword_off]), fma(-_1085, _1433, _1433), as_type(_1395))); _1453 = as_type(fma(as_type(cbuf_136.data[24u + buf6_dword_off]), fma(-_1083, _1433, _1433), as_type(_1396))); _1454 = as_type(fma(as_type(cbuf_136.data[26u + buf6_dword_off]), fma(-_1087, _1433, _1433), as_type(_1397))); } else { _1452 = _1395; _1453 = _1396; _1454 = _1397; } uint _1501; uint _1502; uint _1503; if (cbuf_136.data[_1403] > 0u) { float _1480 = fma(0.5, fma(as_type(cbuf_136.data[12u + buf6_dword_off]), _649, fma(as_type(cbuf_136.data[13u + buf6_dword_off]), _634, spvFMul(as_type(cbuf_136.data[14u + buf6_dword_off]), _632))), 0.5); float _1482 = fast::clamp(spvFMul(_1480, _1480), 0.0, 1.0); _1501 = as_type(fma(as_type(cbuf_136.data[29u + buf6_dword_off]), fma(-_1085, _1482, _1482), as_type(_1452))); _1502 = as_type(fma(as_type(cbuf_136.data[28u + buf6_dword_off]), fma(-_1083, _1482, _1482), as_type(_1453))); _1503 = as_type(fma(as_type(cbuf_136.data[30u + buf6_dword_off]), fma(-_1087, _1482, _1482), as_type(_1454))); } else { _1501 = _1452; _1502 = _1453; _1503 = _1454; } uint _1504 = 0u + buf6_dword_off; uint _1507 = 1u + buf6_dword_off; uint _1510 = 2u + buf6_dword_off; uint _1513 = 3u + buf6_dword_off; uint _1516 = 4u + buf6_dword_off; uint _1519 = 5u + buf6_dword_off; uint _1522 = 6u + buf6_dword_off; uint _1525 = 7u + buf6_dword_off; float _1549 = exp2(_721); float _1569 = fma(in.fs_in_attr6.x, _614, as_type(cbuf_136.data[_1504])); float _1571 = fma(in.fs_in_attr6.y, _614, as_type(cbuf_136.data[_1507])); float _1573 = fma(in.fs_in_attr6.z, _614, as_type(cbuf_136.data[_1510])); float _1577 = rsqrt(fma(_1569, _1569, fma(_1571, _1571, spvFMul(_1573, _1573)))); float _1578 = spvFMul(_1569, _1577); float _1579 = spvFMul(_1571, _1577); float _1580 = spvFMul(_1573, _1577); float _1582 = fma(in.fs_in_attr6.x, _614, as_type(cbuf_136.data[_1516])); float _1584 = fma(in.fs_in_attr6.y, _614, as_type(cbuf_136.data[_1519])); float _1586 = fma(in.fs_in_attr6.z, _614, as_type(cbuf_136.data[_1522])); float _1590 = rsqrt(fma(_1582, _1582, fma(_1584, _1584, spvFMul(_1586, _1586)))); float _1591 = spvFMul(_1582, _1590); float _1592 = spvFMul(_1584, _1590); float _1593 = spvFMul(_1586, _1590); float _1609 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_136.data[_1513]), _1549), 1.0 / fma(_1549, 0.01000213623046875, as_type(cbuf_136.data[_1513])))); float _1616 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_136.data[_1525]), _1549), 1.0 / fma(_1549, 0.01000213623046875, as_type(cbuf_136.data[_1525])))); float _1621 = exp2(spvFMul(_1609, log2(fast::clamp(fma(_1578, _649, fma(_1579, _634, spvFMul(_632, _1580))), 0.0, 1.0)))); float _1622 = exp2(spvFMul(_1616, log2(fast::clamp(fma(_1591, _649, fma(_1592, _634, spvFMul(_632, _1593))), 0.0, 1.0)))); float _1637 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1578, fma(_633, _1579, spvFMul(_631, _1580))), 0.0, 1.0))))); float _1638 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1591, fma(_633, _1592, spvFMul(_631, _1593))), 0.0, 1.0))))); float _1659 = fast::clamp(spvFMul(fma(as_type(cbuf_136.data[_1504]), _649, fma(as_type(cbuf_136.data[_1507]), _634, spvFMul(as_type(cbuf_136.data[_1510]), _632))), 16.0), 0.0, 1.0); float _1661 = fast::clamp(spvFMul(fma(as_type(cbuf_136.data[_1516]), _649, fma(as_type(cbuf_136.data[_1519]), _634, spvFMul(as_type(cbuf_136.data[_1522]), _632))), 16.0), 0.0, 1.0); float _1663 = fma(_1609, 0.125, 0.25); float _1664 = fma(0.125, _1616, 0.25); float _1689 = fma(spvFMul(_1659, spvFMul(_1621, spvFMul(spvFMul(as_type(cbuf_136.data[32u + buf6_dword_off]), _1144), _1663))), fma(-_1083, _1637, spvFAdd(_1083, _1637)), spvFMul(fma(-_1083, _1638, spvFAdd(_1083, _1638)), spvFMul(_1661, spvFMul(_1622, spvFMul(as_type(cbuf_136.data[36u + buf6_dword_off]), _1664))))); float _1691 = fma(spvFMul(_1659, spvFMul(_1621, spvFMul(spvFMul(as_type(cbuf_136.data[33u + buf6_dword_off]), _1147), _1663))), fma(-_1085, _1637, spvFAdd(_1085, _1637)), spvFMul(fma(-_1085, _1638, spvFAdd(_1085, _1638)), spvFMul(_1661, spvFMul(_1622, spvFMul(as_type(cbuf_136.data[37u + buf6_dword_off]), _1664))))); float _1693 = fma(spvFMul(_1659, spvFMul(_1621, spvFMul(spvFMul(as_type(cbuf_136.data[34u + buf6_dword_off]), _1150), _1663))), fma(-_1087, _1637, spvFAdd(_1087, _1637)), spvFMul(fma(-_1087, _1638, spvFAdd(_1087, _1638)), spvFMul(_1661, spvFMul(_1622, spvFMul(as_type(cbuf_136.data[38u + buf6_dword_off]), _1664))))); uint _1777; uint _1778; uint _1779; if (cbuf_136.data[_1399] > 0u) { uint _1705 = 11u + buf6_dword_off; float _1718 = fma(in.fs_in_attr6.x, _614, as_type(cbuf_136.data[8u + buf6_dword_off])); float _1720 = fma(in.fs_in_attr6.y, _614, as_type(cbuf_136.data[9u + buf6_dword_off])); float _1722 = fma(in.fs_in_attr6.z, _614, as_type(cbuf_136.data[10u + buf6_dword_off])); float _1726 = rsqrt(fma(_1718, _1718, fma(_1720, _1720, spvFMul(_1722, _1722)))); float _1727 = spvFMul(_1718, _1726); float _1728 = spvFMul(_1720, _1726); float _1729 = spvFMul(_1722, _1726); float _1740 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_136.data[_1705]), _1549), 1.0 / fma(_1549, 0.01000213623046875, as_type(cbuf_136.data[_1705])))); float _1743 = exp2(spvFMul(_1740, log2(fast::clamp(fma(_1727, _649, fma(_1728, _634, spvFMul(_632, _1729))), 0.0, 1.0)))); float _1751 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1727, fma(_633, _1728, spvFMul(_631, _1729))), 0.0, 1.0))))); float _1761 = fma(0.125, _1740, 0.25); _1777 = as_type(fma(spvFMul(_1743, spvFMul(as_type(cbuf_136.data[42u + buf6_dword_off]), _1761)), fma(-_1087, _1751, spvFAdd(_1087, _1751)), _1693)); _1778 = as_type(fma(spvFMul(_1743, spvFMul(as_type(cbuf_136.data[41u + buf6_dword_off]), _1761)), fma(-_1085, _1751, spvFAdd(_1085, _1751)), _1691)); _1779 = as_type(fma(spvFMul(_1743, spvFMul(as_type(cbuf_136.data[40u + buf6_dword_off]), _1761)), fma(-_1083, _1751, spvFAdd(_1083, _1751)), _1689)); } else { _1777 = as_type(_1693); _1778 = as_type(_1691); _1779 = as_type(_1689); } uint _1866; uint _1867; uint _1868; uint _1869; if (cbuf_136.data[_1403] > 0u) { uint _1790 = 15u + buf6_dword_off; float _1803 = fma(in.fs_in_attr6.x, _614, as_type(cbuf_136.data[12u + buf6_dword_off])); float _1805 = fma(in.fs_in_attr6.y, _614, as_type(cbuf_136.data[13u + buf6_dword_off])); float _1807 = fma(in.fs_in_attr6.z, _614, as_type(cbuf_136.data[14u + buf6_dword_off])); float _1811 = rsqrt(fma(_1803, _1803, fma(_1805, _1805, spvFMul(_1807, _1807)))); float _1812 = spvFMul(_1803, _1811); float _1813 = spvFMul(_1805, _1811); float _1814 = spvFMul(_1807, _1811); float _1825 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_136.data[_1790]), _1549), 1.0 / fma(_1549, 0.01000213623046875, as_type(cbuf_136.data[_1790])))); float _1828 = exp2(spvFMul(_1825, log2(fast::clamp(fma(_1812, _649, fma(_1813, _634, spvFMul(_632, _1814))), 0.0, 1.0)))); float _1836 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1812, fma(_633, _1813, spvFMul(_631, _1814))), 0.0, 1.0))))); float _1846 = fma(0.125, _1825, 0.25); float _1854 = spvFMul(_1828, spvFMul(as_type(cbuf_136.data[45u + buf6_dword_off]), _1846)); _1866 = as_type(_1854); _1867 = as_type(fma(spvFMul(_1828, spvFMul(as_type(cbuf_136.data[46u + buf6_dword_off]), _1846)), fma(-_1087, _1836, spvFAdd(_1087, _1836)), as_type(_1777))); _1868 = as_type(fma(_1854, fma(-_1085, _1836, spvFAdd(_1085, _1836)), as_type(_1778))); _1869 = as_type(fma(spvFMul(_1828, spvFMul(as_type(cbuf_136.data[44u + buf6_dword_off]), _1846)), fma(-_1083, _1836, spvFAdd(_1083, _1836)), as_type(_1779))); } else { _1866 = as_type(_1087); _1867 = _1777; _1868 = _1778; _1869 = _1779; } uint _1885 = 12u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _1890 = spvFMul(as_type(cbuf_128.data[4u + buf2_dword_off]), as_type(cbuf_152.data[_1885])); bool _1898 = 0.0 < _1186; uint _1974; uint _1975; uint _1976; if (_1898) { float _1923 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, _669))); float _1928 = spvFMul(_1923, _1923); float _1929 = spvFMul(exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_136.data[_1504]), -_648, fma(as_type(cbuf_136.data[_1507]), -_633, spvFMul(as_type(cbuf_136.data[_1510]), -_631))), 0.0, 1.0)))), _1928); float _1958 = spvFMul(_1928, exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_136.data[_1516]), -_648, fma(as_type(cbuf_136.data[_1519]), -_633, spvFMul(as_type(cbuf_136.data[_1522]), -_631))), 0.0, 1.0))))); _1974 = as_type(fma(spvFMul(as_type(cbuf_136.data[17u + buf6_dword_off]), _1929), _1186, spvFMul(_1186, spvFMul(as_type(cbuf_136.data[21u + buf6_dword_off]), _1958)))); _1975 = as_type(fma(spvFMul(as_type(cbuf_136.data[18u + buf6_dword_off]), _1929), _1186, spvFMul(_1186, spvFMul(as_type(cbuf_136.data[22u + buf6_dword_off]), _1958)))); _1976 = as_type(fma(spvFMul(as_type(cbuf_136.data[16u + buf6_dword_off]), _1929), _1186, spvFMul(_1186, spvFMul(as_type(cbuf_136.data[20u + buf6_dword_off]), _1958)))); } else { _1974 = _1866; _1975 = as_type(_1890); _1976 = _1869; } uint _1978; uint _1979; uint _1980; if (!_1898) { _1978 = 0u; _1979 = 0u; _1980 = 0u; } else { _1978 = _1975; _1979 = _1976; _1980 = _1974; } uint _1995 = ((0u + ((_696 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _2008 = uint4(cbuf_132.data[_1995 + 0u], cbuf_132.data[_1995 + 1u], cbuf_132.data[_1995 + 2u], cbuf_132.data[_1995 + 3u]); uint _2009 = _2008.x; uint _2010 = _2008.y; uint _2011 = _2008.z; float _2014 = fma(spvFMul(as_type(cbuf_128.data[1u + buf2_dword_off]), fma(as_type(cbuf_128.data[_611]), fma(-_1053, _1053, fma(_236, _1080, _232.y)), _1080)), fma(spvFMul(_1006, fma(-_1085, _1170, _1170)), _1222, spvFAdd(as_type(_1501), as_type(_1980))), spvFMul(spvFMul(as_type(cbuf_128.data[5u + buf2_dword_off]), as_type(cbuf_152.data[_1885])), fma(spvFMul(fma(fma(_1011, _1061, -spvFMul(_1085, _1089)), _1168, _1085), fma(_1006, _905.y, spvFMul(fma(as_type(_887), fma(-as_type(_888), _929.y, spvFMul(as_type(_889), _897.y)), spvFMul(as_type(_888), _929.y)), _1141))), _1222, as_type(_1868)))); float _2016 = fma(spvFMul(as_type(cbuf_128.data[0u + buf2_dword_off]), fma(as_type(cbuf_128.data[_611]), fma(-_1050, _1050, fma(_236, _1079, _232.x)), _1079)), fma(spvFMul(_1006, fma(-_1083, _1169, _1169)), _1220, spvFAdd(as_type(_1502), as_type(_1979))), spvFMul(_1890, fma(spvFMul(fma(fma(_1011, _1061, -spvFMul(_1083, _1089)), _1168, _1083), fma(_1006, _905.x, spvFMul(fma(as_type(_887), fma(-as_type(_888), _929.x, spvFMul(as_type(_889), _897.x)), spvFMul(as_type(_888), _929.x)), _1141))), _1220, as_type(_1869)))); uint _2017 = 8u + buf8_dword_off; uint _2023 = 10u + buf8_dword_off; float _2038 = fma(spvFMul(as_type(cbuf_128.data[2u + buf2_dword_off]), fma(as_type(cbuf_128.data[_611]), fma(-_1056, _1056, fma(_236, _1081, _232.z)), _1081)), fma(spvFMul(_1006, fma(-_1087, _1171, _1171)), _1224, spvFAdd(as_type(_1503), as_type(_1978))), spvFMul(spvFMul(as_type(cbuf_128.data[6u + buf2_dword_off]), as_type(cbuf_152.data[_1885])), fma(spvFMul(fma(fma(_1011, _1061, -spvFMul(_1087, _1089)), _1168, _1087), fma(_1006, _905.z, spvFMul(_1133, _1141))), _1224, as_type(_1867)))); float _2040 = spvFMul(_2014, as_type(_2010)); uint _2047 = 14u + buf8_dword_off; float _2054 = spvFMul(_2016, as_type(_2009)); float _2061 = spvFMul(_2038, as_type(_2011)); float _2089 = spvFAdd(-1.0, fma(_2061, 0.11448000371456146240234375, fma(_2054, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _2040)))); float _2093 = fma(as_type(cbuf_140.data[7u + buf8_dword_off]), _2089, 1.0); float _2112 = fast::clamp(spvFAdd(as_type(cbuf_140.data[_2017]), spvFMul(as_type(cbuf_140.data[_2017]), -exp2(-fma(as_type(cbuf_140.data[_2023]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_140.data[9u + buf8_dword_off]), as_type(cbuf_140.data[_2023])))))), 0.0, 1.0); float _2126 = fma(as_type(cbuf_140.data[19u + buf8_dword_off]), _2089, 1.0); float _2127 = fma(_2112, fma(-_2016, as_type(_2009), spvFMul(as_type(cbuf_140.data[4u + buf8_dword_off]), _2093)), _2054); float _2128 = fma(_2112, fma(-_2014, as_type(_2010), spvFMul(as_type(cbuf_140.data[5u + buf8_dword_off]), _2093)), _2040); float _2129 = fma(_2112, fma(-_2038, as_type(_2011), spvFMul(as_type(cbuf_140.data[6u + buf8_dword_off]), _2093)), _2061); float _2132 = fast::clamp(spvFMul(as_type(cbuf_140.data[12u + buf8_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_140.data[_2047]), spvFSub(as_type(cbuf_140.data[15u + buf8_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_140.data[13u + buf8_dword_off]), as_type(cbuf_140.data[_2047]))), 0.0, 1.0)), 0.0, 1.0); if (false) { discard_fragment(); } out.frag_color0.x = fma(_2132, fma(as_type(cbuf_140.data[16u + buf8_dword_off]), _2126, -_2127), _2127); out.frag_color0.y = fma(_2132, fma(as_type(cbuf_140.data[17u + buf8_dword_off]), _2126, -_2128), _2128); out.frag_color0.z = fma(_2132, fma(as_type(cbuf_140.data[18u + buf8_dword_off]), _2126, -_2129), _2129); out.frag_color0.w = spvFMul(fast::max(0.0, fast::min(1.0, fma(_795.w, in.fs_in_attr2.w, 0.800000011920928955078125))), as_type(_2008.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xab702c43 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4d1dd4a5 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[192]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(20)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint _197 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _207 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _212 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _216 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _223 = ((0u + ((_206 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _236 = uint4(cbuf_16.data[_223 + 0u], cbuf_16.data[_223 + 1u], cbuf_16.data[_223 + 2u], cbuf_16.data[_223 + 3u]); uint _244 = ((0u + ((_207 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _257 = uint4(cbuf_16.data[_244 + 0u], cbuf_16.data[_244 + 1u], cbuf_16.data[_244 + 2u], cbuf_16.data[_244 + 3u]); uint _265 = ((0u + ((_206 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _278 = uint4(cbuf_16.data[_265 + 0u], cbuf_16.data[_265 + 1u], cbuf_16.data[_265 + 2u], cbuf_16.data[_265 + 3u]); uint _286 = ((0u + ((_207 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _299 = uint4(cbuf_16.data[_286 + 0u], cbuf_16.data[_286 + 1u], cbuf_16.data[_286 + 2u], cbuf_16.data[_286 + 3u]); uint _307 = ((0u + (_206 * 16u)) + buf8_off) >> 2u; uint4 _320 = uint4(cbuf_16.data[_307 + 0u], cbuf_16.data[_307 + 1u], cbuf_16.data[_307 + 2u], cbuf_16.data[_307 + 3u]); uint _328 = ((0u + ((_212 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _341 = uint4(cbuf_16.data[_328 + 0u], cbuf_16.data[_328 + 1u], cbuf_16.data[_328 + 2u], cbuf_16.data[_328 + 3u]); uint _349 = ((0u + (_207 * 16u)) + buf8_off) >> 2u; uint4 _362 = uint4(cbuf_16.data[_349 + 0u], cbuf_16.data[_349 + 1u], cbuf_16.data[_349 + 2u], cbuf_16.data[_349 + 3u]); uint _370 = ((0u + ((_212 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _383 = uint4(cbuf_16.data[_370 + 0u], cbuf_16.data[_370 + 1u], cbuf_16.data[_370 + 2u], cbuf_16.data[_370 + 3u]); uint _391 = ((0u + ((_216 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _404 = uint4(cbuf_16.data[_391 + 0u], cbuf_16.data[_391 + 1u], cbuf_16.data[_391 + 2u], cbuf_16.data[_391 + 3u]); uint _412 = ((0u + (_212 * 16u)) + buf8_off) >> 2u; uint4 _425 = uint4(cbuf_16.data[_412 + 0u], cbuf_16.data[_412 + 1u], cbuf_16.data[_412 + 2u], cbuf_16.data[_412 + 3u]); uint _433 = ((0u + ((_216 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _446 = uint4(cbuf_16.data[_433 + 0u], cbuf_16.data[_433 + 1u], cbuf_16.data[_433 + 2u], cbuf_16.data[_433 + 3u]); uint _454 = ((0u + (_216 * 16u)) + buf8_off) >> 2u; uint4 _467 = uint4(cbuf_16.data[_454 + 0u], cbuf_16.data[_454 + 1u], cbuf_16.data[_454 + 2u], cbuf_16.data[_454 + 3u]); float _479 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _480 = spvFMul(in.vs_in_attr4.y, _479); float _481 = spvFMul(in.vs_in_attr4.x, _479); float _486 = spvFMul(in.vs_in_attr4.z, _479); float _565 = spvFMul(in.vs_in_attr4.w, _479); float _607 = fma(as_type(_404.z), _565, fma(as_type(_341.z), _486, fma(as_type(_257.z), _481, spvFMul(_480, as_type(_236.z))))); float _629 = fma(as_type(_446.z), _565, fma(as_type(_383.z), _486, fma(as_type(_299.z), _481, spvFMul(_480, as_type(_278.z))))); float _633 = fma(as_type(_404.y), _565, fma(as_type(_341.y), _486, fma(as_type(_257.y), _481, spvFMul(_480, as_type(_236.y))))); float _642 = fma(as_type(_467.z), _565, fma(as_type(_425.z), _486, fma(as_type(_362.z), _481, spvFMul(_480, as_type(_320.z))))); float _646 = fma(as_type(_446.y), _565, fma(as_type(_383.y), _486, fma(as_type(_299.y), _481, spvFMul(_480, as_type(_278.y))))); float _648 = fma(as_type(_404.x), _565, fma(as_type(_341.x), _486, fma(as_type(_257.x), _481, spvFMul(_480, as_type(_236.x))))); float _654 = fma(as_type(_467.y), _565, fma(as_type(_425.y), _486, fma(as_type(_362.y), _481, spvFMul(_480, as_type(_320.y))))); float _656 = fma(as_type(_446.x), _565, fma(as_type(_383.x), _486, fma(as_type(_299.x), _481, spvFMul(_480, as_type(_278.x))))); float _659 = fma(_648, in.vs_in_attr0.x, fma(_633, in.vs_in_attr0.y, fma(_607, in.vs_in_attr0.z, fma(as_type(_404.w), _565, fma(as_type(_341.w), _486, fma(as_type(_257.w), _481, spvFMul(_480, as_type(_236.w)))))))); float _661 = fma(as_type(_467.x), _565, fma(as_type(_425.x), _486, fma(as_type(_362.x), _481, spvFMul(_480, as_type(_320.x))))); float _663 = fma(_656, in.vs_in_attr0.x, fma(_646, in.vs_in_attr0.y, fma(_629, in.vs_in_attr0.z, fma(as_type(_446.w), _565, fma(as_type(_383.w), _486, fma(as_type(_299.w), _481, spvFMul(_480, as_type(_278.w)))))))); float _665 = spvFSub(_659, as_type(cbuf_20.data[191u + buf9_dword_off])); float _666 = fma(_661, in.vs_in_attr0.x, fma(_654, in.vs_in_attr0.y, fma(_642, in.vs_in_attr0.z, fma(as_type(_467.w), _565, fma(as_type(_425.w), _486, fma(as_type(_362.w), _481, spvFMul(_480, as_type(_320.w)))))))); float _668 = spvFSub(_663, as_type(cbuf_20.data[187u + buf9_dword_off])); float _682 = spvFSub(_666, as_type(cbuf_20.data[183u + buf9_dword_off])); float _692 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _665, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _694 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _665, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _696 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _665, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _698 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _665, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _692; out.gl_Position.y = _694; out.gl_Position.z = _696; out.gl_Position.w = _698; out.out_attr5.x = _692; out.out_attr5.y = _694; out.out_attr5.z = _696; out.out_attr5.w = _698; float _821 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _824 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _827 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _829 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _853 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _854 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_661, _854, fma(_654, _829, spvFMul(_824, _642))); out.out_attr0.y = fma(_656, _854, fma(_646, _829, spvFMul(_824, _629))); out.out_attr0.z = fma(_648, _854, fma(_633, _829, spvFMul(_824, _607))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_661, _853, fma(_654, _827, spvFMul(_821, _642))); out.out_attr1.y = fma(_656, _853, fma(_646, _827, spvFMul(_821, _629))); out.out_attr1.z = fma(_648, _853, fma(_633, _827, spvFMul(_821, _607))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[85u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[86u + buf9_dword_off]), _659, as_type(cbuf_20.data[87u + buf9_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[89u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[90u + buf9_dword_off]), _659, as_type(cbuf_20.data[91u + buf9_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[93u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[94u + buf9_dword_off]), _659, as_type(cbuf_20.data[95u + buf9_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[97u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[98u + buf9_dword_off]), _659, as_type(cbuf_20.data[99u + buf9_dword_off])))); out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf11_dword_off]), _666); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf11_dword_off]), _663); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf11_dword_off]), _659); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[72]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_52 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_56 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_48 [[buffer(15)]], texture2d fs_img124 [[texture(0)]], texture2d fs_img84 [[texture(1)]], texture2d fs_img76 [[texture(2)]], texture2d fs_img132 [[texture(3)]], texture2d fs_img68 [[texture(4)]], texture2d fs_img116 [[texture(5)]], depth2d fs_img108 [[texture(6)]], texturecube fs_img100 [[texture(7)]], texture2d fs_img140 [[texture(8)]], texturecube fs_img92 [[texture(9)]], texture2d fs_img60 [[texture(10)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf1_dword_off = buf1_off >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _163 = uint(gl_FrontFacing); float _191 = 1.0 / in.fs_in_attr5.w; float _196 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _205 = spvFMul(in.fs_in_attr5.x, _191); float _206 = spvFMul(in.fs_in_attr5.y, _191); float4 _211 = fs_img124.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _215 = _211.w; float _216 = spvFMul(in.fs_in_attr0.x, _196); float _217 = spvFMul(in.fs_in_attr0.y, _196); float _219 = spvFMul(in.fs_in_attr0.z, _196); float _221 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _222 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _223 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _225 = fma(0.5, _205, 0.5); float _227 = fma(-0.5, _206, 0.5); bool _228 = 0u == _163; uint _233; if (_228) { _233 = as_type(fast::max(-_216, -_216)); } else { _233 = _163; } uint _242; uint _243; if (_228) { _242 = as_type(fast::max(-_219, -_219)); _243 = as_type(fast::max(-_217, -_217)); } else { _242 = as_type(_217); _243 = as_type(_219); } uint _246; uint _247; uint _248; if (!_228) { _246 = as_type(_216); _247 = _242; _248 = _243; } else { _246 = _233; _247 = _243; _248 = _242; } float _340 = spvFMul(in.fs_in_attr5.z, _191); float4 _345 = fs_img84.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[14u + buf0_dword_off])), fma(as_type(cbuf_32.data[13u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[15u + buf0_dword_off])))); float _375 = 1.0 / fma(as_type(cbuf_52.data[48u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[49u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[50u + buf1_dword_off]), _340, as_type(cbuf_52.data[51u + buf1_dword_off])))); float _376 = spvFMul(fma(as_type(cbuf_52.data[44u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[45u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[46u + buf1_dword_off]), _340, as_type(cbuf_52.data[47u + buf1_dword_off])))), _375); uint _409 = ((((as_type((as_type(cbuf_52.data[176u + buf1_dword_off]) < _376) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_376 > as_type(cbuf_52.data[177u + buf1_dword_off]))) + uint(abs(int(0u)))) + uint(_376 > as_type(cbuf_52.data[178u + buf1_dword_off]))) << 2u; float4 _428 = fs_img76.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[10u + buf0_dword_off])), fma(as_type(cbuf_32.data[9u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[11u + buf0_dword_off])))); float _429 = _428.x; float4 _434 = fs_img132.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _436 = _434.y; uint _440 = ((0u + ((_409 + 28u) * 16u)) + buf1_off) >> 2u; uint4 _453 = uint4(cbuf_52.data[_440 + 0u], cbuf_52.data[_440 + 1u], cbuf_52.data[_440 + 2u], cbuf_52.data[_440 + 3u]); uint _461 = ((0u + ((_409 + 29u) * 16u)) + buf1_off) >> 2u; uint4 _474 = uint4(cbuf_52.data[_461 + 0u], cbuf_52.data[_461 + 1u], cbuf_52.data[_461 + 2u], cbuf_52.data[_461 + 3u]); uint _482 = ((0u + ((_409 + 31u) * 16u)) + buf1_off) >> 2u; uint4 _495 = uint4(cbuf_52.data[_482 + 0u], cbuf_52.data[_482 + 1u], cbuf_52.data[_482 + 2u], cbuf_52.data[_482 + 3u]); uint _503 = ((0u + ((_409 + 30u) * 16u)) + buf1_off) >> 2u; uint4 _516 = uint4(cbuf_52.data[_503 + 0u], cbuf_52.data[_503 + 1u], cbuf_52.data[_503 + 2u], cbuf_52.data[_503 + 3u]); float _525 = fma(2.0, _345.y, -1.0); float _526 = spvFMul(fma(2.0, _345.x, -1.0), fma(2.0, _345.w, -1.0)); float _537 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _539 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_526, _526), spvFMul(_525, _525)), 0.0, 1.0))); float _541 = rsqrt(fma(_221, _221, fma(_222, _222, spvFMul(_223, _223)))); float _556 = fma(spvFMul(_223, _541), _526, fma(spvFMul(in.fs_in_attr1.z, _537), _525, spvFMul(as_type(_248), _539))); float _578 = fma(spvFMul(_222, _541), _526, fma(spvFMul(in.fs_in_attr1.y, _537), _525, spvFMul(as_type(_247), _539))); float _583 = fma(spvFMul(_221, _541), _526, fma(spvFMul(in.fs_in_attr1.x, _537), _525, spvFMul(as_type(_246), _539))); uint _590 = 24u + buf2_dword_off; float _593 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _594 = rsqrt(fma(_583, _583, fma(_578, _578, spvFMul(_556, _556)))); uint _599 = 73u + buf1_dword_off; uint _603 = 74u + buf1_dword_off; uint _607 = 75u + buf1_dword_off; float _610 = spvFMul(in.fs_in_attr6.z, _593); float _611 = spvFMul(_556, _594); float _612 = spvFMul(in.fs_in_attr6.y, _593); float _613 = spvFMul(_578, _594); float _615 = spvFMul(in.fs_in_attr6.x, _593); float _616 = spvFMul(_583, _594); float _636 = fma(_616, _615, fma(_613, _612, spvFMul(_610, _611))); float4 _652 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf0_dword_off])), fma(as_type(cbuf_32.data[5u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf0_dword_off])))); float _653 = _652.x; float _654 = _652.y; float _655 = _652.z; float _657 = spvFMul(fast::max(_636, _636), 2.0); uint _663 = uint(in.fs_in_attr0.w) * 13u; float _667 = fma(as_type(_453.x), _205, fma(as_type(_453.y), _206, fma(as_type(_453.z), _340, as_type(_453.w)))); float _669 = fma(as_type(_474.x), _205, fma(as_type(_474.y), _206, fma(as_type(_474.z), _340, as_type(_474.w)))); float _671 = fma(as_type(_495.x), _205, fma(as_type(_495.y), _206, fma(as_type(_495.z), _340, as_type(_495.w)))); float _684 = spvFMul(fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _429, _434.x), _429), _429), spvFMul(as_type(cbuf_36.data[8u + buf2_dword_off]), 0.00390625)); float _693 = 1.0 / _671; float _700 = spvFMul(13.0, _684); float _702 = fma(-in.fs_in_attr6.x, _593, spvFMul(_616, _657)); float _704 = fma(-in.fs_in_attr6.y, _593, spvFMul(_613, _657)); float _706 = fma(-in.fs_in_attr6.z, _593, spvFMul(_611, _657)); float _713 = spvFMul(fma(as_type(_516.x), _205, fma(as_type(_516.y), _206, fma(as_type(_516.z), _340, as_type(_516.w)))), _693); float _742 = 1.0 / abs(1.0); float _758 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_700, _700), 0.5))); float _760 = fma(_704, _742, 1.5); float _761 = fma(_702, _742, 1.5); uint _767 = ((0u + ((_663 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _780 = uint4(cbuf_40.data[_767 + 0u], cbuf_40.data[_767 + 1u], cbuf_40.data[_767 + 2u], cbuf_40.data[_767 + 3u]); uint _788 = ((0u + ((_663 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _801 = uint4(cbuf_40.data[_788 + 0u], cbuf_40.data[_788 + 1u], cbuf_40.data[_788 + 2u], cbuf_40.data[_788 + 3u]); uint _809 = ((0u + ((_663 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _822 = uint4(cbuf_40.data[_809 + 0u], cbuf_40.data[_809 + 1u], cbuf_40.data[_809 + 2u], cbuf_40.data[_809 + 3u]); uint _837 = ((0u + ((_663 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _850 = uint4(cbuf_40.data[_837 + 0u], cbuf_40.data[_837 + 1u], cbuf_40.data[_837 + 2u], cbuf_40.data[_837 + 3u]); uint _851 = _850.x; uint _852 = _850.y; uint _853 = _850.z; uint _854 = _850.w; float4 _861 = fs_img100.sample(fs_samp20, float3(spvFSub(_761, 1.5), spvFSub(_760, 1.5), _706), level(_758)); float4 _869 = fs_img140.sample(fs_samp24, float2(_225, _227), level(_758)); uint _877 = ((0u + ((_663 + 12u) * 16u)) + buf3_off) >> 2u; float4 _899 = fs_img92.sample(fs_samp20, float3(spvFSub(_761, 1.5), spvFSub(_760, 1.5), _706), level(_758)); float4 _907 = fs_img60.sample(fs_samp4, float2(fma(as_type(cbuf_32.data[0u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[2u + buf0_dword_off])), fma(as_type(cbuf_32.data[1u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[3u + buf0_dword_off])))); float _908 = _907.x; float _909 = _907.y; float _910 = _907.z; uint _912 = 12u + buf2_dword_off; float _934 = spvFMul(fma(as_type(cbuf_52.data[40u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[41u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[42u + buf1_dword_off]), _340, as_type(cbuf_52.data[43u + buf1_dword_off])))), _375); uint _936 = 0u + buf4_dword_off; uint _939 = 1u + buf4_dword_off; uint _942 = 2u + buf4_dword_off; uint _945 = 3u + buf4_dword_off; uint _948 = 4u + buf4_dword_off; uint _951 = 5u + buf4_dword_off; uint _954 = 6u + buf4_dword_off; uint _957 = 7u + buf4_dword_off; float _960 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _961 = spvFMul(fma(as_type(cbuf_52.data[36u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[37u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[38u + buf1_dword_off]), _340, as_type(cbuf_52.data[39u + buf1_dword_off])))), _375); bool _980 = (_655 == 0.0) && (_654 == 0.0); float _997 = fma(fma(as_type(cbuf_36.data[_912]), fs_img116.sample(fs_samp20, float2(_225, _227)).x, 1.0), _960, -spvFMul(as_type(cbuf_36.data[_912]), _960)); float _998 = spvFAdd(_636, _997); float _1000 = fast::clamp(spvFAdd(fma(_702, as_type(_246), fma(_704, as_type(_247), spvFMul(as_type(_248), _706))), 1.0), 0.0, 1.0); float _1001 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_636, _636), 0.0, 1.0))))); float _1004 = _980 ? _653 : _655; float _1005 = _980 ? _653 : _654; float _1006 = spvFMul(_436, _436); float _1061 = fast::clamp(spvFAdd(fma(_998, _998, _997), -1.0), 0.0, 1.0); float _1078 = spvFMul(as_type(cbuf_40.data[_877]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_52.data[72u + buf1_dword_off]), as_type(cbuf_52.data[_599])), -spvFMul(as_type(cbuf_52.data[_599]), sqrt(fma(_961, _961, fma(_934, _934, spvFMul(_376, _376)))))), 0.0, 1.0)); float _1080 = spvFMul(as_type(cbuf_44.data[_954]), _611); float _1082 = fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _653, _1006), _653), _653); float _1084 = fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _1005, _1006), _1005), _1005); float _1086 = fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _1004, _1006), _1004), _1004); float _1087 = spvFMul(_1001, _1061); float _1110 = spvFSub(1.0, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_671, as_type(cbuf_52.data[_607]), _667), _693), spvFMul(fma(as_type(cbuf_52.data[_603]), _671, _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_671, as_type(cbuf_52.data[_603]), _667), _693), spvFMul(fma(-_671, as_type(cbuf_52.data[_607]), _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_671, as_type(cbuf_52.data[_603]), _667), _693), spvFMul(fma(_671, as_type(cbuf_52.data[_607]), _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_671, as_type(cbuf_52.data[_607]), _667), _693), spvFMul(fma(-_671, as_type(cbuf_52.data[_603]), _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1118 = spvFMul(as_type(cbuf_44.data[_942]), _611); float _1139 = spvFMul(_997, spvFMul(spvFMul(_1000, _1000), spvFSub(1.0, _869.w))); float _1142 = fma(-_1110, spvFMul(as_type(cbuf_52.data[76u + buf1_dword_off]), _1078), as_type(cbuf_40.data[_877])); float _1145 = fma(-_1110, spvFMul(as_type(cbuf_52.data[77u + buf1_dword_off]), _1078), as_type(cbuf_40.data[_877])); float _1148 = fma(-_1110, spvFMul(as_type(cbuf_52.data[78u + buf1_dword_off]), _1078), as_type(cbuf_40.data[_877])); float _1153 = fast::clamp(fma(as_type(cbuf_44.data[_948]), _616, fma(as_type(cbuf_44.data[_951]), _613, _1080)), 0.0, 1.0); float _1163 = spvFMul(_684, _684); float _1164 = fast::max(0.0, spvFAdd(as_type(_780.w), fma(_611, as_type(_780.z), fma(_616, as_type(_780.x), spvFMul(_613, as_type(_780.y)))))); float _1165 = fast::max(0.0, spvFAdd(as_type(_801.w), fma(_611, as_type(_801.z), fma(_616, as_type(_801.x), spvFMul(_613, as_type(_801.y)))))); float _1166 = fast::max(0.0, spvFAdd(as_type(_822.w), fma(_611, as_type(_822.z), fma(_616, as_type(_822.x), spvFMul(_613, as_type(_822.y)))))); float _1175 = fast::clamp(fma(as_type(cbuf_44.data[_936]), _616, fma(as_type(cbuf_44.data[_939]), _613, _1118)), 0.0, 1.0); uint _1227 = 64u + buf4_dword_off; uint _1231 = 65u + buf4_dword_off; float _1248 = spvFMul(as_type(cbuf_40.data[_877]), fma(as_type(_854), spvFAdd(-1.0, _1142), 1.0)); float _1250 = spvFMul(as_type(cbuf_40.data[_877]), fma(as_type(_854), spvFAdd(-1.0, _1145), 1.0)); float _1252 = spvFMul(as_type(cbuf_40.data[_877]), fma(as_type(_854), spvFAdd(-1.0, _1148), 1.0)); float _1253 = fma(spvFMul(as_type(cbuf_44.data[16u + buf4_dword_off]), _1142), fma(-_1082, _1175, _1175), spvFMul(as_type(cbuf_44.data[20u + buf4_dword_off]), fma(-_1082, _1153, _1153))); float _1255 = fma(spvFMul(as_type(cbuf_44.data[17u + buf4_dword_off]), _1145), fma(-_1084, _1175, _1175), spvFMul(as_type(cbuf_44.data[21u + buf4_dword_off]), fma(-_1084, _1153, _1153))); float _1257 = fma(spvFMul(as_type(cbuf_44.data[18u + buf4_dword_off]), _1148), fma(-_1086, _1175, _1175), spvFMul(as_type(cbuf_44.data[22u + buf4_dword_off]), fma(-_1086, _1153, _1153))); uint _1304; uint _1305; uint _1306; if (cbuf_44.data[_1227] > 0u) { float _1286 = fma(0.5, fma(as_type(cbuf_44.data[8u + buf4_dword_off]), _616, fma(as_type(cbuf_44.data[9u + buf4_dword_off]), _613, spvFMul(as_type(cbuf_44.data[10u + buf4_dword_off]), _611))), 0.5); float _1288 = fast::clamp(spvFMul(_1286, _1286), 0.0, 1.0); _1304 = as_type(fma(as_type(cbuf_44.data[26u + buf4_dword_off]), fma(-_1086, _1288, _1288), _1257)); _1305 = as_type(fma(as_type(cbuf_44.data[25u + buf4_dword_off]), fma(-_1084, _1288, _1288), _1255)); _1306 = as_type(fma(as_type(cbuf_44.data[24u + buf4_dword_off]), fma(-_1082, _1288, _1288), _1253)); } else { _1304 = as_type(_1257); _1305 = as_type(_1255); _1306 = as_type(_1253); } uint _1353; uint _1354; uint _1355; if (cbuf_44.data[_1231] > 0u) { float _1332 = fma(0.5, fma(as_type(cbuf_44.data[12u + buf4_dword_off]), _616, fma(as_type(cbuf_44.data[13u + buf4_dword_off]), _613, spvFMul(as_type(cbuf_44.data[14u + buf4_dword_off]), _611))), 0.5); float _1334 = fast::clamp(spvFMul(_1332, _1332), 0.0, 1.0); _1353 = as_type(fma(as_type(cbuf_44.data[30u + buf4_dword_off]), fma(-_1086, _1334, _1334), as_type(_1304))); _1354 = as_type(fma(as_type(cbuf_44.data[29u + buf4_dword_off]), fma(-_1084, _1334, _1334), as_type(_1305))); _1355 = as_type(fma(as_type(cbuf_44.data[28u + buf4_dword_off]), fma(-_1082, _1334, _1334), as_type(_1306))); } else { _1353 = _1304; _1354 = _1305; _1355 = _1306; } float _1357 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[_954])); float _1359 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[_942])); float _1361 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[_951])); float _1364 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[_939])); float _1367 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[_948])); float _1370 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[_936])); float _1374 = rsqrt(fma(_1367, _1367, fma(_1361, _1361, spvFMul(_1357, _1357)))); float _1375 = rsqrt(fma(_1370, _1370, fma(_1364, _1364, spvFMul(_1359, _1359)))); float _1376 = spvFMul(_1357, _1374); float _1377 = exp2(_700); float _1378 = spvFMul(_1359, _1375); float _1379 = spvFMul(_1361, _1374); float _1402 = spvFMul(_1364, _1375); float _1403 = spvFMul(_1367, _1374); float _1410 = spvFMul(_1370, _1375); float _1434 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_957]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_957])))); float _1440 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_945]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_945])))); float _1446 = fma(_1434, 0.125, 0.25); float _1458 = exp2(spvFMul(_1434, log2(fast::clamp(fma(_1403, _616, fma(_1379, _613, spvFMul(_611, _1376))), 0.0, 1.0)))); float _1460 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1403, fma(_612, _1379, spvFMul(_610, _1376))), 0.0, 1.0))))); float _1461 = fma(0.125, _1440, 0.25); float _1470 = exp2(spvFMul(_1440, log2(fast::clamp(fma(_1410, _616, fma(_1402, _613, spvFMul(_611, _1378))), 0.0, 1.0)))); float _1471 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1410, fma(_612, _1402, spvFMul(_610, _1378))), 0.0, 1.0))))); float _1477 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_948]), _616, fma(as_type(cbuf_44.data[_951]), _613, _1080)), 16.0), 0.0, 1.0); float _1494 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_936]), _616, fma(as_type(cbuf_44.data[_939]), _613, _1118)), 16.0), 0.0, 1.0); float _1513 = fma(spvFMul(_1494, spvFMul(_1470, spvFMul(spvFMul(as_type(cbuf_44.data[32u + buf4_dword_off]), _1142), _1461))), fma(-_1082, _1471, spvFAdd(_1082, _1471)), spvFMul(fma(-_1082, _1460, spvFAdd(_1082, _1460)), spvFMul(_1477, spvFMul(_1458, spvFMul(as_type(cbuf_44.data[36u + buf4_dword_off]), _1446))))); float _1515 = fma(spvFMul(_1494, spvFMul(_1470, spvFMul(spvFMul(as_type(cbuf_44.data[33u + buf4_dword_off]), _1145), _1461))), fma(-_1084, _1471, spvFAdd(_1084, _1471)), spvFMul(fma(-_1084, _1460, spvFAdd(_1084, _1460)), spvFMul(_1477, spvFMul(_1458, spvFMul(as_type(cbuf_44.data[37u + buf4_dword_off]), _1446))))); float _1517 = fma(spvFMul(_1494, spvFMul(_1470, spvFMul(spvFMul(as_type(cbuf_44.data[34u + buf4_dword_off]), _1148), _1461))), fma(-_1086, _1471, spvFAdd(_1086, _1471)), spvFMul(fma(-_1086, _1460, spvFAdd(_1086, _1460)), spvFMul(_1477, spvFMul(_1458, spvFMul(as_type(cbuf_44.data[38u + buf4_dword_off]), _1446))))); uint _1607; uint _1608; uint _1609; if (cbuf_44.data[_1227] > 0u) { uint _1535 = 11u + buf4_dword_off; float _1548 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[8u + buf4_dword_off])); float _1550 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[9u + buf4_dword_off])); float _1552 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[10u + buf4_dword_off])); float _1556 = rsqrt(fma(_1548, _1548, fma(_1550, _1550, spvFMul(_1552, _1552)))); float _1557 = spvFMul(_1548, _1556); float _1558 = spvFMul(_1550, _1556); float _1559 = spvFMul(_1552, _1556); float _1570 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1535]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_1535])))); float _1573 = exp2(spvFMul(_1570, log2(fast::clamp(fma(_1557, _616, fma(_1558, _613, spvFMul(_611, _1559))), 0.0, 1.0)))); float _1581 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1557, fma(_612, _1558, spvFMul(_610, _1559))), 0.0, 1.0))))); float _1591 = fma(0.125, _1570, 0.25); _1607 = as_type(fma(spvFMul(_1573, spvFMul(as_type(cbuf_44.data[42u + buf4_dword_off]), _1591)), fma(-_1086, _1581, spvFAdd(_1086, _1581)), _1517)); _1608 = as_type(fma(spvFMul(_1573, spvFMul(as_type(cbuf_44.data[41u + buf4_dword_off]), _1591)), fma(-_1084, _1581, spvFAdd(_1084, _1581)), _1515)); _1609 = as_type(fma(spvFMul(_1573, spvFMul(as_type(cbuf_44.data[40u + buf4_dword_off]), _1591)), fma(-_1082, _1581, spvFAdd(_1082, _1581)), _1513)); } else { _1607 = as_type(_1517); _1608 = as_type(_1515); _1609 = as_type(_1513); } uint _1695; uint _1696; uint _1697; if (cbuf_44.data[_1231] > 0u) { uint _1620 = 15u + buf4_dword_off; float _1633 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[12u + buf4_dword_off])); float _1635 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[13u + buf4_dword_off])); float _1637 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[14u + buf4_dword_off])); float _1641 = rsqrt(fma(_1633, _1633, fma(_1635, _1635, spvFMul(_1637, _1637)))); float _1642 = spvFMul(_1633, _1641); float _1643 = spvFMul(_1635, _1641); float _1644 = spvFMul(_1637, _1641); float _1655 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1620]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_1620])))); float _1658 = exp2(spvFMul(_1655, log2(fast::clamp(fma(_1642, _616, fma(_1643, _613, spvFMul(_611, _1644))), 0.0, 1.0)))); float _1666 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1642, fma(_612, _1643, spvFMul(_610, _1644))), 0.0, 1.0))))); float _1676 = fma(0.125, _1655, 0.25); _1695 = as_type(fma(spvFMul(_1658, spvFMul(as_type(cbuf_44.data[46u + buf4_dword_off]), _1676)), fma(-_1086, _1666, spvFAdd(_1086, _1666)), as_type(_1607))); _1696 = as_type(fma(spvFMul(_1658, spvFMul(as_type(cbuf_44.data[44u + buf4_dword_off]), _1676)), fma(-_1082, _1666, spvFAdd(_1082, _1666)), as_type(_1609))); _1697 = as_type(fma(spvFMul(_1658, spvFMul(as_type(cbuf_44.data[45u + buf4_dword_off]), _1676)), fma(-_1084, _1666, spvFAdd(_1084, _1666)), as_type(_1608))); } else { _1695 = _1607; _1696 = _1609; _1697 = _1608; } uint _1717 = ((0u + ((_663 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _1730 = uint4(cbuf_40.data[_1717 + 0u], cbuf_40.data[_1717 + 1u], cbuf_40.data[_1717 + 2u], cbuf_40.data[_1717 + 3u]); uint _1731 = _1730.x; uint _1732 = _1730.y; uint _1733 = _1730.z; uint _1735 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); uint _1738 = 8u + buf6_dword_off; uint _1744 = 10u + buf6_dword_off; float _1758 = fma(spvFMul(as_type(cbuf_36.data[1u + buf2_dword_off]), fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _909, _211.y), _909), _909)), fma(spvFMul(_997, fma(-_1084, _1165, _1165)), _1250, as_type(_1354)), spvFMul(fma(spvFMul(fma(fma(_1001, _1061, -spvFMul(_1084, _1087)), _1163, _1084), fma(_997, _869.y, spvFMul(fma(as_type(_851), fma(-as_type(_852), _899.y, spvFMul(as_type(_853), _861.y)), spvFMul(as_type(_852), _899.y)), _1139))), _1250, as_type(_1697)), spvFMul(as_type(cbuf_36.data[5u + buf2_dword_off]), as_type(cbuf_56.data[_1735])))); float _1772 = fma(spvFMul(as_type(cbuf_36.data[0u + buf2_dword_off]), fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _908, _211.x), _908), _908)), fma(spvFMul(_997, fma(-_1082, _1164, _1164)), _1248, as_type(_1355)), spvFMul(fma(spvFMul(fma(fma(_1001, _1061, -spvFMul(_1082, _1087)), _1163, _1082), fma(_997, _869.x, spvFMul(fma(as_type(_851), fma(-as_type(_852), _899.x, spvFMul(as_type(_853), _861.x)), spvFMul(as_type(_852), _899.x)), _1139))), _1248, as_type(_1696)), spvFMul(as_type(cbuf_36.data[4u + buf2_dword_off]), as_type(cbuf_56.data[_1735])))); float _1773 = fma(spvFMul(as_type(cbuf_36.data[2u + buf2_dword_off]), fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _910, _211.z), _910), _910)), fma(spvFMul(_997, fma(-_1086, _1166, _1166)), _1252, as_type(_1353)), spvFMul(fma(spvFMul(fma(fma(_1001, _1061, -spvFMul(_1086, _1087)), _1163, _1086), fma(_997, _869.z, spvFMul(fma(as_type(_851), fma(-as_type(_852), _899.z, spvFMul(as_type(_853), _861.z)), spvFMul(as_type(_852), _899.z)), _1139))), _1252, as_type(_1695)), spvFMul(as_type(cbuf_36.data[6u + buf2_dword_off]), as_type(cbuf_56.data[_1735])))); float _1775 = spvFMul(_1758, as_type(_1732)); uint _1782 = 14u + buf6_dword_off; float _1789 = spvFMul(_1772, as_type(_1731)); float _1796 = spvFMul(_1773, as_type(_1733)); float _1824 = spvFAdd(-1.0, fma(_1796, 0.11448000371456146240234375, fma(_1789, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1775)))); float _1828 = fma(as_type(cbuf_48.data[7u + buf6_dword_off]), _1824, 1.0); float _1847 = fast::clamp(spvFAdd(as_type(cbuf_48.data[_1738]), spvFMul(as_type(cbuf_48.data[_1738]), -exp2(-fma(as_type(cbuf_48.data[_1744]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_48.data[9u + buf6_dword_off]), as_type(cbuf_48.data[_1744])))))), 0.0, 1.0); float _1861 = fma(as_type(cbuf_48.data[19u + buf6_dword_off]), _1824, 1.0); float _1862 = fma(_1847, fma(-_1772, as_type(_1731), spvFMul(as_type(cbuf_48.data[4u + buf6_dword_off]), _1828)), _1789); float _1863 = fma(_1847, fma(-_1758, as_type(_1732), spvFMul(as_type(cbuf_48.data[5u + buf6_dword_off]), _1828)), _1775); float _1864 = fma(_1847, fma(-_1773, as_type(_1733), spvFMul(as_type(cbuf_48.data[6u + buf6_dword_off]), _1828)), _1796); float _1867 = fast::clamp(spvFMul(as_type(cbuf_48.data[12u + buf6_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_48.data[_1782]), spvFSub(as_type(cbuf_48.data[15u + buf6_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_48.data[13u + buf6_dword_off]), as_type(cbuf_48.data[_1782]))), 0.0, 1.0)), 0.0, 1.0); if (false) { discard_fragment(); } out.frag_color0.x = fma(_1867, fma(as_type(cbuf_48.data[16u + buf6_dword_off]), _1861, -_1862), _1862); out.frag_color0.y = fma(_1867, fma(as_type(cbuf_48.data[17u + buf6_dword_off]), _1861, -_1863), _1863); out.frag_color0.z = fma(_1867, fma(as_type(cbuf_48.data[18u + buf6_dword_off]), _1861, -_1864), _1864); out.frag_color0.w = spvFMul(spvFMul(_907.w, in.fs_in_attr2.w), as_type(_1730.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8634b077 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb30dd24a [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[576]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_28 [[buffer(18)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(19)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(20)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(21)]]) { main0_out out = {}; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint _156 = as_type(as_type(in.vs_in_attr3.x)); uint _160 = as_type(as_type(in.vs_in_attr3.y)); uint _164 = as_type(as_type(in.vs_in_attr3.z)); uint _168 = as_type(as_type(in.vs_in_attr3.w)); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _292 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _293 = spvFMul(in.vs_in_attr4.x, _292); float _294 = spvFMul(in.vs_in_attr4.y, _292); float _295 = spvFMul(in.vs_in_attr4.z, _292); float _296 = spvFMul(in.vs_in_attr4.w, _292); uint _297 = _156 * 3u; uint _300 = _160 * 3u; uint _303 = _164 * 3u; uint _308 = ((0u + (_297 * 16u)) + buf9_off) >> 2u; uint4 _321 = uint4(cbuf_28.data[_308 + 0u], cbuf_28.data[_308 + 1u], cbuf_28.data[_308 + 2u], cbuf_28.data[_308 + 3u]); uint _329 = ((0u + ((_297 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _342 = uint4(cbuf_28.data[_329 + 0u], cbuf_28.data[_329 + 1u], cbuf_28.data[_329 + 2u], cbuf_28.data[_329 + 3u]); uint _350 = ((0u + ((_297 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _363 = uint4(cbuf_28.data[_350 + 0u], cbuf_28.data[_350 + 1u], cbuf_28.data[_350 + 2u], cbuf_28.data[_350 + 3u]); uint _371 = ((0u + (_300 * 16u)) + buf9_off) >> 2u; uint4 _384 = uint4(cbuf_28.data[_371 + 0u], cbuf_28.data[_371 + 1u], cbuf_28.data[_371 + 2u], cbuf_28.data[_371 + 3u]); uint _392 = ((0u + ((_300 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _405 = uint4(cbuf_28.data[_392 + 0u], cbuf_28.data[_392 + 1u], cbuf_28.data[_392 + 2u], cbuf_28.data[_392 + 3u]); uint _413 = ((0u + ((_300 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _426 = uint4(cbuf_28.data[_413 + 0u], cbuf_28.data[_413 + 1u], cbuf_28.data[_413 + 2u], cbuf_28.data[_413 + 3u]); uint _434 = ((0u + (_303 * 16u)) + buf9_off) >> 2u; uint4 _447 = uint4(cbuf_28.data[_434 + 0u], cbuf_28.data[_434 + 1u], cbuf_28.data[_434 + 2u], cbuf_28.data[_434 + 3u]); uint _455 = ((0u + ((_303 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _468 = uint4(cbuf_28.data[_455 + 0u], cbuf_28.data[_455 + 1u], cbuf_28.data[_455 + 2u], cbuf_28.data[_455 + 3u]); uint _538 = _168 * 3u; uint _542 = (cbuf_12.data[_206] + _156) * 3u; uint _546 = (cbuf_12.data[_206] + _160) * 3u; uint _550 = ((0u + ((_303 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _563 = uint4(cbuf_28.data[_550 + 0u], cbuf_28.data[_550 + 1u], cbuf_28.data[_550 + 2u], cbuf_28.data[_550 + 3u]); uint _571 = ((0u + (_538 * 16u)) + buf9_off) >> 2u; uint4 _584 = uint4(cbuf_28.data[_571 + 0u], cbuf_28.data[_571 + 1u], cbuf_28.data[_571 + 2u], cbuf_28.data[_571 + 3u]); uint _592 = ((0u + ((_538 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _605 = uint4(cbuf_28.data[_592 + 0u], cbuf_28.data[_592 + 1u], cbuf_28.data[_592 + 2u], cbuf_28.data[_592 + 3u]); uint _613 = ((0u + ((_538 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _626 = uint4(cbuf_28.data[_613 + 0u], cbuf_28.data[_613 + 1u], cbuf_28.data[_613 + 2u], cbuf_28.data[_613 + 3u]); uint _634 = ((0u + (_542 * 16u)) + buf10_off) >> 2u; uint4 _647 = uint4(cbuf_16.data[_634 + 0u], cbuf_16.data[_634 + 1u], cbuf_16.data[_634 + 2u], cbuf_16.data[_634 + 3u]); uint _655 = ((0u + ((_542 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _668 = uint4(cbuf_16.data[_655 + 0u], cbuf_16.data[_655 + 1u], cbuf_16.data[_655 + 2u], cbuf_16.data[_655 + 3u]); uint _676 = ((0u + ((_542 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _689 = uint4(cbuf_16.data[_676 + 0u], cbuf_16.data[_676 + 1u], cbuf_16.data[_676 + 2u], cbuf_16.data[_676 + 3u]); uint _697 = ((0u + (_546 * 16u)) + buf10_off) >> 2u; uint4 _710 = uint4(cbuf_16.data[_697 + 0u], cbuf_16.data[_697 + 1u], cbuf_16.data[_697 + 2u], cbuf_16.data[_697 + 3u]); float _724 = fma(as_type(_584.x), _296, fma(as_type(_447.x), _295, fma(as_type(_321.x), _293, spvFMul(_294, as_type(_384.x))))); float _726 = fma(as_type(_584.y), _296, fma(as_type(_447.y), _295, fma(as_type(_321.y), _293, spvFMul(_294, as_type(_384.y))))); float _728 = fma(as_type(_584.z), _296, fma(as_type(_447.z), _295, fma(as_type(_321.z), _293, spvFMul(_294, as_type(_384.z))))); float _732 = fma(as_type(_605.x), _296, fma(as_type(_468.x), _295, fma(as_type(_342.x), _293, spvFMul(_294, as_type(_405.x))))); float _734 = fma(as_type(_605.y), _296, fma(as_type(_468.y), _295, fma(as_type(_342.y), _293, spvFMul(_294, as_type(_405.y))))); float _736 = fma(as_type(_605.z), _296, fma(as_type(_468.z), _295, fma(as_type(_342.z), _293, spvFMul(_294, as_type(_405.z))))); float _740 = fma(as_type(_626.x), _296, fma(as_type(_563.x), _295, fma(as_type(_363.x), _293, spvFMul(_294, as_type(_426.x))))); float _742 = fma(as_type(_626.y), _296, fma(as_type(_563.y), _295, fma(as_type(_363.y), _293, spvFMul(_294, as_type(_426.y))))); float _744 = fma(as_type(_626.z), _296, fma(as_type(_563.z), _295, fma(as_type(_363.z), _293, spvFMul(_294, as_type(_426.z))))); float _753 = fma(_724, in.vs_in_attr0.x, fma(_726, in.vs_in_attr0.y, fma(_728, in.vs_in_attr0.z, fma(as_type(_584.w), _296, fma(as_type(_447.w), _295, fma(as_type(_321.w), _293, spvFMul(_294, as_type(_384.w)))))))); float _754 = fma(_732, in.vs_in_attr0.x, fma(_734, in.vs_in_attr0.y, fma(_736, in.vs_in_attr0.z, fma(as_type(_605.w), _296, fma(as_type(_468.w), _295, fma(as_type(_342.w), _293, spvFMul(_294, as_type(_405.w)))))))); float _755 = fma(_740, in.vs_in_attr0.x, fma(_742, in.vs_in_attr0.y, fma(_744, in.vs_in_attr0.z, fma(as_type(_626.w), _296, fma(as_type(_563.w), _295, fma(as_type(_363.w), _293, spvFMul(_294, as_type(_426.w)))))))); uint _775 = (cbuf_12.data[_206] + _164) * 3u; uint _779 = (cbuf_12.data[_206] + _168) * 3u; uint _785 = ((0u + ((_546 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _798 = uint4(cbuf_16.data[_785 + 0u], cbuf_16.data[_785 + 1u], cbuf_16.data[_785 + 2u], cbuf_16.data[_785 + 3u]); uint _806 = ((0u + ((_546 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _819 = uint4(cbuf_16.data[_806 + 0u], cbuf_16.data[_806 + 1u], cbuf_16.data[_806 + 2u], cbuf_16.data[_806 + 3u]); uint _827 = ((0u + (_775 * 16u)) + buf10_off) >> 2u; uint4 _840 = uint4(cbuf_16.data[_827 + 0u], cbuf_16.data[_827 + 1u], cbuf_16.data[_827 + 2u], cbuf_16.data[_827 + 3u]); uint _848 = ((0u + ((_775 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _861 = uint4(cbuf_16.data[_848 + 0u], cbuf_16.data[_848 + 1u], cbuf_16.data[_848 + 2u], cbuf_16.data[_848 + 3u]); uint _869 = ((0u + ((_775 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _882 = uint4(cbuf_16.data[_869 + 0u], cbuf_16.data[_869 + 1u], cbuf_16.data[_869 + 2u], cbuf_16.data[_869 + 3u]); uint _890 = ((0u + (_779 * 16u)) + buf10_off) >> 2u; uint4 _903 = uint4(cbuf_16.data[_890 + 0u], cbuf_16.data[_890 + 1u], cbuf_16.data[_890 + 2u], cbuf_16.data[_890 + 3u]); float _965 = fma(as_type(_903.x), _296, fma(as_type(_840.x), _295, fma(as_type(_647.x), _293, spvFMul(_294, as_type(_710.x))))); float _967 = fma(as_type(_903.y), _296, fma(as_type(_840.y), _295, fma(as_type(_647.y), _293, spvFMul(_294, as_type(_710.y))))); float _969 = fma(as_type(_903.z), _296, fma(as_type(_840.z), _295, fma(as_type(_647.z), _293, spvFMul(_294, as_type(_710.z))))); float _974 = fma(_965, _753, fma(_967, _754, fma(_969, _755, fma(as_type(_903.w), _296, fma(as_type(_840.w), _295, fma(as_type(_647.w), _293, spvFMul(_294, as_type(_710.w)))))))); float _976 = spvFSub(_974, as_type(cbuf_20.data[183u + buf8_dword_off])); float _987 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _988 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _989 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _997 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _998 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _999 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _1006 = fma(_724, _997, fma(_726, _998, spvFMul(_999, _728))); float _1007 = fma(_732, _997, fma(_734, _998, spvFMul(_999, _736))); float _1008 = fma(_740, _997, fma(_742, _998, spvFMul(_999, _744))); float _1015 = fma(_724, _987, fma(_726, _988, spvFMul(_989, _728))); float _1016 = fma(_732, _987, fma(_734, _988, spvFMul(_989, _736))); float _1017 = fma(_740, _987, fma(_742, _988, spvFMul(_989, _744))); uint _1025 = ((0u + ((_779 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _1038 = uint4(cbuf_16.data[_1025 + 0u], cbuf_16.data[_1025 + 1u], cbuf_16.data[_1025 + 2u], cbuf_16.data[_1025 + 3u]); uint _1046 = ((0u + ((_779 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _1059 = uint4(cbuf_16.data[_1046 + 0u], cbuf_16.data[_1046 + 1u], cbuf_16.data[_1046 + 2u], cbuf_16.data[_1046 + 3u]); float _1067 = fma(as_type(_1038.x), _296, fma(as_type(_861.x), _295, fma(as_type(_668.x), _293, spvFMul(_294, as_type(_798.x))))); float _1069 = fma(as_type(_1038.y), _296, fma(as_type(_861.y), _295, fma(as_type(_668.y), _293, spvFMul(_294, as_type(_798.y))))); float _1071 = fma(as_type(_1038.z), _296, fma(as_type(_861.z), _295, fma(as_type(_668.z), _293, spvFMul(_294, as_type(_798.z))))); float _1075 = fma(as_type(_1059.x), _296, fma(as_type(_882.x), _295, fma(as_type(_689.x), _293, spvFMul(_294, as_type(_819.x))))); float _1077 = fma(as_type(_1059.y), _296, fma(as_type(_882.y), _295, fma(as_type(_689.y), _293, spvFMul(_294, as_type(_819.y))))); float _1079 = fma(as_type(_1059.z), _296, fma(as_type(_882.z), _295, fma(as_type(_689.z), _293, spvFMul(_294, as_type(_819.z))))); float _1086 = fma(_1067, _753, fma(_1069, _754, fma(_1071, _755, fma(as_type(_1038.w), _296, fma(as_type(_861.w), _295, fma(as_type(_668.w), _293, spvFMul(_294, as_type(_798.w)))))))); float _1087 = fma(_1075, _753, fma(_1077, _754, fma(_1079, _755, fma(as_type(_1059.w), _296, fma(as_type(_882.w), _295, fma(as_type(_689.w), _293, spvFMul(_294, as_type(_819.w)))))))); float _1089 = spvFSub(_1086, as_type(cbuf_20.data[187u + buf8_dword_off])); float _1091 = spvFSub(_1087, as_type(cbuf_20.data[191u + buf8_dword_off])); float _1113 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _1091, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _1115 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _1091, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _1117 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _1091, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _1119 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _1091, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _1113; out.gl_Position.y = _1115; out.gl_Position.z = _1117; out.gl_Position.w = _1119; out.out_attr5.x = _1113; out.out_attr5.y = _1115; out.out_attr5.z = _1117; out.out_attr5.w = _1119; out.out_attr1.x = fma(_965, _1015, fma(_967, _1016, spvFMul(_1017, _969))); out.out_attr1.y = fma(_1067, _1015, fma(_1069, _1016, spvFMul(_1017, _1071))); out.out_attr1.z = fma(_1075, _1015, fma(_1077, _1016, spvFMul(_1017, _1079))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf11_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf11_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf11_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf11_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[85u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[86u + buf8_dword_off]), _1087, as_type(cbuf_20.data[87u + buf8_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[89u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[90u + buf8_dword_off]), _1087, as_type(cbuf_20.data[91u + buf8_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[93u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[94u + buf8_dword_off]), _1087, as_type(cbuf_20.data[95u + buf8_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[97u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[98u + buf8_dword_off]), _1087, as_type(cbuf_20.data[99u + buf8_dword_off])))); out.out_attr0.x = fma(_965, _1006, fma(_967, _1007, spvFMul(_1008, _969))); out.out_attr0.y = fma(_1067, _1006, fma(_1069, _1007, spvFMul(_1008, _1071))); out.out_attr0.z = fma(_1075, _1006, fma(_1077, _1007, spvFMul(_1008, _1079))); out.out_attr0.w = 0.0; out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf12_dword_off]), _974); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf12_dword_off]), _1086); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf12_dword_off]), _1087); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[72]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_32 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_56 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_48 [[buffer(15)]], texture2d fs_img124 [[texture(0)]], texture2d fs_img132 [[texture(1)]], texture2d fs_img84 [[texture(2)]], texture2d fs_img76 [[texture(3)]], texture2d fs_img140 [[texture(4)]], texture2d fs_img68 [[texture(5)]], texture2d fs_img116 [[texture(6)]], depth2d fs_img108 [[texture(7)]], texturecube fs_img100 [[texture(8)]], texture2d fs_img148 [[texture(9)]], texturecube fs_img92 [[texture(10)]], texture2d fs_img60 [[texture(11)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _166 = uint(gl_FrontFacing); float _185 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _186 = spvFMul(in.fs_in_attr0.x, _185); float _188 = spvFMul(in.fs_in_attr0.y, _185); float _189 = spvFMul(in.fs_in_attr0.z, _185); float _209 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _210 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _211 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _219 = 1.0 / in.fs_in_attr5.w; float _220 = spvFMul(in.fs_in_attr5.x, _219); float _221 = spvFMul(in.fs_in_attr5.y, _219); float _223 = fma(0.5, _220, 0.5); float _225 = fma(-0.5, _221, 0.5); float4 _241 = fs_img124.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_52.data[4u + buf0_dword_off]), _223)), spvFMul(0.25, spvFMul(as_type(cbuf_52.data[5u + buf0_dword_off]), _225)))); float4 _247 = fs_img132.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _251 = _247.w; bool _252 = 0u == _166; uint _257; if (_252) { _257 = as_type(fast::max(-_186, -_186)); } else { _257 = _166; } uint _266; uint _267; if (_252) { _266 = as_type(fast::max(-_189, -_189)); _267 = as_type(fast::max(-_188, -_188)); } else { _266 = as_type(_186); _267 = as_type(_189); } uint _270; uint _271; uint _272; if (!_252) { _270 = _266; _271 = as_type(_188); _272 = _267; } else { _270 = _257; _271 = _267; _272 = _266; } float _273 = spvFAdd(-0.5, _241.w); float _366 = spvFMul(in.fs_in_attr5.z, _219); float4 _371 = fs_img84.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[14u + buf1_dword_off])), fma(as_type(cbuf_32.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[15u + buf1_dword_off])))); float _401 = 1.0 / fma(as_type(cbuf_52.data[48u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[49u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[50u + buf0_dword_off]), _366, as_type(cbuf_52.data[51u + buf0_dword_off])))); float _402 = spvFMul(fma(as_type(cbuf_52.data[44u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[45u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[46u + buf0_dword_off]), _366, as_type(cbuf_52.data[47u + buf0_dword_off])))), _401); uint _435 = ((((as_type((as_type(cbuf_52.data[176u + buf0_dword_off]) < _402) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_402 > as_type(cbuf_52.data[177u + buf0_dword_off]))) + uint(abs(int(0u)))) + uint(_402 > as_type(cbuf_52.data[178u + buf0_dword_off]))) << 2u; float4 _454 = fs_img76.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[10u + buf1_dword_off])), fma(as_type(cbuf_32.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[11u + buf1_dword_off])))); float _455 = _454.x; float4 _460 = fs_img140.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _462 = _460.y; uint _466 = ((0u + ((_435 + 28u) * 16u)) + buf0_off) >> 2u; uint4 _479 = uint4(cbuf_52.data[_466 + 0u], cbuf_52.data[_466 + 1u], cbuf_52.data[_466 + 2u], cbuf_52.data[_466 + 3u]); uint _487 = ((0u + ((_435 + 29u) * 16u)) + buf0_off) >> 2u; uint4 _500 = uint4(cbuf_52.data[_487 + 0u], cbuf_52.data[_487 + 1u], cbuf_52.data[_487 + 2u], cbuf_52.data[_487 + 3u]); uint _508 = ((0u + ((_435 + 31u) * 16u)) + buf0_off) >> 2u; uint4 _521 = uint4(cbuf_52.data[_508 + 0u], cbuf_52.data[_508 + 1u], cbuf_52.data[_508 + 2u], cbuf_52.data[_508 + 3u]); uint _529 = ((0u + ((_435 + 30u) * 16u)) + buf0_off) >> 2u; uint4 _542 = uint4(cbuf_52.data[_529 + 0u], cbuf_52.data[_529 + 1u], cbuf_52.data[_529 + 2u], cbuf_52.data[_529 + 3u]); float _551 = fma(2.0, _371.y, -1.0); float _552 = spvFMul(fma(2.0, _371.x, -1.0), fma(2.0, _371.w, -1.0)); float _563 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _565 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_552, _552), spvFMul(_551, _551)), 0.0, 1.0))); float _567 = rsqrt(fma(_209, _209, fma(_210, _210, spvFMul(_211, _211)))); float _582 = fma(spvFMul(_211, _567), _552, fma(spvFMul(in.fs_in_attr1.z, _563), _551, spvFMul(as_type(_272), _565))); float _602 = fma(spvFMul(_210, _567), _552, fma(spvFMul(in.fs_in_attr1.y, _563), _551, spvFMul(as_type(_271), _565))); float _607 = fma(spvFMul(_209, _567), _552, fma(spvFMul(in.fs_in_attr1.x, _563), _551, spvFMul(as_type(_270), _565))); uint _614 = 24u + buf2_dword_off; float _617 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _618 = rsqrt(fma(_607, _607, fma(_602, _602, spvFMul(_582, _582)))); uint _623 = 73u + buf0_dword_off; uint _627 = 74u + buf0_dword_off; uint _631 = 75u + buf0_dword_off; float _634 = spvFMul(in.fs_in_attr6.z, _617); float _635 = spvFMul(_582, _618); float _636 = spvFMul(in.fs_in_attr6.y, _617); float _637 = spvFMul(_602, _618); float _639 = spvFMul(in.fs_in_attr6.x, _617); float _640 = spvFMul(_607, _618); float _660 = fma(_640, _639, fma(_637, _636, spvFMul(_634, _635))); float4 _676 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf1_dword_off])), fma(as_type(cbuf_32.data[5u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf1_dword_off])))); float _677 = _676.x; float _678 = _676.y; float _679 = _676.z; float _681 = spvFMul(fast::max(_660, _660), 2.0); uint _687 = uint(in.fs_in_attr0.w) * 13u; float _691 = fma(as_type(_479.x), _220, fma(as_type(_479.y), _221, fma(as_type(_479.z), _366, as_type(_479.w)))); float _693 = fma(as_type(_500.x), _220, fma(as_type(_500.y), _221, fma(as_type(_500.z), _366, as_type(_500.w)))); float _695 = fma(as_type(_521.x), _220, fma(as_type(_521.y), _221, fma(as_type(_521.z), _366, as_type(_521.w)))); float _708 = spvFMul(fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _455, _460.x), _455), _455), spvFMul(as_type(cbuf_36.data[8u + buf2_dword_off]), 0.00390625)); float _717 = 1.0 / _695; float _724 = spvFMul(13.0, _708); float _726 = fma(-in.fs_in_attr6.x, _617, spvFMul(_640, _681)); float _728 = fma(-in.fs_in_attr6.y, _617, spvFMul(_637, _681)); float _730 = fma(-in.fs_in_attr6.z, _617, spvFMul(_635, _681)); float _737 = spvFMul(fma(as_type(_542.x), _220, fma(as_type(_542.y), _221, fma(as_type(_542.z), _366, as_type(_542.w)))), _717); float _766 = 1.0 / abs(1.0); float _782 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_724, _724), 0.5))); float _784 = fma(_728, _766, 1.5); float _785 = fma(_726, _766, 1.5); uint _791 = ((0u + ((_687 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _804 = uint4(cbuf_40.data[_791 + 0u], cbuf_40.data[_791 + 1u], cbuf_40.data[_791 + 2u], cbuf_40.data[_791 + 3u]); uint _812 = ((0u + ((_687 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _825 = uint4(cbuf_40.data[_812 + 0u], cbuf_40.data[_812 + 1u], cbuf_40.data[_812 + 2u], cbuf_40.data[_812 + 3u]); uint _833 = ((0u + ((_687 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _846 = uint4(cbuf_40.data[_833 + 0u], cbuf_40.data[_833 + 1u], cbuf_40.data[_833 + 2u], cbuf_40.data[_833 + 3u]); uint _861 = ((0u + ((_687 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _874 = uint4(cbuf_40.data[_861 + 0u], cbuf_40.data[_861 + 1u], cbuf_40.data[_861 + 2u], cbuf_40.data[_861 + 3u]); uint _875 = _874.x; uint _876 = _874.y; uint _877 = _874.z; uint _878 = _874.w; float4 _885 = fs_img100.sample(fs_samp20, float3(spvFSub(_785, 1.5), spvFSub(_784, 1.5), _730), level(_782)); float4 _893 = fs_img148.sample(fs_samp24, float2(_223, _225), level(_782)); uint _901 = ((0u + ((_687 + 12u) * 16u)) + buf3_off) >> 2u; float4 _923 = fs_img92.sample(fs_samp20, float3(spvFSub(_785, 1.5), spvFSub(_784, 1.5), _730), level(_782)); float4 _931 = fs_img60.sample(fs_samp4, float2(fma(as_type(cbuf_32.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[2u + buf1_dword_off])), fma(as_type(cbuf_32.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[3u + buf1_dword_off])))); float _932 = _931.x; float _933 = _931.y; float _934 = _931.z; uint _936 = 12u + buf2_dword_off; float _958 = spvFMul(fma(as_type(cbuf_52.data[40u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[41u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[42u + buf0_dword_off]), _366, as_type(cbuf_52.data[43u + buf0_dword_off])))), _401); uint _960 = 0u + buf4_dword_off; uint _963 = 1u + buf4_dword_off; uint _966 = 2u + buf4_dword_off; uint _969 = 3u + buf4_dword_off; uint _972 = 4u + buf4_dword_off; uint _975 = 5u + buf4_dword_off; uint _978 = 6u + buf4_dword_off; uint _981 = 7u + buf4_dword_off; float _984 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _985 = spvFMul(fma(as_type(cbuf_52.data[36u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[37u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[38u + buf0_dword_off]), _366, as_type(cbuf_52.data[39u + buf0_dword_off])))), _401); bool _1004 = (_679 == 0.0) && (_678 == 0.0); float _1021 = fma(fma(as_type(cbuf_36.data[_936]), fs_img116.sample(fs_samp20, float2(_223, _225)).x, 1.0), _984, -spvFMul(as_type(cbuf_36.data[_936]), _984)); float _1022 = spvFAdd(_660, _1021); float _1024 = fast::clamp(spvFAdd(fma(_726, as_type(_270), fma(_728, as_type(_271), spvFMul(as_type(_272), _730))), 1.0), 0.0, 1.0); float _1025 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_660, _660), 0.0, 1.0))))); float _1027 = _1004 ? _677 : _679; float _1028 = _1004 ? _677 : _678; float _1029 = spvFMul(_462, _462); float _1084 = fast::clamp(spvFAdd(fma(_1022, _1022, _1021), -1.0), 0.0, 1.0); float _1101 = spvFMul(as_type(cbuf_40.data[_901]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_52.data[72u + buf0_dword_off]), as_type(cbuf_52.data[_623])), -spvFMul(as_type(cbuf_52.data[_623]), sqrt(fma(_985, _985, fma(_958, _958, spvFMul(_402, _402)))))), 0.0, 1.0)); float _1103 = spvFMul(as_type(cbuf_44.data[_978]), _635); float _1105 = fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _677, _1029), _677), _677); float _1107 = fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _1028, _1029), _1028), _1028); float _1109 = fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _1027, _1029), _1027), _1027); float _1110 = spvFMul(_1025, _1084); float _1133 = spvFSub(1.0, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_695, as_type(cbuf_52.data[_631]), _691), _717), spvFMul(fma(as_type(cbuf_52.data[_627]), _695, _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_695, as_type(cbuf_52.data[_627]), _691), _717), spvFMul(fma(-_695, as_type(cbuf_52.data[_631]), _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_695, as_type(cbuf_52.data[_627]), _691), _717), spvFMul(fma(_695, as_type(cbuf_52.data[_631]), _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_695, as_type(cbuf_52.data[_631]), _691), _717), spvFMul(fma(-_695, as_type(cbuf_52.data[_627]), _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1141 = spvFMul(as_type(cbuf_44.data[_966]), _635); float _1162 = spvFMul(_1021, spvFMul(spvFMul(_1024, _1024), spvFSub(1.0, _893.w))); float _1165 = fma(-_1133, spvFMul(as_type(cbuf_52.data[76u + buf0_dword_off]), _1101), as_type(cbuf_40.data[_901])); float _1168 = fma(-_1133, spvFMul(as_type(cbuf_52.data[77u + buf0_dword_off]), _1101), as_type(cbuf_40.data[_901])); float _1171 = fma(-_1133, spvFMul(as_type(cbuf_52.data[78u + buf0_dword_off]), _1101), as_type(cbuf_40.data[_901])); float _1176 = fast::clamp(fma(as_type(cbuf_44.data[_972]), _640, fma(as_type(cbuf_44.data[_975]), _637, _1103)), 0.0, 1.0); float _1186 = spvFMul(_708, _708); float _1187 = fast::max(0.0, spvFAdd(as_type(_804.w), fma(_635, as_type(_804.z), fma(_640, as_type(_804.x), spvFMul(_637, as_type(_804.y)))))); float _1188 = fast::max(0.0, spvFAdd(as_type(_825.w), fma(_635, as_type(_825.z), fma(_640, as_type(_825.x), spvFMul(_637, as_type(_825.y)))))); float _1189 = fast::max(0.0, spvFAdd(as_type(_846.w), fma(_635, as_type(_846.z), fma(_640, as_type(_846.x), spvFMul(_637, as_type(_846.y)))))); float _1198 = fast::clamp(fma(as_type(cbuf_44.data[_960]), _640, fma(as_type(cbuf_44.data[_963]), _637, _1141)), 0.0, 1.0); uint _1250 = 64u + buf4_dword_off; uint _1254 = 65u + buf4_dword_off; float _1257 = spvFMul(_931.w, in.fs_in_attr2.w); float _1271 = spvFMul(as_type(cbuf_40.data[_901]), fma(as_type(_878), spvFAdd(-1.0, _1165), 1.0)); float _1273 = spvFMul(as_type(cbuf_40.data[_901]), fma(as_type(_878), spvFAdd(-1.0, _1168), 1.0)); float _1275 = spvFMul(as_type(cbuf_40.data[_901]), fma(as_type(_878), spvFAdd(-1.0, _1171), 1.0)); float _1276 = fma(spvFMul(as_type(cbuf_44.data[16u + buf4_dword_off]), _1165), fma(-_1105, _1198, _1198), spvFMul(as_type(cbuf_44.data[20u + buf4_dword_off]), fma(-_1105, _1176, _1176))); float _1278 = fma(spvFMul(as_type(cbuf_44.data[17u + buf4_dword_off]), _1168), fma(-_1107, _1198, _1198), spvFMul(as_type(cbuf_44.data[21u + buf4_dword_off]), fma(-_1107, _1176, _1176))); float _1280 = fma(spvFMul(as_type(cbuf_44.data[18u + buf4_dword_off]), _1171), fma(-_1109, _1198, _1198), spvFMul(as_type(cbuf_44.data[22u + buf4_dword_off]), fma(-_1109, _1176, _1176))); uint _1327; uint _1328; uint _1329; if (cbuf_44.data[_1250] > 0u) { float _1309 = fma(0.5, fma(as_type(cbuf_44.data[8u + buf4_dword_off]), _640, fma(as_type(cbuf_44.data[9u + buf4_dword_off]), _637, spvFMul(as_type(cbuf_44.data[10u + buf4_dword_off]), _635))), 0.5); float _1311 = fast::clamp(spvFMul(_1309, _1309), 0.0, 1.0); _1327 = as_type(fma(as_type(cbuf_44.data[26u + buf4_dword_off]), fma(-_1109, _1311, _1311), _1280)); _1328 = as_type(fma(as_type(cbuf_44.data[25u + buf4_dword_off]), fma(-_1107, _1311, _1311), _1278)); _1329 = as_type(fma(as_type(cbuf_44.data[24u + buf4_dword_off]), fma(-_1105, _1311, _1311), _1276)); } else { _1327 = as_type(_1280); _1328 = as_type(_1278); _1329 = as_type(_1276); } uint _1376; uint _1377; uint _1378; if (cbuf_44.data[_1254] > 0u) { float _1355 = fma(0.5, fma(as_type(cbuf_44.data[12u + buf4_dword_off]), _640, fma(as_type(cbuf_44.data[13u + buf4_dword_off]), _637, spvFMul(as_type(cbuf_44.data[14u + buf4_dword_off]), _635))), 0.5); float _1357 = fast::clamp(spvFMul(_1355, _1355), 0.0, 1.0); _1376 = as_type(fma(as_type(cbuf_44.data[30u + buf4_dword_off]), fma(-_1109, _1357, _1357), as_type(_1327))); _1377 = as_type(fma(as_type(cbuf_44.data[29u + buf4_dword_off]), fma(-_1107, _1357, _1357), as_type(_1328))); _1378 = as_type(fma(as_type(cbuf_44.data[28u + buf4_dword_off]), fma(-_1105, _1357, _1357), as_type(_1329))); } else { _1376 = _1327; _1377 = _1328; _1378 = _1329; } float _1380 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[_978])); float _1382 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[_966])); float _1384 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[_975])); float _1387 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[_963])); float _1390 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[_972])); float _1393 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[_960])); float _1397 = rsqrt(fma(_1390, _1390, fma(_1384, _1384, spvFMul(_1380, _1380)))); float _1398 = rsqrt(fma(_1393, _1393, fma(_1387, _1387, spvFMul(_1382, _1382)))); float _1399 = spvFMul(_1380, _1397); float _1400 = exp2(_724); float _1401 = spvFMul(_1382, _1398); float _1402 = spvFMul(_1384, _1397); float _1425 = spvFMul(_1387, _1398); float _1426 = spvFMul(_1390, _1397); float _1433 = spvFMul(_1393, _1398); float _1457 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_981]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_981])))); float _1463 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_969]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_969])))); float _1469 = fma(_1457, 0.125, 0.25); float _1481 = exp2(spvFMul(_1457, log2(fast::clamp(fma(_1426, _640, fma(_1402, _637, spvFMul(_635, _1399))), 0.0, 1.0)))); float _1483 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1426, fma(_636, _1402, spvFMul(_634, _1399))), 0.0, 1.0))))); float _1484 = fma(0.125, _1463, 0.25); float _1493 = exp2(spvFMul(_1463, log2(fast::clamp(fma(_1433, _640, fma(_1425, _637, spvFMul(_635, _1401))), 0.0, 1.0)))); float _1494 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1433, fma(_636, _1425, spvFMul(_634, _1401))), 0.0, 1.0))))); float _1500 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_972]), _640, fma(as_type(cbuf_44.data[_975]), _637, _1103)), 16.0), 0.0, 1.0); float _1517 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_960]), _640, fma(as_type(cbuf_44.data[_963]), _637, _1141)), 16.0), 0.0, 1.0); float _1536 = fma(spvFMul(_1517, spvFMul(_1493, spvFMul(spvFMul(as_type(cbuf_44.data[32u + buf4_dword_off]), _1165), _1484))), fma(-_1105, _1494, spvFAdd(_1105, _1494)), spvFMul(fma(-_1105, _1483, spvFAdd(_1105, _1483)), spvFMul(_1500, spvFMul(_1481, spvFMul(as_type(cbuf_44.data[36u + buf4_dword_off]), _1469))))); float _1538 = fma(spvFMul(_1517, spvFMul(_1493, spvFMul(spvFMul(as_type(cbuf_44.data[33u + buf4_dword_off]), _1168), _1484))), fma(-_1107, _1494, spvFAdd(_1107, _1494)), spvFMul(fma(-_1107, _1483, spvFAdd(_1107, _1483)), spvFMul(_1500, spvFMul(_1481, spvFMul(as_type(cbuf_44.data[37u + buf4_dword_off]), _1469))))); float _1540 = fma(spvFMul(_1517, spvFMul(_1493, spvFMul(spvFMul(as_type(cbuf_44.data[34u + buf4_dword_off]), _1171), _1484))), fma(-_1109, _1494, spvFAdd(_1109, _1494)), spvFMul(fma(-_1109, _1483, spvFAdd(_1109, _1483)), spvFMul(_1500, spvFMul(_1481, spvFMul(as_type(cbuf_44.data[38u + buf4_dword_off]), _1469))))); uint _1630; uint _1631; uint _1632; if (cbuf_44.data[_1250] > 0u) { uint _1558 = 11u + buf4_dword_off; float _1571 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[8u + buf4_dword_off])); float _1573 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[9u + buf4_dword_off])); float _1575 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[10u + buf4_dword_off])); float _1579 = rsqrt(fma(_1571, _1571, fma(_1573, _1573, spvFMul(_1575, _1575)))); float _1580 = spvFMul(_1571, _1579); float _1581 = spvFMul(_1573, _1579); float _1582 = spvFMul(_1575, _1579); float _1593 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1558]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_1558])))); float _1596 = exp2(spvFMul(_1593, log2(fast::clamp(fma(_1580, _640, fma(_1581, _637, spvFMul(_635, _1582))), 0.0, 1.0)))); float _1604 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1580, fma(_636, _1581, spvFMul(_634, _1582))), 0.0, 1.0))))); float _1614 = fma(0.125, _1593, 0.25); _1630 = as_type(fma(spvFMul(_1596, spvFMul(as_type(cbuf_44.data[42u + buf4_dword_off]), _1614)), fma(-_1109, _1604, spvFAdd(_1109, _1604)), _1540)); _1631 = as_type(fma(spvFMul(_1596, spvFMul(as_type(cbuf_44.data[41u + buf4_dword_off]), _1614)), fma(-_1107, _1604, spvFAdd(_1107, _1604)), _1538)); _1632 = as_type(fma(spvFMul(_1596, spvFMul(as_type(cbuf_44.data[40u + buf4_dword_off]), _1614)), fma(-_1105, _1604, spvFAdd(_1105, _1604)), _1536)); } else { _1630 = as_type(_1540); _1631 = as_type(_1538); _1632 = as_type(_1536); } uint _1718; uint _1719; uint _1720; if (cbuf_44.data[_1254] > 0u) { uint _1643 = 15u + buf4_dword_off; float _1656 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[12u + buf4_dword_off])); float _1658 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[13u + buf4_dword_off])); float _1660 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[14u + buf4_dword_off])); float _1664 = rsqrt(fma(_1656, _1656, fma(_1658, _1658, spvFMul(_1660, _1660)))); float _1665 = spvFMul(_1656, _1664); float _1666 = spvFMul(_1658, _1664); float _1667 = spvFMul(_1660, _1664); float _1678 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1643]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_1643])))); float _1681 = exp2(spvFMul(_1678, log2(fast::clamp(fma(_1665, _640, fma(_1666, _637, spvFMul(_635, _1667))), 0.0, 1.0)))); float _1689 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1665, fma(_636, _1666, spvFMul(_634, _1667))), 0.0, 1.0))))); float _1699 = fma(0.125, _1678, 0.25); _1718 = as_type(fma(spvFMul(_1681, spvFMul(as_type(cbuf_44.data[46u + buf4_dword_off]), _1699)), fma(-_1109, _1689, spvFAdd(_1109, _1689)), as_type(_1630))); _1719 = as_type(fma(spvFMul(_1681, spvFMul(as_type(cbuf_44.data[44u + buf4_dword_off]), _1699)), fma(-_1105, _1689, spvFAdd(_1105, _1689)), as_type(_1632))); _1720 = as_type(fma(spvFMul(_1681, spvFMul(as_type(cbuf_44.data[45u + buf4_dword_off]), _1699)), fma(-_1107, _1689, spvFAdd(_1107, _1689)), as_type(_1631))); } else { _1718 = _1630; _1719 = _1632; _1720 = _1631; } float _1723 = fma(spvFMul(fma(fma(_1025, _1084, -spvFMul(_1107, _1110)), _1186, _1107), fma(_1021, _893.y, spvFMul(fma(as_type(_875), fma(-as_type(_876), _923.y, spvFMul(as_type(_877), _885.y)), spvFMul(as_type(_876), _923.y)), _1162))), _1273, as_type(_1720)); float _1728 = fma(spvFMul(fma(fma(_1025, _1084, -spvFMul(_1109, _1110)), _1186, _1109), fma(_1021, _893.z, spvFMul(fma(as_type(_875), fma(-as_type(_876), _923.z, spvFMul(as_type(_877), _885.z)), spvFMul(as_type(_876), _923.z)), _1162))), _1275, as_type(_1718)); uint _1733 = ((0u + ((_687 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _1746 = uint4(cbuf_40.data[_1733 + 0u], cbuf_40.data[_1733 + 1u], cbuf_40.data[_1733 + 2u], cbuf_40.data[_1733 + 3u]); uint _1747 = _1746.x; uint _1748 = _1746.y; uint _1749 = _1746.z; float _1762 = spvFMul(_1257, as_type(_1746.w)); bool _1764 = (as_type(cbuf_36.data[20u + buf2_dword_off]) > fma(as_type(cbuf_36.data[21u + buf2_dword_off]), _273, _1257)) || (_1762 == 0.0); uint _1923; uint _1924; uint _1925; if (!_1764) { uint _1775 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); uint _1778 = 8u + buf6_dword_off; uint _1784 = 10u + buf6_dword_off; float _1798 = fma(spvFMul(as_type(cbuf_36.data[1u + buf2_dword_off]), fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _933, _247.y), _933), _933)), fma(spvFMul(_1021, fma(-_1107, _1188, _1188)), _1273, as_type(_1377)), spvFMul(_1723, spvFMul(as_type(cbuf_36.data[5u + buf2_dword_off]), as_type(cbuf_56.data[_1775])))); float _1812 = fma(spvFMul(as_type(cbuf_36.data[0u + buf2_dword_off]), fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _932, _247.x), _932), _932)), fma(spvFMul(_1021, fma(-_1105, _1187, _1187)), _1271, as_type(_1378)), spvFMul(fma(spvFMul(fma(fma(_1025, _1084, -spvFMul(_1105, _1110)), _1186, _1105), fma(_1021, _893.x, spvFMul(fma(as_type(_875), fma(-as_type(_876), _923.x, spvFMul(as_type(_877), _885.x)), spvFMul(as_type(_876), _923.x)), _1162))), _1271, as_type(_1719)), spvFMul(as_type(cbuf_36.data[4u + buf2_dword_off]), as_type(cbuf_56.data[_1775])))); float _1814 = spvFMul(_1798, as_type(_1748)); uint _1821 = 14u + buf6_dword_off; float _1827 = fma(spvFMul(as_type(cbuf_36.data[2u + buf2_dword_off]), fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _934, _247.z), _934), _934)), fma(spvFMul(_1021, fma(-_1109, _1189, _1189)), _1275, as_type(_1376)), spvFMul(_1728, spvFMul(as_type(cbuf_36.data[6u + buf2_dword_off]), as_type(cbuf_56.data[_1775])))); float _1829 = spvFMul(_1812, as_type(_1747)); float _1836 = spvFMul(_1827, as_type(_1749)); float _1864 = spvFAdd(-1.0, fma(_1836, 0.11448000371456146240234375, fma(_1829, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1814)))); float _1868 = fma(as_type(cbuf_48.data[7u + buf6_dword_off]), _1864, 1.0); float _1887 = fast::clamp(spvFAdd(as_type(cbuf_48.data[_1778]), spvFMul(as_type(cbuf_48.data[_1778]), -exp2(-fma(as_type(cbuf_48.data[_1784]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_48.data[9u + buf6_dword_off]), as_type(cbuf_48.data[_1784])))))), 0.0, 1.0); float _1901 = fma(as_type(cbuf_48.data[19u + buf6_dword_off]), _1864, 1.0); float _1902 = fma(_1887, fma(-_1812, as_type(_1747), spvFMul(as_type(cbuf_48.data[4u + buf6_dword_off]), _1868)), _1829); float _1903 = fma(_1887, fma(-_1798, as_type(_1748), spvFMul(as_type(cbuf_48.data[5u + buf6_dword_off]), _1868)), _1814); float _1904 = fma(_1887, fma(-_1827, as_type(_1749), spvFMul(as_type(cbuf_48.data[6u + buf6_dword_off]), _1868)), _1836); float _1907 = fast::clamp(spvFMul(as_type(cbuf_48.data[12u + buf6_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_48.data[_1821]), spvFSub(as_type(cbuf_48.data[15u + buf6_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_48.data[13u + buf6_dword_off]), as_type(cbuf_48.data[_1821]))), 0.0, 1.0)), 0.0, 1.0); _1923 = as_type(fma(_1907, fma(as_type(cbuf_48.data[18u + buf6_dword_off]), _1901, -_1904), _1904)); _1924 = as_type(fma(_1907, fma(as_type(cbuf_48.data[17u + buf6_dword_off]), _1901, -_1903), _1903)); _1925 = as_type(fma(_1907, fma(as_type(cbuf_48.data[16u + buf6_dword_off]), _1901, -_1902), _1902)); } else { _1923 = as_type(_273); _1924 = as_type(_1723); _1925 = as_type(_1728); } if (_1764) { discard_fragment(); } out.frag_color0.x = as_type(_1925); out.frag_color0.y = as_type(_1924); out.frag_color0.z = as_type(_1923); out.frag_color0.w = _1762; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb30dd24a (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[576]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_28 [[buffer(18)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(19)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(20)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(21)]]) { main0_out out = {}; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint _156 = as_type(as_type(in.vs_in_attr3.x)); uint _160 = as_type(as_type(in.vs_in_attr3.y)); uint _164 = as_type(as_type(in.vs_in_attr3.z)); uint _168 = as_type(as_type(in.vs_in_attr3.w)); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _292 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _293 = spvFMul(in.vs_in_attr4.x, _292); float _294 = spvFMul(in.vs_in_attr4.y, _292); float _295 = spvFMul(in.vs_in_attr4.z, _292); float _296 = spvFMul(in.vs_in_attr4.w, _292); uint _297 = _156 * 3u; uint _300 = _160 * 3u; uint _303 = _164 * 3u; uint _308 = ((0u + (_297 * 16u)) + buf9_off) >> 2u; uint4 _321 = uint4(cbuf_28.data[_308 + 0u], cbuf_28.data[_308 + 1u], cbuf_28.data[_308 + 2u], cbuf_28.data[_308 + 3u]); uint _329 = ((0u + ((_297 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _342 = uint4(cbuf_28.data[_329 + 0u], cbuf_28.data[_329 + 1u], cbuf_28.data[_329 + 2u], cbuf_28.data[_329 + 3u]); uint _350 = ((0u + ((_297 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _363 = uint4(cbuf_28.data[_350 + 0u], cbuf_28.data[_350 + 1u], cbuf_28.data[_350 + 2u], cbuf_28.data[_350 + 3u]); uint _371 = ((0u + (_300 * 16u)) + buf9_off) >> 2u; uint4 _384 = uint4(cbuf_28.data[_371 + 0u], cbuf_28.data[_371 + 1u], cbuf_28.data[_371 + 2u], cbuf_28.data[_371 + 3u]); uint _392 = ((0u + ((_300 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _405 = uint4(cbuf_28.data[_392 + 0u], cbuf_28.data[_392 + 1u], cbuf_28.data[_392 + 2u], cbuf_28.data[_392 + 3u]); uint _413 = ((0u + ((_300 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _426 = uint4(cbuf_28.data[_413 + 0u], cbuf_28.data[_413 + 1u], cbuf_28.data[_413 + 2u], cbuf_28.data[_413 + 3u]); uint _434 = ((0u + (_303 * 16u)) + buf9_off) >> 2u; uint4 _447 = uint4(cbuf_28.data[_434 + 0u], cbuf_28.data[_434 + 1u], cbuf_28.data[_434 + 2u], cbuf_28.data[_434 + 3u]); uint _455 = ((0u + ((_303 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _468 = uint4(cbuf_28.data[_455 + 0u], cbuf_28.data[_455 + 1u], cbuf_28.data[_455 + 2u], cbuf_28.data[_455 + 3u]); uint _538 = _168 * 3u; uint _542 = (cbuf_12.data[_206] + _156) * 3u; uint _546 = (cbuf_12.data[_206] + _160) * 3u; uint _550 = ((0u + ((_303 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _563 = uint4(cbuf_28.data[_550 + 0u], cbuf_28.data[_550 + 1u], cbuf_28.data[_550 + 2u], cbuf_28.data[_550 + 3u]); uint _571 = ((0u + (_538 * 16u)) + buf9_off) >> 2u; uint4 _584 = uint4(cbuf_28.data[_571 + 0u], cbuf_28.data[_571 + 1u], cbuf_28.data[_571 + 2u], cbuf_28.data[_571 + 3u]); uint _592 = ((0u + ((_538 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _605 = uint4(cbuf_28.data[_592 + 0u], cbuf_28.data[_592 + 1u], cbuf_28.data[_592 + 2u], cbuf_28.data[_592 + 3u]); uint _613 = ((0u + ((_538 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _626 = uint4(cbuf_28.data[_613 + 0u], cbuf_28.data[_613 + 1u], cbuf_28.data[_613 + 2u], cbuf_28.data[_613 + 3u]); uint _634 = ((0u + (_542 * 16u)) + buf10_off) >> 2u; uint4 _647 = uint4(cbuf_16.data[_634 + 0u], cbuf_16.data[_634 + 1u], cbuf_16.data[_634 + 2u], cbuf_16.data[_634 + 3u]); uint _655 = ((0u + ((_542 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _668 = uint4(cbuf_16.data[_655 + 0u], cbuf_16.data[_655 + 1u], cbuf_16.data[_655 + 2u], cbuf_16.data[_655 + 3u]); uint _676 = ((0u + ((_542 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _689 = uint4(cbuf_16.data[_676 + 0u], cbuf_16.data[_676 + 1u], cbuf_16.data[_676 + 2u], cbuf_16.data[_676 + 3u]); uint _697 = ((0u + (_546 * 16u)) + buf10_off) >> 2u; uint4 _710 = uint4(cbuf_16.data[_697 + 0u], cbuf_16.data[_697 + 1u], cbuf_16.data[_697 + 2u], cbuf_16.data[_697 + 3u]); float _724 = fma(as_type(_584.x), _296, fma(as_type(_447.x), _295, fma(as_type(_321.x), _293, spvFMul(_294, as_type(_384.x))))); float _726 = fma(as_type(_584.y), _296, fma(as_type(_447.y), _295, fma(as_type(_321.y), _293, spvFMul(_294, as_type(_384.y))))); float _728 = fma(as_type(_584.z), _296, fma(as_type(_447.z), _295, fma(as_type(_321.z), _293, spvFMul(_294, as_type(_384.z))))); float _732 = fma(as_type(_605.x), _296, fma(as_type(_468.x), _295, fma(as_type(_342.x), _293, spvFMul(_294, as_type(_405.x))))); float _734 = fma(as_type(_605.y), _296, fma(as_type(_468.y), _295, fma(as_type(_342.y), _293, spvFMul(_294, as_type(_405.y))))); float _736 = fma(as_type(_605.z), _296, fma(as_type(_468.z), _295, fma(as_type(_342.z), _293, spvFMul(_294, as_type(_405.z))))); float _740 = fma(as_type(_626.x), _296, fma(as_type(_563.x), _295, fma(as_type(_363.x), _293, spvFMul(_294, as_type(_426.x))))); float _742 = fma(as_type(_626.y), _296, fma(as_type(_563.y), _295, fma(as_type(_363.y), _293, spvFMul(_294, as_type(_426.y))))); float _744 = fma(as_type(_626.z), _296, fma(as_type(_563.z), _295, fma(as_type(_363.z), _293, spvFMul(_294, as_type(_426.z))))); float _753 = fma(_724, in.vs_in_attr0.x, fma(_726, in.vs_in_attr0.y, fma(_728, in.vs_in_attr0.z, fma(as_type(_584.w), _296, fma(as_type(_447.w), _295, fma(as_type(_321.w), _293, spvFMul(_294, as_type(_384.w)))))))); float _754 = fma(_732, in.vs_in_attr0.x, fma(_734, in.vs_in_attr0.y, fma(_736, in.vs_in_attr0.z, fma(as_type(_605.w), _296, fma(as_type(_468.w), _295, fma(as_type(_342.w), _293, spvFMul(_294, as_type(_405.w)))))))); float _755 = fma(_740, in.vs_in_attr0.x, fma(_742, in.vs_in_attr0.y, fma(_744, in.vs_in_attr0.z, fma(as_type(_626.w), _296, fma(as_type(_563.w), _295, fma(as_type(_363.w), _293, spvFMul(_294, as_type(_426.w)))))))); uint _775 = (cbuf_12.data[_206] + _164) * 3u; uint _779 = (cbuf_12.data[_206] + _168) * 3u; uint _785 = ((0u + ((_546 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _798 = uint4(cbuf_16.data[_785 + 0u], cbuf_16.data[_785 + 1u], cbuf_16.data[_785 + 2u], cbuf_16.data[_785 + 3u]); uint _806 = ((0u + ((_546 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _819 = uint4(cbuf_16.data[_806 + 0u], cbuf_16.data[_806 + 1u], cbuf_16.data[_806 + 2u], cbuf_16.data[_806 + 3u]); uint _827 = ((0u + (_775 * 16u)) + buf10_off) >> 2u; uint4 _840 = uint4(cbuf_16.data[_827 + 0u], cbuf_16.data[_827 + 1u], cbuf_16.data[_827 + 2u], cbuf_16.data[_827 + 3u]); uint _848 = ((0u + ((_775 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _861 = uint4(cbuf_16.data[_848 + 0u], cbuf_16.data[_848 + 1u], cbuf_16.data[_848 + 2u], cbuf_16.data[_848 + 3u]); uint _869 = ((0u + ((_775 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _882 = uint4(cbuf_16.data[_869 + 0u], cbuf_16.data[_869 + 1u], cbuf_16.data[_869 + 2u], cbuf_16.data[_869 + 3u]); uint _890 = ((0u + (_779 * 16u)) + buf10_off) >> 2u; uint4 _903 = uint4(cbuf_16.data[_890 + 0u], cbuf_16.data[_890 + 1u], cbuf_16.data[_890 + 2u], cbuf_16.data[_890 + 3u]); float _965 = fma(as_type(_903.x), _296, fma(as_type(_840.x), _295, fma(as_type(_647.x), _293, spvFMul(_294, as_type(_710.x))))); float _967 = fma(as_type(_903.y), _296, fma(as_type(_840.y), _295, fma(as_type(_647.y), _293, spvFMul(_294, as_type(_710.y))))); float _969 = fma(as_type(_903.z), _296, fma(as_type(_840.z), _295, fma(as_type(_647.z), _293, spvFMul(_294, as_type(_710.z))))); float _974 = fma(_965, _753, fma(_967, _754, fma(_969, _755, fma(as_type(_903.w), _296, fma(as_type(_840.w), _295, fma(as_type(_647.w), _293, spvFMul(_294, as_type(_710.w)))))))); float _976 = spvFSub(_974, as_type(cbuf_20.data[183u + buf8_dword_off])); float _987 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _988 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _989 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _997 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _998 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _999 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _1006 = fma(_724, _997, fma(_726, _998, spvFMul(_999, _728))); float _1007 = fma(_732, _997, fma(_734, _998, spvFMul(_999, _736))); float _1008 = fma(_740, _997, fma(_742, _998, spvFMul(_999, _744))); float _1015 = fma(_724, _987, fma(_726, _988, spvFMul(_989, _728))); float _1016 = fma(_732, _987, fma(_734, _988, spvFMul(_989, _736))); float _1017 = fma(_740, _987, fma(_742, _988, spvFMul(_989, _744))); uint _1025 = ((0u + ((_779 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _1038 = uint4(cbuf_16.data[_1025 + 0u], cbuf_16.data[_1025 + 1u], cbuf_16.data[_1025 + 2u], cbuf_16.data[_1025 + 3u]); uint _1046 = ((0u + ((_779 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _1059 = uint4(cbuf_16.data[_1046 + 0u], cbuf_16.data[_1046 + 1u], cbuf_16.data[_1046 + 2u], cbuf_16.data[_1046 + 3u]); float _1067 = fma(as_type(_1038.x), _296, fma(as_type(_861.x), _295, fma(as_type(_668.x), _293, spvFMul(_294, as_type(_798.x))))); float _1069 = fma(as_type(_1038.y), _296, fma(as_type(_861.y), _295, fma(as_type(_668.y), _293, spvFMul(_294, as_type(_798.y))))); float _1071 = fma(as_type(_1038.z), _296, fma(as_type(_861.z), _295, fma(as_type(_668.z), _293, spvFMul(_294, as_type(_798.z))))); float _1075 = fma(as_type(_1059.x), _296, fma(as_type(_882.x), _295, fma(as_type(_689.x), _293, spvFMul(_294, as_type(_819.x))))); float _1077 = fma(as_type(_1059.y), _296, fma(as_type(_882.y), _295, fma(as_type(_689.y), _293, spvFMul(_294, as_type(_819.y))))); float _1079 = fma(as_type(_1059.z), _296, fma(as_type(_882.z), _295, fma(as_type(_689.z), _293, spvFMul(_294, as_type(_819.z))))); float _1086 = fma(_1067, _753, fma(_1069, _754, fma(_1071, _755, fma(as_type(_1038.w), _296, fma(as_type(_861.w), _295, fma(as_type(_668.w), _293, spvFMul(_294, as_type(_798.w)))))))); float _1087 = fma(_1075, _753, fma(_1077, _754, fma(_1079, _755, fma(as_type(_1059.w), _296, fma(as_type(_882.w), _295, fma(as_type(_689.w), _293, spvFMul(_294, as_type(_819.w)))))))); float _1089 = spvFSub(_1086, as_type(cbuf_20.data[187u + buf8_dword_off])); float _1091 = spvFSub(_1087, as_type(cbuf_20.data[191u + buf8_dword_off])); float _1113 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _1091, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _1115 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _1091, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _1117 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _1091, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _1119 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _976, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _1089, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _1091, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _1113; out.gl_Position.y = _1115; out.gl_Position.z = _1117; out.gl_Position.w = _1119; out.out_attr5.x = _1113; out.out_attr5.y = _1115; out.out_attr5.z = _1117; out.out_attr5.w = _1119; out.out_attr1.x = fma(_965, _1015, fma(_967, _1016, spvFMul(_1017, _969))); out.out_attr1.y = fma(_1067, _1015, fma(_1069, _1016, spvFMul(_1017, _1071))); out.out_attr1.z = fma(_1075, _1015, fma(_1077, _1016, spvFMul(_1017, _1079))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf11_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf11_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf11_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf11_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[85u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[86u + buf8_dword_off]), _1087, as_type(cbuf_20.data[87u + buf8_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[89u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[90u + buf8_dword_off]), _1087, as_type(cbuf_20.data[91u + buf8_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[93u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[94u + buf8_dword_off]), _1087, as_type(cbuf_20.data[95u + buf8_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf8_dword_off]), _974, fma(as_type(cbuf_20.data[97u + buf8_dword_off]), _1086, fma(as_type(cbuf_20.data[98u + buf8_dword_off]), _1087, as_type(cbuf_20.data[99u + buf8_dword_off])))); out.out_attr0.x = fma(_965, _1006, fma(_967, _1007, spvFMul(_1008, _969))); out.out_attr0.y = fma(_1067, _1006, fma(_1069, _1007, spvFMul(_1008, _1071))); out.out_attr0.z = fma(_1075, _1006, fma(_1077, _1007, spvFMul(_1008, _1079))); out.out_attr0.w = 0.0; out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf12_dword_off]), _974); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf12_dword_off]), _1086); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf12_dword_off]), _1087); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xdb734d21 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[576]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; struct vs_cbuf_block_f32_6 { uint data[32]; }; constant uint _104 = {}; constant uint _105 = {}; constant uint _106 = {}; constant uint _107 = {}; constant uint _108 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(20)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(21)]], constant vs_cbuf_block_f32_6& cbuf_32 [[buffer(22)]]) { main0_out out = {}; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _159 = as_type(as_type(in.vs_in_attr1.z)); uint _167 = as_type(as_type(in.vs_in_attr2.x)); uint _171 = as_type(as_type(in.vs_in_attr2.y)); float _244 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_167))); float _245 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_171))); float _246 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.z))))); float _253 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _254 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _255 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_159))); bool _259 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u)] == 0u; uint _304; uint _305; uint _306; uint _307; uint _308; uint _309; uint _310; uint _311; uint _312; uint _313; uint _314; uint _315; if (!_259) { _304 = cbuf_24.data[2u + buf8_dword_off]; _305 = cbuf_24.data[1u + buf8_dword_off]; _306 = cbuf_24.data[0u + buf8_dword_off]; _307 = cbuf_24.data[5u + buf8_dword_off]; _308 = cbuf_24.data[8u + buf8_dword_off]; _309 = cbuf_24.data[7u + buf8_dword_off]; _310 = cbuf_24.data[6u + buf8_dword_off]; _311 = cbuf_24.data[4u + buf8_dword_off]; _312 = cbuf_24.data[11u + buf8_dword_off]; _313 = cbuf_24.data[10u + buf8_dword_off]; _314 = cbuf_24.data[9u + buf8_dword_off]; _315 = cbuf_24.data[3u + buf8_dword_off]; } else { _304 = _104; _305 = _105; _306 = _106; _307 = _107; _308 = _108; _309 = as_type(as_type(in.vs_in_attr3.y)); _310 = as_type(as_type(in.vs_in_attr2.w)); _311 = _171; _312 = _167; _313 = as_type(as_type(in.vs_in_attr1.w)); _314 = _159; _315 = as_type(as_type(in.vs_in_attr4.y)); } uint _708; uint _709; uint _710; uint _711; uint _712; uint _713; uint _714; uint _715; uint _716; uint _717; uint _718; uint _719; if (_259) { uint _317 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); uint _322 = (cbuf_16.data[_317] + _315) * 3u; uint _323 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.x))) * 3u; uint _329 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.z))) * 3u; uint _333 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.w))) * 3u; uint _339 = ((0u + (_322 * 16u)) + buf10_off) >> 2u; uint4 _352 = uint4(cbuf_20.data[_339 + 0u], cbuf_20.data[_339 + 1u], cbuf_20.data[_339 + 2u], cbuf_20.data[_339 + 3u]); uint _360 = ((0u + ((_322 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _373 = uint4(cbuf_20.data[_360 + 0u], cbuf_20.data[_360 + 1u], cbuf_20.data[_360 + 2u], cbuf_20.data[_360 + 3u]); uint _381 = ((0u + ((_322 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _394 = uint4(cbuf_20.data[_381 + 0u], cbuf_20.data[_381 + 1u], cbuf_20.data[_381 + 2u], cbuf_20.data[_381 + 3u]); uint _402 = ((0u + (_323 * 16u)) + buf10_off) >> 2u; uint4 _415 = uint4(cbuf_20.data[_402 + 0u], cbuf_20.data[_402 + 1u], cbuf_20.data[_402 + 2u], cbuf_20.data[_402 + 3u]); uint _423 = ((0u + ((_323 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _436 = uint4(cbuf_20.data[_423 + 0u], cbuf_20.data[_423 + 1u], cbuf_20.data[_423 + 2u], cbuf_20.data[_423 + 3u]); uint _444 = ((0u + ((_323 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _457 = uint4(cbuf_20.data[_444 + 0u], cbuf_20.data[_444 + 1u], cbuf_20.data[_444 + 2u], cbuf_20.data[_444 + 3u]); uint _465 = ((0u + (_329 * 16u)) + buf10_off) >> 2u; uint4 _478 = uint4(cbuf_20.data[_465 + 0u], cbuf_20.data[_465 + 1u], cbuf_20.data[_465 + 2u], cbuf_20.data[_465 + 3u]); uint _486 = ((0u + ((_329 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _499 = uint4(cbuf_20.data[_486 + 0u], cbuf_20.data[_486 + 1u], cbuf_20.data[_486 + 2u], cbuf_20.data[_486 + 3u]); uint _507 = ((0u + ((_329 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _520 = uint4(cbuf_20.data[_507 + 0u], cbuf_20.data[_507 + 1u], cbuf_20.data[_507 + 2u], cbuf_20.data[_507 + 3u]); uint _528 = ((0u + (_333 * 16u)) + buf10_off) >> 2u; uint4 _541 = uint4(cbuf_20.data[_528 + 0u], cbuf_20.data[_528 + 1u], cbuf_20.data[_528 + 2u], cbuf_20.data[_528 + 3u]); uint _549 = ((0u + ((_333 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _562 = uint4(cbuf_20.data[_549 + 0u], cbuf_20.data[_549 + 1u], cbuf_20.data[_549 + 2u], cbuf_20.data[_549 + 3u]); uint _570 = ((0u + ((_333 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _583 = uint4(cbuf_20.data[_570 + 0u], cbuf_20.data[_570 + 1u], cbuf_20.data[_570 + 2u], cbuf_20.data[_570 + 3u]); float _595 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr5.w, spvFAdd(in.vs_in_attr5.z, spvFAdd(in.vs_in_attr5.x, in.vs_in_attr5.y)))); float _596 = spvFMul(in.vs_in_attr5.y, _595); float _597 = spvFMul(in.vs_in_attr5.x, _595); float _622 = spvFMul(in.vs_in_attr5.z, _595); float _647 = spvFMul(in.vs_in_attr5.w, _595); _708 = as_type(fma(as_type(_541.x), _647, fma(as_type(_478.x), _622, fma(as_type(_415.x), _597, spvFMul(_596, as_type(_352.x)))))); _709 = as_type(fma(as_type(_562.x), _647, fma(as_type(_499.x), _622, fma(as_type(_436.x), _597, spvFMul(_596, as_type(_373.x)))))); _710 = as_type(fma(as_type(_541.y), _647, fma(as_type(_478.y), _622, fma(as_type(_415.y), _597, spvFMul(_596, as_type(_352.y)))))); _711 = as_type(fma(as_type(_583.x), _647, fma(as_type(_520.x), _622, fma(as_type(_457.x), _597, spvFMul(_596, as_type(_394.x)))))); _712 = as_type(fma(as_type(_562.y), _647, fma(as_type(_499.y), _622, fma(as_type(_436.y), _597, spvFMul(_596, as_type(_373.y)))))); _713 = as_type(fma(as_type(_541.w), _647, fma(as_type(_478.w), _622, fma(as_type(_415.w), _597, spvFMul(_596, as_type(_352.w)))))); _714 = as_type(fma(as_type(_541.z), _647, fma(as_type(_478.z), _622, fma(as_type(_415.z), _597, spvFMul(_596, as_type(_352.z)))))); _715 = as_type(fma(as_type(_583.y), _647, fma(as_type(_520.y), _622, fma(as_type(_457.y), _597, spvFMul(_596, as_type(_394.y)))))); _716 = as_type(fma(as_type(_562.w), _647, fma(as_type(_499.w), _622, fma(as_type(_436.w), _597, spvFMul(_596, as_type(_373.w)))))); _717 = as_type(fma(as_type(_562.z), _647, fma(as_type(_499.z), _622, fma(as_type(_436.z), _597, spvFMul(_596, as_type(_373.z)))))); _718 = as_type(fma(as_type(_583.w), _647, fma(as_type(_520.w), _622, fma(as_type(_457.w), _597, spvFMul(_596, as_type(_394.w)))))); _719 = as_type(fma(as_type(_583.z), _647, fma(as_type(_520.z), _622, fma(as_type(_457.z), _597, spvFMul(_596, as_type(_394.z)))))); } else { _708 = _306; _709 = _311; _710 = _305; _711 = _308; _712 = _307; _713 = _315; _714 = _304; _715 = _314; _716 = _309; _717 = _310; _718 = _312; _719 = _313; } float _810 = fma(as_type(_711), in.vs_in_attr0.x, fma(as_type(_715), in.vs_in_attr0.y, fma(as_type(_719), in.vs_in_attr0.z, as_type(_718)))); float _814 = fma(as_type(_709), in.vs_in_attr0.x, fma(as_type(_712), in.vs_in_attr0.y, fma(as_type(_717), in.vs_in_attr0.z, as_type(_716)))); float _816 = spvFSub(_810, as_type(cbuf_28.data[191u + buf11_dword_off])); float _818 = fma(as_type(_708), in.vs_in_attr0.x, fma(as_type(_710), in.vs_in_attr0.y, fma(as_type(_714), in.vs_in_attr0.z, as_type(_713)))); float _820 = spvFSub(_814, as_type(cbuf_28.data[187u + buf11_dword_off])); float _834 = spvFSub(_818, as_type(cbuf_28.data[183u + buf11_dword_off])); float _844 = fma(as_type(cbuf_28.data[200u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[201u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[202u + buf11_dword_off]), _816, as_type(cbuf_28.data[203u + buf11_dword_off])))); float _846 = fma(as_type(cbuf_28.data[204u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[205u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[206u + buf11_dword_off]), _816, as_type(cbuf_28.data[207u + buf11_dword_off])))); float _848 = fma(as_type(cbuf_28.data[208u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[209u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[210u + buf11_dword_off]), _816, as_type(cbuf_28.data[211u + buf11_dword_off])))); float _850 = fma(as_type(cbuf_28.data[212u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[213u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[214u + buf11_dword_off]), _816, as_type(cbuf_28.data[215u + buf11_dword_off])))); out.gl_Position.x = _844; out.gl_Position.y = _846; out.gl_Position.z = _848; out.gl_Position.w = _850; out.out_attr0.x = fma(as_type(_708), _253, fma(as_type(_710), _254, spvFMul(_255, as_type(_714)))); out.out_attr0.y = fma(as_type(_709), _253, fma(as_type(_712), _254, spvFMul(_255, as_type(_717)))); out.out_attr0.z = fma(as_type(_711), _253, fma(as_type(_715), _254, spvFMul(_255, as_type(_719)))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_708), _244, fma(as_type(_710), _245, spvFMul(_246, as_type(_714)))); out.out_attr1.y = fma(as_type(_709), _244, fma(as_type(_712), _245, spvFMul(_246, as_type(_717)))); out.out_attr1.z = fma(as_type(_711), _244, fma(as_type(_715), _245, spvFMul(_246, as_type(_719)))); out.out_attr1.w = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); out.out_attr2.x = in.vs_in_attr6.x; out.out_attr2.y = in.vs_in_attr6.y; out.out_attr2.z = in.vs_in_attr6.z; out.out_attr2.w = in.vs_in_attr6.w; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[2u + buf12_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[3u + buf12_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.z))))), as_type(cbuf_8.data[6u + buf12_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.w))))), as_type(cbuf_8.data[7u + buf12_dword_off])); out.out_attr4.x = fma(as_type(cbuf_28.data[84u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[85u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[86u + buf11_dword_off]), _810, as_type(cbuf_28.data[87u + buf11_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_28.data[88u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[89u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[90u + buf11_dword_off]), _810, as_type(cbuf_28.data[91u + buf11_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_28.data[92u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[93u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[94u + buf11_dword_off]), _810, as_type(cbuf_28.data[95u + buf11_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_28.data[96u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[97u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[98u + buf11_dword_off]), _810, as_type(cbuf_28.data[99u + buf11_dword_off])))); out.out_attr5.x = _844; out.out_attr5.y = _846; out.out_attr5.z = _848; out.out_attr5.w = _850; out.out_attr6.x = spvFSub(as_type(cbuf_32.data[12u + buf13_dword_off]), _818); out.out_attr6.y = spvFSub(as_type(cbuf_32.data[13u + buf13_dword_off]), _814); out.out_attr6.z = spvFSub(as_type(cbuf_32.data[14u + buf13_dword_off]), _810); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[72]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_32 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_56 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_48 [[buffer(15)]], texture2d fs_img124 [[texture(0)]], texture2d fs_img132 [[texture(1)]], texture2d fs_img84 [[texture(2)]], texture2d fs_img76 [[texture(3)]], texture2d fs_img140 [[texture(4)]], texture2d fs_img68 [[texture(5)]], texture2d fs_img116 [[texture(6)]], depth2d fs_img108 [[texture(7)]], texturecube fs_img100 [[texture(8)]], texture2d fs_img148 [[texture(9)]], texturecube fs_img92 [[texture(10)]], texture2d fs_img60 [[texture(11)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _166 = uint(gl_FrontFacing); float _185 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _186 = spvFMul(in.fs_in_attr0.x, _185); float _188 = spvFMul(in.fs_in_attr0.y, _185); float _189 = spvFMul(in.fs_in_attr0.z, _185); float _209 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _210 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _211 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _219 = 1.0 / in.fs_in_attr5.w; float _220 = spvFMul(in.fs_in_attr5.x, _219); float _221 = spvFMul(in.fs_in_attr5.y, _219); float _223 = fma(0.5, _220, 0.5); float _225 = fma(-0.5, _221, 0.5); float4 _241 = fs_img124.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_52.data[4u + buf0_dword_off]), _223)), spvFMul(0.25, spvFMul(as_type(cbuf_52.data[5u + buf0_dword_off]), _225)))); float4 _247 = fs_img132.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _251 = _247.w; bool _252 = 0u == _166; uint _257; if (_252) { _257 = as_type(fast::max(-_186, -_186)); } else { _257 = _166; } uint _266; uint _267; if (_252) { _266 = as_type(fast::max(-_189, -_189)); _267 = as_type(fast::max(-_188, -_188)); } else { _266 = as_type(_186); _267 = as_type(_189); } uint _270; uint _271; uint _272; if (!_252) { _270 = _266; _271 = as_type(_188); _272 = _267; } else { _270 = _257; _271 = _267; _272 = _266; } float _273 = spvFAdd(-0.5, _241.w); float _366 = spvFMul(in.fs_in_attr5.z, _219); float4 _371 = fs_img84.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[14u + buf1_dword_off])), fma(as_type(cbuf_32.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[15u + buf1_dword_off])))); float _401 = 1.0 / fma(as_type(cbuf_52.data[48u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[49u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[50u + buf0_dword_off]), _366, as_type(cbuf_52.data[51u + buf0_dword_off])))); float _402 = spvFMul(fma(as_type(cbuf_52.data[44u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[45u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[46u + buf0_dword_off]), _366, as_type(cbuf_52.data[47u + buf0_dword_off])))), _401); uint _435 = ((((as_type((as_type(cbuf_52.data[176u + buf0_dword_off]) < _402) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_402 > as_type(cbuf_52.data[177u + buf0_dword_off]))) + uint(abs(int(0u)))) + uint(_402 > as_type(cbuf_52.data[178u + buf0_dword_off]))) << 2u; float4 _454 = fs_img76.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[10u + buf1_dword_off])), fma(as_type(cbuf_32.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[11u + buf1_dword_off])))); float _455 = _454.x; float4 _460 = fs_img140.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _462 = _460.y; uint _466 = ((0u + ((_435 + 28u) * 16u)) + buf0_off) >> 2u; uint4 _479 = uint4(cbuf_52.data[_466 + 0u], cbuf_52.data[_466 + 1u], cbuf_52.data[_466 + 2u], cbuf_52.data[_466 + 3u]); uint _487 = ((0u + ((_435 + 29u) * 16u)) + buf0_off) >> 2u; uint4 _500 = uint4(cbuf_52.data[_487 + 0u], cbuf_52.data[_487 + 1u], cbuf_52.data[_487 + 2u], cbuf_52.data[_487 + 3u]); uint _508 = ((0u + ((_435 + 31u) * 16u)) + buf0_off) >> 2u; uint4 _521 = uint4(cbuf_52.data[_508 + 0u], cbuf_52.data[_508 + 1u], cbuf_52.data[_508 + 2u], cbuf_52.data[_508 + 3u]); uint _529 = ((0u + ((_435 + 30u) * 16u)) + buf0_off) >> 2u; uint4 _542 = uint4(cbuf_52.data[_529 + 0u], cbuf_52.data[_529 + 1u], cbuf_52.data[_529 + 2u], cbuf_52.data[_529 + 3u]); float _551 = fma(2.0, _371.y, -1.0); float _552 = spvFMul(fma(2.0, _371.x, -1.0), fma(2.0, _371.w, -1.0)); float _563 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _565 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_552, _552), spvFMul(_551, _551)), 0.0, 1.0))); float _567 = rsqrt(fma(_209, _209, fma(_210, _210, spvFMul(_211, _211)))); float _582 = fma(spvFMul(_211, _567), _552, fma(spvFMul(in.fs_in_attr1.z, _563), _551, spvFMul(as_type(_272), _565))); float _602 = fma(spvFMul(_210, _567), _552, fma(spvFMul(in.fs_in_attr1.y, _563), _551, spvFMul(as_type(_271), _565))); float _607 = fma(spvFMul(_209, _567), _552, fma(spvFMul(in.fs_in_attr1.x, _563), _551, spvFMul(as_type(_270), _565))); uint _614 = 24u + buf2_dword_off; float _617 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _618 = rsqrt(fma(_607, _607, fma(_602, _602, spvFMul(_582, _582)))); uint _623 = 73u + buf0_dword_off; uint _627 = 74u + buf0_dword_off; uint _631 = 75u + buf0_dword_off; float _634 = spvFMul(in.fs_in_attr6.z, _617); float _635 = spvFMul(_582, _618); float _636 = spvFMul(in.fs_in_attr6.y, _617); float _637 = spvFMul(_602, _618); float _639 = spvFMul(in.fs_in_attr6.x, _617); float _640 = spvFMul(_607, _618); float _660 = fma(_640, _639, fma(_637, _636, spvFMul(_634, _635))); float4 _676 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf1_dword_off])), fma(as_type(cbuf_32.data[5u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf1_dword_off])))); float _677 = _676.x; float _678 = _676.y; float _679 = _676.z; float _681 = spvFMul(fast::max(_660, _660), 2.0); uint _687 = uint(in.fs_in_attr0.w) * 13u; float _691 = fma(as_type(_479.x), _220, fma(as_type(_479.y), _221, fma(as_type(_479.z), _366, as_type(_479.w)))); float _693 = fma(as_type(_500.x), _220, fma(as_type(_500.y), _221, fma(as_type(_500.z), _366, as_type(_500.w)))); float _695 = fma(as_type(_521.x), _220, fma(as_type(_521.y), _221, fma(as_type(_521.z), _366, as_type(_521.w)))); float _708 = spvFMul(fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _455, _460.x), _455), _455), spvFMul(as_type(cbuf_36.data[8u + buf2_dword_off]), 0.00390625)); float _717 = 1.0 / _695; float _724 = spvFMul(13.0, _708); float _726 = fma(-in.fs_in_attr6.x, _617, spvFMul(_640, _681)); float _728 = fma(-in.fs_in_attr6.y, _617, spvFMul(_637, _681)); float _730 = fma(-in.fs_in_attr6.z, _617, spvFMul(_635, _681)); float _737 = spvFMul(fma(as_type(_542.x), _220, fma(as_type(_542.y), _221, fma(as_type(_542.z), _366, as_type(_542.w)))), _717); float _766 = 1.0 / abs(1.0); float _782 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_724, _724), 0.5))); float _784 = fma(_728, _766, 1.5); float _785 = fma(_726, _766, 1.5); uint _791 = ((0u + ((_687 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _804 = uint4(cbuf_40.data[_791 + 0u], cbuf_40.data[_791 + 1u], cbuf_40.data[_791 + 2u], cbuf_40.data[_791 + 3u]); uint _812 = ((0u + ((_687 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _825 = uint4(cbuf_40.data[_812 + 0u], cbuf_40.data[_812 + 1u], cbuf_40.data[_812 + 2u], cbuf_40.data[_812 + 3u]); uint _833 = ((0u + ((_687 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _846 = uint4(cbuf_40.data[_833 + 0u], cbuf_40.data[_833 + 1u], cbuf_40.data[_833 + 2u], cbuf_40.data[_833 + 3u]); uint _861 = ((0u + ((_687 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _874 = uint4(cbuf_40.data[_861 + 0u], cbuf_40.data[_861 + 1u], cbuf_40.data[_861 + 2u], cbuf_40.data[_861 + 3u]); uint _875 = _874.x; uint _876 = _874.y; uint _877 = _874.z; uint _878 = _874.w; float4 _885 = fs_img100.sample(fs_samp20, float3(spvFSub(_785, 1.5), spvFSub(_784, 1.5), _730), level(_782)); float4 _893 = fs_img148.sample(fs_samp24, float2(_223, _225), level(_782)); uint _901 = ((0u + ((_687 + 12u) * 16u)) + buf3_off) >> 2u; float4 _923 = fs_img92.sample(fs_samp20, float3(spvFSub(_785, 1.5), spvFSub(_784, 1.5), _730), level(_782)); float4 _931 = fs_img60.sample(fs_samp4, float2(fma(as_type(cbuf_32.data[0u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[2u + buf1_dword_off])), fma(as_type(cbuf_32.data[1u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[3u + buf1_dword_off])))); float _932 = _931.x; float _933 = _931.y; float _934 = _931.z; uint _936 = 12u + buf2_dword_off; float _958 = spvFMul(fma(as_type(cbuf_52.data[40u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[41u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[42u + buf0_dword_off]), _366, as_type(cbuf_52.data[43u + buf0_dword_off])))), _401); uint _960 = 0u + buf4_dword_off; uint _963 = 1u + buf4_dword_off; uint _966 = 2u + buf4_dword_off; uint _969 = 3u + buf4_dword_off; uint _972 = 4u + buf4_dword_off; uint _975 = 5u + buf4_dword_off; uint _978 = 6u + buf4_dword_off; uint _981 = 7u + buf4_dword_off; float _984 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _985 = spvFMul(fma(as_type(cbuf_52.data[36u + buf0_dword_off]), _220, fma(as_type(cbuf_52.data[37u + buf0_dword_off]), _221, fma(as_type(cbuf_52.data[38u + buf0_dword_off]), _366, as_type(cbuf_52.data[39u + buf0_dword_off])))), _401); bool _1004 = (_679 == 0.0) && (_678 == 0.0); float _1021 = fma(fma(as_type(cbuf_36.data[_936]), fs_img116.sample(fs_samp20, float2(_223, _225)).x, 1.0), _984, -spvFMul(as_type(cbuf_36.data[_936]), _984)); float _1022 = spvFAdd(_660, _1021); float _1024 = fast::clamp(spvFAdd(fma(_726, as_type(_270), fma(_728, as_type(_271), spvFMul(as_type(_272), _730))), 1.0), 0.0, 1.0); float _1025 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_660, _660), 0.0, 1.0))))); float _1027 = _1004 ? _677 : _679; float _1028 = _1004 ? _677 : _678; float _1029 = spvFMul(_462, _462); float _1084 = fast::clamp(spvFAdd(fma(_1022, _1022, _1021), -1.0), 0.0, 1.0); float _1101 = spvFMul(as_type(cbuf_40.data[_901]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_52.data[72u + buf0_dword_off]), as_type(cbuf_52.data[_623])), -spvFMul(as_type(cbuf_52.data[_623]), sqrt(fma(_985, _985, fma(_958, _958, spvFMul(_402, _402)))))), 0.0, 1.0)); float _1103 = spvFMul(as_type(cbuf_44.data[_978]), _635); float _1105 = fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _677, _1029), _677), _677); float _1107 = fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _1028, _1029), _1028), _1028); float _1109 = fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _1027, _1029), _1027), _1027); float _1110 = spvFMul(_1025, _1084); float _1133 = spvFSub(1.0, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_695, as_type(cbuf_52.data[_631]), _691), _717), spvFMul(fma(as_type(cbuf_52.data[_627]), _695, _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_695, as_type(cbuf_52.data[_627]), _691), _717), spvFMul(fma(-_695, as_type(cbuf_52.data[_631]), _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_695, as_type(cbuf_52.data[_627]), _691), _717), spvFMul(fma(_695, as_type(cbuf_52.data[_631]), _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_695, as_type(cbuf_52.data[_631]), _691), _717), spvFMul(fma(-_695, as_type(cbuf_52.data[_627]), _693), _717)), _737, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1141 = spvFMul(as_type(cbuf_44.data[_966]), _635); float _1162 = spvFMul(_1021, spvFMul(spvFMul(_1024, _1024), spvFSub(1.0, _893.w))); float _1165 = fma(-_1133, spvFMul(as_type(cbuf_52.data[76u + buf0_dword_off]), _1101), as_type(cbuf_40.data[_901])); float _1168 = fma(-_1133, spvFMul(as_type(cbuf_52.data[77u + buf0_dword_off]), _1101), as_type(cbuf_40.data[_901])); float _1171 = fma(-_1133, spvFMul(as_type(cbuf_52.data[78u + buf0_dword_off]), _1101), as_type(cbuf_40.data[_901])); float _1176 = fast::clamp(fma(as_type(cbuf_44.data[_972]), _640, fma(as_type(cbuf_44.data[_975]), _637, _1103)), 0.0, 1.0); float _1186 = spvFMul(_708, _708); float _1187 = fast::max(0.0, spvFAdd(as_type(_804.w), fma(_635, as_type(_804.z), fma(_640, as_type(_804.x), spvFMul(_637, as_type(_804.y)))))); float _1188 = fast::max(0.0, spvFAdd(as_type(_825.w), fma(_635, as_type(_825.z), fma(_640, as_type(_825.x), spvFMul(_637, as_type(_825.y)))))); float _1189 = fast::max(0.0, spvFAdd(as_type(_846.w), fma(_635, as_type(_846.z), fma(_640, as_type(_846.x), spvFMul(_637, as_type(_846.y)))))); float _1198 = fast::clamp(fma(as_type(cbuf_44.data[_960]), _640, fma(as_type(cbuf_44.data[_963]), _637, _1141)), 0.0, 1.0); uint _1250 = 64u + buf4_dword_off; uint _1254 = 65u + buf4_dword_off; float _1257 = spvFMul(_931.w, in.fs_in_attr2.w); float _1271 = spvFMul(as_type(cbuf_40.data[_901]), fma(as_type(_878), spvFAdd(-1.0, _1165), 1.0)); float _1273 = spvFMul(as_type(cbuf_40.data[_901]), fma(as_type(_878), spvFAdd(-1.0, _1168), 1.0)); float _1275 = spvFMul(as_type(cbuf_40.data[_901]), fma(as_type(_878), spvFAdd(-1.0, _1171), 1.0)); float _1276 = fma(spvFMul(as_type(cbuf_44.data[16u + buf4_dword_off]), _1165), fma(-_1105, _1198, _1198), spvFMul(as_type(cbuf_44.data[20u + buf4_dword_off]), fma(-_1105, _1176, _1176))); float _1278 = fma(spvFMul(as_type(cbuf_44.data[17u + buf4_dword_off]), _1168), fma(-_1107, _1198, _1198), spvFMul(as_type(cbuf_44.data[21u + buf4_dword_off]), fma(-_1107, _1176, _1176))); float _1280 = fma(spvFMul(as_type(cbuf_44.data[18u + buf4_dword_off]), _1171), fma(-_1109, _1198, _1198), spvFMul(as_type(cbuf_44.data[22u + buf4_dword_off]), fma(-_1109, _1176, _1176))); uint _1327; uint _1328; uint _1329; if (cbuf_44.data[_1250] > 0u) { float _1309 = fma(0.5, fma(as_type(cbuf_44.data[8u + buf4_dword_off]), _640, fma(as_type(cbuf_44.data[9u + buf4_dword_off]), _637, spvFMul(as_type(cbuf_44.data[10u + buf4_dword_off]), _635))), 0.5); float _1311 = fast::clamp(spvFMul(_1309, _1309), 0.0, 1.0); _1327 = as_type(fma(as_type(cbuf_44.data[26u + buf4_dword_off]), fma(-_1109, _1311, _1311), _1280)); _1328 = as_type(fma(as_type(cbuf_44.data[25u + buf4_dword_off]), fma(-_1107, _1311, _1311), _1278)); _1329 = as_type(fma(as_type(cbuf_44.data[24u + buf4_dword_off]), fma(-_1105, _1311, _1311), _1276)); } else { _1327 = as_type(_1280); _1328 = as_type(_1278); _1329 = as_type(_1276); } uint _1376; uint _1377; uint _1378; if (cbuf_44.data[_1254] > 0u) { float _1355 = fma(0.5, fma(as_type(cbuf_44.data[12u + buf4_dword_off]), _640, fma(as_type(cbuf_44.data[13u + buf4_dword_off]), _637, spvFMul(as_type(cbuf_44.data[14u + buf4_dword_off]), _635))), 0.5); float _1357 = fast::clamp(spvFMul(_1355, _1355), 0.0, 1.0); _1376 = as_type(fma(as_type(cbuf_44.data[30u + buf4_dword_off]), fma(-_1109, _1357, _1357), as_type(_1327))); _1377 = as_type(fma(as_type(cbuf_44.data[29u + buf4_dword_off]), fma(-_1107, _1357, _1357), as_type(_1328))); _1378 = as_type(fma(as_type(cbuf_44.data[28u + buf4_dword_off]), fma(-_1105, _1357, _1357), as_type(_1329))); } else { _1376 = _1327; _1377 = _1328; _1378 = _1329; } float _1380 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[_978])); float _1382 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[_966])); float _1384 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[_975])); float _1387 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[_963])); float _1390 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[_972])); float _1393 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[_960])); float _1397 = rsqrt(fma(_1390, _1390, fma(_1384, _1384, spvFMul(_1380, _1380)))); float _1398 = rsqrt(fma(_1393, _1393, fma(_1387, _1387, spvFMul(_1382, _1382)))); float _1399 = spvFMul(_1380, _1397); float _1400 = exp2(_724); float _1401 = spvFMul(_1382, _1398); float _1402 = spvFMul(_1384, _1397); float _1425 = spvFMul(_1387, _1398); float _1426 = spvFMul(_1390, _1397); float _1433 = spvFMul(_1393, _1398); float _1457 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_981]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_981])))); float _1463 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_969]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_969])))); float _1469 = fma(_1457, 0.125, 0.25); float _1481 = exp2(spvFMul(_1457, log2(fast::clamp(fma(_1426, _640, fma(_1402, _637, spvFMul(_635, _1399))), 0.0, 1.0)))); float _1483 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1426, fma(_636, _1402, spvFMul(_634, _1399))), 0.0, 1.0))))); float _1484 = fma(0.125, _1463, 0.25); float _1493 = exp2(spvFMul(_1463, log2(fast::clamp(fma(_1433, _640, fma(_1425, _637, spvFMul(_635, _1401))), 0.0, 1.0)))); float _1494 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1433, fma(_636, _1425, spvFMul(_634, _1401))), 0.0, 1.0))))); float _1500 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_972]), _640, fma(as_type(cbuf_44.data[_975]), _637, _1103)), 16.0), 0.0, 1.0); float _1517 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_960]), _640, fma(as_type(cbuf_44.data[_963]), _637, _1141)), 16.0), 0.0, 1.0); float _1536 = fma(spvFMul(_1517, spvFMul(_1493, spvFMul(spvFMul(as_type(cbuf_44.data[32u + buf4_dword_off]), _1165), _1484))), fma(-_1105, _1494, spvFAdd(_1105, _1494)), spvFMul(fma(-_1105, _1483, spvFAdd(_1105, _1483)), spvFMul(_1500, spvFMul(_1481, spvFMul(as_type(cbuf_44.data[36u + buf4_dword_off]), _1469))))); float _1538 = fma(spvFMul(_1517, spvFMul(_1493, spvFMul(spvFMul(as_type(cbuf_44.data[33u + buf4_dword_off]), _1168), _1484))), fma(-_1107, _1494, spvFAdd(_1107, _1494)), spvFMul(fma(-_1107, _1483, spvFAdd(_1107, _1483)), spvFMul(_1500, spvFMul(_1481, spvFMul(as_type(cbuf_44.data[37u + buf4_dword_off]), _1469))))); float _1540 = fma(spvFMul(_1517, spvFMul(_1493, spvFMul(spvFMul(as_type(cbuf_44.data[34u + buf4_dword_off]), _1171), _1484))), fma(-_1109, _1494, spvFAdd(_1109, _1494)), spvFMul(fma(-_1109, _1483, spvFAdd(_1109, _1483)), spvFMul(_1500, spvFMul(_1481, spvFMul(as_type(cbuf_44.data[38u + buf4_dword_off]), _1469))))); uint _1630; uint _1631; uint _1632; if (cbuf_44.data[_1250] > 0u) { uint _1558 = 11u + buf4_dword_off; float _1571 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[8u + buf4_dword_off])); float _1573 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[9u + buf4_dword_off])); float _1575 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[10u + buf4_dword_off])); float _1579 = rsqrt(fma(_1571, _1571, fma(_1573, _1573, spvFMul(_1575, _1575)))); float _1580 = spvFMul(_1571, _1579); float _1581 = spvFMul(_1573, _1579); float _1582 = spvFMul(_1575, _1579); float _1593 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1558]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_1558])))); float _1596 = exp2(spvFMul(_1593, log2(fast::clamp(fma(_1580, _640, fma(_1581, _637, spvFMul(_635, _1582))), 0.0, 1.0)))); float _1604 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1580, fma(_636, _1581, spvFMul(_634, _1582))), 0.0, 1.0))))); float _1614 = fma(0.125, _1593, 0.25); _1630 = as_type(fma(spvFMul(_1596, spvFMul(as_type(cbuf_44.data[42u + buf4_dword_off]), _1614)), fma(-_1109, _1604, spvFAdd(_1109, _1604)), _1540)); _1631 = as_type(fma(spvFMul(_1596, spvFMul(as_type(cbuf_44.data[41u + buf4_dword_off]), _1614)), fma(-_1107, _1604, spvFAdd(_1107, _1604)), _1538)); _1632 = as_type(fma(spvFMul(_1596, spvFMul(as_type(cbuf_44.data[40u + buf4_dword_off]), _1614)), fma(-_1105, _1604, spvFAdd(_1105, _1604)), _1536)); } else { _1630 = as_type(_1540); _1631 = as_type(_1538); _1632 = as_type(_1536); } uint _1718; uint _1719; uint _1720; if (cbuf_44.data[_1254] > 0u) { uint _1643 = 15u + buf4_dword_off; float _1656 = fma(in.fs_in_attr6.x, _617, as_type(cbuf_44.data[12u + buf4_dword_off])); float _1658 = fma(in.fs_in_attr6.y, _617, as_type(cbuf_44.data[13u + buf4_dword_off])); float _1660 = fma(in.fs_in_attr6.z, _617, as_type(cbuf_44.data[14u + buf4_dword_off])); float _1664 = rsqrt(fma(_1656, _1656, fma(_1658, _1658, spvFMul(_1660, _1660)))); float _1665 = spvFMul(_1656, _1664); float _1666 = spvFMul(_1658, _1664); float _1667 = spvFMul(_1660, _1664); float _1678 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1643]), _1400), 1.0 / fma(_1400, 0.01000213623046875, as_type(cbuf_44.data[_1643])))); float _1681 = exp2(spvFMul(_1678, log2(fast::clamp(fma(_1665, _640, fma(_1666, _637, spvFMul(_635, _1667))), 0.0, 1.0)))); float _1689 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_639, _1665, fma(_636, _1666, spvFMul(_634, _1667))), 0.0, 1.0))))); float _1699 = fma(0.125, _1678, 0.25); _1718 = as_type(fma(spvFMul(_1681, spvFMul(as_type(cbuf_44.data[46u + buf4_dword_off]), _1699)), fma(-_1109, _1689, spvFAdd(_1109, _1689)), as_type(_1630))); _1719 = as_type(fma(spvFMul(_1681, spvFMul(as_type(cbuf_44.data[44u + buf4_dword_off]), _1699)), fma(-_1105, _1689, spvFAdd(_1105, _1689)), as_type(_1632))); _1720 = as_type(fma(spvFMul(_1681, spvFMul(as_type(cbuf_44.data[45u + buf4_dword_off]), _1699)), fma(-_1107, _1689, spvFAdd(_1107, _1689)), as_type(_1631))); } else { _1718 = _1630; _1719 = _1632; _1720 = _1631; } float _1723 = fma(spvFMul(fma(fma(_1025, _1084, -spvFMul(_1107, _1110)), _1186, _1107), fma(_1021, _893.y, spvFMul(fma(as_type(_875), fma(-as_type(_876), _923.y, spvFMul(as_type(_877), _885.y)), spvFMul(as_type(_876), _923.y)), _1162))), _1273, as_type(_1720)); float _1728 = fma(spvFMul(fma(fma(_1025, _1084, -spvFMul(_1109, _1110)), _1186, _1109), fma(_1021, _893.z, spvFMul(fma(as_type(_875), fma(-as_type(_876), _923.z, spvFMul(as_type(_877), _885.z)), spvFMul(as_type(_876), _923.z)), _1162))), _1275, as_type(_1718)); uint _1733 = ((0u + ((_687 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _1746 = uint4(cbuf_40.data[_1733 + 0u], cbuf_40.data[_1733 + 1u], cbuf_40.data[_1733 + 2u], cbuf_40.data[_1733 + 3u]); uint _1747 = _1746.x; uint _1748 = _1746.y; uint _1749 = _1746.z; float _1762 = spvFMul(_1257, as_type(_1746.w)); bool _1764 = (as_type(cbuf_36.data[20u + buf2_dword_off]) > fma(as_type(cbuf_36.data[21u + buf2_dword_off]), _273, _1257)) || (_1762 == 0.0); uint _1923; uint _1924; uint _1925; if (!_1764) { uint _1775 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); uint _1778 = 8u + buf6_dword_off; uint _1784 = 10u + buf6_dword_off; float _1798 = fma(spvFMul(as_type(cbuf_36.data[1u + buf2_dword_off]), fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _933, _247.y), _933), _933)), fma(spvFMul(_1021, fma(-_1107, _1188, _1188)), _1273, as_type(_1377)), spvFMul(_1723, spvFMul(as_type(cbuf_36.data[5u + buf2_dword_off]), as_type(cbuf_56.data[_1775])))); float _1812 = fma(spvFMul(as_type(cbuf_36.data[0u + buf2_dword_off]), fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _932, _247.x), _932), _932)), fma(spvFMul(_1021, fma(-_1105, _1187, _1187)), _1271, as_type(_1378)), spvFMul(fma(spvFMul(fma(fma(_1025, _1084, -spvFMul(_1105, _1110)), _1186, _1105), fma(_1021, _893.x, spvFMul(fma(as_type(_875), fma(-as_type(_876), _923.x, spvFMul(as_type(_877), _885.x)), spvFMul(as_type(_876), _923.x)), _1162))), _1271, as_type(_1719)), spvFMul(as_type(cbuf_36.data[4u + buf2_dword_off]), as_type(cbuf_56.data[_1775])))); float _1814 = spvFMul(_1798, as_type(_1748)); uint _1821 = 14u + buf6_dword_off; float _1827 = fma(spvFMul(as_type(cbuf_36.data[2u + buf2_dword_off]), fma(as_type(cbuf_36.data[_614]), spvFSub(fma(_251, _934, _247.z), _934), _934)), fma(spvFMul(_1021, fma(-_1109, _1189, _1189)), _1275, as_type(_1376)), spvFMul(_1728, spvFMul(as_type(cbuf_36.data[6u + buf2_dword_off]), as_type(cbuf_56.data[_1775])))); float _1829 = spvFMul(_1812, as_type(_1747)); float _1836 = spvFMul(_1827, as_type(_1749)); float _1864 = spvFAdd(-1.0, fma(_1836, 0.11448000371456146240234375, fma(_1829, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1814)))); float _1868 = fma(as_type(cbuf_48.data[7u + buf6_dword_off]), _1864, 1.0); float _1887 = fast::clamp(spvFAdd(as_type(cbuf_48.data[_1778]), spvFMul(as_type(cbuf_48.data[_1778]), -exp2(-fma(as_type(cbuf_48.data[_1784]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_48.data[9u + buf6_dword_off]), as_type(cbuf_48.data[_1784])))))), 0.0, 1.0); float _1901 = fma(as_type(cbuf_48.data[19u + buf6_dword_off]), _1864, 1.0); float _1902 = fma(_1887, fma(-_1812, as_type(_1747), spvFMul(as_type(cbuf_48.data[4u + buf6_dword_off]), _1868)), _1829); float _1903 = fma(_1887, fma(-_1798, as_type(_1748), spvFMul(as_type(cbuf_48.data[5u + buf6_dword_off]), _1868)), _1814); float _1904 = fma(_1887, fma(-_1827, as_type(_1749), spvFMul(as_type(cbuf_48.data[6u + buf6_dword_off]), _1868)), _1836); float _1907 = fast::clamp(spvFMul(as_type(cbuf_48.data[12u + buf6_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_48.data[_1821]), spvFSub(as_type(cbuf_48.data[15u + buf6_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_48.data[13u + buf6_dword_off]), as_type(cbuf_48.data[_1821]))), 0.0, 1.0)), 0.0, 1.0); _1923 = as_type(fma(_1907, fma(as_type(cbuf_48.data[18u + buf6_dword_off]), _1901, -_1904), _1904)); _1924 = as_type(fma(_1907, fma(as_type(cbuf_48.data[17u + buf6_dword_off]), _1901, -_1903), _1903)); _1925 = as_type(fma(_1907, fma(as_type(cbuf_48.data[16u + buf6_dword_off]), _1901, -_1902), _1902)); } else { _1923 = as_type(_273); _1924 = as_type(_1723); _1925 = as_type(_1728); } if (_1764) { discard_fragment(); } out.frag_color0.x = as_type(_1925); out.frag_color0.y = as_type(_1924); out.frag_color0.z = as_type(_1923); out.frag_color0.w = _1762; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xdb734d21 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[576]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; struct vs_cbuf_block_f32_6 { uint data[32]; }; constant uint _104 = {}; constant uint _105 = {}; constant uint _106 = {}; constant uint _107 = {}; constant uint _108 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(20)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(21)]], constant vs_cbuf_block_f32_6& cbuf_32 [[buffer(22)]]) { main0_out out = {}; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _159 = as_type(as_type(in.vs_in_attr1.z)); uint _167 = as_type(as_type(in.vs_in_attr2.x)); uint _171 = as_type(as_type(in.vs_in_attr2.y)); float _244 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_167))); float _245 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_171))); float _246 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.z))))); float _253 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _254 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _255 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_159))); bool _259 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u)] == 0u; uint _304; uint _305; uint _306; uint _307; uint _308; uint _309; uint _310; uint _311; uint _312; uint _313; uint _314; uint _315; if (!_259) { _304 = cbuf_24.data[2u + buf8_dword_off]; _305 = cbuf_24.data[1u + buf8_dword_off]; _306 = cbuf_24.data[0u + buf8_dword_off]; _307 = cbuf_24.data[5u + buf8_dword_off]; _308 = cbuf_24.data[8u + buf8_dword_off]; _309 = cbuf_24.data[7u + buf8_dword_off]; _310 = cbuf_24.data[6u + buf8_dword_off]; _311 = cbuf_24.data[4u + buf8_dword_off]; _312 = cbuf_24.data[11u + buf8_dword_off]; _313 = cbuf_24.data[10u + buf8_dword_off]; _314 = cbuf_24.data[9u + buf8_dword_off]; _315 = cbuf_24.data[3u + buf8_dword_off]; } else { _304 = _104; _305 = _105; _306 = _106; _307 = _107; _308 = _108; _309 = as_type(as_type(in.vs_in_attr3.y)); _310 = as_type(as_type(in.vs_in_attr2.w)); _311 = _171; _312 = _167; _313 = as_type(as_type(in.vs_in_attr1.w)); _314 = _159; _315 = as_type(as_type(in.vs_in_attr4.y)); } uint _708; uint _709; uint _710; uint _711; uint _712; uint _713; uint _714; uint _715; uint _716; uint _717; uint _718; uint _719; if (_259) { uint _317 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); uint _322 = (cbuf_16.data[_317] + _315) * 3u; uint _323 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.x))) * 3u; uint _329 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.z))) * 3u; uint _333 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.w))) * 3u; uint _339 = ((0u + (_322 * 16u)) + buf10_off) >> 2u; uint4 _352 = uint4(cbuf_20.data[_339 + 0u], cbuf_20.data[_339 + 1u], cbuf_20.data[_339 + 2u], cbuf_20.data[_339 + 3u]); uint _360 = ((0u + ((_322 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _373 = uint4(cbuf_20.data[_360 + 0u], cbuf_20.data[_360 + 1u], cbuf_20.data[_360 + 2u], cbuf_20.data[_360 + 3u]); uint _381 = ((0u + ((_322 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _394 = uint4(cbuf_20.data[_381 + 0u], cbuf_20.data[_381 + 1u], cbuf_20.data[_381 + 2u], cbuf_20.data[_381 + 3u]); uint _402 = ((0u + (_323 * 16u)) + buf10_off) >> 2u; uint4 _415 = uint4(cbuf_20.data[_402 + 0u], cbuf_20.data[_402 + 1u], cbuf_20.data[_402 + 2u], cbuf_20.data[_402 + 3u]); uint _423 = ((0u + ((_323 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _436 = uint4(cbuf_20.data[_423 + 0u], cbuf_20.data[_423 + 1u], cbuf_20.data[_423 + 2u], cbuf_20.data[_423 + 3u]); uint _444 = ((0u + ((_323 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _457 = uint4(cbuf_20.data[_444 + 0u], cbuf_20.data[_444 + 1u], cbuf_20.data[_444 + 2u], cbuf_20.data[_444 + 3u]); uint _465 = ((0u + (_329 * 16u)) + buf10_off) >> 2u; uint4 _478 = uint4(cbuf_20.data[_465 + 0u], cbuf_20.data[_465 + 1u], cbuf_20.data[_465 + 2u], cbuf_20.data[_465 + 3u]); uint _486 = ((0u + ((_329 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _499 = uint4(cbuf_20.data[_486 + 0u], cbuf_20.data[_486 + 1u], cbuf_20.data[_486 + 2u], cbuf_20.data[_486 + 3u]); uint _507 = ((0u + ((_329 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _520 = uint4(cbuf_20.data[_507 + 0u], cbuf_20.data[_507 + 1u], cbuf_20.data[_507 + 2u], cbuf_20.data[_507 + 3u]); uint _528 = ((0u + (_333 * 16u)) + buf10_off) >> 2u; uint4 _541 = uint4(cbuf_20.data[_528 + 0u], cbuf_20.data[_528 + 1u], cbuf_20.data[_528 + 2u], cbuf_20.data[_528 + 3u]); uint _549 = ((0u + ((_333 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _562 = uint4(cbuf_20.data[_549 + 0u], cbuf_20.data[_549 + 1u], cbuf_20.data[_549 + 2u], cbuf_20.data[_549 + 3u]); uint _570 = ((0u + ((_333 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _583 = uint4(cbuf_20.data[_570 + 0u], cbuf_20.data[_570 + 1u], cbuf_20.data[_570 + 2u], cbuf_20.data[_570 + 3u]); float _595 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr5.w, spvFAdd(in.vs_in_attr5.z, spvFAdd(in.vs_in_attr5.x, in.vs_in_attr5.y)))); float _596 = spvFMul(in.vs_in_attr5.y, _595); float _597 = spvFMul(in.vs_in_attr5.x, _595); float _622 = spvFMul(in.vs_in_attr5.z, _595); float _647 = spvFMul(in.vs_in_attr5.w, _595); _708 = as_type(fma(as_type(_541.x), _647, fma(as_type(_478.x), _622, fma(as_type(_415.x), _597, spvFMul(_596, as_type(_352.x)))))); _709 = as_type(fma(as_type(_562.x), _647, fma(as_type(_499.x), _622, fma(as_type(_436.x), _597, spvFMul(_596, as_type(_373.x)))))); _710 = as_type(fma(as_type(_541.y), _647, fma(as_type(_478.y), _622, fma(as_type(_415.y), _597, spvFMul(_596, as_type(_352.y)))))); _711 = as_type(fma(as_type(_583.x), _647, fma(as_type(_520.x), _622, fma(as_type(_457.x), _597, spvFMul(_596, as_type(_394.x)))))); _712 = as_type(fma(as_type(_562.y), _647, fma(as_type(_499.y), _622, fma(as_type(_436.y), _597, spvFMul(_596, as_type(_373.y)))))); _713 = as_type(fma(as_type(_541.w), _647, fma(as_type(_478.w), _622, fma(as_type(_415.w), _597, spvFMul(_596, as_type(_352.w)))))); _714 = as_type(fma(as_type(_541.z), _647, fma(as_type(_478.z), _622, fma(as_type(_415.z), _597, spvFMul(_596, as_type(_352.z)))))); _715 = as_type(fma(as_type(_583.y), _647, fma(as_type(_520.y), _622, fma(as_type(_457.y), _597, spvFMul(_596, as_type(_394.y)))))); _716 = as_type(fma(as_type(_562.w), _647, fma(as_type(_499.w), _622, fma(as_type(_436.w), _597, spvFMul(_596, as_type(_373.w)))))); _717 = as_type(fma(as_type(_562.z), _647, fma(as_type(_499.z), _622, fma(as_type(_436.z), _597, spvFMul(_596, as_type(_373.z)))))); _718 = as_type(fma(as_type(_583.w), _647, fma(as_type(_520.w), _622, fma(as_type(_457.w), _597, spvFMul(_596, as_type(_394.w)))))); _719 = as_type(fma(as_type(_583.z), _647, fma(as_type(_520.z), _622, fma(as_type(_457.z), _597, spvFMul(_596, as_type(_394.z)))))); } else { _708 = _306; _709 = _311; _710 = _305; _711 = _308; _712 = _307; _713 = _315; _714 = _304; _715 = _314; _716 = _309; _717 = _310; _718 = _312; _719 = _313; } float _810 = fma(as_type(_711), in.vs_in_attr0.x, fma(as_type(_715), in.vs_in_attr0.y, fma(as_type(_719), in.vs_in_attr0.z, as_type(_718)))); float _814 = fma(as_type(_709), in.vs_in_attr0.x, fma(as_type(_712), in.vs_in_attr0.y, fma(as_type(_717), in.vs_in_attr0.z, as_type(_716)))); float _816 = spvFSub(_810, as_type(cbuf_28.data[191u + buf11_dword_off])); float _818 = fma(as_type(_708), in.vs_in_attr0.x, fma(as_type(_710), in.vs_in_attr0.y, fma(as_type(_714), in.vs_in_attr0.z, as_type(_713)))); float _820 = spvFSub(_814, as_type(cbuf_28.data[187u + buf11_dword_off])); float _834 = spvFSub(_818, as_type(cbuf_28.data[183u + buf11_dword_off])); float _844 = fma(as_type(cbuf_28.data[200u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[201u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[202u + buf11_dword_off]), _816, as_type(cbuf_28.data[203u + buf11_dword_off])))); float _846 = fma(as_type(cbuf_28.data[204u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[205u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[206u + buf11_dword_off]), _816, as_type(cbuf_28.data[207u + buf11_dword_off])))); float _848 = fma(as_type(cbuf_28.data[208u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[209u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[210u + buf11_dword_off]), _816, as_type(cbuf_28.data[211u + buf11_dword_off])))); float _850 = fma(as_type(cbuf_28.data[212u + buf11_dword_off]), _834, fma(as_type(cbuf_28.data[213u + buf11_dword_off]), _820, fma(as_type(cbuf_28.data[214u + buf11_dword_off]), _816, as_type(cbuf_28.data[215u + buf11_dword_off])))); out.gl_Position.x = _844; out.gl_Position.y = _846; out.gl_Position.z = _848; out.gl_Position.w = _850; out.out_attr0.x = fma(as_type(_708), _253, fma(as_type(_710), _254, spvFMul(_255, as_type(_714)))); out.out_attr0.y = fma(as_type(_709), _253, fma(as_type(_712), _254, spvFMul(_255, as_type(_717)))); out.out_attr0.z = fma(as_type(_711), _253, fma(as_type(_715), _254, spvFMul(_255, as_type(_719)))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_708), _244, fma(as_type(_710), _245, spvFMul(_246, as_type(_714)))); out.out_attr1.y = fma(as_type(_709), _244, fma(as_type(_712), _245, spvFMul(_246, as_type(_717)))); out.out_attr1.z = fma(as_type(_711), _244, fma(as_type(_715), _245, spvFMul(_246, as_type(_719)))); out.out_attr1.w = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); out.out_attr2.x = in.vs_in_attr6.x; out.out_attr2.y = in.vs_in_attr6.y; out.out_attr2.z = in.vs_in_attr6.z; out.out_attr2.w = in.vs_in_attr6.w; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[2u + buf12_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[3u + buf12_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.z))))), as_type(cbuf_8.data[6u + buf12_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.w))))), as_type(cbuf_8.data[7u + buf12_dword_off])); out.out_attr4.x = fma(as_type(cbuf_28.data[84u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[85u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[86u + buf11_dword_off]), _810, as_type(cbuf_28.data[87u + buf11_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_28.data[88u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[89u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[90u + buf11_dword_off]), _810, as_type(cbuf_28.data[91u + buf11_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_28.data[92u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[93u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[94u + buf11_dword_off]), _810, as_type(cbuf_28.data[95u + buf11_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_28.data[96u + buf11_dword_off]), _818, fma(as_type(cbuf_28.data[97u + buf11_dword_off]), _814, fma(as_type(cbuf_28.data[98u + buf11_dword_off]), _810, as_type(cbuf_28.data[99u + buf11_dword_off])))); out.out_attr5.x = _844; out.out_attr5.y = _846; out.out_attr5.z = _848; out.out_attr5.w = _850; out.out_attr6.x = spvFSub(as_type(cbuf_32.data[12u + buf13_dword_off]), _818); out.out_attr6.y = spvFSub(as_type(cbuf_32.data[13u + buf13_dword_off]), _814); out.out_attr6.z = spvFSub(as_type(cbuf_32.data[14u + buf13_dword_off]), _810); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[72]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_52 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_44 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_56 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_48 [[buffer(15)]], texture2d fs_img124 [[texture(0)]], texture2d fs_img84 [[texture(1)]], texture2d fs_img76 [[texture(2)]], texture2d fs_img132 [[texture(3)]], texture2d fs_img68 [[texture(4)]], texture2d fs_img116 [[texture(5)]], depth2d fs_img108 [[texture(6)]], texturecube fs_img100 [[texture(7)]], texture2d fs_img140 [[texture(8)]], texturecube fs_img92 [[texture(9)]], texture2d fs_img60 [[texture(10)]], sampler fs_samp4 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf1_dword_off = buf1_off >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint _163 = uint(gl_FrontFacing); float _191 = 1.0 / in.fs_in_attr5.w; float _196 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _205 = spvFMul(in.fs_in_attr5.x, _191); float _206 = spvFMul(in.fs_in_attr5.y, _191); float4 _211 = fs_img124.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _215 = _211.w; float _216 = spvFMul(in.fs_in_attr0.x, _196); float _217 = spvFMul(in.fs_in_attr0.y, _196); float _219 = spvFMul(in.fs_in_attr0.z, _196); float _221 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _222 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _223 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _225 = fma(0.5, _205, 0.5); float _227 = fma(-0.5, _206, 0.5); bool _228 = 0u == _163; uint _233; if (_228) { _233 = as_type(fast::max(-_216, -_216)); } else { _233 = _163; } uint _242; uint _243; if (_228) { _242 = as_type(fast::max(-_219, -_219)); _243 = as_type(fast::max(-_217, -_217)); } else { _242 = as_type(_217); _243 = as_type(_219); } uint _246; uint _247; uint _248; if (!_228) { _246 = as_type(_216); _247 = _242; _248 = _243; } else { _246 = _233; _247 = _243; _248 = _242; } float _340 = spvFMul(in.fs_in_attr5.z, _191); float4 _345 = fs_img84.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[14u + buf0_dword_off])), fma(as_type(cbuf_32.data[13u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[15u + buf0_dword_off])))); float _375 = 1.0 / fma(as_type(cbuf_52.data[48u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[49u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[50u + buf1_dword_off]), _340, as_type(cbuf_52.data[51u + buf1_dword_off])))); float _376 = spvFMul(fma(as_type(cbuf_52.data[44u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[45u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[46u + buf1_dword_off]), _340, as_type(cbuf_52.data[47u + buf1_dword_off])))), _375); uint _409 = ((((as_type((as_type(cbuf_52.data[176u + buf1_dword_off]) < _376) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_376 > as_type(cbuf_52.data[177u + buf1_dword_off]))) + uint(abs(int(0u)))) + uint(_376 > as_type(cbuf_52.data[178u + buf1_dword_off]))) << 2u; float4 _428 = fs_img76.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[10u + buf0_dword_off])), fma(as_type(cbuf_32.data[9u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[11u + buf0_dword_off])))); float _429 = _428.x; float4 _434 = fs_img132.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _436 = _434.y; uint _440 = ((0u + ((_409 + 28u) * 16u)) + buf1_off) >> 2u; uint4 _453 = uint4(cbuf_52.data[_440 + 0u], cbuf_52.data[_440 + 1u], cbuf_52.data[_440 + 2u], cbuf_52.data[_440 + 3u]); uint _461 = ((0u + ((_409 + 29u) * 16u)) + buf1_off) >> 2u; uint4 _474 = uint4(cbuf_52.data[_461 + 0u], cbuf_52.data[_461 + 1u], cbuf_52.data[_461 + 2u], cbuf_52.data[_461 + 3u]); uint _482 = ((0u + ((_409 + 31u) * 16u)) + buf1_off) >> 2u; uint4 _495 = uint4(cbuf_52.data[_482 + 0u], cbuf_52.data[_482 + 1u], cbuf_52.data[_482 + 2u], cbuf_52.data[_482 + 3u]); uint _503 = ((0u + ((_409 + 30u) * 16u)) + buf1_off) >> 2u; uint4 _516 = uint4(cbuf_52.data[_503 + 0u], cbuf_52.data[_503 + 1u], cbuf_52.data[_503 + 2u], cbuf_52.data[_503 + 3u]); float _525 = fma(2.0, _345.y, -1.0); float _526 = spvFMul(fma(2.0, _345.x, -1.0), fma(2.0, _345.w, -1.0)); float _537 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _539 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_526, _526), spvFMul(_525, _525)), 0.0, 1.0))); float _541 = rsqrt(fma(_221, _221, fma(_222, _222, spvFMul(_223, _223)))); float _556 = fma(spvFMul(_223, _541), _526, fma(spvFMul(in.fs_in_attr1.z, _537), _525, spvFMul(as_type(_248), _539))); float _578 = fma(spvFMul(_222, _541), _526, fma(spvFMul(in.fs_in_attr1.y, _537), _525, spvFMul(as_type(_247), _539))); float _583 = fma(spvFMul(_221, _541), _526, fma(spvFMul(in.fs_in_attr1.x, _537), _525, spvFMul(as_type(_246), _539))); uint _590 = 24u + buf2_dword_off; float _593 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _594 = rsqrt(fma(_583, _583, fma(_578, _578, spvFMul(_556, _556)))); uint _599 = 73u + buf1_dword_off; uint _603 = 74u + buf1_dword_off; uint _607 = 75u + buf1_dword_off; float _610 = spvFMul(in.fs_in_attr6.z, _593); float _611 = spvFMul(_556, _594); float _612 = spvFMul(in.fs_in_attr6.y, _593); float _613 = spvFMul(_578, _594); float _615 = spvFMul(in.fs_in_attr6.x, _593); float _616 = spvFMul(_583, _594); float _636 = fma(_616, _615, fma(_613, _612, spvFMul(_610, _611))); float4 _652 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf0_dword_off])), fma(as_type(cbuf_32.data[5u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf0_dword_off])))); float _653 = _652.x; float _654 = _652.y; float _655 = _652.z; float _657 = spvFMul(fast::max(_636, _636), 2.0); uint _663 = uint(in.fs_in_attr0.w) * 13u; float _667 = fma(as_type(_453.x), _205, fma(as_type(_453.y), _206, fma(as_type(_453.z), _340, as_type(_453.w)))); float _669 = fma(as_type(_474.x), _205, fma(as_type(_474.y), _206, fma(as_type(_474.z), _340, as_type(_474.w)))); float _671 = fma(as_type(_495.x), _205, fma(as_type(_495.y), _206, fma(as_type(_495.z), _340, as_type(_495.w)))); float _684 = spvFMul(fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _429, _434.x), _429), _429), spvFMul(as_type(cbuf_36.data[8u + buf2_dword_off]), 0.00390625)); float _693 = 1.0 / _671; float _700 = spvFMul(13.0, _684); float _702 = fma(-in.fs_in_attr6.x, _593, spvFMul(_616, _657)); float _704 = fma(-in.fs_in_attr6.y, _593, spvFMul(_613, _657)); float _706 = fma(-in.fs_in_attr6.z, _593, spvFMul(_611, _657)); float _713 = spvFMul(fma(as_type(_516.x), _205, fma(as_type(_516.y), _206, fma(as_type(_516.z), _340, as_type(_516.w)))), _693); float _742 = 1.0 / abs(1.0); float _758 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_700, _700), 0.5))); float _760 = fma(_704, _742, 1.5); float _761 = fma(_702, _742, 1.5); uint _767 = ((0u + ((_663 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _780 = uint4(cbuf_40.data[_767 + 0u], cbuf_40.data[_767 + 1u], cbuf_40.data[_767 + 2u], cbuf_40.data[_767 + 3u]); uint _788 = ((0u + ((_663 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _801 = uint4(cbuf_40.data[_788 + 0u], cbuf_40.data[_788 + 1u], cbuf_40.data[_788 + 2u], cbuf_40.data[_788 + 3u]); uint _809 = ((0u + ((_663 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _822 = uint4(cbuf_40.data[_809 + 0u], cbuf_40.data[_809 + 1u], cbuf_40.data[_809 + 2u], cbuf_40.data[_809 + 3u]); uint _837 = ((0u + ((_663 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _850 = uint4(cbuf_40.data[_837 + 0u], cbuf_40.data[_837 + 1u], cbuf_40.data[_837 + 2u], cbuf_40.data[_837 + 3u]); uint _851 = _850.x; uint _852 = _850.y; uint _853 = _850.z; uint _854 = _850.w; float4 _861 = fs_img100.sample(fs_samp20, float3(spvFSub(_761, 1.5), spvFSub(_760, 1.5), _706), level(_758)); float4 _869 = fs_img140.sample(fs_samp24, float2(_225, _227), level(_758)); uint _877 = ((0u + ((_663 + 12u) * 16u)) + buf3_off) >> 2u; float4 _899 = fs_img92.sample(fs_samp20, float3(spvFSub(_761, 1.5), spvFSub(_760, 1.5), _706), level(_758)); float4 _907 = fs_img60.sample(fs_samp4, float2(fma(as_type(cbuf_32.data[0u + buf0_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[2u + buf0_dword_off])), fma(as_type(cbuf_32.data[1u + buf0_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[3u + buf0_dword_off])))); float _908 = _907.x; float _909 = _907.y; float _910 = _907.z; uint _912 = 12u + buf2_dword_off; float _934 = spvFMul(fma(as_type(cbuf_52.data[40u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[41u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[42u + buf1_dword_off]), _340, as_type(cbuf_52.data[43u + buf1_dword_off])))), _375); uint _936 = 0u + buf4_dword_off; uint _939 = 1u + buf4_dword_off; uint _942 = 2u + buf4_dword_off; uint _945 = 3u + buf4_dword_off; uint _948 = 4u + buf4_dword_off; uint _951 = 5u + buf4_dword_off; uint _954 = 6u + buf4_dword_off; uint _957 = 7u + buf4_dword_off; float _960 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _961 = spvFMul(fma(as_type(cbuf_52.data[36u + buf1_dword_off]), _205, fma(as_type(cbuf_52.data[37u + buf1_dword_off]), _206, fma(as_type(cbuf_52.data[38u + buf1_dword_off]), _340, as_type(cbuf_52.data[39u + buf1_dword_off])))), _375); bool _980 = (_655 == 0.0) && (_654 == 0.0); float _997 = fma(fma(as_type(cbuf_36.data[_912]), fs_img116.sample(fs_samp20, float2(_225, _227)).x, 1.0), _960, -spvFMul(as_type(cbuf_36.data[_912]), _960)); float _998 = spvFAdd(_636, _997); float _1000 = fast::clamp(spvFAdd(fma(_702, as_type(_246), fma(_704, as_type(_247), spvFMul(as_type(_248), _706))), 1.0), 0.0, 1.0); float _1001 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_636, _636), 0.0, 1.0))))); float _1004 = _980 ? _653 : _655; float _1005 = _980 ? _653 : _654; float _1006 = spvFMul(_436, _436); float _1061 = fast::clamp(spvFAdd(fma(_998, _998, _997), -1.0), 0.0, 1.0); float _1078 = spvFMul(as_type(cbuf_40.data[_877]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_52.data[72u + buf1_dword_off]), as_type(cbuf_52.data[_599])), -spvFMul(as_type(cbuf_52.data[_599]), sqrt(fma(_961, _961, fma(_934, _934, spvFMul(_376, _376)))))), 0.0, 1.0)); float _1080 = spvFMul(as_type(cbuf_44.data[_954]), _611); float _1082 = fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _653, _1006), _653), _653); float _1084 = fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _1005, _1006), _1005), _1005); float _1086 = fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _1004, _1006), _1004), _1004); float _1087 = spvFMul(_1001, _1061); float _1110 = spvFSub(1.0, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_671, as_type(cbuf_52.data[_607]), _667), _693), spvFMul(fma(as_type(cbuf_52.data[_603]), _671, _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(-_671, as_type(cbuf_52.data[_603]), _667), _693), spvFMul(fma(-_671, as_type(cbuf_52.data[_607]), _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_671, as_type(cbuf_52.data[_603]), _667), _693), spvFMul(fma(_671, as_type(cbuf_52.data[_607]), _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img108.sample_compare(fs_samp28, float2(spvFMul(fma(_671, as_type(cbuf_52.data[_607]), _667), _693), spvFMul(fma(-_671, as_type(cbuf_52.data[_603]), _669), _693)), _713, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1118 = spvFMul(as_type(cbuf_44.data[_942]), _611); float _1139 = spvFMul(_997, spvFMul(spvFMul(_1000, _1000), spvFSub(1.0, _869.w))); float _1142 = fma(-_1110, spvFMul(as_type(cbuf_52.data[76u + buf1_dword_off]), _1078), as_type(cbuf_40.data[_877])); float _1145 = fma(-_1110, spvFMul(as_type(cbuf_52.data[77u + buf1_dword_off]), _1078), as_type(cbuf_40.data[_877])); float _1148 = fma(-_1110, spvFMul(as_type(cbuf_52.data[78u + buf1_dword_off]), _1078), as_type(cbuf_40.data[_877])); float _1153 = fast::clamp(fma(as_type(cbuf_44.data[_948]), _616, fma(as_type(cbuf_44.data[_951]), _613, _1080)), 0.0, 1.0); float _1163 = spvFMul(_684, _684); float _1164 = fast::max(0.0, spvFAdd(as_type(_780.w), fma(_611, as_type(_780.z), fma(_616, as_type(_780.x), spvFMul(_613, as_type(_780.y)))))); float _1165 = fast::max(0.0, spvFAdd(as_type(_801.w), fma(_611, as_type(_801.z), fma(_616, as_type(_801.x), spvFMul(_613, as_type(_801.y)))))); float _1166 = fast::max(0.0, spvFAdd(as_type(_822.w), fma(_611, as_type(_822.z), fma(_616, as_type(_822.x), spvFMul(_613, as_type(_822.y)))))); float _1175 = fast::clamp(fma(as_type(cbuf_44.data[_936]), _616, fma(as_type(cbuf_44.data[_939]), _613, _1118)), 0.0, 1.0); uint _1227 = 64u + buf4_dword_off; uint _1231 = 65u + buf4_dword_off; float _1248 = spvFMul(as_type(cbuf_40.data[_877]), fma(as_type(_854), spvFAdd(-1.0, _1142), 1.0)); float _1250 = spvFMul(as_type(cbuf_40.data[_877]), fma(as_type(_854), spvFAdd(-1.0, _1145), 1.0)); float _1252 = spvFMul(as_type(cbuf_40.data[_877]), fma(as_type(_854), spvFAdd(-1.0, _1148), 1.0)); float _1253 = fma(spvFMul(as_type(cbuf_44.data[16u + buf4_dword_off]), _1142), fma(-_1082, _1175, _1175), spvFMul(as_type(cbuf_44.data[20u + buf4_dword_off]), fma(-_1082, _1153, _1153))); float _1255 = fma(spvFMul(as_type(cbuf_44.data[17u + buf4_dword_off]), _1145), fma(-_1084, _1175, _1175), spvFMul(as_type(cbuf_44.data[21u + buf4_dword_off]), fma(-_1084, _1153, _1153))); float _1257 = fma(spvFMul(as_type(cbuf_44.data[18u + buf4_dword_off]), _1148), fma(-_1086, _1175, _1175), spvFMul(as_type(cbuf_44.data[22u + buf4_dword_off]), fma(-_1086, _1153, _1153))); uint _1304; uint _1305; uint _1306; if (cbuf_44.data[_1227] > 0u) { float _1286 = fma(0.5, fma(as_type(cbuf_44.data[8u + buf4_dword_off]), _616, fma(as_type(cbuf_44.data[9u + buf4_dword_off]), _613, spvFMul(as_type(cbuf_44.data[10u + buf4_dword_off]), _611))), 0.5); float _1288 = fast::clamp(spvFMul(_1286, _1286), 0.0, 1.0); _1304 = as_type(fma(as_type(cbuf_44.data[26u + buf4_dword_off]), fma(-_1086, _1288, _1288), _1257)); _1305 = as_type(fma(as_type(cbuf_44.data[25u + buf4_dword_off]), fma(-_1084, _1288, _1288), _1255)); _1306 = as_type(fma(as_type(cbuf_44.data[24u + buf4_dword_off]), fma(-_1082, _1288, _1288), _1253)); } else { _1304 = as_type(_1257); _1305 = as_type(_1255); _1306 = as_type(_1253); } uint _1353; uint _1354; uint _1355; if (cbuf_44.data[_1231] > 0u) { float _1332 = fma(0.5, fma(as_type(cbuf_44.data[12u + buf4_dword_off]), _616, fma(as_type(cbuf_44.data[13u + buf4_dword_off]), _613, spvFMul(as_type(cbuf_44.data[14u + buf4_dword_off]), _611))), 0.5); float _1334 = fast::clamp(spvFMul(_1332, _1332), 0.0, 1.0); _1353 = as_type(fma(as_type(cbuf_44.data[30u + buf4_dword_off]), fma(-_1086, _1334, _1334), as_type(_1304))); _1354 = as_type(fma(as_type(cbuf_44.data[29u + buf4_dword_off]), fma(-_1084, _1334, _1334), as_type(_1305))); _1355 = as_type(fma(as_type(cbuf_44.data[28u + buf4_dword_off]), fma(-_1082, _1334, _1334), as_type(_1306))); } else { _1353 = _1304; _1354 = _1305; _1355 = _1306; } float _1357 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[_954])); float _1359 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[_942])); float _1361 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[_951])); float _1364 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[_939])); float _1367 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[_948])); float _1370 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[_936])); float _1374 = rsqrt(fma(_1367, _1367, fma(_1361, _1361, spvFMul(_1357, _1357)))); float _1375 = rsqrt(fma(_1370, _1370, fma(_1364, _1364, spvFMul(_1359, _1359)))); float _1376 = spvFMul(_1357, _1374); float _1377 = exp2(_700); float _1378 = spvFMul(_1359, _1375); float _1379 = spvFMul(_1361, _1374); float _1402 = spvFMul(_1364, _1375); float _1403 = spvFMul(_1367, _1374); float _1410 = spvFMul(_1370, _1375); float _1434 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_957]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_957])))); float _1440 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_945]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_945])))); float _1446 = fma(_1434, 0.125, 0.25); float _1458 = exp2(spvFMul(_1434, log2(fast::clamp(fma(_1403, _616, fma(_1379, _613, spvFMul(_611, _1376))), 0.0, 1.0)))); float _1460 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1403, fma(_612, _1379, spvFMul(_610, _1376))), 0.0, 1.0))))); float _1461 = fma(0.125, _1440, 0.25); float _1470 = exp2(spvFMul(_1440, log2(fast::clamp(fma(_1410, _616, fma(_1402, _613, spvFMul(_611, _1378))), 0.0, 1.0)))); float _1471 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1410, fma(_612, _1402, spvFMul(_610, _1378))), 0.0, 1.0))))); float _1477 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_948]), _616, fma(as_type(cbuf_44.data[_951]), _613, _1080)), 16.0), 0.0, 1.0); float _1494 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_936]), _616, fma(as_type(cbuf_44.data[_939]), _613, _1118)), 16.0), 0.0, 1.0); float _1513 = fma(spvFMul(_1494, spvFMul(_1470, spvFMul(spvFMul(as_type(cbuf_44.data[32u + buf4_dword_off]), _1142), _1461))), fma(-_1082, _1471, spvFAdd(_1082, _1471)), spvFMul(fma(-_1082, _1460, spvFAdd(_1082, _1460)), spvFMul(_1477, spvFMul(_1458, spvFMul(as_type(cbuf_44.data[36u + buf4_dword_off]), _1446))))); float _1515 = fma(spvFMul(_1494, spvFMul(_1470, spvFMul(spvFMul(as_type(cbuf_44.data[33u + buf4_dword_off]), _1145), _1461))), fma(-_1084, _1471, spvFAdd(_1084, _1471)), spvFMul(fma(-_1084, _1460, spvFAdd(_1084, _1460)), spvFMul(_1477, spvFMul(_1458, spvFMul(as_type(cbuf_44.data[37u + buf4_dword_off]), _1446))))); float _1517 = fma(spvFMul(_1494, spvFMul(_1470, spvFMul(spvFMul(as_type(cbuf_44.data[34u + buf4_dword_off]), _1148), _1461))), fma(-_1086, _1471, spvFAdd(_1086, _1471)), spvFMul(fma(-_1086, _1460, spvFAdd(_1086, _1460)), spvFMul(_1477, spvFMul(_1458, spvFMul(as_type(cbuf_44.data[38u + buf4_dword_off]), _1446))))); uint _1607; uint _1608; uint _1609; if (cbuf_44.data[_1227] > 0u) { uint _1535 = 11u + buf4_dword_off; float _1548 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[8u + buf4_dword_off])); float _1550 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[9u + buf4_dword_off])); float _1552 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[10u + buf4_dword_off])); float _1556 = rsqrt(fma(_1548, _1548, fma(_1550, _1550, spvFMul(_1552, _1552)))); float _1557 = spvFMul(_1548, _1556); float _1558 = spvFMul(_1550, _1556); float _1559 = spvFMul(_1552, _1556); float _1570 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1535]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_1535])))); float _1573 = exp2(spvFMul(_1570, log2(fast::clamp(fma(_1557, _616, fma(_1558, _613, spvFMul(_611, _1559))), 0.0, 1.0)))); float _1581 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1557, fma(_612, _1558, spvFMul(_610, _1559))), 0.0, 1.0))))); float _1591 = fma(0.125, _1570, 0.25); _1607 = as_type(fma(spvFMul(_1573, spvFMul(as_type(cbuf_44.data[42u + buf4_dword_off]), _1591)), fma(-_1086, _1581, spvFAdd(_1086, _1581)), _1517)); _1608 = as_type(fma(spvFMul(_1573, spvFMul(as_type(cbuf_44.data[41u + buf4_dword_off]), _1591)), fma(-_1084, _1581, spvFAdd(_1084, _1581)), _1515)); _1609 = as_type(fma(spvFMul(_1573, spvFMul(as_type(cbuf_44.data[40u + buf4_dword_off]), _1591)), fma(-_1082, _1581, spvFAdd(_1082, _1581)), _1513)); } else { _1607 = as_type(_1517); _1608 = as_type(_1515); _1609 = as_type(_1513); } uint _1695; uint _1696; uint _1697; if (cbuf_44.data[_1231] > 0u) { uint _1620 = 15u + buf4_dword_off; float _1633 = fma(in.fs_in_attr6.x, _593, as_type(cbuf_44.data[12u + buf4_dword_off])); float _1635 = fma(in.fs_in_attr6.y, _593, as_type(cbuf_44.data[13u + buf4_dword_off])); float _1637 = fma(in.fs_in_attr6.z, _593, as_type(cbuf_44.data[14u + buf4_dword_off])); float _1641 = rsqrt(fma(_1633, _1633, fma(_1635, _1635, spvFMul(_1637, _1637)))); float _1642 = spvFMul(_1633, _1641); float _1643 = spvFMul(_1635, _1641); float _1644 = spvFMul(_1637, _1641); float _1655 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1620]), _1377), 1.0 / fma(_1377, 0.01000213623046875, as_type(cbuf_44.data[_1620])))); float _1658 = exp2(spvFMul(_1655, log2(fast::clamp(fma(_1642, _616, fma(_1643, _613, spvFMul(_611, _1644))), 0.0, 1.0)))); float _1666 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_615, _1642, fma(_612, _1643, spvFMul(_610, _1644))), 0.0, 1.0))))); float _1676 = fma(0.125, _1655, 0.25); _1695 = as_type(fma(spvFMul(_1658, spvFMul(as_type(cbuf_44.data[46u + buf4_dword_off]), _1676)), fma(-_1086, _1666, spvFAdd(_1086, _1666)), as_type(_1607))); _1696 = as_type(fma(spvFMul(_1658, spvFMul(as_type(cbuf_44.data[44u + buf4_dword_off]), _1676)), fma(-_1082, _1666, spvFAdd(_1082, _1666)), as_type(_1609))); _1697 = as_type(fma(spvFMul(_1658, spvFMul(as_type(cbuf_44.data[45u + buf4_dword_off]), _1676)), fma(-_1084, _1666, spvFAdd(_1084, _1666)), as_type(_1608))); } else { _1695 = _1607; _1696 = _1609; _1697 = _1608; } uint _1717 = ((0u + ((_663 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _1730 = uint4(cbuf_40.data[_1717 + 0u], cbuf_40.data[_1717 + 1u], cbuf_40.data[_1717 + 2u], cbuf_40.data[_1717 + 3u]); uint _1731 = _1730.x; uint _1732 = _1730.y; uint _1733 = _1730.z; uint _1735 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); uint _1738 = 8u + buf6_dword_off; uint _1744 = 10u + buf6_dword_off; float _1758 = fma(spvFMul(as_type(cbuf_36.data[1u + buf2_dword_off]), fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _909, _211.y), _909), _909)), fma(spvFMul(_997, fma(-_1084, _1165, _1165)), _1250, as_type(_1354)), spvFMul(fma(spvFMul(fma(fma(_1001, _1061, -spvFMul(_1084, _1087)), _1163, _1084), fma(_997, _869.y, spvFMul(fma(as_type(_851), fma(-as_type(_852), _899.y, spvFMul(as_type(_853), _861.y)), spvFMul(as_type(_852), _899.y)), _1139))), _1250, as_type(_1697)), spvFMul(as_type(cbuf_36.data[5u + buf2_dword_off]), as_type(cbuf_56.data[_1735])))); float _1772 = fma(spvFMul(as_type(cbuf_36.data[0u + buf2_dword_off]), fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _908, _211.x), _908), _908)), fma(spvFMul(_997, fma(-_1082, _1164, _1164)), _1248, as_type(_1355)), spvFMul(fma(spvFMul(fma(fma(_1001, _1061, -spvFMul(_1082, _1087)), _1163, _1082), fma(_997, _869.x, spvFMul(fma(as_type(_851), fma(-as_type(_852), _899.x, spvFMul(as_type(_853), _861.x)), spvFMul(as_type(_852), _899.x)), _1139))), _1248, as_type(_1696)), spvFMul(as_type(cbuf_36.data[4u + buf2_dword_off]), as_type(cbuf_56.data[_1735])))); float _1773 = fma(spvFMul(as_type(cbuf_36.data[2u + buf2_dword_off]), fma(as_type(cbuf_36.data[_590]), spvFSub(fma(_215, _910, _211.z), _910), _910)), fma(spvFMul(_997, fma(-_1086, _1166, _1166)), _1252, as_type(_1353)), spvFMul(fma(spvFMul(fma(fma(_1001, _1061, -spvFMul(_1086, _1087)), _1163, _1086), fma(_997, _869.z, spvFMul(fma(as_type(_851), fma(-as_type(_852), _899.z, spvFMul(as_type(_853), _861.z)), spvFMul(as_type(_852), _899.z)), _1139))), _1252, as_type(_1695)), spvFMul(as_type(cbuf_36.data[6u + buf2_dword_off]), as_type(cbuf_56.data[_1735])))); float _1775 = spvFMul(_1758, as_type(_1732)); uint _1782 = 14u + buf6_dword_off; float _1789 = spvFMul(_1772, as_type(_1731)); float _1796 = spvFMul(_1773, as_type(_1733)); float _1824 = spvFAdd(-1.0, fma(_1796, 0.11448000371456146240234375, fma(_1789, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1775)))); float _1828 = fma(as_type(cbuf_48.data[7u + buf6_dword_off]), _1824, 1.0); float _1847 = fast::clamp(spvFAdd(as_type(cbuf_48.data[_1738]), spvFMul(as_type(cbuf_48.data[_1738]), -exp2(-fma(as_type(cbuf_48.data[_1744]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_48.data[9u + buf6_dword_off]), as_type(cbuf_48.data[_1744])))))), 0.0, 1.0); float _1861 = fma(as_type(cbuf_48.data[19u + buf6_dword_off]), _1824, 1.0); float _1862 = fma(_1847, fma(-_1772, as_type(_1731), spvFMul(as_type(cbuf_48.data[4u + buf6_dword_off]), _1828)), _1789); float _1863 = fma(_1847, fma(-_1758, as_type(_1732), spvFMul(as_type(cbuf_48.data[5u + buf6_dword_off]), _1828)), _1775); float _1864 = fma(_1847, fma(-_1773, as_type(_1733), spvFMul(as_type(cbuf_48.data[6u + buf6_dword_off]), _1828)), _1796); float _1867 = fast::clamp(spvFMul(as_type(cbuf_48.data[12u + buf6_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_48.data[_1782]), spvFSub(as_type(cbuf_48.data[15u + buf6_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_48.data[13u + buf6_dword_off]), as_type(cbuf_48.data[_1782]))), 0.0, 1.0)), 0.0, 1.0); if (false) { discard_fragment(); } out.frag_color0.x = fma(_1867, fma(as_type(cbuf_48.data[16u + buf6_dword_off]), _1861, -_1862), _1862); out.frag_color0.y = fma(_1867, fma(as_type(cbuf_48.data[17u + buf6_dword_off]), _1861, -_1863), _1863); out.frag_color0.z = fma(_1867, fma(as_type(cbuf_48.data[18u + buf6_dword_off]), _1861, -_1864), _1864); out.frag_color0.w = spvFMul(spvFMul(_907.w, in.fs_in_attr2.w), as_type(_1730.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x18dce231 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb30dd24a (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[336]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(18)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(19)]], constant vs_cbuf_block_f32_2& cbuf_28 [[buffer(20)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(21)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(22)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(23)]]) { main0_out out = {}; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf11_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u); uint buf12_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u); uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint buf14_dword_off = extract_bits(push_data.buf_offsets0[3u], 16u, 8u) >> 2u; uint _156 = as_type(as_type(in.vs_in_attr3.x)); uint _160 = as_type(as_type(in.vs_in_attr3.y)); uint _164 = as_type(as_type(in.vs_in_attr3.z)); uint _168 = as_type(as_type(in.vs_in_attr3.w)); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); float _292 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _293 = spvFMul(in.vs_in_attr4.x, _292); float _294 = spvFMul(in.vs_in_attr4.y, _292); float _295 = spvFMul(in.vs_in_attr4.z, _292); float _296 = spvFMul(in.vs_in_attr4.w, _292); uint _297 = _156 * 3u; uint _300 = _160 * 3u; uint _303 = _164 * 3u; uint _308 = ((0u + (_297 * 16u)) + buf11_off) >> 2u; uint4 _321 = uint4(cbuf_28.data[_308 + 0u], cbuf_28.data[_308 + 1u], cbuf_28.data[_308 + 2u], cbuf_28.data[_308 + 3u]); uint _329 = ((0u + ((_297 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _342 = uint4(cbuf_28.data[_329 + 0u], cbuf_28.data[_329 + 1u], cbuf_28.data[_329 + 2u], cbuf_28.data[_329 + 3u]); uint _350 = ((0u + ((_297 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _363 = uint4(cbuf_28.data[_350 + 0u], cbuf_28.data[_350 + 1u], cbuf_28.data[_350 + 2u], cbuf_28.data[_350 + 3u]); uint _371 = ((0u + (_300 * 16u)) + buf11_off) >> 2u; uint4 _384 = uint4(cbuf_28.data[_371 + 0u], cbuf_28.data[_371 + 1u], cbuf_28.data[_371 + 2u], cbuf_28.data[_371 + 3u]); uint _392 = ((0u + ((_300 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _405 = uint4(cbuf_28.data[_392 + 0u], cbuf_28.data[_392 + 1u], cbuf_28.data[_392 + 2u], cbuf_28.data[_392 + 3u]); uint _413 = ((0u + ((_300 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _426 = uint4(cbuf_28.data[_413 + 0u], cbuf_28.data[_413 + 1u], cbuf_28.data[_413 + 2u], cbuf_28.data[_413 + 3u]); uint _434 = ((0u + (_303 * 16u)) + buf11_off) >> 2u; uint4 _447 = uint4(cbuf_28.data[_434 + 0u], cbuf_28.data[_434 + 1u], cbuf_28.data[_434 + 2u], cbuf_28.data[_434 + 3u]); uint _455 = ((0u + ((_303 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _468 = uint4(cbuf_28.data[_455 + 0u], cbuf_28.data[_455 + 1u], cbuf_28.data[_455 + 2u], cbuf_28.data[_455 + 3u]); uint _538 = _168 * 3u; uint _542 = (cbuf_12.data[_206] + _156) * 3u; uint _546 = (cbuf_12.data[_206] + _160) * 3u; uint _550 = ((0u + ((_303 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _563 = uint4(cbuf_28.data[_550 + 0u], cbuf_28.data[_550 + 1u], cbuf_28.data[_550 + 2u], cbuf_28.data[_550 + 3u]); uint _571 = ((0u + (_538 * 16u)) + buf11_off) >> 2u; uint4 _584 = uint4(cbuf_28.data[_571 + 0u], cbuf_28.data[_571 + 1u], cbuf_28.data[_571 + 2u], cbuf_28.data[_571 + 3u]); uint _592 = ((0u + ((_538 + 1u) * 16u)) + buf11_off) >> 2u; uint4 _605 = uint4(cbuf_28.data[_592 + 0u], cbuf_28.data[_592 + 1u], cbuf_28.data[_592 + 2u], cbuf_28.data[_592 + 3u]); uint _613 = ((0u + ((_538 + 2u) * 16u)) + buf11_off) >> 2u; uint4 _626 = uint4(cbuf_28.data[_613 + 0u], cbuf_28.data[_613 + 1u], cbuf_28.data[_613 + 2u], cbuf_28.data[_613 + 3u]); uint _634 = ((0u + (_542 * 16u)) + buf12_off) >> 2u; uint4 _647 = uint4(cbuf_16.data[_634 + 0u], cbuf_16.data[_634 + 1u], cbuf_16.data[_634 + 2u], cbuf_16.data[_634 + 3u]); uint _655 = ((0u + ((_542 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _668 = uint4(cbuf_16.data[_655 + 0u], cbuf_16.data[_655 + 1u], cbuf_16.data[_655 + 2u], cbuf_16.data[_655 + 3u]); uint _676 = ((0u + ((_542 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _689 = uint4(cbuf_16.data[_676 + 0u], cbuf_16.data[_676 + 1u], cbuf_16.data[_676 + 2u], cbuf_16.data[_676 + 3u]); uint _697 = ((0u + (_546 * 16u)) + buf12_off) >> 2u; uint4 _710 = uint4(cbuf_16.data[_697 + 0u], cbuf_16.data[_697 + 1u], cbuf_16.data[_697 + 2u], cbuf_16.data[_697 + 3u]); float _724 = fma(as_type(_584.x), _296, fma(as_type(_447.x), _295, fma(as_type(_321.x), _293, spvFMul(_294, as_type(_384.x))))); float _726 = fma(as_type(_584.y), _296, fma(as_type(_447.y), _295, fma(as_type(_321.y), _293, spvFMul(_294, as_type(_384.y))))); float _728 = fma(as_type(_584.z), _296, fma(as_type(_447.z), _295, fma(as_type(_321.z), _293, spvFMul(_294, as_type(_384.z))))); float _732 = fma(as_type(_605.x), _296, fma(as_type(_468.x), _295, fma(as_type(_342.x), _293, spvFMul(_294, as_type(_405.x))))); float _734 = fma(as_type(_605.y), _296, fma(as_type(_468.y), _295, fma(as_type(_342.y), _293, spvFMul(_294, as_type(_405.y))))); float _736 = fma(as_type(_605.z), _296, fma(as_type(_468.z), _295, fma(as_type(_342.z), _293, spvFMul(_294, as_type(_405.z))))); float _740 = fma(as_type(_626.x), _296, fma(as_type(_563.x), _295, fma(as_type(_363.x), _293, spvFMul(_294, as_type(_426.x))))); float _742 = fma(as_type(_626.y), _296, fma(as_type(_563.y), _295, fma(as_type(_363.y), _293, spvFMul(_294, as_type(_426.y))))); float _744 = fma(as_type(_626.z), _296, fma(as_type(_563.z), _295, fma(as_type(_363.z), _293, spvFMul(_294, as_type(_426.z))))); float _753 = fma(_724, in.vs_in_attr0.x, fma(_726, in.vs_in_attr0.y, fma(_728, in.vs_in_attr0.z, fma(as_type(_584.w), _296, fma(as_type(_447.w), _295, fma(as_type(_321.w), _293, spvFMul(_294, as_type(_384.w)))))))); float _754 = fma(_732, in.vs_in_attr0.x, fma(_734, in.vs_in_attr0.y, fma(_736, in.vs_in_attr0.z, fma(as_type(_605.w), _296, fma(as_type(_468.w), _295, fma(as_type(_342.w), _293, spvFMul(_294, as_type(_405.w)))))))); float _755 = fma(_740, in.vs_in_attr0.x, fma(_742, in.vs_in_attr0.y, fma(_744, in.vs_in_attr0.z, fma(as_type(_626.w), _296, fma(as_type(_563.w), _295, fma(as_type(_363.w), _293, spvFMul(_294, as_type(_426.w)))))))); uint _775 = (cbuf_12.data[_206] + _164) * 3u; uint _779 = (cbuf_12.data[_206] + _168) * 3u; uint _785 = ((0u + ((_546 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _798 = uint4(cbuf_16.data[_785 + 0u], cbuf_16.data[_785 + 1u], cbuf_16.data[_785 + 2u], cbuf_16.data[_785 + 3u]); uint _806 = ((0u + ((_546 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _819 = uint4(cbuf_16.data[_806 + 0u], cbuf_16.data[_806 + 1u], cbuf_16.data[_806 + 2u], cbuf_16.data[_806 + 3u]); uint _827 = ((0u + (_775 * 16u)) + buf12_off) >> 2u; uint4 _840 = uint4(cbuf_16.data[_827 + 0u], cbuf_16.data[_827 + 1u], cbuf_16.data[_827 + 2u], cbuf_16.data[_827 + 3u]); uint _848 = ((0u + ((_775 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _861 = uint4(cbuf_16.data[_848 + 0u], cbuf_16.data[_848 + 1u], cbuf_16.data[_848 + 2u], cbuf_16.data[_848 + 3u]); uint _869 = ((0u + ((_775 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _882 = uint4(cbuf_16.data[_869 + 0u], cbuf_16.data[_869 + 1u], cbuf_16.data[_869 + 2u], cbuf_16.data[_869 + 3u]); uint _890 = ((0u + (_779 * 16u)) + buf12_off) >> 2u; uint4 _903 = uint4(cbuf_16.data[_890 + 0u], cbuf_16.data[_890 + 1u], cbuf_16.data[_890 + 2u], cbuf_16.data[_890 + 3u]); float _965 = fma(as_type(_903.x), _296, fma(as_type(_840.x), _295, fma(as_type(_647.x), _293, spvFMul(_294, as_type(_710.x))))); float _967 = fma(as_type(_903.y), _296, fma(as_type(_840.y), _295, fma(as_type(_647.y), _293, spvFMul(_294, as_type(_710.y))))); float _969 = fma(as_type(_903.z), _296, fma(as_type(_840.z), _295, fma(as_type(_647.z), _293, spvFMul(_294, as_type(_710.z))))); float _974 = fma(_965, _753, fma(_967, _754, fma(_969, _755, fma(as_type(_903.w), _296, fma(as_type(_840.w), _295, fma(as_type(_647.w), _293, spvFMul(_294, as_type(_710.w)))))))); float _976 = spvFSub(_974, as_type(cbuf_20.data[183u + buf10_dword_off])); float _987 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _988 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _989 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _997 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _998 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _999 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _1006 = fma(_724, _997, fma(_726, _998, spvFMul(_999, _728))); float _1007 = fma(_732, _997, fma(_734, _998, spvFMul(_999, _736))); float _1008 = fma(_740, _997, fma(_742, _998, spvFMul(_999, _744))); float _1015 = fma(_724, _987, fma(_726, _988, spvFMul(_989, _728))); float _1016 = fma(_732, _987, fma(_734, _988, spvFMul(_989, _736))); float _1017 = fma(_740, _987, fma(_742, _988, spvFMul(_989, _744))); uint _1025 = ((0u + ((_779 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _1038 = uint4(cbuf_16.data[_1025 + 0u], cbuf_16.data[_1025 + 1u], cbuf_16.data[_1025 + 2u], cbuf_16.data[_1025 + 3u]); uint _1046 = ((0u + ((_779 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _1059 = uint4(cbuf_16.data[_1046 + 0u], cbuf_16.data[_1046 + 1u], cbuf_16.data[_1046 + 2u], cbuf_16.data[_1046 + 3u]); float _1067 = fma(as_type(_1038.x), _296, fma(as_type(_861.x), _295, fma(as_type(_668.x), _293, spvFMul(_294, as_type(_798.x))))); float _1069 = fma(as_type(_1038.y), _296, fma(as_type(_861.y), _295, fma(as_type(_668.y), _293, spvFMul(_294, as_type(_798.y))))); float _1071 = fma(as_type(_1038.z), _296, fma(as_type(_861.z), _295, fma(as_type(_668.z), _293, spvFMul(_294, as_type(_798.z))))); float _1075 = fma(as_type(_1059.x), _296, fma(as_type(_882.x), _295, fma(as_type(_689.x), _293, spvFMul(_294, as_type(_819.x))))); float _1077 = fma(as_type(_1059.y), _296, fma(as_type(_882.y), _295, fma(as_type(_689.y), _293, spvFMul(_294, as_type(_819.y))))); float _1079 = fma(as_type(_1059.z), _296, fma(as_type(_882.z), _295, fma(as_type(_689.z), _293, spvFMul(_294, as_type(_819.z))))); float _1086 = fma(_1067, _753, fma(_1069, _754, fma(_1071, _755, fma(as_type(_1038.w), _296, fma(as_type(_861.w), _295, fma(as_type(_668.w), _293, spvFMul(_294, as_type(_798.w)))))))); float _1087 = fma(_1075, _753, fma(_1077, _754, fma(_1079, _755, fma(as_type(_1059.w), _296, fma(as_type(_882.w), _295, fma(as_type(_689.w), _293, spvFMul(_294, as_type(_819.w)))))))); float _1089 = spvFSub(_1086, as_type(cbuf_20.data[187u + buf10_dword_off])); float _1091 = spvFSub(_1087, as_type(cbuf_20.data[191u + buf10_dword_off])); float _1113 = fma(as_type(cbuf_20.data[200u + buf10_dword_off]), _976, fma(as_type(cbuf_20.data[201u + buf10_dword_off]), _1089, fma(as_type(cbuf_20.data[202u + buf10_dword_off]), _1091, as_type(cbuf_20.data[203u + buf10_dword_off])))); float _1115 = fma(as_type(cbuf_20.data[204u + buf10_dword_off]), _976, fma(as_type(cbuf_20.data[205u + buf10_dword_off]), _1089, fma(as_type(cbuf_20.data[206u + buf10_dword_off]), _1091, as_type(cbuf_20.data[207u + buf10_dword_off])))); float _1117 = fma(as_type(cbuf_20.data[208u + buf10_dword_off]), _976, fma(as_type(cbuf_20.data[209u + buf10_dword_off]), _1089, fma(as_type(cbuf_20.data[210u + buf10_dword_off]), _1091, as_type(cbuf_20.data[211u + buf10_dword_off])))); float _1119 = fma(as_type(cbuf_20.data[212u + buf10_dword_off]), _976, fma(as_type(cbuf_20.data[213u + buf10_dword_off]), _1089, fma(as_type(cbuf_20.data[214u + buf10_dword_off]), _1091, as_type(cbuf_20.data[215u + buf10_dword_off])))); out.gl_Position.x = _1113; out.gl_Position.y = _1115; out.gl_Position.z = _1117; out.gl_Position.w = _1119; out.out_attr5.x = _1113; out.out_attr5.y = _1115; out.out_attr5.z = _1117; out.out_attr5.w = _1119; out.out_attr1.x = fma(_965, _1015, fma(_967, _1016, spvFMul(_1017, _969))); out.out_attr1.y = fma(_1067, _1015, fma(_1069, _1016, spvFMul(_1017, _1071))); out.out_attr1.z = fma(_1075, _1015, fma(_1077, _1016, spvFMul(_1017, _1079))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf13_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf13_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf13_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf13_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf10_dword_off]), _974, fma(as_type(cbuf_20.data[85u + buf10_dword_off]), _1086, fma(as_type(cbuf_20.data[86u + buf10_dword_off]), _1087, as_type(cbuf_20.data[87u + buf10_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf10_dword_off]), _974, fma(as_type(cbuf_20.data[89u + buf10_dword_off]), _1086, fma(as_type(cbuf_20.data[90u + buf10_dword_off]), _1087, as_type(cbuf_20.data[91u + buf10_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf10_dword_off]), _974, fma(as_type(cbuf_20.data[93u + buf10_dword_off]), _1086, fma(as_type(cbuf_20.data[94u + buf10_dword_off]), _1087, as_type(cbuf_20.data[95u + buf10_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf10_dword_off]), _974, fma(as_type(cbuf_20.data[97u + buf10_dword_off]), _1086, fma(as_type(cbuf_20.data[98u + buf10_dword_off]), _1087, as_type(cbuf_20.data[99u + buf10_dword_off])))); out.out_attr0.x = fma(_965, _1006, fma(_967, _1007, spvFMul(_1008, _969))); out.out_attr0.y = fma(_1067, _1006, fma(_1069, _1007, spvFMul(_1008, _1071))); out.out_attr0.z = fma(_1075, _1006, fma(_1077, _1007, spvFMul(_1008, _1079))); out.out_attr0.w = 0.0; out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf14_dword_off]), _974); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf14_dword_off]), _1086); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf14_dword_off]), _1087); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct fs_cbuf_block_f32_5 { uint data[8]; }; struct fs_cbuf_block_f32_6 { uint data[72]; }; struct fs_cbuf_block_f32_7 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_156 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_128 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_136 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_140 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_152 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_132 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_144 [[buffer(15)]], constant fs_cbuf_block_f32_4& cbuf_160 [[buffer(16)]], constant fs_cbuf_block_f32_7& cbuf_148 [[buffer(17)]], texture2d fs_img96 [[texture(0)]], texture2d fs_img104 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texture2d fs_img48 [[texture(3)]], texture2d fs_img112 [[texture(4)]], texture2d fs_img40 [[texture(5)]], depth2d fs_img80 [[texture(6)]], texture2d fs_img32 [[texture(7)]], texture2d fs_img88 [[texture(8)]], texturecube fs_img72 [[texture(9)]], texture2d fs_img120 [[texture(10)]], texturecube fs_img64 [[texture(11)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _187 = uint(gl_FrontFacing); float _206 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _207 = spvFMul(in.fs_in_attr0.x, _206); float _209 = spvFMul(in.fs_in_attr0.y, _206); float _210 = spvFMul(in.fs_in_attr0.z, _206); float _230 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _231 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _232 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _240 = 1.0 / in.fs_in_attr5.w; float _241 = spvFMul(in.fs_in_attr5.x, _240); float _242 = spvFMul(in.fs_in_attr5.y, _240); float _244 = fma(0.5, _241, 0.5); float _246 = fma(-0.5, _242, 0.5); float4 _262 = fs_img96.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_156.data[4u + buf0_dword_off]), _244)), spvFMul(0.25, spvFMul(as_type(cbuf_156.data[5u + buf0_dword_off]), _246)))); float4 _268 = fs_img104.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _272 = _268.w; bool _273 = 0u == _187; uint _278; if (_273) { _278 = as_type(fast::max(-_207, -_207)); } else { _278 = _187; } uint _287; uint _288; if (_273) { _287 = as_type(fast::max(-_210, -_210)); _288 = as_type(fast::max(-_209, -_209)); } else { _287 = as_type(_207); _288 = as_type(_210); } uint _291; uint _292; uint _293; if (!_273) { _291 = _287; _292 = as_type(_209); _293 = _288; } else { _291 = _278; _292 = _288; _293 = _287; } float _386 = spvFMul(in.fs_in_attr5.z, _240); float4 _391 = fs_img56.sample(fs_samp16, float2(fma(as_type(cbuf_128.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_128.data[14u + buf1_dword_off])), fma(as_type(cbuf_128.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_128.data[15u + buf1_dword_off])))); float _421 = 1.0 / fma(as_type(cbuf_156.data[48u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[49u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[50u + buf0_dword_off]), _386, as_type(cbuf_156.data[51u + buf0_dword_off])))); float _422 = spvFMul(fma(as_type(cbuf_156.data[44u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[45u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[46u + buf0_dword_off]), _386, as_type(cbuf_156.data[47u + buf0_dword_off])))), _421); uint _455 = ((((as_type((_422 > as_type(cbuf_156.data[176u + buf0_dword_off])) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_422 > as_type(cbuf_156.data[177u + buf0_dword_off]))) + uint(abs(int(0u)))) + uint(_422 > as_type(cbuf_156.data[178u + buf0_dword_off]))) << 2u; float4 _474 = fs_img48.sample(fs_samp8, float2(fma(as_type(cbuf_128.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_128.data[10u + buf1_dword_off])), fma(as_type(cbuf_128.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_128.data[11u + buf1_dword_off])))); float _475 = _474.x; float4 _480 = fs_img112.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _482 = _480.y; uint _486 = ((0u + ((_455 + 28u) * 16u)) + buf0_off) >> 2u; uint4 _499 = uint4(cbuf_156.data[_486 + 0u], cbuf_156.data[_486 + 1u], cbuf_156.data[_486 + 2u], cbuf_156.data[_486 + 3u]); uint _507 = ((0u + ((_455 + 29u) * 16u)) + buf0_off) >> 2u; uint4 _520 = uint4(cbuf_156.data[_507 + 0u], cbuf_156.data[_507 + 1u], cbuf_156.data[_507 + 2u], cbuf_156.data[_507 + 3u]); uint _528 = ((0u + ((_455 + 31u) * 16u)) + buf0_off) >> 2u; uint4 _541 = uint4(cbuf_156.data[_528 + 0u], cbuf_156.data[_528 + 1u], cbuf_156.data[_528 + 2u], cbuf_156.data[_528 + 3u]); uint _549 = ((0u + ((_455 + 30u) * 16u)) + buf0_off) >> 2u; uint4 _562 = uint4(cbuf_156.data[_549 + 0u], cbuf_156.data[_549 + 1u], cbuf_156.data[_549 + 2u], cbuf_156.data[_549 + 3u]); float _571 = fma(2.0, _391.y, -1.0); float _572 = spvFMul(fma(2.0, _391.x, -1.0), fma(2.0, _391.w, -1.0)); float _583 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _585 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_572, _572), spvFMul(_571, _571)), 0.0, 1.0))); float _587 = rsqrt(fma(_230, _230, fma(_231, _231, spvFMul(_232, _232)))); float _602 = fma(spvFMul(_232, _587), _572, fma(spvFMul(in.fs_in_attr1.z, _583), _571, spvFMul(as_type(_293), _585))); float _608 = fma(spvFMul(_231, _587), _572, fma(spvFMul(in.fs_in_attr1.y, _583), _571, spvFMul(as_type(_292), _585))); float _613 = fma(spvFMul(_230, _587), _572, fma(spvFMul(in.fs_in_attr1.x, _583), _571, spvFMul(as_type(_291), _585))); uint _615 = 24u + buf2_dword_off; float _637 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _638 = rsqrt(fma(_613, _613, fma(_608, _608, spvFMul(_602, _602)))); uint _643 = 73u + buf0_dword_off; uint _647 = 74u + buf0_dword_off; uint _651 = 75u + buf0_dword_off; float _654 = spvFMul(in.fs_in_attr6.z, _637); float _656 = spvFMul(_602, _638); float _657 = spvFMul(in.fs_in_attr6.y, _637); float _658 = spvFMul(_608, _638); float _673 = spvFMul(in.fs_in_attr6.x, _637); float _674 = spvFMul(_613, _638); float _688 = fma(_674, _673, fma(_658, _657, spvFMul(_654, _656))); float _708 = spvFMul(fast::max(_688, _688), 2.0); uint _711 = uint(in.fs_in_attr0.w) * 13u; float _715 = fma(as_type(_499.x), _241, fma(as_type(_499.y), _242, fma(as_type(_499.z), _386, as_type(_499.w)))); float _717 = fma(as_type(_520.x), _241, fma(as_type(_520.y), _242, fma(as_type(_520.z), _386, as_type(_520.w)))); float _719 = fma(as_type(_541.x), _241, fma(as_type(_541.y), _242, fma(as_type(_541.z), _386, as_type(_541.w)))); float _730 = 1.0 / _719; float4 _740 = fs_img40.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_128.data[4u + buf1_dword_off]), as_type(cbuf_128.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_128.data[5u + buf1_dword_off]), as_type(cbuf_128.data[7u + buf1_dword_off])))); float _741 = _740.x; float _742 = _740.y; float _743 = _740.z; float _745 = spvFMul(0.00390625, spvFMul(13.0, spvFMul(as_type(cbuf_136.data[8u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _475, _480.x), _475), _475)))); float _747 = fma(-in.fs_in_attr6.x, _637, spvFMul(_674, _708)); float _749 = fma(-in.fs_in_attr6.y, _637, spvFMul(_658, _708)); float _751 = fma(-in.fs_in_attr6.z, _637, spvFMul(_656, _708)); float _758 = spvFMul(fma(as_type(_562.x), _241, fma(as_type(_562.y), _242, fma(as_type(_562.z), _386, as_type(_562.w)))), _730); float _764 = spvFMul(fma(_719, as_type(cbuf_156.data[_647]), _715), _730); float _789 = 1.0 / abs(1.0); float _805 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_745, _745), 0.5))); float _807 = fma(_749, _789, 1.5); float _808 = fma(_747, _789, 1.5); float4 _815 = fs_img32.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_128.data[0u + buf1_dword_off]), as_type(cbuf_128.data[2u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_128.data[1u + buf1_dword_off]), as_type(cbuf_128.data[3u + buf1_dword_off])))); uint _823 = ((0u + ((_711 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _836 = uint4(cbuf_140.data[_823 + 0u], cbuf_140.data[_823 + 1u], cbuf_140.data[_823 + 2u], cbuf_140.data[_823 + 3u]); uint _844 = ((0u + ((_711 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _857 = uint4(cbuf_140.data[_844 + 0u], cbuf_140.data[_844 + 1u], cbuf_140.data[_844 + 2u], cbuf_140.data[_844 + 3u]); uint _865 = ((0u + ((_711 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _878 = uint4(cbuf_140.data[_865 + 0u], cbuf_140.data[_865 + 1u], cbuf_140.data[_865 + 2u], cbuf_140.data[_865 + 3u]); float4 _894 = fs_img88.sample(fs_samp20, float2(_244, _246)); uint _899 = ((0u + ((_711 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _912 = uint4(cbuf_140.data[_899 + 0u], cbuf_140.data[_899 + 1u], cbuf_140.data[_899 + 2u], cbuf_140.data[_899 + 3u]); uint _913 = _912.x; uint _914 = _912.y; uint _915 = _912.z; uint _916 = _912.w; float4 _923 = fs_img72.sample(fs_samp20, float3(spvFSub(_808, 1.5), spvFSub(_807, 1.5), _751), level(_805)); float4 _931 = fs_img120.sample(fs_samp24, float2(_244, _246), level(_805)); uint _939 = ((0u + ((_711 + 12u) * 16u)) + buf3_off) >> 2u; float4 _955 = fs_img64.sample(fs_samp20, float3(spvFSub(_808, 1.5), spvFSub(_807, 1.5), _751), level(_805)); float _973 = spvFMul(fma(as_type(cbuf_156.data[40u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[41u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[42u + buf0_dword_off]), _386, as_type(cbuf_156.data[43u + buf0_dword_off])))), _421); uint _986 = 12u + buf2_dword_off; float _989 = spvFMul(fma(as_type(cbuf_156.data[36u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[37u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[38u + buf0_dword_off]), _386, as_type(cbuf_156.data[39u + buf0_dword_off])))), _421); uint _1017 = 4u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); bool _1020 = (_743 == 0.0) && (_742 == 0.0); float _1022 = fast::clamp(spvFAdd(fma(_747, as_type(_291), fma(_749, as_type(_292), spvFMul(as_type(_293), _751))), 1.0), 0.0, 1.0); float _1028 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _1054 = fast::clamp(spvFMul(sqrt(_815.x), as_type(cbuf_152.data[24u + buf4_dword_off])), 0.0, 1.0); float _1057 = fast::clamp(spvFMul(sqrt(_815.y), as_type(cbuf_152.data[25u + buf4_dword_off])), 0.0, 1.0); float _1060 = fast::clamp(spvFMul(sqrt(_815.z), as_type(cbuf_152.data[26u + buf4_dword_off])), 0.0, 1.0); float _1061 = _1020 ? _741 : _743; float _1062 = _1020 ? _741 : _742; float _1063 = spvFMul(_482, _482); float _1084 = spvFMul(as_type(cbuf_140.data[_939]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_156.data[72u + buf0_dword_off]), as_type(cbuf_156.data[_643])), -spvFMul(as_type(cbuf_156.data[_643]), sqrt(fma(_989, _989, fma(_973, _973, spvFMul(_422, _422)))))), 0.0, 1.0)); float _1085 = spvFMul(_1054, _1054); float _1086 = spvFMul(_1057, _1057); float _1087 = spvFMul(_1060, _1060); float _1092 = fma(fma(as_type(cbuf_136.data[_986]), _894.x, 1.0), _1028, -spvFMul(as_type(cbuf_136.data[_986]), _1028)); float _1115 = spvFSub(1.0, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_719, as_type(cbuf_156.data[_651]), _715), _730), spvFMul(fma(as_type(cbuf_156.data[_647]), _719, _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_719, as_type(cbuf_156.data[_647]), _715), _730), spvFMul(fma(-_719, as_type(cbuf_156.data[_651]), _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(_764, spvFMul(fma(_719, as_type(cbuf_156.data[_651]), _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(_719, as_type(cbuf_156.data[_651]), _715), _730), spvFMul(fma(-_719, as_type(cbuf_156.data[_647]), _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1140 = spvFMul(_1092, spvFMul(spvFMul(_1022, _1022), spvFSub(1.0, _931.w))); float _1143 = fma(-_1115, spvFMul(as_type(cbuf_156.data[76u + buf0_dword_off]), _1084), as_type(cbuf_140.data[_939])); float _1146 = fma(-_1115, spvFMul(as_type(cbuf_156.data[77u + buf0_dword_off]), _1084), as_type(cbuf_140.data[_939])); float _1149 = fma(-_1115, spvFMul(as_type(cbuf_156.data[78u + buf0_dword_off]), _1084), as_type(cbuf_140.data[_939])); float _1160 = fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _741, _1063), _741), _741); float _1162 = fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _1062, _1063), _1062), _1062); float _1164 = fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _1061, _1063), _1061), _1061); float _1165 = fast::max(0.0, spvFAdd(as_type(_836.w), fma(_656, as_type(_836.z), fma(_674, as_type(_836.x), spvFMul(_658, as_type(_836.y)))))); float _1166 = fast::max(0.0, spvFAdd(as_type(_857.w), fma(_656, as_type(_857.z), fma(_674, as_type(_857.x), spvFMul(_658, as_type(_857.y)))))); float _1167 = fast::max(0.0, spvFAdd(as_type(_878.w), fma(_656, as_type(_878.z), fma(_674, as_type(_878.x), spvFMul(_658, as_type(_878.y)))))); float _1173 = spvFAdd(-1.0, _1149); float _1184 = spvFMul(as_type(cbuf_132.data[_1017]), in.fs_in_attr2.y); float _1200 = spvFMul(_815.w, in.fs_in_attr2.w); float _1211 = spvFMul(_1162, fma(_931.y, _1092, spvFMul(fma(as_type(_913), fma(-as_type(_914), _955.y, spvFMul(as_type(_915), _923.y)), spvFMul(as_type(_914), _955.y)), _1140))); float _1215 = spvFMul(as_type(cbuf_140.data[_939]), fma(as_type(_916), spvFAdd(-1.0, _1143), 1.0)); float _1217 = spvFMul(as_type(cbuf_140.data[_939]), fma(as_type(_916), spvFAdd(-1.0, _1146), 1.0)); float _1219 = spvFMul(as_type(cbuf_140.data[_939]), fma(as_type(_916), _1173, 1.0)); bool _1220 = _1184 == 0.0; uint _1307; uint _1308; uint _1309; uint _1310; if (_1220) { float _1272 = fast::clamp(fma(as_type(cbuf_144.data[4u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[5u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[6u + buf6_dword_off]), _656))), 0.0, 1.0); float _1275 = fast::clamp(fma(as_type(cbuf_144.data[0u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[1u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[2u + buf6_dword_off]), _656))), 0.0, 1.0); float _1293 = fma(-_1164, _1275, _1275); _1307 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf6_dword_off]), _1146), fma(-_1162, _1275, _1275), spvFMul(as_type(cbuf_144.data[21u + buf6_dword_off]), fma(-_1162, _1272, _1272)))); _1308 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf6_dword_off]), _1143), fma(-_1160, _1275, _1275), spvFMul(as_type(cbuf_144.data[20u + buf6_dword_off]), fma(-_1160, _1272, _1272)))); _1309 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf6_dword_off]), _1149), _1293, spvFMul(as_type(cbuf_144.data[22u + buf6_dword_off]), fma(-_1164, _1272, _1272)))); _1310 = as_type(_1293); } else { _1307 = as_type(_764); _1308 = as_type(_758); _1309 = as_type(_1173); _1310 = as_type(in.fs_in_attr2.y); } uint _1390; uint _1391; uint _1392; if (!_1220) { float _1365 = 1.0 / fma(2.0, _1184, 1.0); float _1366 = spvFMul(fast::max(0.0, fma(as_type(cbuf_132.data[_1017]), as_type(_1310), fma(as_type(cbuf_144.data[0u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[1u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[2u + buf6_dword_off]), _656))))), _1365); float _1377 = spvFMul(fast::max(0.0, fma(as_type(cbuf_132.data[_1017]), as_type(_1310), fma(as_type(cbuf_144.data[4u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[5u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[6u + buf6_dword_off]), _656))))), _1365); _1390 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf6_dword_off]), _1146), _1366, spvFMul(as_type(cbuf_144.data[21u + buf6_dword_off]), _1377))); _1391 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf6_dword_off]), _1143), _1366, spvFMul(as_type(cbuf_144.data[20u + buf6_dword_off]), _1377))); _1392 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf6_dword_off]), _1149), _1366, spvFMul(as_type(cbuf_144.data[22u + buf6_dword_off]), _1377))); } else { _1390 = _1307; _1391 = _1308; _1392 = _1309; } uint _1394 = 64u + buf6_dword_off; uint _1398 = 65u + buf6_dword_off; uint _1447; uint _1448; uint _1449; if (cbuf_144.data[_1394] > 0u) { float _1426 = fma(0.5, fma(as_type(cbuf_144.data[8u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[9u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[10u + buf6_dword_off]), _656))), 0.5); float _1428 = fast::clamp(spvFMul(_1426, _1426), 0.0, 1.0); _1447 = as_type(fma(as_type(cbuf_144.data[25u + buf6_dword_off]), fma(-_1162, _1428, _1428), as_type(_1390))); _1448 = as_type(fma(as_type(cbuf_144.data[24u + buf6_dword_off]), fma(-_1160, _1428, _1428), as_type(_1391))); _1449 = as_type(fma(as_type(cbuf_144.data[26u + buf6_dword_off]), fma(-_1164, _1428, _1428), as_type(_1392))); } else { _1447 = _1390; _1448 = _1391; _1449 = _1392; } uint _1496; uint _1497; uint _1498; if (cbuf_144.data[_1398] > 0u) { float _1475 = fma(0.5, fma(as_type(cbuf_144.data[12u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[13u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[14u + buf6_dword_off]), _656))), 0.5); float _1477 = fast::clamp(spvFMul(_1475, _1475), 0.0, 1.0); _1496 = as_type(fma(as_type(cbuf_144.data[29u + buf6_dword_off]), fma(-_1162, _1477, _1477), as_type(_1447))); _1497 = as_type(fma(as_type(cbuf_144.data[28u + buf6_dword_off]), fma(-_1160, _1477, _1477), as_type(_1448))); _1498 = as_type(fma(as_type(cbuf_144.data[30u + buf6_dword_off]), fma(-_1164, _1477, _1477), as_type(_1449))); } else { _1496 = _1447; _1497 = _1448; _1498 = _1449; } uint _1499 = 0u + buf6_dword_off; uint _1502 = 1u + buf6_dword_off; uint _1505 = 2u + buf6_dword_off; uint _1508 = 3u + buf6_dword_off; uint _1511 = 4u + buf6_dword_off; uint _1514 = 5u + buf6_dword_off; uint _1517 = 6u + buf6_dword_off; uint _1520 = 7u + buf6_dword_off; float _1544 = exp2(_745); float _1564 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[_1499])); float _1566 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[_1502])); float _1568 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[_1505])); float _1572 = rsqrt(fma(_1564, _1564, fma(_1566, _1566, spvFMul(_1568, _1568)))); float _1573 = spvFMul(_1564, _1572); float _1574 = spvFMul(_1566, _1572); float _1575 = spvFMul(_1568, _1572); float _1577 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[_1511])); float _1579 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[_1514])); float _1581 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[_1517])); float _1585 = rsqrt(fma(_1577, _1577, fma(_1579, _1579, spvFMul(_1581, _1581)))); float _1586 = spvFMul(_1577, _1585); float _1587 = spvFMul(_1579, _1585); float _1588 = spvFMul(_1581, _1585); float _1604 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1508]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1508])))); float _1611 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1520]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1520])))); float _1616 = exp2(spvFMul(_1604, log2(fast::clamp(fma(_1573, _674, fma(_1574, _658, spvFMul(_656, _1575))), 0.0, 1.0)))); float _1617 = exp2(spvFMul(_1611, log2(fast::clamp(fma(_1586, _674, fma(_1587, _658, spvFMul(_656, _1588))), 0.0, 1.0)))); float _1633 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1573, fma(_657, _1574, spvFMul(_654, _1575))), 0.0, 1.0))))); float _1634 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1586, fma(_657, _1587, spvFMul(_654, _1588))), 0.0, 1.0))))); float _1655 = fast::clamp(spvFMul(fma(as_type(cbuf_144.data[_1499]), _674, fma(as_type(cbuf_144.data[_1502]), _658, spvFMul(as_type(cbuf_144.data[_1505]), _656))), 16.0), 0.0, 1.0); float _1657 = fast::clamp(spvFMul(fma(as_type(cbuf_144.data[_1511]), _674, fma(as_type(cbuf_144.data[_1514]), _658, spvFMul(as_type(cbuf_144.data[_1517]), _656))), 16.0), 0.0, 1.0); float _1659 = fma(_1604, 0.125, 0.25); float _1660 = fma(0.125, _1611, 0.25); float _1685 = fma(spvFMul(_1655, spvFMul(_1616, spvFMul(spvFMul(as_type(cbuf_144.data[32u + buf6_dword_off]), _1143), _1659))), fma(-_1160, _1633, spvFAdd(_1160, _1633)), spvFMul(fma(-_1160, _1634, spvFAdd(_1160, _1634)), spvFMul(_1657, spvFMul(_1617, spvFMul(as_type(cbuf_144.data[36u + buf6_dword_off]), _1660))))); float _1687 = fma(spvFMul(_1655, spvFMul(_1616, spvFMul(spvFMul(as_type(cbuf_144.data[33u + buf6_dword_off]), _1146), _1659))), fma(-_1162, _1633, spvFAdd(_1162, _1633)), spvFMul(fma(-_1162, _1634, spvFAdd(_1162, _1634)), spvFMul(_1657, spvFMul(_1617, spvFMul(as_type(cbuf_144.data[37u + buf6_dword_off]), _1660))))); float _1689 = fma(spvFMul(_1655, spvFMul(_1616, spvFMul(spvFMul(as_type(cbuf_144.data[34u + buf6_dword_off]), _1149), _1659))), fma(-_1164, _1633, spvFAdd(_1164, _1633)), spvFMul(fma(-_1164, _1634, spvFAdd(_1164, _1634)), spvFMul(_1657, spvFMul(_1617, spvFMul(as_type(cbuf_144.data[38u + buf6_dword_off]), _1660))))); uint _1773; uint _1774; uint _1775; if (cbuf_144.data[_1394] > 0u) { uint _1701 = 11u + buf6_dword_off; float _1714 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[8u + buf6_dword_off])); float _1716 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[9u + buf6_dword_off])); float _1718 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[10u + buf6_dword_off])); float _1722 = rsqrt(fma(_1714, _1714, fma(_1716, _1716, spvFMul(_1718, _1718)))); float _1723 = spvFMul(_1714, _1722); float _1724 = spvFMul(_1716, _1722); float _1725 = spvFMul(_1718, _1722); float _1736 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1701]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1701])))); float _1739 = exp2(spvFMul(_1736, log2(fast::clamp(fma(_1723, _674, fma(_1724, _658, spvFMul(_656, _1725))), 0.0, 1.0)))); float _1747 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1723, fma(_657, _1724, spvFMul(_654, _1725))), 0.0, 1.0))))); float _1757 = fma(0.125, _1736, 0.25); _1773 = as_type(fma(spvFMul(_1739, spvFMul(as_type(cbuf_144.data[42u + buf6_dword_off]), _1757)), fma(-_1164, _1747, spvFAdd(_1164, _1747)), _1689)); _1774 = as_type(fma(spvFMul(_1739, spvFMul(as_type(cbuf_144.data[41u + buf6_dword_off]), _1757)), fma(-_1162, _1747, spvFAdd(_1162, _1747)), _1687)); _1775 = as_type(fma(spvFMul(_1739, spvFMul(as_type(cbuf_144.data[40u + buf6_dword_off]), _1757)), fma(-_1160, _1747, spvFAdd(_1160, _1747)), _1685)); } else { _1773 = as_type(_1689); _1774 = as_type(_1687); _1775 = as_type(_1685); } uint _1861; uint _1862; uint _1863; if (cbuf_144.data[_1398] > 0u) { uint _1786 = 15u + buf6_dword_off; float _1799 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[12u + buf6_dword_off])); float _1801 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[13u + buf6_dword_off])); float _1803 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[14u + buf6_dword_off])); float _1807 = rsqrt(fma(_1799, _1799, fma(_1801, _1801, spvFMul(_1803, _1803)))); float _1808 = spvFMul(_1799, _1807); float _1809 = spvFMul(_1801, _1807); float _1810 = spvFMul(_1803, _1807); float _1821 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1786]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1786])))); float _1824 = exp2(spvFMul(_1821, log2(fast::clamp(fma(_1808, _674, fma(_1809, _658, spvFMul(_656, _1810))), 0.0, 1.0)))); float _1832 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1808, fma(_657, _1809, spvFMul(_654, _1810))), 0.0, 1.0))))); float _1842 = fma(0.125, _1821, 0.25); _1861 = as_type(fma(spvFMul(_1824, spvFMul(as_type(cbuf_144.data[46u + buf6_dword_off]), _1842)), fma(-_1164, _1832, spvFAdd(_1164, _1832)), as_type(_1773))); _1862 = as_type(fma(spvFMul(_1824, spvFMul(as_type(cbuf_144.data[45u + buf6_dword_off]), _1842)), fma(-_1162, _1832, spvFAdd(_1162, _1832)), as_type(_1774))); _1863 = as_type(fma(spvFMul(_1824, spvFMul(as_type(cbuf_144.data[44u + buf6_dword_off]), _1842)), fma(-_1160, _1832, spvFAdd(_1160, _1832)), as_type(_1775))); } else { _1861 = _1773; _1862 = _1774; _1863 = _1775; } uint _1870 = 12u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _1887 = spvFMul(as_type(cbuf_136.data[5u + buf2_dword_off]), as_type(cbuf_160.data[_1870])); bool _1892 = 0.0 < _1184; uint _1968; uint _1969; uint _1970; if (_1892) { float _1917 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, _688))); float _1922 = spvFMul(_1917, _1917); float _1923 = spvFMul(exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_144.data[_1499]), -_673, fma(as_type(cbuf_144.data[_1502]), -_657, spvFMul(as_type(cbuf_144.data[_1505]), -_654))), 0.0, 1.0)))), _1922); float _1952 = spvFMul(_1922, exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_144.data[_1511]), -_673, fma(as_type(cbuf_144.data[_1514]), -_657, spvFMul(as_type(cbuf_144.data[_1517]), -_654))), 0.0, 1.0))))); _1968 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf6_dword_off]), _1923), _1184, spvFMul(_1184, spvFMul(as_type(cbuf_144.data[21u + buf6_dword_off]), _1952)))); _1969 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf6_dword_off]), _1923), _1184, spvFMul(_1184, spvFMul(as_type(cbuf_144.data[20u + buf6_dword_off]), _1952)))); _1970 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf6_dword_off]), _1923), _1184, spvFMul(_1184, spvFMul(as_type(cbuf_144.data[22u + buf6_dword_off]), _1952)))); } else { _1968 = as_type(_1211); _1969 = as_type(_1887); _1970 = as_type(_654); } uint _1972; uint _1973; uint _1974; if (!_1892) { _1972 = 0u; _1973 = 0u; _1974 = 0u; } else { _1972 = _1970; _1973 = _1969; _1974 = _1968; } float _1988 = fma(spvFMul(_1092, fma(-_1162, _1166, _1166)), _1217, spvFAdd(as_type(_1496), as_type(_1974))); uint _1993 = ((0u + ((_711 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _2006 = uint4(cbuf_140.data[_1993 + 0u], cbuf_140.data[_1993 + 1u], cbuf_140.data[_1993 + 2u], cbuf_140.data[_1993 + 3u]); uint _2007 = _2006.x; uint _2008 = _2006.y; uint _2009 = _2006.z; float _2018 = fma(spvFMul(_1092, fma(-_1160, _1165, _1165)), _1215, spvFAdd(as_type(_1497), as_type(_1973))); float _2020 = fma(spvFMul(as_type(cbuf_136.data[1u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), fma(-_1057, _1057, fma(_272, _1086, _268.y)), _1086)), _1988, spvFMul(_1887, fma(_1211, _1217, as_type(_1862)))); float _2022 = fma(spvFMul(as_type(cbuf_136.data[0u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), fma(-_1054, _1054, fma(_272, _1085, _268.x)), _1085)), _2018, spvFMul(spvFMul(as_type(cbuf_136.data[4u + buf2_dword_off]), as_type(cbuf_160.data[_1870])), fma(spvFMul(_1160, fma(_931.x, _1092, spvFMul(fma(as_type(_913), fma(-as_type(_914), _955.x, spvFMul(as_type(_915), _923.x)), spvFMul(as_type(_914), _955.x)), _1140))), _1215, as_type(_1863)))); float _2023 = fma(spvFMul(as_type(cbuf_136.data[2u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), fma(-_1060, _1060, fma(_272, _1087, _268.z)), _1087)), fma(spvFMul(_1092, fma(-_1164, _1167, _1167)), _1219, spvFAdd(as_type(_1498), as_type(_1972))), spvFMul(spvFMul(as_type(cbuf_136.data[6u + buf2_dword_off]), as_type(cbuf_160.data[_1870])), fma(spvFMul(_1164, fma(_931.z, _1092, spvFMul(fma(as_type(_913), fma(-as_type(_914), _955.z, spvFMul(as_type(_915), _923.z)), spvFMul(as_type(_914), _955.z)), _1140))), _1219, as_type(_1861)))); float _2025 = spvFMul(_1200, as_type(_2006.w)); bool _2027 = (as_type(cbuf_136.data[20u + buf2_dword_off]) > fma(as_type(cbuf_136.data[21u + buf2_dword_off]), spvFAdd(-0.5, _262.w), _1200)) || (_2025 == 0.0); uint _2159; uint _2160; uint _2161; if (!_2027) { uint _2029 = 8u + buf8_dword_off; uint _2035 = 10u + buf8_dword_off; float _2051 = spvFMul(_2020, as_type(_2008)); uint _2058 = 14u + buf8_dword_off; float _2065 = spvFMul(_2022, as_type(_2007)); float _2072 = spvFMul(_2023, as_type(_2009)); float _2100 = spvFAdd(-1.0, fma(_2072, 0.11448000371456146240234375, fma(_2065, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _2051)))); float _2104 = fma(as_type(cbuf_148.data[7u + buf8_dword_off]), _2100, 1.0); float _2123 = fast::clamp(spvFAdd(as_type(cbuf_148.data[_2029]), spvFMul(as_type(cbuf_148.data[_2029]), -exp2(-fma(as_type(cbuf_148.data[_2035]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_148.data[9u + buf8_dword_off]), as_type(cbuf_148.data[_2035])))))), 0.0, 1.0); float _2137 = fma(as_type(cbuf_148.data[19u + buf8_dword_off]), _2100, 1.0); float _2138 = fma(_2123, fma(-_2022, as_type(_2007), spvFMul(as_type(cbuf_148.data[4u + buf8_dword_off]), _2104)), _2065); float _2139 = fma(_2123, fma(-_2020, as_type(_2008), spvFMul(as_type(cbuf_148.data[5u + buf8_dword_off]), _2104)), _2051); float _2140 = fma(_2123, fma(-_2023, as_type(_2009), spvFMul(as_type(cbuf_148.data[6u + buf8_dword_off]), _2104)), _2072); float _2143 = fast::clamp(spvFMul(as_type(cbuf_148.data[12u + buf8_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_148.data[_2058]), spvFSub(as_type(cbuf_148.data[15u + buf8_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_148.data[13u + buf8_dword_off]), as_type(cbuf_148.data[_2058]))), 0.0, 1.0)), 0.0, 1.0); _2159 = as_type(fma(_2143, fma(as_type(cbuf_148.data[18u + buf8_dword_off]), _2137, -_2140), _2140)); _2160 = as_type(fma(_2143, fma(as_type(cbuf_148.data[17u + buf8_dword_off]), _2137, -_2139), _2139)); _2161 = as_type(fma(_2143, fma(as_type(cbuf_148.data[16u + buf8_dword_off]), _2137, -_2138), _2138)); } else { _2159 = _1972; _2160 = as_type(_2018); _2161 = as_type(_1988); } if (_2027) { discard_fragment(); } out.frag_color0.x = as_type(_2161); out.frag_color0.y = as_type(_2160); out.frag_color0.z = as_type(_2159); out.frag_color0.w = _2025; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xdb734d21 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[36]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[336]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct vs_cbuf_block_f32_5 { uint data[16]; }; struct vs_cbuf_block_f32_6 { uint data[32]; }; constant uint _104 = {}; constant uint _105 = {}; constant uint _106 = {}; constant uint _107 = {}; constant uint _108 = {}; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; float4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(18)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(19)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(20)]], constant vs_cbuf_block_f32_3& cbuf_20 [[buffer(21)]], constant vs_cbuf_block_f32_4& cbuf_28 [[buffer(22)]], constant vs_cbuf_block_f32_5& cbuf_8 [[buffer(23)]], constant vs_cbuf_block_f32_6& cbuf_32 [[buffer(24)]]) { main0_out out = {}; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf12_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u); uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint buf14_dword_off = extract_bits(push_data.buf_offsets0[3u], 16u, 8u) >> 2u; uint buf15_dword_off = extract_bits(push_data.buf_offsets0[3u], 24u, 8u) >> 2u; uint _159 = as_type(as_type(in.vs_in_attr1.z)); uint _167 = as_type(as_type(in.vs_in_attr2.x)); uint _171 = as_type(as_type(in.vs_in_attr2.y)); float _244 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_167))); float _245 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_171))); float _246 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.z))))); float _253 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _254 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _255 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(_159))); bool _259 = cbuf_12.data[32u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u)] == 0u; uint _304; uint _305; uint _306; uint _307; uint _308; uint _309; uint _310; uint _311; uint _312; uint _313; uint _314; uint _315; if (!_259) { _304 = cbuf_24.data[2u + buf10_dword_off]; _305 = cbuf_24.data[1u + buf10_dword_off]; _306 = cbuf_24.data[0u + buf10_dword_off]; _307 = cbuf_24.data[5u + buf10_dword_off]; _308 = cbuf_24.data[8u + buf10_dword_off]; _309 = cbuf_24.data[7u + buf10_dword_off]; _310 = cbuf_24.data[6u + buf10_dword_off]; _311 = cbuf_24.data[4u + buf10_dword_off]; _312 = cbuf_24.data[11u + buf10_dword_off]; _313 = cbuf_24.data[10u + buf10_dword_off]; _314 = cbuf_24.data[9u + buf10_dword_off]; _315 = cbuf_24.data[3u + buf10_dword_off]; } else { _304 = _104; _305 = _105; _306 = _106; _307 = _107; _308 = _108; _309 = as_type(as_type(in.vs_in_attr3.y)); _310 = as_type(as_type(in.vs_in_attr2.w)); _311 = _171; _312 = _167; _313 = as_type(as_type(in.vs_in_attr1.w)); _314 = _159; _315 = as_type(as_type(in.vs_in_attr4.y)); } uint _708; uint _709; uint _710; uint _711; uint _712; uint _713; uint _714; uint _715; uint _716; uint _717; uint _718; uint _719; if (_259) { uint _317 = 20u + (extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u); uint _322 = (cbuf_16.data[_317] + _315) * 3u; uint _323 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.x))) * 3u; uint _329 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.z))) * 3u; uint _333 = (cbuf_16.data[_317] + as_type(as_type(in.vs_in_attr4.w))) * 3u; uint _339 = ((0u + (_322 * 16u)) + buf12_off) >> 2u; uint4 _352 = uint4(cbuf_20.data[_339 + 0u], cbuf_20.data[_339 + 1u], cbuf_20.data[_339 + 2u], cbuf_20.data[_339 + 3u]); uint _360 = ((0u + ((_322 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _373 = uint4(cbuf_20.data[_360 + 0u], cbuf_20.data[_360 + 1u], cbuf_20.data[_360 + 2u], cbuf_20.data[_360 + 3u]); uint _381 = ((0u + ((_322 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _394 = uint4(cbuf_20.data[_381 + 0u], cbuf_20.data[_381 + 1u], cbuf_20.data[_381 + 2u], cbuf_20.data[_381 + 3u]); uint _402 = ((0u + (_323 * 16u)) + buf12_off) >> 2u; uint4 _415 = uint4(cbuf_20.data[_402 + 0u], cbuf_20.data[_402 + 1u], cbuf_20.data[_402 + 2u], cbuf_20.data[_402 + 3u]); uint _423 = ((0u + ((_323 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _436 = uint4(cbuf_20.data[_423 + 0u], cbuf_20.data[_423 + 1u], cbuf_20.data[_423 + 2u], cbuf_20.data[_423 + 3u]); uint _444 = ((0u + ((_323 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _457 = uint4(cbuf_20.data[_444 + 0u], cbuf_20.data[_444 + 1u], cbuf_20.data[_444 + 2u], cbuf_20.data[_444 + 3u]); uint _465 = ((0u + (_329 * 16u)) + buf12_off) >> 2u; uint4 _478 = uint4(cbuf_20.data[_465 + 0u], cbuf_20.data[_465 + 1u], cbuf_20.data[_465 + 2u], cbuf_20.data[_465 + 3u]); uint _486 = ((0u + ((_329 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _499 = uint4(cbuf_20.data[_486 + 0u], cbuf_20.data[_486 + 1u], cbuf_20.data[_486 + 2u], cbuf_20.data[_486 + 3u]); uint _507 = ((0u + ((_329 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _520 = uint4(cbuf_20.data[_507 + 0u], cbuf_20.data[_507 + 1u], cbuf_20.data[_507 + 2u], cbuf_20.data[_507 + 3u]); uint _528 = ((0u + (_333 * 16u)) + buf12_off) >> 2u; uint4 _541 = uint4(cbuf_20.data[_528 + 0u], cbuf_20.data[_528 + 1u], cbuf_20.data[_528 + 2u], cbuf_20.data[_528 + 3u]); uint _549 = ((0u + ((_333 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _562 = uint4(cbuf_20.data[_549 + 0u], cbuf_20.data[_549 + 1u], cbuf_20.data[_549 + 2u], cbuf_20.data[_549 + 3u]); uint _570 = ((0u + ((_333 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _583 = uint4(cbuf_20.data[_570 + 0u], cbuf_20.data[_570 + 1u], cbuf_20.data[_570 + 2u], cbuf_20.data[_570 + 3u]); float _595 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr5.w, spvFAdd(in.vs_in_attr5.z, spvFAdd(in.vs_in_attr5.x, in.vs_in_attr5.y)))); float _596 = spvFMul(in.vs_in_attr5.y, _595); float _597 = spvFMul(in.vs_in_attr5.x, _595); float _622 = spvFMul(in.vs_in_attr5.z, _595); float _647 = spvFMul(in.vs_in_attr5.w, _595); _708 = as_type(fma(as_type(_541.x), _647, fma(as_type(_478.x), _622, fma(as_type(_415.x), _597, spvFMul(_596, as_type(_352.x)))))); _709 = as_type(fma(as_type(_562.x), _647, fma(as_type(_499.x), _622, fma(as_type(_436.x), _597, spvFMul(_596, as_type(_373.x)))))); _710 = as_type(fma(as_type(_541.y), _647, fma(as_type(_478.y), _622, fma(as_type(_415.y), _597, spvFMul(_596, as_type(_352.y)))))); _711 = as_type(fma(as_type(_583.x), _647, fma(as_type(_520.x), _622, fma(as_type(_457.x), _597, spvFMul(_596, as_type(_394.x)))))); _712 = as_type(fma(as_type(_562.y), _647, fma(as_type(_499.y), _622, fma(as_type(_436.y), _597, spvFMul(_596, as_type(_373.y)))))); _713 = as_type(fma(as_type(_541.w), _647, fma(as_type(_478.w), _622, fma(as_type(_415.w), _597, spvFMul(_596, as_type(_352.w)))))); _714 = as_type(fma(as_type(_541.z), _647, fma(as_type(_478.z), _622, fma(as_type(_415.z), _597, spvFMul(_596, as_type(_352.z)))))); _715 = as_type(fma(as_type(_583.y), _647, fma(as_type(_520.y), _622, fma(as_type(_457.y), _597, spvFMul(_596, as_type(_394.y)))))); _716 = as_type(fma(as_type(_562.w), _647, fma(as_type(_499.w), _622, fma(as_type(_436.w), _597, spvFMul(_596, as_type(_373.w)))))); _717 = as_type(fma(as_type(_562.z), _647, fma(as_type(_499.z), _622, fma(as_type(_436.z), _597, spvFMul(_596, as_type(_373.z)))))); _718 = as_type(fma(as_type(_583.w), _647, fma(as_type(_520.w), _622, fma(as_type(_457.w), _597, spvFMul(_596, as_type(_394.w)))))); _719 = as_type(fma(as_type(_583.z), _647, fma(as_type(_520.z), _622, fma(as_type(_457.z), _597, spvFMul(_596, as_type(_394.z)))))); } else { _708 = _306; _709 = _311; _710 = _305; _711 = _308; _712 = _307; _713 = _315; _714 = _304; _715 = _314; _716 = _309; _717 = _310; _718 = _312; _719 = _313; } float _810 = fma(as_type(_711), in.vs_in_attr0.x, fma(as_type(_715), in.vs_in_attr0.y, fma(as_type(_719), in.vs_in_attr0.z, as_type(_718)))); float _814 = fma(as_type(_709), in.vs_in_attr0.x, fma(as_type(_712), in.vs_in_attr0.y, fma(as_type(_717), in.vs_in_attr0.z, as_type(_716)))); float _816 = spvFSub(_810, as_type(cbuf_28.data[191u + buf13_dword_off])); float _818 = fma(as_type(_708), in.vs_in_attr0.x, fma(as_type(_710), in.vs_in_attr0.y, fma(as_type(_714), in.vs_in_attr0.z, as_type(_713)))); float _820 = spvFSub(_814, as_type(cbuf_28.data[187u + buf13_dword_off])); float _834 = spvFSub(_818, as_type(cbuf_28.data[183u + buf13_dword_off])); float _844 = fma(as_type(cbuf_28.data[200u + buf13_dword_off]), _834, fma(as_type(cbuf_28.data[201u + buf13_dword_off]), _820, fma(as_type(cbuf_28.data[202u + buf13_dword_off]), _816, as_type(cbuf_28.data[203u + buf13_dword_off])))); float _846 = fma(as_type(cbuf_28.data[204u + buf13_dword_off]), _834, fma(as_type(cbuf_28.data[205u + buf13_dword_off]), _820, fma(as_type(cbuf_28.data[206u + buf13_dword_off]), _816, as_type(cbuf_28.data[207u + buf13_dword_off])))); float _848 = fma(as_type(cbuf_28.data[208u + buf13_dword_off]), _834, fma(as_type(cbuf_28.data[209u + buf13_dword_off]), _820, fma(as_type(cbuf_28.data[210u + buf13_dword_off]), _816, as_type(cbuf_28.data[211u + buf13_dword_off])))); float _850 = fma(as_type(cbuf_28.data[212u + buf13_dword_off]), _834, fma(as_type(cbuf_28.data[213u + buf13_dword_off]), _820, fma(as_type(cbuf_28.data[214u + buf13_dword_off]), _816, as_type(cbuf_28.data[215u + buf13_dword_off])))); out.gl_Position.x = _844; out.gl_Position.y = _846; out.gl_Position.z = _848; out.gl_Position.w = _850; out.out_attr0.x = fma(as_type(_708), _253, fma(as_type(_710), _254, spvFMul(_255, as_type(_714)))); out.out_attr0.y = fma(as_type(_709), _253, fma(as_type(_712), _254, spvFMul(_255, as_type(_717)))); out.out_attr0.z = fma(as_type(_711), _253, fma(as_type(_715), _254, spvFMul(_255, as_type(_719)))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_708), _244, fma(as_type(_710), _245, spvFMul(_246, as_type(_714)))); out.out_attr1.y = fma(as_type(_709), _244, fma(as_type(_712), _245, spvFMul(_246, as_type(_717)))); out.out_attr1.z = fma(as_type(_711), _244, fma(as_type(_715), _245, spvFMul(_246, as_type(_719)))); out.out_attr1.w = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); out.out_attr2.x = in.vs_in_attr6.x; out.out_attr2.y = in.vs_in_attr6.y; out.out_attr2.z = in.vs_in_attr6.z; out.out_attr2.w = in.vs_in_attr6.w; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf14_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[2u + buf14_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf14_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[3u + buf14_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf14_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.z))))), as_type(cbuf_8.data[6u + buf14_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf14_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.w))))), as_type(cbuf_8.data[7u + buf14_dword_off])); out.out_attr4.x = fma(as_type(cbuf_28.data[84u + buf13_dword_off]), _818, fma(as_type(cbuf_28.data[85u + buf13_dword_off]), _814, fma(as_type(cbuf_28.data[86u + buf13_dword_off]), _810, as_type(cbuf_28.data[87u + buf13_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_28.data[88u + buf13_dword_off]), _818, fma(as_type(cbuf_28.data[89u + buf13_dword_off]), _814, fma(as_type(cbuf_28.data[90u + buf13_dword_off]), _810, as_type(cbuf_28.data[91u + buf13_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_28.data[92u + buf13_dword_off]), _818, fma(as_type(cbuf_28.data[93u + buf13_dword_off]), _814, fma(as_type(cbuf_28.data[94u + buf13_dword_off]), _810, as_type(cbuf_28.data[95u + buf13_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_28.data[96u + buf13_dword_off]), _818, fma(as_type(cbuf_28.data[97u + buf13_dword_off]), _814, fma(as_type(cbuf_28.data[98u + buf13_dword_off]), _810, as_type(cbuf_28.data[99u + buf13_dword_off])))); out.out_attr5.x = _844; out.out_attr5.y = _846; out.out_attr5.z = _848; out.out_attr5.w = _850; out.out_attr6.x = spvFSub(as_type(cbuf_32.data[12u + buf15_dword_off]), _818); out.out_attr6.y = spvFSub(as_type(cbuf_32.data[13u + buf15_dword_off]), _814); out.out_attr6.z = spvFSub(as_type(cbuf_32.data[14u + buf15_dword_off]), _810); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct fs_cbuf_block_f32_5 { uint data[8]; }; struct fs_cbuf_block_f32_6 { uint data[72]; }; struct fs_cbuf_block_f32_7 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_156 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_128 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_136 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_140 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_152 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_132 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_144 [[buffer(15)]], constant fs_cbuf_block_f32_4& cbuf_160 [[buffer(16)]], constant fs_cbuf_block_f32_7& cbuf_148 [[buffer(17)]], texture2d fs_img96 [[texture(0)]], texture2d fs_img104 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texture2d fs_img48 [[texture(3)]], texture2d fs_img112 [[texture(4)]], texture2d fs_img40 [[texture(5)]], depth2d fs_img80 [[texture(6)]], texture2d fs_img32 [[texture(7)]], texture2d fs_img88 [[texture(8)]], texturecube fs_img72 [[texture(9)]], texture2d fs_img120 [[texture(10)]], texturecube fs_img64 [[texture(11)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _187 = uint(gl_FrontFacing); float _206 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _207 = spvFMul(in.fs_in_attr0.x, _206); float _209 = spvFMul(in.fs_in_attr0.y, _206); float _210 = spvFMul(in.fs_in_attr0.z, _206); float _230 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _231 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _232 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _240 = 1.0 / in.fs_in_attr5.w; float _241 = spvFMul(in.fs_in_attr5.x, _240); float _242 = spvFMul(in.fs_in_attr5.y, _240); float _244 = fma(0.5, _241, 0.5); float _246 = fma(-0.5, _242, 0.5); float4 _262 = fs_img96.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_156.data[4u + buf0_dword_off]), _244)), spvFMul(0.25, spvFMul(as_type(cbuf_156.data[5u + buf0_dword_off]), _246)))); float4 _268 = fs_img104.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _272 = _268.w; bool _273 = 0u == _187; uint _278; if (_273) { _278 = as_type(fast::max(-_207, -_207)); } else { _278 = _187; } uint _287; uint _288; if (_273) { _287 = as_type(fast::max(-_210, -_210)); _288 = as_type(fast::max(-_209, -_209)); } else { _287 = as_type(_207); _288 = as_type(_210); } uint _291; uint _292; uint _293; if (!_273) { _291 = _287; _292 = as_type(_209); _293 = _288; } else { _291 = _278; _292 = _288; _293 = _287; } float _386 = spvFMul(in.fs_in_attr5.z, _240); float4 _391 = fs_img56.sample(fs_samp16, float2(fma(as_type(cbuf_128.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_128.data[14u + buf1_dword_off])), fma(as_type(cbuf_128.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_128.data[15u + buf1_dword_off])))); float _421 = 1.0 / fma(as_type(cbuf_156.data[48u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[49u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[50u + buf0_dword_off]), _386, as_type(cbuf_156.data[51u + buf0_dword_off])))); float _422 = spvFMul(fma(as_type(cbuf_156.data[44u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[45u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[46u + buf0_dword_off]), _386, as_type(cbuf_156.data[47u + buf0_dword_off])))), _421); uint _455 = ((((as_type((_422 > as_type(cbuf_156.data[176u + buf0_dword_off])) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_422 > as_type(cbuf_156.data[177u + buf0_dword_off]))) + uint(abs(int(0u)))) + uint(_422 > as_type(cbuf_156.data[178u + buf0_dword_off]))) << 2u; float4 _474 = fs_img48.sample(fs_samp8, float2(fma(as_type(cbuf_128.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_128.data[10u + buf1_dword_off])), fma(as_type(cbuf_128.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_128.data[11u + buf1_dword_off])))); float _475 = _474.x; float4 _480 = fs_img112.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _482 = _480.y; uint _486 = ((0u + ((_455 + 28u) * 16u)) + buf0_off) >> 2u; uint4 _499 = uint4(cbuf_156.data[_486 + 0u], cbuf_156.data[_486 + 1u], cbuf_156.data[_486 + 2u], cbuf_156.data[_486 + 3u]); uint _507 = ((0u + ((_455 + 29u) * 16u)) + buf0_off) >> 2u; uint4 _520 = uint4(cbuf_156.data[_507 + 0u], cbuf_156.data[_507 + 1u], cbuf_156.data[_507 + 2u], cbuf_156.data[_507 + 3u]); uint _528 = ((0u + ((_455 + 31u) * 16u)) + buf0_off) >> 2u; uint4 _541 = uint4(cbuf_156.data[_528 + 0u], cbuf_156.data[_528 + 1u], cbuf_156.data[_528 + 2u], cbuf_156.data[_528 + 3u]); uint _549 = ((0u + ((_455 + 30u) * 16u)) + buf0_off) >> 2u; uint4 _562 = uint4(cbuf_156.data[_549 + 0u], cbuf_156.data[_549 + 1u], cbuf_156.data[_549 + 2u], cbuf_156.data[_549 + 3u]); float _571 = fma(2.0, _391.y, -1.0); float _572 = spvFMul(fma(2.0, _391.x, -1.0), fma(2.0, _391.w, -1.0)); float _583 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _585 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_572, _572), spvFMul(_571, _571)), 0.0, 1.0))); float _587 = rsqrt(fma(_230, _230, fma(_231, _231, spvFMul(_232, _232)))); float _602 = fma(spvFMul(_232, _587), _572, fma(spvFMul(in.fs_in_attr1.z, _583), _571, spvFMul(as_type(_293), _585))); float _608 = fma(spvFMul(_231, _587), _572, fma(spvFMul(in.fs_in_attr1.y, _583), _571, spvFMul(as_type(_292), _585))); float _613 = fma(spvFMul(_230, _587), _572, fma(spvFMul(in.fs_in_attr1.x, _583), _571, spvFMul(as_type(_291), _585))); uint _615 = 24u + buf2_dword_off; float _637 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _638 = rsqrt(fma(_613, _613, fma(_608, _608, spvFMul(_602, _602)))); uint _643 = 73u + buf0_dword_off; uint _647 = 74u + buf0_dword_off; uint _651 = 75u + buf0_dword_off; float _654 = spvFMul(in.fs_in_attr6.z, _637); float _656 = spvFMul(_602, _638); float _657 = spvFMul(in.fs_in_attr6.y, _637); float _658 = spvFMul(_608, _638); float _673 = spvFMul(in.fs_in_attr6.x, _637); float _674 = spvFMul(_613, _638); float _688 = fma(_674, _673, fma(_658, _657, spvFMul(_654, _656))); float _708 = spvFMul(fast::max(_688, _688), 2.0); uint _711 = uint(in.fs_in_attr0.w) * 13u; float _715 = fma(as_type(_499.x), _241, fma(as_type(_499.y), _242, fma(as_type(_499.z), _386, as_type(_499.w)))); float _717 = fma(as_type(_520.x), _241, fma(as_type(_520.y), _242, fma(as_type(_520.z), _386, as_type(_520.w)))); float _719 = fma(as_type(_541.x), _241, fma(as_type(_541.y), _242, fma(as_type(_541.z), _386, as_type(_541.w)))); float _730 = 1.0 / _719; float4 _740 = fs_img40.sample(fs_samp8, float2(fma(in.fs_in_attr3.x, as_type(cbuf_128.data[4u + buf1_dword_off]), as_type(cbuf_128.data[6u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_128.data[5u + buf1_dword_off]), as_type(cbuf_128.data[7u + buf1_dword_off])))); float _741 = _740.x; float _742 = _740.y; float _743 = _740.z; float _745 = spvFMul(0.00390625, spvFMul(13.0, spvFMul(as_type(cbuf_136.data[8u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _475, _480.x), _475), _475)))); float _747 = fma(-in.fs_in_attr6.x, _637, spvFMul(_674, _708)); float _749 = fma(-in.fs_in_attr6.y, _637, spvFMul(_658, _708)); float _751 = fma(-in.fs_in_attr6.z, _637, spvFMul(_656, _708)); float _758 = spvFMul(fma(as_type(_562.x), _241, fma(as_type(_562.y), _242, fma(as_type(_562.z), _386, as_type(_562.w)))), _730); float _764 = spvFMul(fma(_719, as_type(cbuf_156.data[_647]), _715), _730); float _789 = 1.0 / abs(1.0); float _805 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_745, _745), 0.5))); float _807 = fma(_749, _789, 1.5); float _808 = fma(_747, _789, 1.5); float4 _815 = fs_img32.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_128.data[0u + buf1_dword_off]), as_type(cbuf_128.data[2u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_128.data[1u + buf1_dword_off]), as_type(cbuf_128.data[3u + buf1_dword_off])))); uint _823 = ((0u + ((_711 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _836 = uint4(cbuf_140.data[_823 + 0u], cbuf_140.data[_823 + 1u], cbuf_140.data[_823 + 2u], cbuf_140.data[_823 + 3u]); uint _844 = ((0u + ((_711 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _857 = uint4(cbuf_140.data[_844 + 0u], cbuf_140.data[_844 + 1u], cbuf_140.data[_844 + 2u], cbuf_140.data[_844 + 3u]); uint _865 = ((0u + ((_711 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _878 = uint4(cbuf_140.data[_865 + 0u], cbuf_140.data[_865 + 1u], cbuf_140.data[_865 + 2u], cbuf_140.data[_865 + 3u]); float4 _894 = fs_img88.sample(fs_samp20, float2(_244, _246)); uint _899 = ((0u + ((_711 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _912 = uint4(cbuf_140.data[_899 + 0u], cbuf_140.data[_899 + 1u], cbuf_140.data[_899 + 2u], cbuf_140.data[_899 + 3u]); uint _913 = _912.x; uint _914 = _912.y; uint _915 = _912.z; uint _916 = _912.w; float4 _923 = fs_img72.sample(fs_samp20, float3(spvFSub(_808, 1.5), spvFSub(_807, 1.5), _751), level(_805)); float4 _931 = fs_img120.sample(fs_samp24, float2(_244, _246), level(_805)); uint _939 = ((0u + ((_711 + 12u) * 16u)) + buf3_off) >> 2u; float4 _955 = fs_img64.sample(fs_samp20, float3(spvFSub(_808, 1.5), spvFSub(_807, 1.5), _751), level(_805)); float _973 = spvFMul(fma(as_type(cbuf_156.data[40u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[41u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[42u + buf0_dword_off]), _386, as_type(cbuf_156.data[43u + buf0_dword_off])))), _421); uint _986 = 12u + buf2_dword_off; float _989 = spvFMul(fma(as_type(cbuf_156.data[36u + buf0_dword_off]), _241, fma(as_type(cbuf_156.data[37u + buf0_dword_off]), _242, fma(as_type(cbuf_156.data[38u + buf0_dword_off]), _386, as_type(cbuf_156.data[39u + buf0_dword_off])))), _421); uint _1017 = 4u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); bool _1020 = (_743 == 0.0) && (_742 == 0.0); float _1022 = fast::clamp(spvFAdd(fma(_747, as_type(_291), fma(_749, as_type(_292), spvFMul(as_type(_293), _751))), 1.0), 0.0, 1.0); float _1028 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _1054 = fast::clamp(spvFMul(sqrt(_815.x), as_type(cbuf_152.data[24u + buf4_dword_off])), 0.0, 1.0); float _1057 = fast::clamp(spvFMul(sqrt(_815.y), as_type(cbuf_152.data[25u + buf4_dword_off])), 0.0, 1.0); float _1060 = fast::clamp(spvFMul(sqrt(_815.z), as_type(cbuf_152.data[26u + buf4_dword_off])), 0.0, 1.0); float _1061 = _1020 ? _741 : _743; float _1062 = _1020 ? _741 : _742; float _1063 = spvFMul(_482, _482); float _1084 = spvFMul(as_type(cbuf_140.data[_939]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_156.data[72u + buf0_dword_off]), as_type(cbuf_156.data[_643])), -spvFMul(as_type(cbuf_156.data[_643]), sqrt(fma(_989, _989, fma(_973, _973, spvFMul(_422, _422)))))), 0.0, 1.0)); float _1085 = spvFMul(_1054, _1054); float _1086 = spvFMul(_1057, _1057); float _1087 = spvFMul(_1060, _1060); float _1092 = fma(fma(as_type(cbuf_136.data[_986]), _894.x, 1.0), _1028, -spvFMul(as_type(cbuf_136.data[_986]), _1028)); float _1115 = spvFSub(1.0, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_719, as_type(cbuf_156.data[_651]), _715), _730), spvFMul(fma(as_type(cbuf_156.data[_647]), _719, _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(-_719, as_type(cbuf_156.data[_647]), _715), _730), spvFMul(fma(-_719, as_type(cbuf_156.data[_651]), _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img80.sample_compare(fs_samp28, float2(_764, spvFMul(fma(_719, as_type(cbuf_156.data[_651]), _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img80.sample_compare(fs_samp28, float2(spvFMul(fma(_719, as_type(cbuf_156.data[_651]), _715), _730), spvFMul(fma(-_719, as_type(cbuf_156.data[_647]), _717), _730)), _758, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1140 = spvFMul(_1092, spvFMul(spvFMul(_1022, _1022), spvFSub(1.0, _931.w))); float _1143 = fma(-_1115, spvFMul(as_type(cbuf_156.data[76u + buf0_dword_off]), _1084), as_type(cbuf_140.data[_939])); float _1146 = fma(-_1115, spvFMul(as_type(cbuf_156.data[77u + buf0_dword_off]), _1084), as_type(cbuf_140.data[_939])); float _1149 = fma(-_1115, spvFMul(as_type(cbuf_156.data[78u + buf0_dword_off]), _1084), as_type(cbuf_140.data[_939])); float _1160 = fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _741, _1063), _741), _741); float _1162 = fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _1062, _1063), _1062), _1062); float _1164 = fma(as_type(cbuf_136.data[_615]), spvFSub(fma(_272, _1061, _1063), _1061), _1061); float _1165 = fast::max(0.0, spvFAdd(as_type(_836.w), fma(_656, as_type(_836.z), fma(_674, as_type(_836.x), spvFMul(_658, as_type(_836.y)))))); float _1166 = fast::max(0.0, spvFAdd(as_type(_857.w), fma(_656, as_type(_857.z), fma(_674, as_type(_857.x), spvFMul(_658, as_type(_857.y)))))); float _1167 = fast::max(0.0, spvFAdd(as_type(_878.w), fma(_656, as_type(_878.z), fma(_674, as_type(_878.x), spvFMul(_658, as_type(_878.y)))))); float _1173 = spvFAdd(-1.0, _1149); float _1184 = spvFMul(as_type(cbuf_132.data[_1017]), in.fs_in_attr2.y); float _1200 = spvFMul(_815.w, in.fs_in_attr2.w); float _1211 = spvFMul(_1162, fma(_931.y, _1092, spvFMul(fma(as_type(_913), fma(-as_type(_914), _955.y, spvFMul(as_type(_915), _923.y)), spvFMul(as_type(_914), _955.y)), _1140))); float _1215 = spvFMul(as_type(cbuf_140.data[_939]), fma(as_type(_916), spvFAdd(-1.0, _1143), 1.0)); float _1217 = spvFMul(as_type(cbuf_140.data[_939]), fma(as_type(_916), spvFAdd(-1.0, _1146), 1.0)); float _1219 = spvFMul(as_type(cbuf_140.data[_939]), fma(as_type(_916), _1173, 1.0)); bool _1220 = _1184 == 0.0; uint _1307; uint _1308; uint _1309; uint _1310; if (_1220) { float _1272 = fast::clamp(fma(as_type(cbuf_144.data[4u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[5u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[6u + buf6_dword_off]), _656))), 0.0, 1.0); float _1275 = fast::clamp(fma(as_type(cbuf_144.data[0u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[1u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[2u + buf6_dword_off]), _656))), 0.0, 1.0); float _1293 = fma(-_1164, _1275, _1275); _1307 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf6_dword_off]), _1146), fma(-_1162, _1275, _1275), spvFMul(as_type(cbuf_144.data[21u + buf6_dword_off]), fma(-_1162, _1272, _1272)))); _1308 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf6_dword_off]), _1143), fma(-_1160, _1275, _1275), spvFMul(as_type(cbuf_144.data[20u + buf6_dword_off]), fma(-_1160, _1272, _1272)))); _1309 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf6_dword_off]), _1149), _1293, spvFMul(as_type(cbuf_144.data[22u + buf6_dword_off]), fma(-_1164, _1272, _1272)))); _1310 = as_type(_1293); } else { _1307 = as_type(_764); _1308 = as_type(_758); _1309 = as_type(_1173); _1310 = as_type(in.fs_in_attr2.y); } uint _1390; uint _1391; uint _1392; if (!_1220) { float _1365 = 1.0 / fma(2.0, _1184, 1.0); float _1366 = spvFMul(fast::max(0.0, fma(as_type(cbuf_132.data[_1017]), as_type(_1310), fma(as_type(cbuf_144.data[0u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[1u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[2u + buf6_dword_off]), _656))))), _1365); float _1377 = spvFMul(fast::max(0.0, fma(as_type(cbuf_132.data[_1017]), as_type(_1310), fma(as_type(cbuf_144.data[4u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[5u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[6u + buf6_dword_off]), _656))))), _1365); _1390 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf6_dword_off]), _1146), _1366, spvFMul(as_type(cbuf_144.data[21u + buf6_dword_off]), _1377))); _1391 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf6_dword_off]), _1143), _1366, spvFMul(as_type(cbuf_144.data[20u + buf6_dword_off]), _1377))); _1392 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf6_dword_off]), _1149), _1366, spvFMul(as_type(cbuf_144.data[22u + buf6_dword_off]), _1377))); } else { _1390 = _1307; _1391 = _1308; _1392 = _1309; } uint _1394 = 64u + buf6_dword_off; uint _1398 = 65u + buf6_dword_off; uint _1447; uint _1448; uint _1449; if (cbuf_144.data[_1394] > 0u) { float _1426 = fma(0.5, fma(as_type(cbuf_144.data[8u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[9u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[10u + buf6_dword_off]), _656))), 0.5); float _1428 = fast::clamp(spvFMul(_1426, _1426), 0.0, 1.0); _1447 = as_type(fma(as_type(cbuf_144.data[25u + buf6_dword_off]), fma(-_1162, _1428, _1428), as_type(_1390))); _1448 = as_type(fma(as_type(cbuf_144.data[24u + buf6_dword_off]), fma(-_1160, _1428, _1428), as_type(_1391))); _1449 = as_type(fma(as_type(cbuf_144.data[26u + buf6_dword_off]), fma(-_1164, _1428, _1428), as_type(_1392))); } else { _1447 = _1390; _1448 = _1391; _1449 = _1392; } uint _1496; uint _1497; uint _1498; if (cbuf_144.data[_1398] > 0u) { float _1475 = fma(0.5, fma(as_type(cbuf_144.data[12u + buf6_dword_off]), _674, fma(as_type(cbuf_144.data[13u + buf6_dword_off]), _658, spvFMul(as_type(cbuf_144.data[14u + buf6_dword_off]), _656))), 0.5); float _1477 = fast::clamp(spvFMul(_1475, _1475), 0.0, 1.0); _1496 = as_type(fma(as_type(cbuf_144.data[29u + buf6_dword_off]), fma(-_1162, _1477, _1477), as_type(_1447))); _1497 = as_type(fma(as_type(cbuf_144.data[28u + buf6_dword_off]), fma(-_1160, _1477, _1477), as_type(_1448))); _1498 = as_type(fma(as_type(cbuf_144.data[30u + buf6_dword_off]), fma(-_1164, _1477, _1477), as_type(_1449))); } else { _1496 = _1447; _1497 = _1448; _1498 = _1449; } uint _1499 = 0u + buf6_dword_off; uint _1502 = 1u + buf6_dword_off; uint _1505 = 2u + buf6_dword_off; uint _1508 = 3u + buf6_dword_off; uint _1511 = 4u + buf6_dword_off; uint _1514 = 5u + buf6_dword_off; uint _1517 = 6u + buf6_dword_off; uint _1520 = 7u + buf6_dword_off; float _1544 = exp2(_745); float _1564 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[_1499])); float _1566 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[_1502])); float _1568 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[_1505])); float _1572 = rsqrt(fma(_1564, _1564, fma(_1566, _1566, spvFMul(_1568, _1568)))); float _1573 = spvFMul(_1564, _1572); float _1574 = spvFMul(_1566, _1572); float _1575 = spvFMul(_1568, _1572); float _1577 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[_1511])); float _1579 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[_1514])); float _1581 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[_1517])); float _1585 = rsqrt(fma(_1577, _1577, fma(_1579, _1579, spvFMul(_1581, _1581)))); float _1586 = spvFMul(_1577, _1585); float _1587 = spvFMul(_1579, _1585); float _1588 = spvFMul(_1581, _1585); float _1604 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1508]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1508])))); float _1611 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1520]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1520])))); float _1616 = exp2(spvFMul(_1604, log2(fast::clamp(fma(_1573, _674, fma(_1574, _658, spvFMul(_656, _1575))), 0.0, 1.0)))); float _1617 = exp2(spvFMul(_1611, log2(fast::clamp(fma(_1586, _674, fma(_1587, _658, spvFMul(_656, _1588))), 0.0, 1.0)))); float _1633 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1573, fma(_657, _1574, spvFMul(_654, _1575))), 0.0, 1.0))))); float _1634 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1586, fma(_657, _1587, spvFMul(_654, _1588))), 0.0, 1.0))))); float _1655 = fast::clamp(spvFMul(fma(as_type(cbuf_144.data[_1499]), _674, fma(as_type(cbuf_144.data[_1502]), _658, spvFMul(as_type(cbuf_144.data[_1505]), _656))), 16.0), 0.0, 1.0); float _1657 = fast::clamp(spvFMul(fma(as_type(cbuf_144.data[_1511]), _674, fma(as_type(cbuf_144.data[_1514]), _658, spvFMul(as_type(cbuf_144.data[_1517]), _656))), 16.0), 0.0, 1.0); float _1659 = fma(_1604, 0.125, 0.25); float _1660 = fma(0.125, _1611, 0.25); float _1685 = fma(spvFMul(_1655, spvFMul(_1616, spvFMul(spvFMul(as_type(cbuf_144.data[32u + buf6_dword_off]), _1143), _1659))), fma(-_1160, _1633, spvFAdd(_1160, _1633)), spvFMul(fma(-_1160, _1634, spvFAdd(_1160, _1634)), spvFMul(_1657, spvFMul(_1617, spvFMul(as_type(cbuf_144.data[36u + buf6_dword_off]), _1660))))); float _1687 = fma(spvFMul(_1655, spvFMul(_1616, spvFMul(spvFMul(as_type(cbuf_144.data[33u + buf6_dword_off]), _1146), _1659))), fma(-_1162, _1633, spvFAdd(_1162, _1633)), spvFMul(fma(-_1162, _1634, spvFAdd(_1162, _1634)), spvFMul(_1657, spvFMul(_1617, spvFMul(as_type(cbuf_144.data[37u + buf6_dword_off]), _1660))))); float _1689 = fma(spvFMul(_1655, spvFMul(_1616, spvFMul(spvFMul(as_type(cbuf_144.data[34u + buf6_dword_off]), _1149), _1659))), fma(-_1164, _1633, spvFAdd(_1164, _1633)), spvFMul(fma(-_1164, _1634, spvFAdd(_1164, _1634)), spvFMul(_1657, spvFMul(_1617, spvFMul(as_type(cbuf_144.data[38u + buf6_dword_off]), _1660))))); uint _1773; uint _1774; uint _1775; if (cbuf_144.data[_1394] > 0u) { uint _1701 = 11u + buf6_dword_off; float _1714 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[8u + buf6_dword_off])); float _1716 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[9u + buf6_dword_off])); float _1718 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[10u + buf6_dword_off])); float _1722 = rsqrt(fma(_1714, _1714, fma(_1716, _1716, spvFMul(_1718, _1718)))); float _1723 = spvFMul(_1714, _1722); float _1724 = spvFMul(_1716, _1722); float _1725 = spvFMul(_1718, _1722); float _1736 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1701]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1701])))); float _1739 = exp2(spvFMul(_1736, log2(fast::clamp(fma(_1723, _674, fma(_1724, _658, spvFMul(_656, _1725))), 0.0, 1.0)))); float _1747 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1723, fma(_657, _1724, spvFMul(_654, _1725))), 0.0, 1.0))))); float _1757 = fma(0.125, _1736, 0.25); _1773 = as_type(fma(spvFMul(_1739, spvFMul(as_type(cbuf_144.data[42u + buf6_dword_off]), _1757)), fma(-_1164, _1747, spvFAdd(_1164, _1747)), _1689)); _1774 = as_type(fma(spvFMul(_1739, spvFMul(as_type(cbuf_144.data[41u + buf6_dword_off]), _1757)), fma(-_1162, _1747, spvFAdd(_1162, _1747)), _1687)); _1775 = as_type(fma(spvFMul(_1739, spvFMul(as_type(cbuf_144.data[40u + buf6_dword_off]), _1757)), fma(-_1160, _1747, spvFAdd(_1160, _1747)), _1685)); } else { _1773 = as_type(_1689); _1774 = as_type(_1687); _1775 = as_type(_1685); } uint _1861; uint _1862; uint _1863; if (cbuf_144.data[_1398] > 0u) { uint _1786 = 15u + buf6_dword_off; float _1799 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_144.data[12u + buf6_dword_off])); float _1801 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_144.data[13u + buf6_dword_off])); float _1803 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_144.data[14u + buf6_dword_off])); float _1807 = rsqrt(fma(_1799, _1799, fma(_1801, _1801, spvFMul(_1803, _1803)))); float _1808 = spvFMul(_1799, _1807); float _1809 = spvFMul(_1801, _1807); float _1810 = spvFMul(_1803, _1807); float _1821 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_144.data[_1786]), _1544), 1.0 / fma(_1544, 0.01000213623046875, as_type(cbuf_144.data[_1786])))); float _1824 = exp2(spvFMul(_1821, log2(fast::clamp(fma(_1808, _674, fma(_1809, _658, spvFMul(_656, _1810))), 0.0, 1.0)))); float _1832 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_673, _1808, fma(_657, _1809, spvFMul(_654, _1810))), 0.0, 1.0))))); float _1842 = fma(0.125, _1821, 0.25); _1861 = as_type(fma(spvFMul(_1824, spvFMul(as_type(cbuf_144.data[46u + buf6_dword_off]), _1842)), fma(-_1164, _1832, spvFAdd(_1164, _1832)), as_type(_1773))); _1862 = as_type(fma(spvFMul(_1824, spvFMul(as_type(cbuf_144.data[45u + buf6_dword_off]), _1842)), fma(-_1162, _1832, spvFAdd(_1162, _1832)), as_type(_1774))); _1863 = as_type(fma(spvFMul(_1824, spvFMul(as_type(cbuf_144.data[44u + buf6_dword_off]), _1842)), fma(-_1160, _1832, spvFAdd(_1160, _1832)), as_type(_1775))); } else { _1861 = _1773; _1862 = _1774; _1863 = _1775; } uint _1870 = 12u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _1887 = spvFMul(as_type(cbuf_136.data[5u + buf2_dword_off]), as_type(cbuf_160.data[_1870])); bool _1892 = 0.0 < _1184; uint _1968; uint _1969; uint _1970; if (_1892) { float _1917 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, _688))); float _1922 = spvFMul(_1917, _1917); float _1923 = spvFMul(exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_144.data[_1499]), -_673, fma(as_type(cbuf_144.data[_1502]), -_657, spvFMul(as_type(cbuf_144.data[_1505]), -_654))), 0.0, 1.0)))), _1922); float _1952 = spvFMul(_1922, exp2(spvFMul(32.0, log2(fast::clamp(fma(as_type(cbuf_144.data[_1511]), -_673, fma(as_type(cbuf_144.data[_1514]), -_657, spvFMul(as_type(cbuf_144.data[_1517]), -_654))), 0.0, 1.0))))); _1968 = as_type(fma(spvFMul(as_type(cbuf_144.data[17u + buf6_dword_off]), _1923), _1184, spvFMul(_1184, spvFMul(as_type(cbuf_144.data[21u + buf6_dword_off]), _1952)))); _1969 = as_type(fma(spvFMul(as_type(cbuf_144.data[16u + buf6_dword_off]), _1923), _1184, spvFMul(_1184, spvFMul(as_type(cbuf_144.data[20u + buf6_dword_off]), _1952)))); _1970 = as_type(fma(spvFMul(as_type(cbuf_144.data[18u + buf6_dword_off]), _1923), _1184, spvFMul(_1184, spvFMul(as_type(cbuf_144.data[22u + buf6_dword_off]), _1952)))); } else { _1968 = as_type(_1211); _1969 = as_type(_1887); _1970 = as_type(_654); } uint _1972; uint _1973; uint _1974; if (!_1892) { _1972 = 0u; _1973 = 0u; _1974 = 0u; } else { _1972 = _1970; _1973 = _1969; _1974 = _1968; } float _1988 = fma(spvFMul(_1092, fma(-_1162, _1166, _1166)), _1217, spvFAdd(as_type(_1496), as_type(_1974))); uint _1993 = ((0u + ((_711 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _2006 = uint4(cbuf_140.data[_1993 + 0u], cbuf_140.data[_1993 + 1u], cbuf_140.data[_1993 + 2u], cbuf_140.data[_1993 + 3u]); uint _2007 = _2006.x; uint _2008 = _2006.y; uint _2009 = _2006.z; float _2018 = fma(spvFMul(_1092, fma(-_1160, _1165, _1165)), _1215, spvFAdd(as_type(_1497), as_type(_1973))); float _2020 = fma(spvFMul(as_type(cbuf_136.data[1u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), fma(-_1057, _1057, fma(_272, _1086, _268.y)), _1086)), _1988, spvFMul(_1887, fma(_1211, _1217, as_type(_1862)))); float _2022 = fma(spvFMul(as_type(cbuf_136.data[0u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), fma(-_1054, _1054, fma(_272, _1085, _268.x)), _1085)), _2018, spvFMul(spvFMul(as_type(cbuf_136.data[4u + buf2_dword_off]), as_type(cbuf_160.data[_1870])), fma(spvFMul(_1160, fma(_931.x, _1092, spvFMul(fma(as_type(_913), fma(-as_type(_914), _955.x, spvFMul(as_type(_915), _923.x)), spvFMul(as_type(_914), _955.x)), _1140))), _1215, as_type(_1863)))); float _2023 = fma(spvFMul(as_type(cbuf_136.data[2u + buf2_dword_off]), fma(as_type(cbuf_136.data[_615]), fma(-_1060, _1060, fma(_272, _1087, _268.z)), _1087)), fma(spvFMul(_1092, fma(-_1164, _1167, _1167)), _1219, spvFAdd(as_type(_1498), as_type(_1972))), spvFMul(spvFMul(as_type(cbuf_136.data[6u + buf2_dword_off]), as_type(cbuf_160.data[_1870])), fma(spvFMul(_1164, fma(_931.z, _1092, spvFMul(fma(as_type(_913), fma(-as_type(_914), _955.z, spvFMul(as_type(_915), _923.z)), spvFMul(as_type(_914), _955.z)), _1140))), _1219, as_type(_1861)))); float _2025 = spvFMul(_1200, as_type(_2006.w)); bool _2027 = (as_type(cbuf_136.data[20u + buf2_dword_off]) > fma(as_type(cbuf_136.data[21u + buf2_dword_off]), spvFAdd(-0.5, _262.w), _1200)) || (_2025 == 0.0); uint _2159; uint _2160; uint _2161; if (!_2027) { uint _2029 = 8u + buf8_dword_off; uint _2035 = 10u + buf8_dword_off; float _2051 = spvFMul(_2020, as_type(_2008)); uint _2058 = 14u + buf8_dword_off; float _2065 = spvFMul(_2022, as_type(_2007)); float _2072 = spvFMul(_2023, as_type(_2009)); float _2100 = spvFAdd(-1.0, fma(_2072, 0.11448000371456146240234375, fma(_2065, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _2051)))); float _2104 = fma(as_type(cbuf_148.data[7u + buf8_dword_off]), _2100, 1.0); float _2123 = fast::clamp(spvFAdd(as_type(cbuf_148.data[_2029]), spvFMul(as_type(cbuf_148.data[_2029]), -exp2(-fma(as_type(cbuf_148.data[_2035]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_148.data[9u + buf8_dword_off]), as_type(cbuf_148.data[_2035])))))), 0.0, 1.0); float _2137 = fma(as_type(cbuf_148.data[19u + buf8_dword_off]), _2100, 1.0); float _2138 = fma(_2123, fma(-_2022, as_type(_2007), spvFMul(as_type(cbuf_148.data[4u + buf8_dword_off]), _2104)), _2065); float _2139 = fma(_2123, fma(-_2020, as_type(_2008), spvFMul(as_type(cbuf_148.data[5u + buf8_dword_off]), _2104)), _2051); float _2140 = fma(_2123, fma(-_2023, as_type(_2009), spvFMul(as_type(cbuf_148.data[6u + buf8_dword_off]), _2104)), _2072); float _2143 = fast::clamp(spvFMul(as_type(cbuf_148.data[12u + buf8_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_148.data[_2058]), spvFSub(as_type(cbuf_148.data[15u + buf8_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_148.data[13u + buf8_dword_off]), as_type(cbuf_148.data[_2058]))), 0.0, 1.0)), 0.0, 1.0); _2159 = as_type(fma(_2143, fma(as_type(cbuf_148.data[18u + buf8_dword_off]), _2137, -_2140), _2140)); _2160 = as_type(fma(_2143, fma(as_type(cbuf_148.data[17u + buf8_dword_off]), _2137, -_2139), _2139)); _2161 = as_type(fma(_2143, fma(as_type(cbuf_148.data[16u + buf8_dword_off]), _2137, -_2138), _2138)); } else { _2159 = _1972; _2160 = as_type(_2018); _2161 = as_type(_1988); } if (_2027) { discard_fragment(); } out.frag_color0.x = as_type(_2161); out.frag_color0.y = as_type(_2160); out.frag_color0.z = as_type(_2159); out.frag_color0.w = _2025; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4d1dd4a5 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[336]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(18)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(19)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(20)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(21)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(22)]]) { main0_out out = {}; uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _197 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _207 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _212 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _216 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _223 = ((0u + ((_206 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _236 = uint4(cbuf_16.data[_223 + 0u], cbuf_16.data[_223 + 1u], cbuf_16.data[_223 + 2u], cbuf_16.data[_223 + 3u]); uint _244 = ((0u + ((_207 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _257 = uint4(cbuf_16.data[_244 + 0u], cbuf_16.data[_244 + 1u], cbuf_16.data[_244 + 2u], cbuf_16.data[_244 + 3u]); uint _265 = ((0u + ((_206 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _278 = uint4(cbuf_16.data[_265 + 0u], cbuf_16.data[_265 + 1u], cbuf_16.data[_265 + 2u], cbuf_16.data[_265 + 3u]); uint _286 = ((0u + ((_207 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _299 = uint4(cbuf_16.data[_286 + 0u], cbuf_16.data[_286 + 1u], cbuf_16.data[_286 + 2u], cbuf_16.data[_286 + 3u]); uint _307 = ((0u + (_206 * 16u)) + buf10_off) >> 2u; uint4 _320 = uint4(cbuf_16.data[_307 + 0u], cbuf_16.data[_307 + 1u], cbuf_16.data[_307 + 2u], cbuf_16.data[_307 + 3u]); uint _328 = ((0u + ((_212 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _341 = uint4(cbuf_16.data[_328 + 0u], cbuf_16.data[_328 + 1u], cbuf_16.data[_328 + 2u], cbuf_16.data[_328 + 3u]); uint _349 = ((0u + (_207 * 16u)) + buf10_off) >> 2u; uint4 _362 = uint4(cbuf_16.data[_349 + 0u], cbuf_16.data[_349 + 1u], cbuf_16.data[_349 + 2u], cbuf_16.data[_349 + 3u]); uint _370 = ((0u + ((_212 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _383 = uint4(cbuf_16.data[_370 + 0u], cbuf_16.data[_370 + 1u], cbuf_16.data[_370 + 2u], cbuf_16.data[_370 + 3u]); uint _391 = ((0u + ((_216 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _404 = uint4(cbuf_16.data[_391 + 0u], cbuf_16.data[_391 + 1u], cbuf_16.data[_391 + 2u], cbuf_16.data[_391 + 3u]); uint _412 = ((0u + (_212 * 16u)) + buf10_off) >> 2u; uint4 _425 = uint4(cbuf_16.data[_412 + 0u], cbuf_16.data[_412 + 1u], cbuf_16.data[_412 + 2u], cbuf_16.data[_412 + 3u]); uint _433 = ((0u + ((_216 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _446 = uint4(cbuf_16.data[_433 + 0u], cbuf_16.data[_433 + 1u], cbuf_16.data[_433 + 2u], cbuf_16.data[_433 + 3u]); uint _454 = ((0u + (_216 * 16u)) + buf10_off) >> 2u; uint4 _467 = uint4(cbuf_16.data[_454 + 0u], cbuf_16.data[_454 + 1u], cbuf_16.data[_454 + 2u], cbuf_16.data[_454 + 3u]); float _479 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _480 = spvFMul(in.vs_in_attr4.y, _479); float _481 = spvFMul(in.vs_in_attr4.x, _479); float _486 = spvFMul(in.vs_in_attr4.z, _479); float _565 = spvFMul(in.vs_in_attr4.w, _479); float _607 = fma(as_type(_404.z), _565, fma(as_type(_341.z), _486, fma(as_type(_257.z), _481, spvFMul(_480, as_type(_236.z))))); float _629 = fma(as_type(_446.z), _565, fma(as_type(_383.z), _486, fma(as_type(_299.z), _481, spvFMul(_480, as_type(_278.z))))); float _633 = fma(as_type(_404.y), _565, fma(as_type(_341.y), _486, fma(as_type(_257.y), _481, spvFMul(_480, as_type(_236.y))))); float _642 = fma(as_type(_467.z), _565, fma(as_type(_425.z), _486, fma(as_type(_362.z), _481, spvFMul(_480, as_type(_320.z))))); float _646 = fma(as_type(_446.y), _565, fma(as_type(_383.y), _486, fma(as_type(_299.y), _481, spvFMul(_480, as_type(_278.y))))); float _648 = fma(as_type(_404.x), _565, fma(as_type(_341.x), _486, fma(as_type(_257.x), _481, spvFMul(_480, as_type(_236.x))))); float _654 = fma(as_type(_467.y), _565, fma(as_type(_425.y), _486, fma(as_type(_362.y), _481, spvFMul(_480, as_type(_320.y))))); float _656 = fma(as_type(_446.x), _565, fma(as_type(_383.x), _486, fma(as_type(_299.x), _481, spvFMul(_480, as_type(_278.x))))); float _659 = fma(_648, in.vs_in_attr0.x, fma(_633, in.vs_in_attr0.y, fma(_607, in.vs_in_attr0.z, fma(as_type(_404.w), _565, fma(as_type(_341.w), _486, fma(as_type(_257.w), _481, spvFMul(_480, as_type(_236.w)))))))); float _661 = fma(as_type(_467.x), _565, fma(as_type(_425.x), _486, fma(as_type(_362.x), _481, spvFMul(_480, as_type(_320.x))))); float _663 = fma(_656, in.vs_in_attr0.x, fma(_646, in.vs_in_attr0.y, fma(_629, in.vs_in_attr0.z, fma(as_type(_446.w), _565, fma(as_type(_383.w), _486, fma(as_type(_299.w), _481, spvFMul(_480, as_type(_278.w)))))))); float _665 = spvFSub(_659, as_type(cbuf_20.data[191u + buf11_dword_off])); float _666 = fma(_661, in.vs_in_attr0.x, fma(_654, in.vs_in_attr0.y, fma(_642, in.vs_in_attr0.z, fma(as_type(_467.w), _565, fma(as_type(_425.w), _486, fma(as_type(_362.w), _481, spvFMul(_480, as_type(_320.w)))))))); float _668 = spvFSub(_663, as_type(cbuf_20.data[187u + buf11_dword_off])); float _682 = spvFSub(_666, as_type(cbuf_20.data[183u + buf11_dword_off])); float _692 = fma(as_type(cbuf_20.data[200u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[201u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[202u + buf11_dword_off]), _665, as_type(cbuf_20.data[203u + buf11_dword_off])))); float _694 = fma(as_type(cbuf_20.data[204u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[205u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[206u + buf11_dword_off]), _665, as_type(cbuf_20.data[207u + buf11_dword_off])))); float _696 = fma(as_type(cbuf_20.data[208u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[209u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[210u + buf11_dword_off]), _665, as_type(cbuf_20.data[211u + buf11_dword_off])))); float _698 = fma(as_type(cbuf_20.data[212u + buf11_dword_off]), _682, fma(as_type(cbuf_20.data[213u + buf11_dword_off]), _668, fma(as_type(cbuf_20.data[214u + buf11_dword_off]), _665, as_type(cbuf_20.data[215u + buf11_dword_off])))); out.gl_Position.x = _692; out.gl_Position.y = _694; out.gl_Position.z = _696; out.gl_Position.w = _698; out.out_attr5.x = _692; out.out_attr5.y = _694; out.out_attr5.z = _696; out.out_attr5.w = _698; float _821 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _824 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _827 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _829 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _853 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _854 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_661, _854, fma(_654, _829, spvFMul(_824, _642))); out.out_attr0.y = fma(_656, _854, fma(_646, _829, spvFMul(_824, _629))); out.out_attr0.z = fma(_648, _854, fma(_633, _829, spvFMul(_824, _607))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_661, _853, fma(_654, _827, spvFMul(_821, _642))); out.out_attr1.y = fma(_656, _853, fma(_646, _827, spvFMul(_821, _629))); out.out_attr1.z = fma(_648, _853, fma(_633, _827, spvFMul(_821, _607))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf12_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf12_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf12_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf12_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[85u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[86u + buf11_dword_off]), _659, as_type(cbuf_20.data[87u + buf11_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[89u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[90u + buf11_dword_off]), _659, as_type(cbuf_20.data[91u + buf11_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[93u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[94u + buf11_dword_off]), _659, as_type(cbuf_20.data[95u + buf11_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf11_dword_off]), _666, fma(as_type(cbuf_20.data[97u + buf11_dword_off]), _663, fma(as_type(cbuf_20.data[98u + buf11_dword_off]), _659, as_type(cbuf_20.data[99u + buf11_dword_off])))); out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf13_dword_off]), _666); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf13_dword_off]), _663); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf13_dword_off]), _659); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4d1dd4a5 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[336]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(16)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(19)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(20)]]) { main0_out out = {}; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint _197 = 20u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _206 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _207 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _212 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _216 = (cbuf_12.data[_197] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _223 = ((0u + ((_206 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _236 = uint4(cbuf_16.data[_223 + 0u], cbuf_16.data[_223 + 1u], cbuf_16.data[_223 + 2u], cbuf_16.data[_223 + 3u]); uint _244 = ((0u + ((_207 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _257 = uint4(cbuf_16.data[_244 + 0u], cbuf_16.data[_244 + 1u], cbuf_16.data[_244 + 2u], cbuf_16.data[_244 + 3u]); uint _265 = ((0u + ((_206 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _278 = uint4(cbuf_16.data[_265 + 0u], cbuf_16.data[_265 + 1u], cbuf_16.data[_265 + 2u], cbuf_16.data[_265 + 3u]); uint _286 = ((0u + ((_207 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _299 = uint4(cbuf_16.data[_286 + 0u], cbuf_16.data[_286 + 1u], cbuf_16.data[_286 + 2u], cbuf_16.data[_286 + 3u]); uint _307 = ((0u + (_206 * 16u)) + buf8_off) >> 2u; uint4 _320 = uint4(cbuf_16.data[_307 + 0u], cbuf_16.data[_307 + 1u], cbuf_16.data[_307 + 2u], cbuf_16.data[_307 + 3u]); uint _328 = ((0u + ((_212 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _341 = uint4(cbuf_16.data[_328 + 0u], cbuf_16.data[_328 + 1u], cbuf_16.data[_328 + 2u], cbuf_16.data[_328 + 3u]); uint _349 = ((0u + (_207 * 16u)) + buf8_off) >> 2u; uint4 _362 = uint4(cbuf_16.data[_349 + 0u], cbuf_16.data[_349 + 1u], cbuf_16.data[_349 + 2u], cbuf_16.data[_349 + 3u]); uint _370 = ((0u + ((_212 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _383 = uint4(cbuf_16.data[_370 + 0u], cbuf_16.data[_370 + 1u], cbuf_16.data[_370 + 2u], cbuf_16.data[_370 + 3u]); uint _391 = ((0u + ((_216 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _404 = uint4(cbuf_16.data[_391 + 0u], cbuf_16.data[_391 + 1u], cbuf_16.data[_391 + 2u], cbuf_16.data[_391 + 3u]); uint _412 = ((0u + (_212 * 16u)) + buf8_off) >> 2u; uint4 _425 = uint4(cbuf_16.data[_412 + 0u], cbuf_16.data[_412 + 1u], cbuf_16.data[_412 + 2u], cbuf_16.data[_412 + 3u]); uint _433 = ((0u + ((_216 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _446 = uint4(cbuf_16.data[_433 + 0u], cbuf_16.data[_433 + 1u], cbuf_16.data[_433 + 2u], cbuf_16.data[_433 + 3u]); uint _454 = ((0u + (_216 * 16u)) + buf8_off) >> 2u; uint4 _467 = uint4(cbuf_16.data[_454 + 0u], cbuf_16.data[_454 + 1u], cbuf_16.data[_454 + 2u], cbuf_16.data[_454 + 3u]); float _479 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _480 = spvFMul(in.vs_in_attr4.y, _479); float _481 = spvFMul(in.vs_in_attr4.x, _479); float _486 = spvFMul(in.vs_in_attr4.z, _479); float _565 = spvFMul(in.vs_in_attr4.w, _479); float _607 = fma(as_type(_404.z), _565, fma(as_type(_341.z), _486, fma(as_type(_257.z), _481, spvFMul(_480, as_type(_236.z))))); float _629 = fma(as_type(_446.z), _565, fma(as_type(_383.z), _486, fma(as_type(_299.z), _481, spvFMul(_480, as_type(_278.z))))); float _633 = fma(as_type(_404.y), _565, fma(as_type(_341.y), _486, fma(as_type(_257.y), _481, spvFMul(_480, as_type(_236.y))))); float _642 = fma(as_type(_467.z), _565, fma(as_type(_425.z), _486, fma(as_type(_362.z), _481, spvFMul(_480, as_type(_320.z))))); float _646 = fma(as_type(_446.y), _565, fma(as_type(_383.y), _486, fma(as_type(_299.y), _481, spvFMul(_480, as_type(_278.y))))); float _648 = fma(as_type(_404.x), _565, fma(as_type(_341.x), _486, fma(as_type(_257.x), _481, spvFMul(_480, as_type(_236.x))))); float _654 = fma(as_type(_467.y), _565, fma(as_type(_425.y), _486, fma(as_type(_362.y), _481, spvFMul(_480, as_type(_320.y))))); float _656 = fma(as_type(_446.x), _565, fma(as_type(_383.x), _486, fma(as_type(_299.x), _481, spvFMul(_480, as_type(_278.x))))); float _659 = fma(_648, in.vs_in_attr0.x, fma(_633, in.vs_in_attr0.y, fma(_607, in.vs_in_attr0.z, fma(as_type(_404.w), _565, fma(as_type(_341.w), _486, fma(as_type(_257.w), _481, spvFMul(_480, as_type(_236.w)))))))); float _661 = fma(as_type(_467.x), _565, fma(as_type(_425.x), _486, fma(as_type(_362.x), _481, spvFMul(_480, as_type(_320.x))))); float _663 = fma(_656, in.vs_in_attr0.x, fma(_646, in.vs_in_attr0.y, fma(_629, in.vs_in_attr0.z, fma(as_type(_446.w), _565, fma(as_type(_383.w), _486, fma(as_type(_299.w), _481, spvFMul(_480, as_type(_278.w)))))))); float _665 = spvFSub(_659, as_type(cbuf_20.data[191u + buf9_dword_off])); float _666 = fma(_661, in.vs_in_attr0.x, fma(_654, in.vs_in_attr0.y, fma(_642, in.vs_in_attr0.z, fma(as_type(_467.w), _565, fma(as_type(_425.w), _486, fma(as_type(_362.w), _481, spvFMul(_480, as_type(_320.w)))))))); float _668 = spvFSub(_663, as_type(cbuf_20.data[187u + buf9_dword_off])); float _682 = spvFSub(_666, as_type(cbuf_20.data[183u + buf9_dword_off])); float _692 = fma(as_type(cbuf_20.data[200u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[201u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[202u + buf9_dword_off]), _665, as_type(cbuf_20.data[203u + buf9_dword_off])))); float _694 = fma(as_type(cbuf_20.data[204u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[205u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[206u + buf9_dword_off]), _665, as_type(cbuf_20.data[207u + buf9_dword_off])))); float _696 = fma(as_type(cbuf_20.data[208u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[209u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[210u + buf9_dword_off]), _665, as_type(cbuf_20.data[211u + buf9_dword_off])))); float _698 = fma(as_type(cbuf_20.data[212u + buf9_dword_off]), _682, fma(as_type(cbuf_20.data[213u + buf9_dword_off]), _668, fma(as_type(cbuf_20.data[214u + buf9_dword_off]), _665, as_type(cbuf_20.data[215u + buf9_dword_off])))); out.gl_Position.x = _692; out.gl_Position.y = _694; out.gl_Position.z = _696; out.gl_Position.w = _698; out.out_attr5.x = _692; out.out_attr5.y = _694; out.out_attr5.z = _696; out.out_attr5.w = _698; float _821 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _824 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _827 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _829 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _853 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _854 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_661, _854, fma(_654, _829, spvFMul(_824, _642))); out.out_attr0.y = fma(_656, _854, fma(_646, _829, spvFMul(_824, _629))); out.out_attr0.z = fma(_648, _854, fma(_633, _829, spvFMul(_824, _607))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_661, _853, fma(_654, _827, spvFMul(_821, _642))); out.out_attr1.y = fma(_656, _853, fma(_646, _827, spvFMul(_821, _629))); out.out_attr1.z = fma(_648, _853, fma(_633, _827, spvFMul(_821, _607))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf10_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf10_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf10_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf10_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf10_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[85u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[86u + buf9_dword_off]), _659, as_type(cbuf_20.data[87u + buf9_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[89u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[90u + buf9_dword_off]), _659, as_type(cbuf_20.data[91u + buf9_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[93u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[94u + buf9_dword_off]), _659, as_type(cbuf_20.data[95u + buf9_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf9_dword_off]), _666, fma(as_type(cbuf_20.data[97u + buf9_dword_off]), _663, fma(as_type(cbuf_20.data[98u + buf9_dword_off]), _659, as_type(cbuf_20.data[99u + buf9_dword_off])))); out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf11_dword_off]), _666); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf11_dword_off]), _663); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf11_dword_off]), _659); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x3aa864cc [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x92a2cb3a (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(18)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(19)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(20)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(21)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(22)]]) { main0_out out = {}; uint buf10_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u); uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _188 = 20u + (extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _197 = (cbuf_12.data[_188] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _198 = (cbuf_12.data[_188] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _203 = (cbuf_12.data[_188] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _207 = (cbuf_12.data[_188] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _214 = ((0u + ((_197 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _227 = uint4(cbuf_16.data[_214 + 0u], cbuf_16.data[_214 + 1u], cbuf_16.data[_214 + 2u], cbuf_16.data[_214 + 3u]); uint _235 = ((0u + ((_198 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _248 = uint4(cbuf_16.data[_235 + 0u], cbuf_16.data[_235 + 1u], cbuf_16.data[_235 + 2u], cbuf_16.data[_235 + 3u]); uint _256 = ((0u + ((_197 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _269 = uint4(cbuf_16.data[_256 + 0u], cbuf_16.data[_256 + 1u], cbuf_16.data[_256 + 2u], cbuf_16.data[_256 + 3u]); uint _277 = ((0u + ((_198 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _290 = uint4(cbuf_16.data[_277 + 0u], cbuf_16.data[_277 + 1u], cbuf_16.data[_277 + 2u], cbuf_16.data[_277 + 3u]); uint _298 = ((0u + (_197 * 16u)) + buf10_off) >> 2u; uint4 _311 = uint4(cbuf_16.data[_298 + 0u], cbuf_16.data[_298 + 1u], cbuf_16.data[_298 + 2u], cbuf_16.data[_298 + 3u]); uint _319 = ((0u + ((_203 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _332 = uint4(cbuf_16.data[_319 + 0u], cbuf_16.data[_319 + 1u], cbuf_16.data[_319 + 2u], cbuf_16.data[_319 + 3u]); uint _340 = ((0u + (_198 * 16u)) + buf10_off) >> 2u; uint4 _353 = uint4(cbuf_16.data[_340 + 0u], cbuf_16.data[_340 + 1u], cbuf_16.data[_340 + 2u], cbuf_16.data[_340 + 3u]); uint _361 = ((0u + ((_203 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _374 = uint4(cbuf_16.data[_361 + 0u], cbuf_16.data[_361 + 1u], cbuf_16.data[_361 + 2u], cbuf_16.data[_361 + 3u]); uint _382 = ((0u + ((_207 + 2u) * 16u)) + buf10_off) >> 2u; uint4 _395 = uint4(cbuf_16.data[_382 + 0u], cbuf_16.data[_382 + 1u], cbuf_16.data[_382 + 2u], cbuf_16.data[_382 + 3u]); uint _403 = ((0u + (_203 * 16u)) + buf10_off) >> 2u; uint4 _416 = uint4(cbuf_16.data[_403 + 0u], cbuf_16.data[_403 + 1u], cbuf_16.data[_403 + 2u], cbuf_16.data[_403 + 3u]); uint _424 = ((0u + ((_207 + 1u) * 16u)) + buf10_off) >> 2u; uint4 _437 = uint4(cbuf_16.data[_424 + 0u], cbuf_16.data[_424 + 1u], cbuf_16.data[_424 + 2u], cbuf_16.data[_424 + 3u]); uint _445 = ((0u + (_207 * 16u)) + buf10_off) >> 2u; uint4 _458 = uint4(cbuf_16.data[_445 + 0u], cbuf_16.data[_445 + 1u], cbuf_16.data[_445 + 2u], cbuf_16.data[_445 + 3u]); float _470 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _471 = spvFMul(in.vs_in_attr4.y, _470); float _472 = spvFMul(in.vs_in_attr4.x, _470); float _477 = spvFMul(in.vs_in_attr4.z, _470); float _556 = spvFMul(in.vs_in_attr4.w, _470); float _598 = fma(as_type(_395.z), _556, fma(as_type(_332.z), _477, fma(as_type(_248.z), _472, spvFMul(_471, as_type(_227.z))))); float _620 = fma(as_type(_437.z), _556, fma(as_type(_374.z), _477, fma(as_type(_290.z), _472, spvFMul(_471, as_type(_269.z))))); float _624 = fma(as_type(_395.y), _556, fma(as_type(_332.y), _477, fma(as_type(_248.y), _472, spvFMul(_471, as_type(_227.y))))); float _633 = fma(as_type(_458.z), _556, fma(as_type(_416.z), _477, fma(as_type(_353.z), _472, spvFMul(_471, as_type(_311.z))))); float _637 = fma(as_type(_437.y), _556, fma(as_type(_374.y), _477, fma(as_type(_290.y), _472, spvFMul(_471, as_type(_269.y))))); float _639 = fma(as_type(_395.x), _556, fma(as_type(_332.x), _477, fma(as_type(_248.x), _472, spvFMul(_471, as_type(_227.x))))); float _645 = fma(as_type(_458.y), _556, fma(as_type(_416.y), _477, fma(as_type(_353.y), _472, spvFMul(_471, as_type(_311.y))))); float _647 = fma(as_type(_437.x), _556, fma(as_type(_374.x), _477, fma(as_type(_290.x), _472, spvFMul(_471, as_type(_269.x))))); float _650 = fma(_639, in.vs_in_attr0.x, fma(_624, in.vs_in_attr0.y, fma(_598, in.vs_in_attr0.z, fma(as_type(_395.w), _556, fma(as_type(_332.w), _477, fma(as_type(_248.w), _472, spvFMul(_471, as_type(_227.w)))))))); float _652 = fma(as_type(_458.x), _556, fma(as_type(_416.x), _477, fma(as_type(_353.x), _472, spvFMul(_471, as_type(_311.x))))); float _654 = fma(_647, in.vs_in_attr0.x, fma(_637, in.vs_in_attr0.y, fma(_620, in.vs_in_attr0.z, fma(as_type(_437.w), _556, fma(as_type(_374.w), _477, fma(as_type(_290.w), _472, spvFMul(_471, as_type(_269.w)))))))); float _656 = spvFSub(_650, as_type(cbuf_20.data[191u + buf11_dword_off])); float _657 = fma(_652, in.vs_in_attr0.x, fma(_645, in.vs_in_attr0.y, fma(_633, in.vs_in_attr0.z, fma(as_type(_458.w), _556, fma(as_type(_416.w), _477, fma(as_type(_353.w), _472, spvFMul(_471, as_type(_311.w)))))))); float _659 = spvFSub(_654, as_type(cbuf_20.data[187u + buf11_dword_off])); float _673 = spvFSub(_657, as_type(cbuf_20.data[183u + buf11_dword_off])); float _683 = fma(as_type(cbuf_20.data[200u + buf11_dword_off]), _673, fma(as_type(cbuf_20.data[201u + buf11_dword_off]), _659, fma(as_type(cbuf_20.data[202u + buf11_dword_off]), _656, as_type(cbuf_20.data[203u + buf11_dword_off])))); float _685 = fma(as_type(cbuf_20.data[204u + buf11_dword_off]), _673, fma(as_type(cbuf_20.data[205u + buf11_dword_off]), _659, fma(as_type(cbuf_20.data[206u + buf11_dword_off]), _656, as_type(cbuf_20.data[207u + buf11_dword_off])))); float _687 = fma(as_type(cbuf_20.data[208u + buf11_dword_off]), _673, fma(as_type(cbuf_20.data[209u + buf11_dword_off]), _659, fma(as_type(cbuf_20.data[210u + buf11_dword_off]), _656, as_type(cbuf_20.data[211u + buf11_dword_off])))); float _689 = fma(as_type(cbuf_20.data[212u + buf11_dword_off]), _673, fma(as_type(cbuf_20.data[213u + buf11_dword_off]), _659, fma(as_type(cbuf_20.data[214u + buf11_dword_off]), _656, as_type(cbuf_20.data[215u + buf11_dword_off])))); out.gl_Position.x = _683; out.gl_Position.y = _685; out.gl_Position.z = _687; out.gl_Position.w = _689; out.out_attr4.x = _683; out.out_attr4.y = _685; out.out_attr4.z = _687; out.out_attr4.w = _689; float _796 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _799 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _802 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _804 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _826 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _827 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_652, _827, fma(_645, _804, spvFMul(_633, _799))); out.out_attr0.y = fma(_647, _827, fma(_637, _804, spvFMul(_620, _799))); out.out_attr0.z = fma(_639, _827, fma(_624, _804, spvFMul(_598, _799))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_652, _826, fma(_645, _802, spvFMul(_633, _796))); out.out_attr1.y = fma(_647, _826, fma(_637, _802, spvFMul(_620, _796))); out.out_attr1.z = fma(_639, _826, fma(_624, _802, spvFMul(_598, _796))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_20.data[84u + buf11_dword_off]), _657, fma(as_type(cbuf_20.data[85u + buf11_dword_off]), _654, fma(as_type(cbuf_20.data[86u + buf11_dword_off]), _650, as_type(cbuf_20.data[87u + buf11_dword_off])))); out.out_attr3.y = fma(as_type(cbuf_20.data[88u + buf11_dword_off]), _657, fma(as_type(cbuf_20.data[89u + buf11_dword_off]), _654, fma(as_type(cbuf_20.data[90u + buf11_dword_off]), _650, as_type(cbuf_20.data[91u + buf11_dword_off])))); out.out_attr3.z = fma(as_type(cbuf_20.data[92u + buf11_dword_off]), _657, fma(as_type(cbuf_20.data[93u + buf11_dword_off]), _654, fma(as_type(cbuf_20.data[94u + buf11_dword_off]), _650, as_type(cbuf_20.data[95u + buf11_dword_off])))); out.out_attr3.w = fma(as_type(cbuf_20.data[96u + buf11_dword_off]), _657, fma(as_type(cbuf_20.data[97u + buf11_dword_off]), _654, fma(as_type(cbuf_20.data[98u + buf11_dword_off]), _650, as_type(cbuf_20.data[99u + buf11_dword_off])))); out.out_attr5.x = spvFSub(as_type(cbuf_24.data[12u + buf13_dword_off]), _657); out.out_attr5.y = spvFSub(as_type(cbuf_24.data[13u + buf13_dword_off]), _654); out.out_attr5.z = spvFSub(as_type(cbuf_24.data[14u + buf13_dword_off]), _650); out.out_attr5.w = 1.0; out.out_attr6.x = fma(as_type(cbuf_8.data[0u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf12_dword_off])); out.out_attr6.y = fma(as_type(cbuf_8.data[1u + buf12_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf12_dword_off])); out.out_attr6.z = 0.0; out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[28]; }; struct fs_cbuf_block_f32_2 { uint data[216]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[104]; }; struct fs_cbuf_block_f32_5 { uint data[72]; }; struct fs_cbuf_block_f32_6 { uint data[44]; }; struct fs_cbuf_block_f32_7 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_112 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_116 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_140 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_120 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_124 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_128 [[buffer(14)]], constant fs_cbuf_block_f32_6& cbuf_136 [[buffer(15)]], constant fs_cbuf_block_f32_6& cbuf_144 [[buffer(16)]], constant fs_cbuf_block_f32_7& cbuf_132 [[buffer(17)]], texture2d fs_img56 [[texture(0)]], texture2d fs_img48 [[texture(1)]], texture2d fs_img40 [[texture(2)]], depth2d fs_img88 [[texture(3)]], texture2d fs_img96 [[texture(4)]], texturecube fs_img80 [[texture(5)]], texture2d fs_img104 [[texture(6)]], texturecube fs_img72 [[texture(7)]], texture2d fs_img32 [[texture(8)]], texture2d fs_img64 [[texture(9)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp28 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp24 [[sampler(4)]], sampler fs_samp4 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf2_dword_off = buf2_off >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _174 = uint(gl_FrontFacing); float4 _206 = fs_img56.sample(fs_samp16, float2(fma(as_type(cbuf_112.data[12u + buf0_dword_off]), in.fs_in_attr6.x, as_type(cbuf_112.data[14u + buf0_dword_off])), fma(as_type(cbuf_112.data[13u + buf0_dword_off]), in.fs_in_attr6.y, as_type(cbuf_112.data[15u + buf0_dword_off])))); float _209 = _206.z; float _226 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _229 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _234 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _248 = rsqrt(fma(_234, _234, fma(_229, _229, spvFMul(_226, _226)))); float _249 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _253 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _255 = spvFMul(in.fs_in_attr0.z, _249); float _256 = spvFMul(in.fs_in_attr1.z, _253); float _258 = spvFMul(in.fs_in_attr1.w, spvFMul(_226, _248)); float _263 = spvFMul(in.fs_in_attr0.y, _249); float _265 = spvFMul(in.fs_in_attr1.y, _253); float _267 = spvFMul(in.fs_in_attr1.w, spvFMul(_229, _248)); float _278 = 1.0 / in.fs_in_attr4.w; float _279 = spvFMul(in.fs_in_attr0.x, _249); float _281 = spvFMul(in.fs_in_attr1.x, _253); float _282 = spvFMul(in.fs_in_attr1.w, spvFMul(_234, _248)); float _288 = spvFMul(in.fs_in_attr4.x, _278); float _289 = spvFMul(in.fs_in_attr4.y, _278); float _290 = fma(in.fs_in_attr5.x, _282, fma(in.fs_in_attr5.y, _267, spvFMul(_258, in.fs_in_attr5.z))); float _291 = fma(in.fs_in_attr5.x, _281, fma(in.fs_in_attr5.y, _265, spvFMul(_256, in.fs_in_attr5.z))); float _292 = fma(in.fs_in_attr5.x, _279, fma(in.fs_in_attr5.y, _263, spvFMul(_255, in.fs_in_attr5.z))); float _295 = fma(as_type(cbuf_116.data[24u + buf1_dword_off]), _209, as_type(cbuf_116.data[25u + buf1_dword_off])); float _297 = fma(0.5, _288, 0.5); float _299 = fma(-0.5, _289, 0.5); bool _300 = 0u == _174; uint _313; uint _314; uint _315; if (_300) { _313 = as_type(fast::max(-_263, -_263)); _314 = as_type(fast::max(-_279, -_279)); _315 = as_type(fast::max(-_255, -_255)); } else { _313 = as_type(_263); _314 = _174; _315 = as_type(_279); } uint _318; uint _319; if (!_300) { _318 = _315; _319 = as_type(_255); } else { _318 = _314; _319 = _315; } float _385 = spvFMul(in.fs_in_attr4.z, _278); float _412 = 1.0 / fma(as_type(cbuf_140.data[48u + buf2_dword_off]), _288, fma(as_type(cbuf_140.data[49u + buf2_dword_off]), _289, fma(as_type(cbuf_140.data[50u + buf2_dword_off]), _385, as_type(cbuf_140.data[51u + buf2_dword_off])))); float _413 = spvFMul(fma(as_type(cbuf_140.data[44u + buf2_dword_off]), _288, fma(as_type(cbuf_140.data[45u + buf2_dword_off]), _289, fma(as_type(cbuf_140.data[46u + buf2_dword_off]), _385, as_type(cbuf_140.data[47u + buf2_dword_off])))), _412); uint _446 = ((((as_type((as_type(cbuf_140.data[176u + buf2_dword_off]) < _413) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_413 > as_type(cbuf_140.data[177u + buf2_dword_off]))) + uint(abs(int(0u)))) + uint(_413 > as_type(cbuf_140.data[178u + buf2_dword_off]))) << 2u; uint _457 = ((0u + ((_446 + 28u) * 16u)) + buf2_off) >> 2u; uint4 _470 = uint4(cbuf_140.data[_457 + 0u], cbuf_140.data[_457 + 1u], cbuf_140.data[_457 + 2u], cbuf_140.data[_457 + 3u]); uint _478 = ((0u + ((_446 + 29u) * 16u)) + buf2_off) >> 2u; uint4 _491 = uint4(cbuf_140.data[_478 + 0u], cbuf_140.data[_478 + 1u], cbuf_140.data[_478 + 2u], cbuf_140.data[_478 + 3u]); uint _499 = ((0u + ((_446 + 31u) * 16u)) + buf2_off) >> 2u; uint4 _512 = uint4(cbuf_140.data[_499 + 0u], cbuf_140.data[_499 + 1u], cbuf_140.data[_499 + 2u], cbuf_140.data[_499 + 3u]); uint _526 = ((0u + ((_446 + 30u) * 16u)) + buf2_off) >> 2u; uint4 _539 = uint4(cbuf_140.data[_526 + 0u], cbuf_140.data[_526 + 1u], cbuf_140.data[_526 + 2u], cbuf_140.data[_526 + 3u]); float4 _548 = fs_img48.sample(fs_samp8, float2(fma(as_type(cbuf_112.data[8u + buf0_dword_off]), in.fs_in_attr6.x, as_type(cbuf_112.data[10u + buf0_dword_off])), fma(as_type(cbuf_112.data[9u + buf0_dword_off]), in.fs_in_attr6.y, as_type(cbuf_112.data[11u + buf0_dword_off])))); float _554 = fma(2.0, _206.y, -1.0); float _555 = spvFMul(fma(2.0, _206.x, -1.0), fma(2.0, _206.w, -1.0)); float _561 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_555, _555), spvFMul(_554, _554)), 0.0, 1.0))); float _570 = fma(_258, _555, fma(_256, _554, spvFMul(as_type(_319), _561))); float _573 = fma(_267, _555, fma(_265, _554, spvFMul(as_type(_313), _561))); float _576 = fma(_282, _555, fma(_281, _554, spvFMul(as_type(_318), _561))); uint _603 = 73u + buf2_dword_off; uint _607 = 74u + buf2_dword_off; uint _611 = 75u + buf2_dword_off; float _614 = rsqrt(fma(in.fs_in_attr5.x, in.fs_in_attr5.x, fma(in.fs_in_attr5.y, in.fs_in_attr5.y, spvFMul(in.fs_in_attr5.z, in.fs_in_attr5.z)))); float _615 = rsqrt(fma(_576, _576, fma(_573, _573, spvFMul(_570, _570)))); float _616 = spvFMul(in.fs_in_attr5.z, _614); float _617 = spvFMul(_570, _615); float _618 = spvFMul(in.fs_in_attr5.y, _614); float _619 = spvFMul(_573, _615); float _623 = spvFMul(_576, _615); uint _626 = uint(in.fs_in_attr0.w) * 13u; float _648 = spvFMul(in.fs_in_attr5.x, _614); float _659 = spvFMul(fma(_623, _648, fma(_619, _618, spvFMul(_616, _617))), 2.0); float _665 = fma(as_type(_470.x), _288, fma(as_type(_470.y), _289, fma(as_type(_470.z), _385, as_type(_470.w)))); float _667 = fma(as_type(_491.x), _288, fma(as_type(_491.y), _289, fma(as_type(_491.z), _385, as_type(_491.w)))); float _669 = fma(as_type(_512.x), _288, fma(as_type(_512.y), _289, fma(as_type(_512.z), _385, as_type(_512.w)))); float _681 = 1.0 / _669; float _695 = spvFMul(0.00390625, spvFMul(13.0, spvFMul(as_type(cbuf_120.data[8u + buf3_dword_off]), _548.x))); float _697 = fma(-in.fs_in_attr5.x, _614, spvFMul(_623, _659)); float _699 = fma(-in.fs_in_attr5.y, _614, spvFMul(_619, _659)); float _701 = fma(-in.fs_in_attr5.z, _614, spvFMul(_617, _659)); float _708 = spvFMul(fma(as_type(_539.x), _288, fma(as_type(_539.y), _289, fma(as_type(_539.z), _385, as_type(_539.w)))), _681); float4 _726 = fs_img40.sample(fs_samp8, float2(fma(in.fs_in_attr6.x, as_type(cbuf_112.data[4u + buf0_dword_off]), as_type(cbuf_112.data[6u + buf0_dword_off])), fma(in.fs_in_attr6.y, as_type(cbuf_112.data[5u + buf0_dword_off]), as_type(cbuf_112.data[7u + buf0_dword_off])))); float _727 = _726.x; float _728 = _726.y; float _729 = _726.z; float _737 = rsqrt(fma(_290, _290, fma(_291, _291, spvFMul(_292, _292)))); float _741 = 1.0 / abs(1.0); float _759 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_695, _695), 0.5))); float _761 = fma(_699, _741, 1.5); float _762 = fma(_697, _741, 1.5); uint _768 = ((0u + ((_626 + 9u) * 16u)) + buf4_off) >> 2u; uint4 _781 = uint4(cbuf_124.data[_768 + 0u], cbuf_124.data[_768 + 1u], cbuf_124.data[_768 + 2u], cbuf_124.data[_768 + 3u]); uint _789 = ((0u + ((_626 + 10u) * 16u)) + buf4_off) >> 2u; uint4 _802 = uint4(cbuf_124.data[_789 + 0u], cbuf_124.data[_789 + 1u], cbuf_124.data[_789 + 2u], cbuf_124.data[_789 + 3u]); uint _810 = ((0u + ((_626 + 11u) * 16u)) + buf4_off) >> 2u; uint4 _823 = uint4(cbuf_124.data[_810 + 0u], cbuf_124.data[_810 + 1u], cbuf_124.data[_810 + 2u], cbuf_124.data[_810 + 3u]); uint _846 = ((0u + ((_626 + 8u) * 16u)) + buf4_off) >> 2u; uint4 _859 = uint4(cbuf_124.data[_846 + 0u], cbuf_124.data[_846 + 1u], cbuf_124.data[_846 + 2u], cbuf_124.data[_846 + 3u]); uint _860 = _859.x; uint _861 = _859.y; uint _862 = _859.z; uint _863 = _859.w; float4 _870 = fs_img80.sample(fs_samp20, float3(spvFSub(_762, 1.5), spvFSub(_761, 1.5), _701), level(_759)); float4 _878 = fs_img104.sample(fs_samp24, float2(_297, _299), level(_759)); uint _886 = ((0u + ((_626 + 12u) * 16u)) + buf4_off) >> 2u; float4 _908 = fs_img72.sample(fs_samp20, float3(spvFSub(_762, 1.5), spvFSub(_761, 1.5), _701), level(_759)); float4 _916 = fs_img32.sample(fs_samp4, float2(fma(as_type(cbuf_112.data[0u + buf0_dword_off]), fma(spvFMul(_290, _737), _295, in.fs_in_attr6.x), as_type(cbuf_112.data[2u + buf0_dword_off])), fma(as_type(cbuf_112.data[1u + buf0_dword_off]), fma(spvFMul(_291, _737), _295, in.fs_in_attr6.y), as_type(cbuf_112.data[3u + buf0_dword_off])))); float _920 = _916.w; float _935 = spvFMul(fma(as_type(cbuf_140.data[40u + buf2_dword_off]), _288, fma(as_type(cbuf_140.data[41u + buf2_dword_off]), _289, fma(as_type(cbuf_140.data[42u + buf2_dword_off]), _385, as_type(cbuf_140.data[43u + buf2_dword_off])))), _412); uint _937 = 12u + buf3_dword_off; uint _940 = 0u + buf5_dword_off; uint _943 = 1u + buf5_dword_off; uint _946 = 2u + buf5_dword_off; uint _949 = 3u + buf5_dword_off; uint _952 = 4u + buf5_dword_off; uint _955 = 5u + buf5_dword_off; uint _958 = 6u + buf5_dword_off; uint _961 = 7u + buf5_dword_off; float _964 = spvFMul(fma(as_type(cbuf_140.data[36u + buf2_dword_off]), _288, fma(as_type(cbuf_140.data[37u + buf2_dword_off]), _289, fma(as_type(cbuf_140.data[38u + buf2_dword_off]), _385, as_type(cbuf_140.data[39u + buf2_dword_off])))), _412); float _1019 = fast::clamp(spvFAdd(fma(_697, as_type(_318), fma(_699, as_type(_313), spvFMul(as_type(_319), _701))), 1.0), 0.0, 1.0); float _1028 = (0.0 != in.fs_in_attr2.x) ? in.fs_in_attr2.x : 1.0; bool _1032 = (_729 == 0.0) && (_728 == 0.0); float _1101 = spvFMul(as_type(cbuf_124.data[_886]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_140.data[72u + buf2_dword_off]), as_type(cbuf_140.data[_603])), -spvFMul(as_type(cbuf_140.data[_603]), sqrt(fma(_964, _964, fma(_935, _935, spvFMul(_413, _413)))))), 0.0, 1.0)); float _1103 = spvFMul(as_type(cbuf_128.data[_958]), _617); float _1105 = fma(fma(as_type(cbuf_120.data[_937]), fs_img96.sample(fs_samp20, float2(_297, _299)).x, 1.0), _1028, -spvFMul(as_type(cbuf_120.data[_937]), _1028)); float _1122 = spvFSub(1.0, fma(float4(fs_img88.sample_compare(fs_samp28, float2(spvFMul(fma(-_669, as_type(cbuf_140.data[_611]), _665), _681), spvFMul(fma(as_type(cbuf_140.data[_607]), _669, _667), _681)), _708, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img88.sample_compare(fs_samp28, float2(spvFMul(fma(-_669, as_type(cbuf_140.data[_607]), _665), _681), spvFMul(fma(-_669, as_type(cbuf_140.data[_611]), _667), _681)), _708, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img88.sample_compare(fs_samp28, float2(spvFMul(fma(_669, as_type(cbuf_140.data[_607]), _665), _681), spvFMul(fma(_669, as_type(cbuf_140.data[_611]), _667), _681)), _708, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img88.sample_compare(fs_samp28, float2(spvFMul(fma(_669, as_type(cbuf_140.data[_611]), _665), _681), spvFMul(fma(-_669, as_type(cbuf_140.data[_607]), _667), _681)), _708, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1130 = spvFMul(as_type(cbuf_128.data[_946]), _617); float _1140 = _1032 ? _727 : _729; float _1141 = _1032 ? _727 : _728; float _1152 = spvFMul(_1105, spvFMul(spvFMul(_1019, _1019), spvFSub(1.0, _878.w))); float _1155 = fma(-_1122, spvFMul(as_type(cbuf_140.data[76u + buf2_dword_off]), _1101), as_type(cbuf_124.data[_886])); float _1158 = fma(-_1122, spvFMul(as_type(cbuf_140.data[77u + buf2_dword_off]), _1101), as_type(cbuf_124.data[_886])); float _1161 = fma(-_1122, spvFMul(as_type(cbuf_140.data[78u + buf2_dword_off]), _1101), as_type(cbuf_124.data[_886])); float _1166 = fast::clamp(fma(as_type(cbuf_128.data[_952]), _623, fma(as_type(cbuf_128.data[_955]), _619, _1103)), 0.0, 1.0); float _1173 = fast::clamp(fma(as_type(cbuf_136.data[24u + buf6_dword_off]), _920, sqrt(_916.x)), 0.0, 1.0); float _1176 = fast::clamp(fma(as_type(cbuf_136.data[25u + buf6_dword_off]), _920, sqrt(_916.y)), 0.0, 1.0); float _1179 = fast::clamp(fma(as_type(cbuf_136.data[26u + buf6_dword_off]), _920, sqrt(_916.z)), 0.0, 1.0); float _1180 = fast::max(0.0, spvFAdd(as_type(_781.w), fma(_617, as_type(_781.z), fma(_623, as_type(_781.x), spvFMul(_619, as_type(_781.y)))))); float _1181 = fast::max(0.0, spvFAdd(as_type(_802.w), fma(_617, as_type(_802.z), fma(_623, as_type(_802.x), spvFMul(_619, as_type(_802.y)))))); float _1182 = fast::max(0.0, spvFAdd(as_type(_823.w), fma(_617, as_type(_823.z), fma(_623, as_type(_823.x), spvFMul(_619, as_type(_823.y)))))); float _1191 = fast::clamp(fma(as_type(cbuf_128.data[_940]), _623, fma(as_type(cbuf_128.data[_943]), _619, _1130)), 0.0, 1.0); uint _1239 = 64u + buf5_dword_off; uint _1243 = 65u + buf5_dword_off; float _1261 = spvFMul(as_type(cbuf_124.data[_886]), fma(as_type(_863), spvFAdd(-1.0, _1155), 1.0)); float _1263 = spvFMul(as_type(cbuf_124.data[_886]), fma(as_type(_863), spvFAdd(-1.0, _1158), 1.0)); float _1265 = spvFMul(as_type(cbuf_124.data[_886]), fma(as_type(_863), spvFAdd(-1.0, _1161), 1.0)); float _1266 = fma(spvFMul(as_type(cbuf_128.data[16u + buf5_dword_off]), _1155), fma(-_727, _1191, _1191), spvFMul(as_type(cbuf_128.data[20u + buf5_dword_off]), fma(-_727, _1166, _1166))); float _1268 = fma(spvFMul(as_type(cbuf_128.data[17u + buf5_dword_off]), _1158), fma(-_1141, _1191, _1191), spvFMul(as_type(cbuf_128.data[21u + buf5_dword_off]), fma(-_1141, _1166, _1166))); float _1270 = fma(spvFMul(as_type(cbuf_128.data[18u + buf5_dword_off]), _1161), fma(-_1140, _1191, _1191), spvFMul(as_type(cbuf_128.data[22u + buf5_dword_off]), fma(-_1140, _1166, _1166))); uint _1315; uint _1316; uint _1317; if (cbuf_128.data[_1239] > 0u) { float _1297 = fma(0.5, fma(as_type(cbuf_128.data[8u + buf5_dword_off]), _623, fma(as_type(cbuf_128.data[9u + buf5_dword_off]), _619, spvFMul(as_type(cbuf_128.data[10u + buf5_dword_off]), _617))), 0.5); float _1299 = fast::clamp(spvFMul(_1297, _1297), 0.0, 1.0); _1315 = as_type(fma(as_type(cbuf_128.data[26u + buf5_dword_off]), fma(-_1140, _1299, _1299), _1270)); _1316 = as_type(fma(as_type(cbuf_128.data[25u + buf5_dword_off]), fma(-_1141, _1299, _1299), _1268)); _1317 = as_type(fma(as_type(cbuf_128.data[24u + buf5_dword_off]), fma(-_727, _1299, _1299), _1266)); } else { _1315 = as_type(_1270); _1316 = as_type(_1268); _1317 = as_type(_1266); } uint _1364; uint _1365; uint _1366; if (cbuf_128.data[_1243] > 0u) { float _1343 = fma(0.5, fma(as_type(cbuf_128.data[12u + buf5_dword_off]), _623, fma(as_type(cbuf_128.data[13u + buf5_dword_off]), _619, spvFMul(as_type(cbuf_128.data[14u + buf5_dword_off]), _617))), 0.5); float _1345 = fast::clamp(spvFMul(_1343, _1343), 0.0, 1.0); _1364 = as_type(fma(as_type(cbuf_128.data[30u + buf5_dword_off]), fma(-_1140, _1345, _1345), as_type(_1315))); _1365 = as_type(fma(as_type(cbuf_128.data[29u + buf5_dword_off]), fma(-_1141, _1345, _1345), as_type(_1316))); _1366 = as_type(fma(as_type(cbuf_128.data[28u + buf5_dword_off]), fma(-_727, _1345, _1345), as_type(_1317))); } else { _1364 = _1315; _1365 = _1316; _1366 = _1317; } float _1368 = fma(in.fs_in_attr5.z, _614, as_type(cbuf_128.data[_958])); float _1370 = fma(in.fs_in_attr5.z, _614, as_type(cbuf_128.data[_946])); float _1372 = fma(in.fs_in_attr5.y, _614, as_type(cbuf_128.data[_955])); float _1375 = fma(in.fs_in_attr5.y, _614, as_type(cbuf_128.data[_943])); float _1378 = fma(in.fs_in_attr5.x, _614, as_type(cbuf_128.data[_952])); float _1381 = fma(in.fs_in_attr5.x, _614, as_type(cbuf_128.data[_940])); float _1385 = rsqrt(fma(_1378, _1378, fma(_1372, _1372, spvFMul(_1368, _1368)))); float _1386 = rsqrt(fma(_1381, _1381, fma(_1375, _1375, spvFMul(_1370, _1370)))); float _1387 = spvFMul(_1368, _1385); float _1388 = exp2(_695); float _1389 = spvFMul(_1370, _1386); float _1390 = spvFMul(_1372, _1385); float _1413 = spvFMul(_1375, _1386); float _1414 = spvFMul(_1378, _1385); float _1421 = spvFMul(_1381, _1386); float _1445 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_128.data[_961]), _1388), 1.0 / fma(_1388, 0.01000213623046875, as_type(cbuf_128.data[_961])))); float _1451 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_128.data[_949]), _1388), 1.0 / fma(_1388, 0.01000213623046875, as_type(cbuf_128.data[_949])))); float _1458 = fma(_1445, 0.125, 0.25); float _1470 = exp2(spvFMul(_1445, log2(fast::clamp(fma(_1414, _623, fma(_1390, _619, spvFMul(_617, _1387))), 0.0, 1.0)))); float _1472 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1414, fma(_618, _1390, spvFMul(_616, _1387))), 0.0, 1.0))))); float _1473 = fma(0.125, _1451, 0.25); float _1482 = exp2(spvFMul(_1451, log2(fast::clamp(fma(_1421, _623, fma(_1413, _619, spvFMul(_617, _1389))), 0.0, 1.0)))); float _1483 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1421, fma(_618, _1413, spvFMul(_616, _1389))), 0.0, 1.0))))); float _1489 = fast::clamp(spvFMul(fma(as_type(cbuf_128.data[_952]), _623, fma(as_type(cbuf_128.data[_955]), _619, _1103)), 16.0), 0.0, 1.0); float _1506 = fast::clamp(spvFMul(fma(as_type(cbuf_128.data[_940]), _623, fma(as_type(cbuf_128.data[_943]), _619, _1130)), 16.0), 0.0, 1.0); float _1525 = fma(spvFMul(_1506, spvFMul(_1482, spvFMul(spvFMul(as_type(cbuf_128.data[32u + buf5_dword_off]), _1155), _1473))), fma(-_727, _1483, spvFAdd(_727, _1483)), spvFMul(fma(-_727, _1472, spvFAdd(_727, _1472)), spvFMul(_1489, spvFMul(_1470, spvFMul(as_type(cbuf_128.data[36u + buf5_dword_off]), _1458))))); float _1527 = fma(spvFMul(_1506, spvFMul(_1482, spvFMul(spvFMul(as_type(cbuf_128.data[33u + buf5_dword_off]), _1158), _1473))), fma(-_1141, _1483, spvFAdd(_1141, _1483)), spvFMul(fma(-_1141, _1472, spvFAdd(_1141, _1472)), spvFMul(_1489, spvFMul(_1470, spvFMul(as_type(cbuf_128.data[37u + buf5_dword_off]), _1458))))); float _1529 = fma(spvFMul(_1506, spvFMul(_1482, spvFMul(spvFMul(as_type(cbuf_128.data[34u + buf5_dword_off]), _1161), _1473))), fma(-_1140, _1483, spvFAdd(_1140, _1483)), spvFMul(fma(-_1140, _1472, spvFAdd(_1140, _1472)), spvFMul(_1489, spvFMul(_1470, spvFMul(as_type(cbuf_128.data[38u + buf5_dword_off]), _1458))))); uint _1619; uint _1620; uint _1621; if (cbuf_128.data[_1239] > 0u) { uint _1547 = 11u + buf5_dword_off; float _1560 = fma(in.fs_in_attr5.x, _614, as_type(cbuf_128.data[8u + buf5_dword_off])); float _1562 = fma(in.fs_in_attr5.y, _614, as_type(cbuf_128.data[9u + buf5_dword_off])); float _1564 = fma(in.fs_in_attr5.z, _614, as_type(cbuf_128.data[10u + buf5_dword_off])); float _1568 = rsqrt(fma(_1560, _1560, fma(_1562, _1562, spvFMul(_1564, _1564)))); float _1569 = spvFMul(_1560, _1568); float _1570 = spvFMul(_1562, _1568); float _1571 = spvFMul(_1564, _1568); float _1582 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_128.data[_1547]), _1388), 1.0 / fma(_1388, 0.01000213623046875, as_type(cbuf_128.data[_1547])))); float _1585 = exp2(spvFMul(_1582, log2(fast::clamp(fma(_1569, _623, fma(_1570, _619, spvFMul(_617, _1571))), 0.0, 1.0)))); float _1593 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1569, fma(_618, _1570, spvFMul(_616, _1571))), 0.0, 1.0))))); float _1603 = fma(0.125, _1582, 0.25); _1619 = as_type(fma(spvFMul(_1585, spvFMul(as_type(cbuf_128.data[41u + buf5_dword_off]), _1603)), fma(-_1141, _1593, spvFAdd(_1141, _1593)), _1527)); _1620 = as_type(fma(spvFMul(_1585, spvFMul(as_type(cbuf_128.data[40u + buf5_dword_off]), _1603)), fma(-_727, _1593, spvFAdd(_727, _1593)), _1525)); _1621 = as_type(fma(spvFMul(_1585, spvFMul(as_type(cbuf_128.data[42u + buf5_dword_off]), _1603)), fma(-_1140, _1593, spvFAdd(_1140, _1593)), _1529)); } else { _1619 = as_type(_1527); _1620 = as_type(_1525); _1621 = as_type(_1529); } uint _1707; uint _1708; uint _1709; if (cbuf_128.data[_1243] > 0u) { uint _1632 = 15u + buf5_dword_off; float _1645 = fma(in.fs_in_attr5.x, _614, as_type(cbuf_128.data[12u + buf5_dword_off])); float _1647 = fma(in.fs_in_attr5.y, _614, as_type(cbuf_128.data[13u + buf5_dword_off])); float _1649 = fma(in.fs_in_attr5.z, _614, as_type(cbuf_128.data[14u + buf5_dword_off])); float _1653 = rsqrt(fma(_1645, _1645, fma(_1647, _1647, spvFMul(_1649, _1649)))); float _1654 = spvFMul(_1645, _1653); float _1655 = spvFMul(_1647, _1653); float _1656 = spvFMul(_1649, _1653); float _1667 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_128.data[_1632]), _1388), 1.0 / fma(_1388, 0.01000213623046875, as_type(cbuf_128.data[_1632])))); float _1670 = exp2(spvFMul(_1667, log2(fast::clamp(fma(_1654, _623, fma(_1655, _619, spvFMul(_617, _1656))), 0.0, 1.0)))); float _1678 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_648, _1654, fma(_618, _1655, spvFMul(_616, _1656))), 0.0, 1.0))))); float _1688 = fma(0.125, _1667, 0.25); _1707 = as_type(fma(spvFMul(_1670, spvFMul(as_type(cbuf_128.data[46u + buf5_dword_off]), _1688)), fma(-_1140, _1678, spvFAdd(_1140, _1678)), as_type(_1621))); _1708 = as_type(fma(spvFMul(_1670, spvFMul(as_type(cbuf_128.data[44u + buf5_dword_off]), _1688)), fma(-_727, _1678, spvFAdd(_727, _1678)), as_type(_1620))); _1709 = as_type(fma(spvFMul(_1670, spvFMul(as_type(cbuf_128.data[45u + buf5_dword_off]), _1688)), fma(-_1141, _1678, spvFAdd(_1141, _1678)), as_type(_1619))); } else { _1707 = _1621; _1708 = _1620; _1709 = _1619; } float4 _1725 = fs_img64.sample(fs_samp20, float2(fma(0.5, fma(as_type(cbuf_140.data[8u + buf2_dword_off]), _623, fma(as_type(cbuf_140.data[9u + buf2_dword_off]), _619, spvFMul(as_type(cbuf_140.data[10u + buf2_dword_off]), _617))), 0.5), fma(-0.5, fma(as_type(cbuf_140.data[12u + buf2_dword_off]), _623, fma(as_type(cbuf_140.data[13u + buf2_dword_off]), _619, spvFMul(as_type(cbuf_140.data[14u + buf2_dword_off]), _617))), 0.5))); float _1726 = _1725.x; float _1727 = _1725.y; float _1728 = _1725.z; uint _1732 = ((0u + ((_626 + 7u) * 16u)) + buf4_off) >> 2u; uint4 _1745 = uint4(cbuf_124.data[_1732 + 0u], cbuf_124.data[_1732 + 1u], cbuf_124.data[_1732 + 2u], cbuf_124.data[_1732 + 3u]); uint _1746 = _1745.x; uint _1747 = _1745.y; uint _1748 = _1745.z; uint _1757 = 12u + (extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u); float _1760 = spvFSub(1.0, exp2(spvFMul(8.0, log2(_209)))); uint _1766 = 8u + buf8_dword_off; uint _1772 = 10u + buf8_dword_off; float _1789 = fma(spvFMul(_1760, _1727), _1727, fma(spvFMul(as_type(cbuf_120.data[1u + buf3_dword_off]), spvFMul(_1176, _1176)), fma(spvFMul(_1105, fma(-_1141, _1181, _1181)), _1263, as_type(_1365)), spvFMul(fma(spvFMul(_1141, fma(_878.y, _1105, spvFMul(fma(as_type(_860), fma(-as_type(_861), _908.y, spvFMul(as_type(_862), _870.y)), spvFMul(as_type(_861), _908.y)), _1152))), _1263, as_type(_1709)), spvFMul(as_type(cbuf_120.data[5u + buf3_dword_off]), as_type(cbuf_144.data[_1757]))))); float _1803 = fma(spvFMul(_1760, _1726), _1726, fma(spvFMul(as_type(cbuf_120.data[0u + buf3_dword_off]), spvFMul(_1173, _1173)), fma(spvFMul(_1105, fma(-_727, _1180, _1180)), _1261, as_type(_1366)), spvFMul(fma(spvFMul(_727, fma(_878.x, _1105, spvFMul(fma(as_type(_860), fma(-as_type(_861), _908.x, spvFMul(as_type(_862), _870.x)), spvFMul(as_type(_861), _908.x)), _1152))), _1261, as_type(_1708)), spvFMul(as_type(cbuf_120.data[4u + buf3_dword_off]), as_type(cbuf_144.data[_1757]))))); float _1805 = spvFMul(_1789, as_type(_1747)); uint _1812 = 14u + buf8_dword_off; float _1818 = fma(spvFMul(_1760, _1728), _1728, fma(spvFMul(as_type(cbuf_120.data[2u + buf3_dword_off]), spvFMul(_1179, _1179)), fma(spvFMul(_1105, fma(-_1140, _1182, _1182)), _1265, as_type(_1364)), spvFMul(fma(spvFMul(_1140, fma(_878.z, _1105, spvFMul(fma(as_type(_860), fma(-as_type(_861), _908.z, spvFMul(as_type(_862), _870.z)), spvFMul(as_type(_861), _908.z)), _1152))), _1265, as_type(_1707)), spvFMul(as_type(cbuf_120.data[6u + buf3_dword_off]), as_type(cbuf_144.data[_1757]))))); float _1820 = spvFMul(_1803, as_type(_1746)); float _1827 = spvFMul(_1818, as_type(_1748)); float _1855 = spvFAdd(-1.0, fma(_1827, 0.11448000371456146240234375, fma(_1820, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1805)))); float _1859 = fma(as_type(cbuf_132.data[7u + buf8_dword_off]), _1855, 1.0); float _1878 = fast::clamp(spvFAdd(as_type(cbuf_132.data[_1766]), spvFMul(as_type(cbuf_132.data[_1766]), -exp2(-fma(as_type(cbuf_132.data[_1772]), sqrt(fma(-in.fs_in_attr5.x, -in.fs_in_attr5.x, spvFMul(-in.fs_in_attr5.z, -in.fs_in_attr5.z))), -spvFMul(as_type(cbuf_132.data[9u + buf8_dword_off]), as_type(cbuf_132.data[_1772])))))), 0.0, 1.0); float _1892 = fma(as_type(cbuf_132.data[19u + buf8_dword_off]), _1855, 1.0); float _1893 = fma(_1878, fma(-_1803, as_type(_1746), spvFMul(as_type(cbuf_132.data[4u + buf8_dword_off]), _1859)), _1820); float _1894 = fma(_1878, fma(-_1789, as_type(_1747), spvFMul(as_type(cbuf_132.data[5u + buf8_dword_off]), _1859)), _1805); float _1895 = fma(_1878, fma(-_1818, as_type(_1748), spvFMul(as_type(cbuf_132.data[6u + buf8_dword_off]), _1859)), _1827); float _1900 = fast::clamp(spvFMul(as_type(cbuf_132.data[12u + buf8_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_132.data[_1812]), spvFSub(as_type(cbuf_132.data[15u + buf8_dword_off]), in.fs_in_attr5.y)), -spvFMul(as_type(cbuf_132.data[13u + buf8_dword_off]), as_type(cbuf_132.data[_1812]))), 0.0, 1.0)), 0.0, 1.0); if (false) { discard_fragment(); } out.frag_color0.x = fma(_1900, fma(as_type(cbuf_132.data[16u + buf8_dword_off]), _1892, -_1893), _1893); out.frag_color0.y = fma(_1900, fma(as_type(cbuf_132.data[17u + buf8_dword_off]), _1892, -_1894), _1894); out.frag_color0.z = fma(_1900, fma(as_type(cbuf_132.data[18u + buf8_dword_off]), _1892, -_1895), _1895); out.frag_color0.w = spvFMul(in.fs_in_attr2.w, as_type(_1745.w)); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8057c1dc [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4d1dd4a5 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct vs_cbuf_block_f32_4 { uint data[32]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(17)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(19)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(20)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(21)]]) { main0_out out = {}; uint buf9_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u); uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; uint buf11_dword_off = extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u; uint buf12_dword_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u) >> 2u; uint _196 = 20u + (extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _205 = (cbuf_12.data[_196] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _206 = (cbuf_12.data[_196] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _211 = (cbuf_12.data[_196] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _215 = (cbuf_12.data[_196] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _222 = ((0u + ((_205 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _235 = uint4(cbuf_16.data[_222 + 0u], cbuf_16.data[_222 + 1u], cbuf_16.data[_222 + 2u], cbuf_16.data[_222 + 3u]); uint _243 = ((0u + ((_206 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _256 = uint4(cbuf_16.data[_243 + 0u], cbuf_16.data[_243 + 1u], cbuf_16.data[_243 + 2u], cbuf_16.data[_243 + 3u]); uint _264 = ((0u + ((_205 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _277 = uint4(cbuf_16.data[_264 + 0u], cbuf_16.data[_264 + 1u], cbuf_16.data[_264 + 2u], cbuf_16.data[_264 + 3u]); uint _285 = ((0u + ((_206 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _298 = uint4(cbuf_16.data[_285 + 0u], cbuf_16.data[_285 + 1u], cbuf_16.data[_285 + 2u], cbuf_16.data[_285 + 3u]); uint _306 = ((0u + (_205 * 16u)) + buf9_off) >> 2u; uint4 _319 = uint4(cbuf_16.data[_306 + 0u], cbuf_16.data[_306 + 1u], cbuf_16.data[_306 + 2u], cbuf_16.data[_306 + 3u]); uint _327 = ((0u + ((_211 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _340 = uint4(cbuf_16.data[_327 + 0u], cbuf_16.data[_327 + 1u], cbuf_16.data[_327 + 2u], cbuf_16.data[_327 + 3u]); uint _348 = ((0u + (_206 * 16u)) + buf9_off) >> 2u; uint4 _361 = uint4(cbuf_16.data[_348 + 0u], cbuf_16.data[_348 + 1u], cbuf_16.data[_348 + 2u], cbuf_16.data[_348 + 3u]); uint _369 = ((0u + ((_211 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _382 = uint4(cbuf_16.data[_369 + 0u], cbuf_16.data[_369 + 1u], cbuf_16.data[_369 + 2u], cbuf_16.data[_369 + 3u]); uint _390 = ((0u + ((_215 + 2u) * 16u)) + buf9_off) >> 2u; uint4 _403 = uint4(cbuf_16.data[_390 + 0u], cbuf_16.data[_390 + 1u], cbuf_16.data[_390 + 2u], cbuf_16.data[_390 + 3u]); uint _411 = ((0u + (_211 * 16u)) + buf9_off) >> 2u; uint4 _424 = uint4(cbuf_16.data[_411 + 0u], cbuf_16.data[_411 + 1u], cbuf_16.data[_411 + 2u], cbuf_16.data[_411 + 3u]); uint _432 = ((0u + ((_215 + 1u) * 16u)) + buf9_off) >> 2u; uint4 _445 = uint4(cbuf_16.data[_432 + 0u], cbuf_16.data[_432 + 1u], cbuf_16.data[_432 + 2u], cbuf_16.data[_432 + 3u]); uint _453 = ((0u + (_215 * 16u)) + buf9_off) >> 2u; uint4 _466 = uint4(cbuf_16.data[_453 + 0u], cbuf_16.data[_453 + 1u], cbuf_16.data[_453 + 2u], cbuf_16.data[_453 + 3u]); float _478 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _479 = spvFMul(in.vs_in_attr4.y, _478); float _480 = spvFMul(in.vs_in_attr4.x, _478); float _485 = spvFMul(in.vs_in_attr4.z, _478); float _564 = spvFMul(in.vs_in_attr4.w, _478); float _606 = fma(as_type(_403.z), _564, fma(as_type(_340.z), _485, fma(as_type(_256.z), _480, spvFMul(_479, as_type(_235.z))))); float _628 = fma(as_type(_445.z), _564, fma(as_type(_382.z), _485, fma(as_type(_298.z), _480, spvFMul(_479, as_type(_277.z))))); float _632 = fma(as_type(_403.y), _564, fma(as_type(_340.y), _485, fma(as_type(_256.y), _480, spvFMul(_479, as_type(_235.y))))); float _641 = fma(as_type(_466.z), _564, fma(as_type(_424.z), _485, fma(as_type(_361.z), _480, spvFMul(_479, as_type(_319.z))))); float _645 = fma(as_type(_445.y), _564, fma(as_type(_382.y), _485, fma(as_type(_298.y), _480, spvFMul(_479, as_type(_277.y))))); float _647 = fma(as_type(_403.x), _564, fma(as_type(_340.x), _485, fma(as_type(_256.x), _480, spvFMul(_479, as_type(_235.x))))); float _653 = fma(as_type(_466.y), _564, fma(as_type(_424.y), _485, fma(as_type(_361.y), _480, spvFMul(_479, as_type(_319.y))))); float _655 = fma(as_type(_445.x), _564, fma(as_type(_382.x), _485, fma(as_type(_298.x), _480, spvFMul(_479, as_type(_277.x))))); float _658 = fma(_647, in.vs_in_attr0.x, fma(_632, in.vs_in_attr0.y, fma(_606, in.vs_in_attr0.z, fma(as_type(_403.w), _564, fma(as_type(_340.w), _485, fma(as_type(_256.w), _480, spvFMul(_479, as_type(_235.w)))))))); float _660 = fma(as_type(_466.x), _564, fma(as_type(_424.x), _485, fma(as_type(_361.x), _480, spvFMul(_479, as_type(_319.x))))); float _662 = fma(_655, in.vs_in_attr0.x, fma(_645, in.vs_in_attr0.y, fma(_628, in.vs_in_attr0.z, fma(as_type(_445.w), _564, fma(as_type(_382.w), _485, fma(as_type(_298.w), _480, spvFMul(_479, as_type(_277.w)))))))); float _664 = spvFSub(_658, as_type(cbuf_20.data[191u + buf10_dword_off])); float _665 = fma(_660, in.vs_in_attr0.x, fma(_653, in.vs_in_attr0.y, fma(_641, in.vs_in_attr0.z, fma(as_type(_466.w), _564, fma(as_type(_424.w), _485, fma(as_type(_361.w), _480, spvFMul(_479, as_type(_319.w)))))))); float _667 = spvFSub(_662, as_type(cbuf_20.data[187u + buf10_dword_off])); float _681 = spvFSub(_665, as_type(cbuf_20.data[183u + buf10_dword_off])); float _691 = fma(as_type(cbuf_20.data[200u + buf10_dword_off]), _681, fma(as_type(cbuf_20.data[201u + buf10_dword_off]), _667, fma(as_type(cbuf_20.data[202u + buf10_dword_off]), _664, as_type(cbuf_20.data[203u + buf10_dword_off])))); float _693 = fma(as_type(cbuf_20.data[204u + buf10_dword_off]), _681, fma(as_type(cbuf_20.data[205u + buf10_dword_off]), _667, fma(as_type(cbuf_20.data[206u + buf10_dword_off]), _664, as_type(cbuf_20.data[207u + buf10_dword_off])))); float _695 = fma(as_type(cbuf_20.data[208u + buf10_dword_off]), _681, fma(as_type(cbuf_20.data[209u + buf10_dword_off]), _667, fma(as_type(cbuf_20.data[210u + buf10_dword_off]), _664, as_type(cbuf_20.data[211u + buf10_dword_off])))); float _697 = fma(as_type(cbuf_20.data[212u + buf10_dword_off]), _681, fma(as_type(cbuf_20.data[213u + buf10_dword_off]), _667, fma(as_type(cbuf_20.data[214u + buf10_dword_off]), _664, as_type(cbuf_20.data[215u + buf10_dword_off])))); out.gl_Position.x = _691; out.gl_Position.y = _693; out.gl_Position.z = _695; out.gl_Position.w = _697; out.out_attr5.x = _691; out.out_attr5.y = _693; out.out_attr5.z = _695; out.out_attr5.w = _697; float _820 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _823 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _826 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _828 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _852 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _853 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_660, _853, fma(_653, _828, spvFMul(_823, _641))); out.out_attr0.y = fma(_655, _853, fma(_645, _828, spvFMul(_823, _628))); out.out_attr0.z = fma(_647, _853, fma(_632, _828, spvFMul(_823, _606))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_660, _852, fma(_653, _826, spvFMul(_820, _641))); out.out_attr1.y = fma(_655, _852, fma(_645, _826, spvFMul(_820, _628))); out.out_attr1.z = fma(_647, _852, fma(_632, _826, spvFMul(_820, _606))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf11_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf11_dword_off])); out.out_attr3.z = fma(as_type(cbuf_8.data[4u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf11_dword_off])); out.out_attr3.w = fma(as_type(cbuf_8.data[5u + buf11_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf11_dword_off])); out.out_attr4.x = fma(as_type(cbuf_20.data[84u + buf10_dword_off]), _665, fma(as_type(cbuf_20.data[85u + buf10_dword_off]), _662, fma(as_type(cbuf_20.data[86u + buf10_dword_off]), _658, as_type(cbuf_20.data[87u + buf10_dword_off])))); out.out_attr4.y = fma(as_type(cbuf_20.data[88u + buf10_dword_off]), _665, fma(as_type(cbuf_20.data[89u + buf10_dword_off]), _662, fma(as_type(cbuf_20.data[90u + buf10_dword_off]), _658, as_type(cbuf_20.data[91u + buf10_dword_off])))); out.out_attr4.z = fma(as_type(cbuf_20.data[92u + buf10_dword_off]), _665, fma(as_type(cbuf_20.data[93u + buf10_dword_off]), _662, fma(as_type(cbuf_20.data[94u + buf10_dword_off]), _658, as_type(cbuf_20.data[95u + buf10_dword_off])))); out.out_attr4.w = fma(as_type(cbuf_20.data[96u + buf10_dword_off]), _665, fma(as_type(cbuf_20.data[97u + buf10_dword_off]), _662, fma(as_type(cbuf_20.data[98u + buf10_dword_off]), _658, as_type(cbuf_20.data[99u + buf10_dword_off])))); out.out_attr6.x = spvFSub(as_type(cbuf_24.data[12u + buf12_dword_off]), _665); out.out_attr6.y = spvFSub(as_type(cbuf_24.data[13u + buf12_dword_off]), _662); out.out_attr6.z = spvFSub(as_type(cbuf_24.data[14u + buf12_dword_off]), _658); out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct fs_cbuf_block_f32_5 { uint data[72]; }; struct fs_cbuf_block_f32_6 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_56 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_32 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_40 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_52 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_44 [[buffer(14)]], constant fs_cbuf_block_f32_4& cbuf_60 [[buffer(15)]], constant fs_cbuf_block_f32_6& cbuf_48 [[buffer(16)]], texture2d fs_img128 [[texture(0)]], texture2d fs_img136 [[texture(1)]], texture2d fs_img88 [[texture(2)]], texture2d fs_img80 [[texture(3)]], texture2d fs_img144 [[texture(4)]], texture2d fs_img72 [[texture(5)]], depth2d fs_img112 [[texture(6)]], texture2d fs_img64 [[texture(7)]], texture2d fs_img120 [[texture(8)]], texturecube fs_img104 [[texture(9)]], texture2d fs_img152 [[texture(10)]], texturecube fs_img96 [[texture(11)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], sampler fs_samp28 [[sampler(4)]], sampler fs_samp24 [[sampler(5)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u); uint buf0_dword_off = buf0_off >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint _171 = uint(gl_FrontFacing); float _190 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _191 = spvFMul(in.fs_in_attr0.x, _190); float _193 = spvFMul(in.fs_in_attr0.y, _190); float _194 = spvFMul(in.fs_in_attr0.z, _190); float _214 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _215 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _216 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _224 = 1.0 / in.fs_in_attr5.w; float _225 = spvFMul(in.fs_in_attr5.x, _224); float _226 = spvFMul(in.fs_in_attr5.y, _224); float _228 = fma(0.5, _225, 0.5); float _230 = fma(-0.5, _226, 0.5); float4 _246 = fs_img128.sample(fs_samp20, float2(spvFMul(0.25, spvFMul(as_type(cbuf_56.data[4u + buf0_dword_off]), _228)), spvFMul(0.25, spvFMul(as_type(cbuf_56.data[5u + buf0_dword_off]), _230)))); float4 _252 = fs_img136.sample(fs_samp4, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _256 = _252.w; bool _257 = 0u == _171; uint _262; if (_257) { _262 = as_type(fast::max(-_191, -_191)); } else { _262 = _171; } uint _271; uint _272; if (_257) { _271 = as_type(fast::max(-_194, -_194)); _272 = as_type(fast::max(-_193, -_193)); } else { _271 = as_type(_191); _272 = as_type(_194); } uint _275; uint _276; uint _277; if (!_257) { _275 = _271; _276 = as_type(_193); _277 = _272; } else { _275 = _262; _276 = _272; _277 = _271; } float _278 = spvFAdd(-0.5, _246.w); float _371 = spvFMul(in.fs_in_attr5.z, _224); float4 _391 = fs_img88.sample(fs_samp16, float2(fma(as_type(cbuf_32.data[12u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[14u + buf1_dword_off])), fma(as_type(cbuf_32.data[13u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[15u + buf1_dword_off])))); float _406 = 1.0 / fma(as_type(cbuf_56.data[48u + buf0_dword_off]), _225, fma(as_type(cbuf_56.data[49u + buf0_dword_off]), _226, fma(as_type(cbuf_56.data[50u + buf0_dword_off]), _371, as_type(cbuf_56.data[51u + buf0_dword_off])))); float _407 = spvFMul(fma(as_type(cbuf_56.data[44u + buf0_dword_off]), _225, fma(as_type(cbuf_56.data[45u + buf0_dword_off]), _226, fma(as_type(cbuf_56.data[46u + buf0_dword_off]), _371, as_type(cbuf_56.data[47u + buf0_dword_off])))), _406); uint _440 = ((((as_type((_407 > as_type(cbuf_56.data[176u + buf0_dword_off])) ? 1.4012984643248170709237295832899e-45 : 0.0) + uint(abs(int(0u)))) + uint(_407 > as_type(cbuf_56.data[177u + buf0_dword_off]))) + uint(abs(int(0u)))) + uint(_407 > as_type(cbuf_56.data[178u + buf0_dword_off]))) << 2u; float4 _459 = fs_img80.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[8u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[10u + buf1_dword_off])), fma(as_type(cbuf_32.data[9u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[11u + buf1_dword_off])))); float _460 = _459.x; float4 _465 = fs_img144.sample(fs_samp8, float2(in.fs_in_attr3.z, in.fs_in_attr3.w)); float _467 = _465.y; uint _471 = ((0u + ((_440 + 28u) * 16u)) + buf0_off) >> 2u; uint4 _484 = uint4(cbuf_56.data[_471 + 0u], cbuf_56.data[_471 + 1u], cbuf_56.data[_471 + 2u], cbuf_56.data[_471 + 3u]); uint _492 = ((0u + ((_440 + 29u) * 16u)) + buf0_off) >> 2u; uint4 _505 = uint4(cbuf_56.data[_492 + 0u], cbuf_56.data[_492 + 1u], cbuf_56.data[_492 + 2u], cbuf_56.data[_492 + 3u]); uint _513 = ((0u + ((_440 + 31u) * 16u)) + buf0_off) >> 2u; uint4 _526 = uint4(cbuf_56.data[_513 + 0u], cbuf_56.data[_513 + 1u], cbuf_56.data[_513 + 2u], cbuf_56.data[_513 + 3u]); uint _534 = ((0u + ((_440 + 30u) * 16u)) + buf0_off) >> 2u; uint4 _547 = uint4(cbuf_56.data[_534 + 0u], cbuf_56.data[_534 + 1u], cbuf_56.data[_534 + 2u], cbuf_56.data[_534 + 3u]); float _556 = fma(2.0, _391.y, -1.0); float _557 = spvFMul(fma(2.0, _391.x, -1.0), fma(2.0, _391.w, -1.0)); float _568 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _570 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_557, _557), spvFMul(_556, _556)), 0.0, 1.0))); float _572 = rsqrt(fma(_214, _214, fma(_215, _215, spvFMul(_216, _216)))); float _587 = fma(spvFMul(_216, _572), _557, fma(spvFMul(in.fs_in_attr1.z, _568), _556, spvFMul(as_type(_277), _570))); float _607 = fma(spvFMul(_215, _572), _557, fma(spvFMul(in.fs_in_attr1.y, _568), _556, spvFMul(as_type(_276), _570))); uint _609 = 24u + buf2_dword_off; float _615 = fma(spvFMul(_214, _572), _557, fma(spvFMul(in.fs_in_attr1.x, _568), _556, spvFMul(as_type(_275), _570))); uint _626 = 73u + buf0_dword_off; uint _630 = 74u + buf0_dword_off; uint _634 = 75u + buf0_dword_off; float _637 = rsqrt(fma(in.fs_in_attr6.x, in.fs_in_attr6.x, fma(in.fs_in_attr6.y, in.fs_in_attr6.y, spvFMul(in.fs_in_attr6.z, in.fs_in_attr6.z)))); float _638 = rsqrt(fma(_615, _615, fma(_607, _607, spvFMul(_587, _587)))); float _639 = spvFMul(in.fs_in_attr6.z, _637); float _640 = spvFMul(_587, _638); float _654 = spvFMul(in.fs_in_attr6.y, _637); float _655 = spvFMul(_607, _638); float _669 = spvFMul(in.fs_in_attr6.x, _637); float _670 = spvFMul(_615, _638); float _691 = spvFMul(fma(_670, _669, fma(_655, _654, spvFMul(_639, _640))), 2.0); uint _694 = uint(in.fs_in_attr0.w) * 13u; float _698 = fma(as_type(_484.x), _225, fma(as_type(_484.y), _226, fma(as_type(_484.z), _371, as_type(_484.w)))); float _700 = fma(as_type(_505.x), _225, fma(as_type(_505.y), _226, fma(as_type(_505.z), _371, as_type(_505.w)))); float _702 = fma(as_type(_526.x), _225, fma(as_type(_526.y), _226, fma(as_type(_526.z), _371, as_type(_526.w)))); float4 _707 = fs_img72.sample(fs_samp8, float2(fma(as_type(cbuf_32.data[4u + buf1_dword_off]), in.fs_in_attr3.x, as_type(cbuf_32.data[6u + buf1_dword_off])), fma(as_type(cbuf_32.data[5u + buf1_dword_off]), in.fs_in_attr3.y, as_type(cbuf_32.data[7u + buf1_dword_off])))); float _708 = _707.x; float _709 = _707.y; float _710 = _707.z; float _721 = 1.0 / _702; float _728 = spvFMul(0.00390625, spvFMul(13.0, spvFMul(as_type(cbuf_36.data[8u + buf2_dword_off]), fma(as_type(cbuf_36.data[_609]), spvFSub(fma(_256, _460, _465.x), _460), _460)))); float _730 = fma(-in.fs_in_attr6.x, _637, spvFMul(_670, _691)); float _732 = fma(-in.fs_in_attr6.y, _637, spvFMul(_655, _691)); float _734 = fma(-in.fs_in_attr6.z, _637, spvFMul(_640, _691)); float _741 = spvFMul(fma(as_type(_547.x), _225, fma(as_type(_547.y), _226, fma(as_type(_547.z), _371, as_type(_547.w)))), _721); float _770 = 1.0 / abs(1.0); float _786 = fast::min(6.0, spvFSub(6.5, spvFMul(fast::max(_728, _728), 0.5))); float _788 = fma(_732, _770, 1.5); float _789 = fma(_730, _770, 1.5); float4 _796 = fs_img64.sample(fs_samp4, float2(fma(in.fs_in_attr3.x, as_type(cbuf_32.data[0u + buf1_dword_off]), as_type(cbuf_32.data[2u + buf1_dword_off])), fma(in.fs_in_attr3.y, as_type(cbuf_32.data[1u + buf1_dword_off]), as_type(cbuf_32.data[3u + buf1_dword_off])))); uint _804 = ((0u + ((_694 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _817 = uint4(cbuf_40.data[_804 + 0u], cbuf_40.data[_804 + 1u], cbuf_40.data[_804 + 2u], cbuf_40.data[_804 + 3u]); uint _825 = ((0u + ((_694 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _838 = uint4(cbuf_40.data[_825 + 0u], cbuf_40.data[_825 + 1u], cbuf_40.data[_825 + 2u], cbuf_40.data[_825 + 3u]); uint _846 = ((0u + ((_694 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _859 = uint4(cbuf_40.data[_846 + 0u], cbuf_40.data[_846 + 1u], cbuf_40.data[_846 + 2u], cbuf_40.data[_846 + 3u]); float4 _875 = fs_img120.sample(fs_samp20, float2(_228, _230)); uint _880 = ((0u + ((_694 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _893 = uint4(cbuf_40.data[_880 + 0u], cbuf_40.data[_880 + 1u], cbuf_40.data[_880 + 2u], cbuf_40.data[_880 + 3u]); uint _894 = _893.x; uint _895 = _893.y; uint _896 = _893.z; uint _897 = _893.w; float4 _904 = fs_img104.sample(fs_samp20, float3(spvFSub(_789, 1.5), spvFSub(_788, 1.5), _734), level(_786)); float4 _912 = fs_img152.sample(fs_samp24, float2(_228, _230), level(_786)); uint _920 = ((0u + ((_694 + 12u) * 16u)) + buf3_off) >> 2u; float4 _936 = fs_img96.sample(fs_samp20, float3(spvFSub(_789, 1.5), spvFSub(_788, 1.5), _734), level(_786)); float _956 = spvFMul(fma(as_type(cbuf_56.data[40u + buf0_dword_off]), _225, fma(as_type(cbuf_56.data[41u + buf0_dword_off]), _226, fma(as_type(cbuf_56.data[42u + buf0_dword_off]), _371, as_type(cbuf_56.data[43u + buf0_dword_off])))), _406); uint _969 = 12u + buf2_dword_off; uint _972 = 0u + buf5_dword_off; uint _975 = 1u + buf5_dword_off; uint _978 = 2u + buf5_dword_off; uint _981 = 3u + buf5_dword_off; uint _984 = 4u + buf5_dword_off; uint _987 = 5u + buf5_dword_off; uint _990 = 6u + buf5_dword_off; uint _993 = 7u + buf5_dword_off; float _996 = spvFMul(fma(as_type(cbuf_56.data[36u + buf0_dword_off]), _225, fma(as_type(cbuf_56.data[37u + buf0_dword_off]), _226, fma(as_type(cbuf_56.data[38u + buf0_dword_off]), _371, as_type(cbuf_56.data[39u + buf0_dword_off])))), _406); bool _1018 = (_710 == 0.0) && (_709 == 0.0); float _1024 = fast::clamp(spvFAdd(fma(_730, as_type(_275), fma(_732, as_type(_276), spvFMul(as_type(_277), _734))), 1.0), 0.0, 1.0); float _1030 = (in.fs_in_attr2.x != 0.0) ? in.fs_in_attr2.x : 1.0; float _1061 = _1018 ? _708 : _710; float _1062 = _1018 ? _708 : _709; float _1063 = spvFMul(_467, _467); float _1082 = fast::clamp(spvFMul(sqrt(_796.x), as_type(cbuf_52.data[24u + buf4_dword_off])), 0.0, 1.0); float _1085 = fast::clamp(spvFMul(sqrt(_796.y), as_type(cbuf_52.data[25u + buf4_dword_off])), 0.0, 1.0); float _1088 = fast::clamp(spvFMul(sqrt(_796.z), as_type(cbuf_52.data[26u + buf4_dword_off])), 0.0, 1.0); float _1112 = spvFMul(as_type(cbuf_40.data[_920]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_56.data[72u + buf0_dword_off]), as_type(cbuf_56.data[_626])), -spvFMul(as_type(cbuf_56.data[_626]), sqrt(fma(_996, _996, fma(_956, _956, spvFMul(_407, _407)))))), 0.0, 1.0)); float _1114 = spvFMul(as_type(cbuf_44.data[_990]), _640); float _1115 = spvFMul(_1082, _1082); float _1116 = spvFMul(_1085, _1085); float _1117 = spvFMul(_1088, _1088); float _1122 = fma(fma(as_type(cbuf_36.data[_969]), _875.x, 1.0), _1030, -spvFMul(as_type(cbuf_36.data[_969]), _1030)); float _1145 = spvFSub(1.0, fma(float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(-_702, as_type(cbuf_56.data[_634]), _698), _721), spvFMul(fma(as_type(cbuf_56.data[_630]), _702, _700), _721)), _741, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(-_702, as_type(cbuf_56.data[_630]), _698), _721), spvFMul(fma(-_702, as_type(cbuf_56.data[_634]), _700), _721)), _741, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, fma(float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(_702, as_type(cbuf_56.data[_630]), _698), _721), spvFMul(fma(_702, as_type(cbuf_56.data[_634]), _700), _721)), _741, level(0.0)), 0.0, 0.0, 0.0).x, 0.25, spvFMul(0.25, float4(fs_img112.sample_compare(fs_samp28, float2(spvFMul(fma(_702, as_type(cbuf_56.data[_634]), _698), _721), spvFMul(fma(-_702, as_type(cbuf_56.data[_630]), _700), _721)), _741, level(0.0)), 0.0, 0.0, 0.0).x))))); float _1153 = spvFMul(as_type(cbuf_44.data[_978]), _640); float _1160 = fma(as_type(cbuf_36.data[_609]), spvFSub(fma(_256, _708, _1063), _708), _708); float _1162 = fma(as_type(cbuf_36.data[_609]), spvFSub(fma(_256, _1062, _1063), _1062), _1062); float _1164 = fma(as_type(cbuf_36.data[_609]), spvFSub(fma(_256, _1061, _1063), _1061), _1061); float _1177 = spvFMul(_1122, spvFMul(spvFMul(_1024, _1024), spvFSub(1.0, _912.w))); float _1180 = fma(-_1145, spvFMul(as_type(cbuf_56.data[76u + buf0_dword_off]), _1112), as_type(cbuf_40.data[_920])); float _1183 = fma(-_1145, spvFMul(as_type(cbuf_56.data[77u + buf0_dword_off]), _1112), as_type(cbuf_40.data[_920])); float _1186 = fma(-_1145, spvFMul(as_type(cbuf_56.data[78u + buf0_dword_off]), _1112), as_type(cbuf_40.data[_920])); float _1191 = fast::clamp(fma(as_type(cbuf_44.data[_984]), _670, fma(as_type(cbuf_44.data[_987]), _655, _1114)), 0.0, 1.0); float _1198 = fast::max(0.0, spvFAdd(as_type(_817.w), fma(_640, as_type(_817.z), fma(_670, as_type(_817.x), spvFMul(_655, as_type(_817.y)))))); float _1199 = fast::max(0.0, spvFAdd(as_type(_838.w), fma(_640, as_type(_838.z), fma(_670, as_type(_838.x), spvFMul(_655, as_type(_838.y)))))); float _1200 = fast::max(0.0, spvFAdd(as_type(_859.w), fma(_640, as_type(_859.z), fma(_670, as_type(_859.x), spvFMul(_655, as_type(_859.y)))))); float _1209 = fast::clamp(fma(as_type(cbuf_44.data[_972]), _670, fma(as_type(cbuf_44.data[_975]), _655, _1153)), 0.0, 1.0); uint _1258 = 64u + buf5_dword_off; uint _1262 = 65u + buf5_dword_off; float _1265 = spvFMul(_796.w, in.fs_in_attr2.w); float _1279 = spvFMul(as_type(cbuf_40.data[_920]), fma(as_type(_897), spvFAdd(-1.0, _1180), 1.0)); float _1281 = spvFMul(as_type(cbuf_40.data[_920]), fma(as_type(_897), spvFAdd(-1.0, _1183), 1.0)); float _1283 = spvFMul(as_type(cbuf_40.data[_920]), fma(as_type(_897), spvFAdd(-1.0, _1186), 1.0)); float _1284 = fma(spvFMul(as_type(cbuf_44.data[16u + buf5_dword_off]), _1180), fma(-_1160, _1209, _1209), spvFMul(as_type(cbuf_44.data[20u + buf5_dword_off]), fma(-_1160, _1191, _1191))); float _1286 = fma(spvFMul(as_type(cbuf_44.data[17u + buf5_dword_off]), _1183), fma(-_1162, _1209, _1209), spvFMul(as_type(cbuf_44.data[21u + buf5_dword_off]), fma(-_1162, _1191, _1191))); float _1288 = fma(spvFMul(as_type(cbuf_44.data[18u + buf5_dword_off]), _1186), fma(-_1164, _1209, _1209), spvFMul(as_type(cbuf_44.data[22u + buf5_dword_off]), fma(-_1164, _1191, _1191))); uint _1333; uint _1334; uint _1335; if (cbuf_44.data[_1258] > 0u) { float _1315 = fma(0.5, fma(as_type(cbuf_44.data[8u + buf5_dword_off]), _670, fma(as_type(cbuf_44.data[9u + buf5_dword_off]), _655, spvFMul(as_type(cbuf_44.data[10u + buf5_dword_off]), _640))), 0.5); float _1317 = fast::clamp(spvFMul(_1315, _1315), 0.0, 1.0); _1333 = as_type(fma(as_type(cbuf_44.data[26u + buf5_dword_off]), fma(-_1164, _1317, _1317), _1288)); _1334 = as_type(fma(as_type(cbuf_44.data[25u + buf5_dword_off]), fma(-_1162, _1317, _1317), _1286)); _1335 = as_type(fma(as_type(cbuf_44.data[24u + buf5_dword_off]), fma(-_1160, _1317, _1317), _1284)); } else { _1333 = as_type(_1288); _1334 = as_type(_1286); _1335 = as_type(_1284); } uint _1382; uint _1383; uint _1384; if (cbuf_44.data[_1262] > 0u) { float _1361 = fma(0.5, fma(as_type(cbuf_44.data[12u + buf5_dword_off]), _670, fma(as_type(cbuf_44.data[13u + buf5_dword_off]), _655, spvFMul(as_type(cbuf_44.data[14u + buf5_dword_off]), _640))), 0.5); float _1363 = fast::clamp(spvFMul(_1361, _1361), 0.0, 1.0); _1382 = as_type(fma(as_type(cbuf_44.data[30u + buf5_dword_off]), fma(-_1164, _1363, _1363), as_type(_1333))); _1383 = as_type(fma(as_type(cbuf_44.data[29u + buf5_dword_off]), fma(-_1162, _1363, _1363), as_type(_1334))); _1384 = as_type(fma(as_type(cbuf_44.data[28u + buf5_dword_off]), fma(-_1160, _1363, _1363), as_type(_1335))); } else { _1382 = _1333; _1383 = _1334; _1384 = _1335; } float _1386 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_44.data[_990])); float _1388 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_44.data[_978])); float _1390 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_44.data[_987])); float _1393 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_44.data[_975])); float _1396 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_44.data[_984])); float _1399 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_44.data[_972])); float _1403 = rsqrt(fma(_1396, _1396, fma(_1390, _1390, spvFMul(_1386, _1386)))); float _1404 = rsqrt(fma(_1399, _1399, fma(_1393, _1393, spvFMul(_1388, _1388)))); float _1405 = spvFMul(_1386, _1403); float _1406 = exp2(_728); float _1407 = spvFMul(_1388, _1404); float _1408 = spvFMul(_1390, _1403); float _1431 = spvFMul(_1393, _1404); float _1432 = spvFMul(_1396, _1403); float _1439 = spvFMul(_1399, _1404); float _1463 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_993]), _1406), 1.0 / fma(_1406, 0.01000213623046875, as_type(cbuf_44.data[_993])))); float _1469 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_981]), _1406), 1.0 / fma(_1406, 0.01000213623046875, as_type(cbuf_44.data[_981])))); float _1476 = fma(_1463, 0.125, 0.25); float _1488 = exp2(spvFMul(_1463, log2(fast::clamp(fma(_1432, _670, fma(_1408, _655, spvFMul(_640, _1405))), 0.0, 1.0)))); float _1490 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_669, _1432, fma(_654, _1408, spvFMul(_639, _1405))), 0.0, 1.0))))); float _1491 = fma(0.125, _1469, 0.25); float _1500 = exp2(spvFMul(_1469, log2(fast::clamp(fma(_1439, _670, fma(_1431, _655, spvFMul(_640, _1407))), 0.0, 1.0)))); float _1501 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_669, _1439, fma(_654, _1431, spvFMul(_639, _1407))), 0.0, 1.0))))); float _1507 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_984]), _670, fma(as_type(cbuf_44.data[_987]), _655, _1114)), 16.0), 0.0, 1.0); float _1524 = fast::clamp(spvFMul(fma(as_type(cbuf_44.data[_972]), _670, fma(as_type(cbuf_44.data[_975]), _655, _1153)), 16.0), 0.0, 1.0); float _1543 = fma(spvFMul(_1524, spvFMul(_1500, spvFMul(spvFMul(as_type(cbuf_44.data[32u + buf5_dword_off]), _1180), _1491))), fma(-_1160, _1501, spvFAdd(_1160, _1501)), spvFMul(fma(-_1160, _1490, spvFAdd(_1160, _1490)), spvFMul(_1507, spvFMul(_1488, spvFMul(as_type(cbuf_44.data[36u + buf5_dword_off]), _1476))))); float _1545 = fma(spvFMul(_1524, spvFMul(_1500, spvFMul(spvFMul(as_type(cbuf_44.data[33u + buf5_dword_off]), _1183), _1491))), fma(-_1162, _1501, spvFAdd(_1162, _1501)), spvFMul(fma(-_1162, _1490, spvFAdd(_1162, _1490)), spvFMul(_1507, spvFMul(_1488, spvFMul(as_type(cbuf_44.data[37u + buf5_dword_off]), _1476))))); float _1547 = fma(spvFMul(_1524, spvFMul(_1500, spvFMul(spvFMul(as_type(cbuf_44.data[34u + buf5_dword_off]), _1186), _1491))), fma(-_1164, _1501, spvFAdd(_1164, _1501)), spvFMul(fma(-_1164, _1490, spvFAdd(_1164, _1490)), spvFMul(_1507, spvFMul(_1488, spvFMul(as_type(cbuf_44.data[38u + buf5_dword_off]), _1476))))); uint _1637; uint _1638; uint _1639; if (cbuf_44.data[_1258] > 0u) { uint _1565 = 11u + buf5_dword_off; float _1578 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_44.data[8u + buf5_dword_off])); float _1580 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_44.data[9u + buf5_dword_off])); float _1582 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_44.data[10u + buf5_dword_off])); float _1586 = rsqrt(fma(_1578, _1578, fma(_1580, _1580, spvFMul(_1582, _1582)))); float _1587 = spvFMul(_1578, _1586); float _1588 = spvFMul(_1580, _1586); float _1589 = spvFMul(_1582, _1586); float _1600 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1565]), _1406), 1.0 / fma(_1406, 0.01000213623046875, as_type(cbuf_44.data[_1565])))); float _1603 = exp2(spvFMul(_1600, log2(fast::clamp(fma(_1587, _670, fma(_1588, _655, spvFMul(_640, _1589))), 0.0, 1.0)))); float _1611 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_669, _1587, fma(_654, _1588, spvFMul(_639, _1589))), 0.0, 1.0))))); float _1621 = fma(0.125, _1600, 0.25); _1637 = as_type(fma(spvFMul(_1603, spvFMul(as_type(cbuf_44.data[42u + buf5_dword_off]), _1621)), fma(-_1164, _1611, spvFAdd(_1164, _1611)), _1547)); _1638 = as_type(fma(spvFMul(_1603, spvFMul(as_type(cbuf_44.data[41u + buf5_dword_off]), _1621)), fma(-_1162, _1611, spvFAdd(_1162, _1611)), _1545)); _1639 = as_type(fma(spvFMul(_1603, spvFMul(as_type(cbuf_44.data[40u + buf5_dword_off]), _1621)), fma(-_1160, _1611, spvFAdd(_1160, _1611)), _1543)); } else { _1637 = as_type(_1547); _1638 = as_type(_1545); _1639 = as_type(_1543); } uint _1725; uint _1726; uint _1727; if (cbuf_44.data[_1262] > 0u) { uint _1650 = 15u + buf5_dword_off; float _1663 = fma(in.fs_in_attr6.x, _637, as_type(cbuf_44.data[12u + buf5_dword_off])); float _1665 = fma(in.fs_in_attr6.y, _637, as_type(cbuf_44.data[13u + buf5_dword_off])); float _1667 = fma(in.fs_in_attr6.z, _637, as_type(cbuf_44.data[14u + buf5_dword_off])); float _1671 = rsqrt(fma(_1663, _1663, fma(_1665, _1665, spvFMul(_1667, _1667)))); float _1672 = spvFMul(_1663, _1671); float _1673 = spvFMul(_1665, _1671); float _1674 = spvFMul(_1667, _1671); float _1685 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_44.data[_1650]), _1406), 1.0 / fma(_1406, 0.01000213623046875, as_type(cbuf_44.data[_1650])))); float _1688 = exp2(spvFMul(_1685, log2(fast::clamp(fma(_1672, _670, fma(_1673, _655, spvFMul(_640, _1674))), 0.0, 1.0)))); float _1696 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fma(_669, _1672, fma(_654, _1673, spvFMul(_639, _1674))), 0.0, 1.0))))); float _1706 = fma(0.125, _1685, 0.25); _1725 = as_type(fma(spvFMul(_1688, spvFMul(as_type(cbuf_44.data[46u + buf5_dword_off]), _1706)), fma(-_1164, _1696, spvFAdd(_1164, _1696)), as_type(_1637))); _1726 = as_type(fma(spvFMul(_1688, spvFMul(as_type(cbuf_44.data[44u + buf5_dword_off]), _1706)), fma(-_1160, _1696, spvFAdd(_1160, _1696)), as_type(_1639))); _1727 = as_type(fma(spvFMul(_1688, spvFMul(as_type(cbuf_44.data[45u + buf5_dword_off]), _1706)), fma(-_1162, _1696, spvFAdd(_1162, _1696)), as_type(_1638))); } else { _1725 = _1637; _1726 = _1639; _1727 = _1638; } float _1730 = fma(spvFMul(_1162, fma(_912.y, _1122, spvFMul(fma(as_type(_894), fma(-as_type(_895), _936.y, spvFMul(as_type(_896), _904.y)), spvFMul(as_type(_895), _936.y)), _1177))), _1281, as_type(_1727)); float _1735 = fma(spvFMul(_1164, fma(_912.z, _1122, spvFMul(fma(as_type(_894), fma(-as_type(_895), _936.z, spvFMul(as_type(_896), _904.z)), spvFMul(as_type(_895), _936.z)), _1177))), _1283, as_type(_1725)); uint _1740 = ((0u + ((_694 + 7u) * 16u)) + buf3_off) >> 2u; uint4 _1753 = uint4(cbuf_40.data[_1740 + 0u], cbuf_40.data[_1740 + 1u], cbuf_40.data[_1740 + 2u], cbuf_40.data[_1740 + 3u]); uint _1754 = _1753.x; uint _1755 = _1753.y; uint _1756 = _1753.z; float _1769 = spvFMul(_1265, as_type(_1753.w)); bool _1771 = (as_type(cbuf_36.data[20u + buf2_dword_off]) > fma(as_type(cbuf_36.data[21u + buf2_dword_off]), _278, _1265)) || (_1769 == 0.0); uint _1930; uint _1931; uint _1932; if (!_1771) { uint _1782 = 12u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u); uint _1785 = 8u + buf7_dword_off; uint _1791 = 10u + buf7_dword_off; float _1805 = fma(spvFMul(as_type(cbuf_36.data[1u + buf2_dword_off]), fma(as_type(cbuf_36.data[_609]), fma(-_1085, _1085, fma(_256, _1116, _252.y)), _1116)), fma(spvFMul(_1122, fma(-_1162, _1199, _1199)), _1281, as_type(_1383)), spvFMul(_1730, spvFMul(as_type(cbuf_36.data[5u + buf2_dword_off]), as_type(cbuf_60.data[_1782])))); float _1819 = fma(spvFMul(as_type(cbuf_36.data[0u + buf2_dword_off]), fma(as_type(cbuf_36.data[_609]), fma(-_1082, _1082, fma(_256, _1115, _252.x)), _1115)), fma(spvFMul(_1122, fma(-_1160, _1198, _1198)), _1279, as_type(_1384)), spvFMul(fma(spvFMul(_1160, fma(_912.x, _1122, spvFMul(fma(as_type(_894), fma(-as_type(_895), _936.x, spvFMul(as_type(_896), _904.x)), spvFMul(as_type(_895), _936.x)), _1177))), _1279, as_type(_1726)), spvFMul(as_type(cbuf_36.data[4u + buf2_dword_off]), as_type(cbuf_60.data[_1782])))); float _1821 = spvFMul(_1805, as_type(_1755)); uint _1828 = 14u + buf7_dword_off; float _1834 = fma(spvFMul(as_type(cbuf_36.data[2u + buf2_dword_off]), fma(as_type(cbuf_36.data[_609]), fma(-_1088, _1088, fma(_256, _1117, _252.z)), _1117)), fma(spvFMul(_1122, fma(-_1164, _1200, _1200)), _1283, as_type(_1382)), spvFMul(_1735, spvFMul(as_type(cbuf_36.data[6u + buf2_dword_off]), as_type(cbuf_60.data[_1782])))); float _1836 = spvFMul(_1819, as_type(_1754)); float _1843 = spvFMul(_1834, as_type(_1756)); float _1871 = spvFAdd(-1.0, fma(_1843, 0.11448000371456146240234375, fma(_1836, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _1821)))); float _1875 = fma(as_type(cbuf_48.data[7u + buf7_dword_off]), _1871, 1.0); float _1894 = fast::clamp(spvFAdd(as_type(cbuf_48.data[_1785]), spvFMul(as_type(cbuf_48.data[_1785]), -exp2(-fma(as_type(cbuf_48.data[_1791]), sqrt(fma(-in.fs_in_attr6.x, -in.fs_in_attr6.x, spvFMul(-in.fs_in_attr6.z, -in.fs_in_attr6.z))), -spvFMul(as_type(cbuf_48.data[9u + buf7_dword_off]), as_type(cbuf_48.data[_1791])))))), 0.0, 1.0); float _1908 = fma(as_type(cbuf_48.data[19u + buf7_dword_off]), _1871, 1.0); float _1909 = fma(_1894, fma(-_1819, as_type(_1754), spvFMul(as_type(cbuf_48.data[4u + buf7_dword_off]), _1875)), _1836); float _1910 = fma(_1894, fma(-_1805, as_type(_1755), spvFMul(as_type(cbuf_48.data[5u + buf7_dword_off]), _1875)), _1821); float _1911 = fma(_1894, fma(-_1834, as_type(_1756), spvFMul(as_type(cbuf_48.data[6u + buf7_dword_off]), _1875)), _1843); float _1914 = fast::clamp(spvFMul(as_type(cbuf_48.data[12u + buf7_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_48.data[_1828]), spvFSub(as_type(cbuf_48.data[15u + buf7_dword_off]), in.fs_in_attr6.y)), -spvFMul(as_type(cbuf_48.data[13u + buf7_dword_off]), as_type(cbuf_48.data[_1828]))), 0.0, 1.0)), 0.0, 1.0); _1930 = as_type(fma(_1914, fma(as_type(cbuf_48.data[18u + buf7_dword_off]), _1908, -_1911), _1911)); _1931 = as_type(fma(_1914, fma(as_type(cbuf_48.data[17u + buf7_dword_off]), _1908, -_1910), _1910)); _1932 = as_type(fma(_1914, fma(as_type(cbuf_48.data[16u + buf7_dword_off]), _1908, -_1909), _1909)); } else { _1930 = as_type(_278); _1931 = as_type(_1730); _1932 = as_type(_1735); } if (_1771) { discard_fragment(); } out.frag_color0.x = as_type(_1932); out.frag_color0.y = as_type(_1931); out.frag_color0.z = as_type(_1930); out.frag_color0.w = _1769; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Loader] emulator.cpp:UpdatePlayTime:401: Playing time for CUSA03173: 21:33:17 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_xm21.fsb [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x6faab5f9 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; float4 fs_in_attr7 [[user(locn7)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _88 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y), level(0.0)); float4 _101 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _122 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y), level(0.0)); float4 _143 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y), level(0.0)); float4 _164 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr4.x, in.fs_in_attr4.y), level(0.0)); float4 _185 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr5.x, in.fs_in_attr5.y), level(0.0)); float4 _206 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr6.x, in.fs_in_attr6.y), level(0.0)); float4 _227 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr7.x, in.fs_in_attr7.y), level(0.0)); float4 _248 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[200u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[201u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _269 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[204u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[205u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _290 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[208u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[209u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _311 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[212u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[213u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _332 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[216u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[217u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _345 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[220u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[221u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _358 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[224u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[225u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _371 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[228u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[229u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _384 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[232u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[233u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _397 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[236u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[237u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float4 _406 = fs_img4.sample(fs_samp12, float2(spvFAdd(as_type(cbuf_16.data[240u + buf0_dword_off]), in.fs_in_attr0.x), spvFAdd(as_type(cbuf_16.data[241u + buf0_dword_off]), in.fs_in_attr0.y)), level(0.0)); float _749 = fma(as_type(cbuf_16.data[656u + buf0_dword_off]), _290.x, fma(as_type(cbuf_16.data[652u + buf0_dword_off]), _269.x, fma(as_type(cbuf_16.data[648u + buf0_dword_off]), _248.x, fma(as_type(cbuf_16.data[644u + buf0_dword_off]), _227.x, fma(as_type(cbuf_16.data[640u + buf0_dword_off]), _206.x, fma(as_type(cbuf_16.data[636u + buf0_dword_off]), _185.x, fma(as_type(cbuf_16.data[632u + buf0_dword_off]), _164.x, fma(as_type(cbuf_16.data[628u + buf0_dword_off]), _143.x, fma(as_type(cbuf_16.data[624u + buf0_dword_off]), _122.x, fma(as_type(cbuf_16.data[616u + buf0_dword_off]), _101.x, spvFMul(as_type(cbuf_16.data[620u + buf0_dword_off]), _88.x))))))))))); float _751 = fma(as_type(cbuf_16.data[657u + buf0_dword_off]), _290.y, fma(as_type(cbuf_16.data[653u + buf0_dword_off]), _269.y, fma(as_type(cbuf_16.data[649u + buf0_dword_off]), _248.y, fma(as_type(cbuf_16.data[645u + buf0_dword_off]), _227.y, fma(as_type(cbuf_16.data[641u + buf0_dword_off]), _206.y, fma(as_type(cbuf_16.data[637u + buf0_dword_off]), _185.y, fma(as_type(cbuf_16.data[633u + buf0_dword_off]), _164.y, fma(as_type(cbuf_16.data[629u + buf0_dword_off]), _143.y, fma(as_type(cbuf_16.data[625u + buf0_dword_off]), _122.y, fma(as_type(cbuf_16.data[617u + buf0_dword_off]), _101.y, spvFMul(as_type(cbuf_16.data[621u + buf0_dword_off]), _88.y))))))))))); float _753 = fma(as_type(cbuf_16.data[658u + buf0_dword_off]), _290.z, fma(as_type(cbuf_16.data[654u + buf0_dword_off]), _269.z, fma(as_type(cbuf_16.data[650u + buf0_dword_off]), _248.z, fma(as_type(cbuf_16.data[646u + buf0_dword_off]), _227.z, fma(as_type(cbuf_16.data[642u + buf0_dword_off]), _206.z, fma(as_type(cbuf_16.data[638u + buf0_dword_off]), _185.z, fma(as_type(cbuf_16.data[634u + buf0_dword_off]), _164.z, fma(as_type(cbuf_16.data[630u + buf0_dword_off]), _143.z, fma(as_type(cbuf_16.data[626u + buf0_dword_off]), _122.z, fma(as_type(cbuf_16.data[618u + buf0_dword_off]), _101.z, spvFMul(as_type(cbuf_16.data[622u + buf0_dword_off]), _88.z))))))))))); float _755 = fma(as_type(cbuf_16.data[659u + buf0_dword_off]), _290.w, fma(as_type(cbuf_16.data[655u + buf0_dword_off]), _269.w, fma(as_type(cbuf_16.data[651u + buf0_dword_off]), _248.w, fma(as_type(cbuf_16.data[647u + buf0_dword_off]), _227.w, fma(as_type(cbuf_16.data[643u + buf0_dword_off]), _206.w, fma(as_type(cbuf_16.data[639u + buf0_dword_off]), _185.w, fma(as_type(cbuf_16.data[635u + buf0_dword_off]), _164.w, fma(as_type(cbuf_16.data[631u + buf0_dword_off]), _143.w, fma(as_type(cbuf_16.data[627u + buf0_dword_off]), _122.w, fma(as_type(cbuf_16.data[619u + buf0_dword_off]), _101.w, spvFMul(as_type(cbuf_16.data[623u + buf0_dword_off]), _88.w))))))))))); out.frag_color0.x = fma(as_type(cbuf_16.data[688u + buf0_dword_off]), _406.x, fma(as_type(cbuf_16.data[684u + buf0_dword_off]), _397.x, fma(as_type(cbuf_16.data[680u + buf0_dword_off]), _384.x, fma(as_type(cbuf_16.data[676u + buf0_dword_off]), _371.x, fma(as_type(cbuf_16.data[672u + buf0_dword_off]), _358.x, fma(as_type(cbuf_16.data[668u + buf0_dword_off]), _345.x, fma(as_type(cbuf_16.data[664u + buf0_dword_off]), _332.x, fma(as_type(cbuf_16.data[660u + buf0_dword_off]), _311.x, _749)))))))); out.frag_color0.y = fma(as_type(cbuf_16.data[689u + buf0_dword_off]), _406.y, fma(as_type(cbuf_16.data[685u + buf0_dword_off]), _397.y, fma(as_type(cbuf_16.data[681u + buf0_dword_off]), _384.y, fma(as_type(cbuf_16.data[677u + buf0_dword_off]), _371.y, fma(as_type(cbuf_16.data[673u + buf0_dword_off]), _358.y, fma(as_type(cbuf_16.data[669u + buf0_dword_off]), _345.y, fma(as_type(cbuf_16.data[665u + buf0_dword_off]), _332.y, fma(as_type(cbuf_16.data[661u + buf0_dword_off]), _311.y, _751)))))))); out.frag_color0.z = fma(as_type(cbuf_16.data[690u + buf0_dword_off]), _406.z, fma(as_type(cbuf_16.data[686u + buf0_dword_off]), _397.z, fma(as_type(cbuf_16.data[682u + buf0_dword_off]), _384.z, fma(as_type(cbuf_16.data[678u + buf0_dword_off]), _371.z, fma(as_type(cbuf_16.data[674u + buf0_dword_off]), _358.z, fma(as_type(cbuf_16.data[670u + buf0_dword_off]), _345.z, fma(as_type(cbuf_16.data[666u + buf0_dword_off]), _332.z, fma(as_type(cbuf_16.data[662u + buf0_dword_off]), _311.z, _753)))))))); out.frag_color0.w = fma(as_type(cbuf_16.data[691u + buf0_dword_off]), _406.w, fma(as_type(cbuf_16.data[687u + buf0_dword_off]), _397.w, fma(as_type(cbuf_16.data[683u + buf0_dword_off]), _384.w, fma(as_type(cbuf_16.data[679u + buf0_dword_off]), _371.w, fma(as_type(cbuf_16.data[675u + buf0_dword_off]), _358.w, fma(as_type(cbuf_16.data[671u + buf0_dword_off]), _345.w, fma(as_type(cbuf_16.data[667u + buf0_dword_off]), _332.w, fma(as_type(cbuf_16.data[663u + buf0_dword_off]), _311.w, _755)))))))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Tty] logger.cpp:log_flush:60: [stdout] == Stall during rendering at flush 930 [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Core] stubs.cpp:CommonStub:42: Stub: scePthreadSetaffinity (nid: bt3CTBKmGyI) called, returning zero to 0x902637473 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/entryfilelist/e002902950_02.entryfilelist flags = 0x0 mode = 365 [Lib.PlayGo] playgo.cpp:scePlayGoSetInstallSpeed:316: called [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/entryfilelist/e002902950_02.entryfilelist, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0000.tpfbdt.patch [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0000.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0001.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0002.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/m21_0003.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21/gi_env_m21.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbdt [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/h21_00_00_00.hkxbdt.patch [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m21_00_00_00/l21_00_00_00.hkxbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/script/aicommon.luabnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/script/aicommon.luabnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/script/aicommon.luabnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/common.emedf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/common.emedf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/common.emeld.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/common.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/common.emevd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/common.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/common.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/common.emedf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/common.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbhd.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbhd.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbdt.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbdt.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0000.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0001.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0001.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0001.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0001.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0002.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0002.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0002.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0002.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0003.tpfbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0003.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_0003.tpfbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_0003.tpfbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/gi_env_m29.tpfbhd flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/m29/gi_env_m29.tpfbhd, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29a.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29a.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29b.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29b.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29c.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29c.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29d.ffxbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29d.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_0000.tpfbhd.patch [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_0000.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_0001.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_0002.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_0003.tpfbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m29.emeld.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m29.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m29.emevd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m29.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_9999.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_9999.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_cgrading.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_cgrading.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/m29_envmap.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29/m29_envmap.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29/gi_env_m29.tpfbdt flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/m29/gi_env_m29.tpfbdt, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_m29.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_m29.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_m29.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_m29.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_m29.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_m29.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_sm29.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_sm29.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_sm29.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_sm29.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_xm29.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm29.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_xm29.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm29.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29a.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29b.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_m29.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29d.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m29.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m29.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_9999.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_cgrading.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29/m29_envmap.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sfx/frpg_sfxbnd_m29c.ffxbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_m29.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_m29.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_sm29.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_sm29.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_xm29.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_xm29.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/param/drawparam/m29_00_0000.gparambnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/param/drawparam/m29_00_0000.gparambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/mapstudio/m29_10_90_00/m29_10_90_01.msb.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/mapstudio/m29_10_90_00/m29_10_90_01.msb.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/param/drawparam/m29_00_0000.gparambnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_0000.btab.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_0000.btab.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_0000.btl.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_0000.btl.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_0000.btpb.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_0000.btpb.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_10_90_00/m29_10_90_00.nva.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_10_90_00/m29_10_90_00.nva.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00.nvmhktbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00.nvmhktbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/breakobj/m29_10_90_01.breakobj.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/breakobj/m29_10_90_01.breakobj.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/script/talk/m29_00_00_00.talkesdbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/script/talk/m29_00_00_00.talkesdbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/script/m29_00_00_00.luabnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/script/m29_00_00_00.luabnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/onav/m29_00_00_00.onav.dcx flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/map/onav/m29_00_00_00.onav.dcx, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbhd.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbhd.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbdt.patch flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbdt.patch [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/l29_00_00_00.hkxbhd flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/l29_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/l29_00_00_00.hkxbdt flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/l29_00_00_00.hkxbdt [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m29_10_90_00/m29_10_90_00.emeld.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m29_10_90_00/m29_10_90_00.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/event/m29_10_90_00/m29_10_90_00.emevd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/event/m29_10_90_00/m29_10_90_00.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/mapstudio/m29_10_90_00/m29_10_90_01.msb.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_10_90_00/m29_10_90_00.nva.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/breakobj/m29_10_90_01.breakobj.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/script/talk/m29_00_00_00.talkesdbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/script/m29_00_00_00.luabnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00.nvmhktbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbhd.patch [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/h29_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/l29_00_00_00.hkxbhd [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m29_10_90_00/m29_10_90_00.emeld.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/event/m29_10_90_00/m29_10_90_00.emevd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_f_2200.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_f_2200.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_f_4000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_f_4000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_f_4000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hr_a_0109.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hr_a_0109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_2500.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_2500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_0800.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_0800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1800.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1030.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1030.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_2001.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_2001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_7002.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_7002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_3000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_3000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_f_2200.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_5000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_5000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_6000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_6000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hd_m_4300_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hd_m_4300_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/bd_m_4300_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/bd_m_4300_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/am_m_4300_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/am_m_4300_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/lg_m_4300_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/lg_m_4300_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/hr_a_0000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/hr_a_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1800_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1800_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/wp_a_1031_l.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/wp_a_1031_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_2000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_2000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/parts/fg_a_7000.partsbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/parts/fg_a_7000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000500.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000500.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000501.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000501.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_f_4000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hr_a_0109.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_2500.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_0800.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000510.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000510.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000515.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000515.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002000.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290000.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290010.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290020.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290250.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290250.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290260.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290260.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290270.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290270.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290280.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290280.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290350.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290350.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290370.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290370.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290470.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290470.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o290500.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o290500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_2001.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_7002.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_3000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_5000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_6000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hd_m_4300_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1030.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/am_m_4300_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002015.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002015.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002020.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/lg_m_4300_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/hr_a_0000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1800_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002030.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005400.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005400.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005410.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005410.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005411.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005411.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005420.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005420.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005440.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005440.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008000.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008001.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008001.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008500.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008500.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/wp_a_1031_l.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_2000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/fg_a_7000.partsbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/parts/bd_m_4300_l.partsbnd.dcx [Lib.Ajm] ajm.cpp:sceAjmBatchCancel:42: called context_id = 1 batch_id = 5 [Lib.Ajm] ajm.cpp:sceAjmInstanceDestroy:166: called context = 1, instance = 38 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_pscom.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000500.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000510.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000515.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000501.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290250.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290260.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290270.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000000.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000001.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000001.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000002.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000010.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000015.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000015.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000020.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000030.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000100.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000101.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290350.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290280.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290370.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290470.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002015.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o290500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005410.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005411.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005420.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005440.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005400.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008500.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_008001.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000110.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000112.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000112.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000114.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000114.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000015.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000020.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000030.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000001.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000112.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000114.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000115.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000115.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000120.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1050.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1050.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1050.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1050.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1050.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1050.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1100.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1100.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1100.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1100.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1100.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1100.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1150.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1150.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1150.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1150.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1150.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1150.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1180.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1180.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o291000.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o291000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o291050.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o291050.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o291100.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o291100.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o291110.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o291110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o291210.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o291210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o291910.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o291910.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o291920.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o291920.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292000.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292110.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292300.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292500.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1050.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1050.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1050.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1100.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1100.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1100.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1150.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1150.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1150.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1180.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o291000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o291050.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o291100.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000115.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1180.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1180.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c1180.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c1180.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2020.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2020.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2020.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2020.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2020.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2020.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2080.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2080.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2080.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2080.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2080.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2080.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o291210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o291110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1180.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c1180.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o291920.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2020.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o291910.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2020.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2020.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2080.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2080.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2080.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2130.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2130.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2130.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2130.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2130.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2130.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2530.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2530.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2530.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2530.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2530.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c2530.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2531.fev flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/sound/sprj_c2531.fev, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2531.fsb flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/sound/sprj_c2531.fsb, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c2531.itl flags = 0x0 mode = 365 [Common.Filesystem] io_file.cpp:Open:197: Failed to open the file at path=/Applications/Games/Emulators/Playstation 4/PS4 Games/CUSA03173/dvdroot_ps4/sound/sprj_c2531.itl, error_message=No such file or directory [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3010.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3010.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3010.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3010.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3010.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3010.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3040.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3040.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3040.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3040.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3040.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3040.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3130.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3130.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292510.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292800.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292800.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292810.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292810.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2130.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2130.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2130.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2530.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2530.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c2530.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3010.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3010.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3010.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3040.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3040.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3040.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3130.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292800.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292810.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3130.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3130.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c3130.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c3130.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c5010.fev flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c5010.fev [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c5010.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c5010.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_c5010.itl flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_c5010.itl [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000130.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000131.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000131.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000150.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000151.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000151.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292820.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o292830.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o292830.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293500.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293700.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293720.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293720.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293730.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293730.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293750.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293750.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293760.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293760.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3130.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c3130.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c5010.fev [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c5010.fsb [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/sound/sprj_c5010.itl [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000131.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000152.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000152.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000180.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000180.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000200.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000201.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000201.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000202.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000202.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000203.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000203.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000205.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000205.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000210.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000220.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000220.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000225.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000225.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000230.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000230.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000235.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000235.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000240.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000240.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000250.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000250.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000300.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000300.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293780.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293780.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293800.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293800.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293810.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293810.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000151.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000301.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000301.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000302.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000302.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000310.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000310.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000320.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000320.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000330.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000330.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000335.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000335.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000340.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000340.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o292830.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293720.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293750.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293730.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000152.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000180.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293760.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000201.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000202.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000345.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000345.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000600.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000600.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293820.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o293900.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o293900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294000.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294010.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000205.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000220.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000225.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000230.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000235.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000240.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000250.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000203.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293780.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293800.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293810.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000300.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000601.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000601.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000602.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000602.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000610.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000610.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000615.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000615.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000620.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000620.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294020.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294210.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294220.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294220.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294230.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294230.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000301.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000310.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000320.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000302.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000335.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000330.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000340.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000345.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000600.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o293900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000602.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000610.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000615.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000620.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000625.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000625.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000630.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000630.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000800.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000800.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000802.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000802.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000805.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000805.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000806.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000806.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000810.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000810.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000820.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000820.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000830.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000830.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000835.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000835.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294300.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294310.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294310.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294320.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294320.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000601.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294220.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000625.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294230.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000630.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000840.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000840.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000845.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000845.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000850.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000850.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001100.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001101.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001102.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001102.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001110.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001111.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001111.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001112.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001112.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294400.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294400.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294500.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294510.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000802.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000800.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000806.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000810.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000820.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000830.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000835.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294310.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294320.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000805.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000845.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000840.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001115.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001115.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001116.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001116.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001120.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001121.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001121.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001122.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001122.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001127.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001127.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001130.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294600.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294600.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294620.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294620.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294630.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294630.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294640.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294640.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294700.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294710.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294710.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_000850.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001111.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001112.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001102.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294400.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001115.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001220.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001220.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001200.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001201.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001201.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001203.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001203.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001204.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001204.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001205.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001205.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001210.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001215.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001215.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001221.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001221.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001222.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001222.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294800.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294800.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294810.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294810.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294820.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001116.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001121.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001127.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001122.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294600.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294620.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294630.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294640.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001220.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294710.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001201.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001230.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001230.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001800.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001800.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001801.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001801.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001802.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001802.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001803.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001803.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001804.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001804.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001805.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001805.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294830.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294830.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294840.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294840.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294850.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294850.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001203.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001205.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001215.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001221.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001222.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001204.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294800.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294810.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001230.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001806.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001806.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001807.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001807.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001808.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001808.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001810.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001810.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001815.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001815.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001820.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001820.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001825.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001825.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001830.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001830.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001835.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001835.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001840.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001840.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294950.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294950.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294970.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294970.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o294980.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o294980.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295010.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295020.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295030.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295030.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001801.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001802.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001800.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001860.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001860.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001880.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001880.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001881.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001881.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001885.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001885.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001890.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001890.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001902.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001902.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001901.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001901.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295050.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295050.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295060.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295060.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295110.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001803.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001804.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294830.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294840.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294850.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001805.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001807.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001808.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001810.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001815.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001820.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001825.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001830.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001835.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001806.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294950.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001840.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294970.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295030.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o294980.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001900.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001900.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001893.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001893.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001892.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001892.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001904.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001904.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001903.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001903.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001891.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001891.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001925.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001925.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295120.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295120.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295180.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295180.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295190.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295190.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001920.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001920.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001910.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001910.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001906.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001906.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001905.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001905.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002010.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001965.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001965.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001960.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001960.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001950.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001950.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001945.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001945.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001940.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001940.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295230.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295230.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295340.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295340.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295350.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295350.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295360.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295360.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295400.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295400.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001860.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001880.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001885.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001890.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001881.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001901.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295050.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295060.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001902.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001893.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001930.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001930.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001935.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001935.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001892.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001900.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001904.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001891.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002067.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002067.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002066.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002066.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002065.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002065.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002060.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002060.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002025.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002025.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295440.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295440.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295460.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295460.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295540.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295540.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002069.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002069.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002120.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002125.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002125.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002135.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002135.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001925.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295120.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295180.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001903.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295190.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001920.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001910.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001906.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001965.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001960.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001950.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002160.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002160.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002161.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002161.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002162.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002162.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295610.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295700.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001945.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001940.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295230.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295340.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295350.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295360.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295400.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001905.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001930.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002067.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002066.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_001935.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002060.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002025.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295440.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295460.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295540.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002069.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002120.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002125.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002135.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002163.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002163.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002300.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002300.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002301.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002301.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002302.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002302.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002310.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002310.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002304.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002304.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002303.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002303.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002311.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002311.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002312.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002312.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002317.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002317.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002316.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002316.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295900.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o295910.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o295910.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296100.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296100.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296110.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296120.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296120.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296130.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296130.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296200.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002065.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002315.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002315.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002313.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002313.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002321.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002321.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002320.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002320.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002327.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002327.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002326.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002326.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002325.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002325.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002322.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002322.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002401.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002401.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002350.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002350.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296300.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296320.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296320.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296500.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002161.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002160.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002162.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002331.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002331.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002402.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002402.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002404.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002404.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296510.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296600.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296600.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002300.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002163.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002302.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002310.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002304.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002301.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002311.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002312.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002317.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002316.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o295910.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296100.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002303.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296120.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296200.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296130.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002313.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002321.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002320.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002315.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002327.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002326.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002322.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002325.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002350.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296320.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002420.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002420.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002425.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002425.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002430.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002430.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002450.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002450.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002460.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002460.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002501.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002501.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002525.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002525.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002520.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002520.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002502.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002502.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002504.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002504.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002530.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002530.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296610.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296620.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296620.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296630.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296630.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296640.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296640.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296900.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o296910.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o296910.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297000.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002331.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002402.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002535.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002535.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002550.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002550.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003002.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003010.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003130.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003133.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003133.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003200.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003210.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002401.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296600.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002404.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002420.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002430.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002425.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002450.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003215.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003215.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003270.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003270.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004000.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004002.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004005.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004005.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297010.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297020.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297050.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297050.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297060.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297060.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297070.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297070.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002460.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002525.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002520.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002501.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004007.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004007.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004009.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004009.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004010.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004011.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002502.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002530.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296620.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296630.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296640.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296900.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o296910.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002504.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002550.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_002535.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003130.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004015.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004015.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004408.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004408.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004407.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004407.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004402.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004402.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004401.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004401.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004016.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004016.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004080.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004080.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004133.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004133.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004136.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004136.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297110.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297120.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297120.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297130.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297130.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297210.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297300.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297350.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297350.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297360.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297360.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004140.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004140.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004150.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004400.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004400.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003133.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003210.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004409.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004409.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004410.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004410.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003270.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004440.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004440.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004002.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004005.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_003215.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297020.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297050.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297060.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297070.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004007.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004009.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004408.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004407.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004015.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004402.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004401.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004016.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004080.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004441.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004441.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004444.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004444.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004445.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004445.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004446.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004446.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004449.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004449.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004602.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004602.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004608.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004608.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004670.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004670.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004649.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004649.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297400.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297400.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297410.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297410.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297450.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297450.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297500.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297510.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004133.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297110.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297120.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297130.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004136.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297210.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297350.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297300.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297360.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004140.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004150.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004409.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004646.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004646.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004645.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004645.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004644.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004644.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004610.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004610.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004640.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004640.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004641.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004641.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004642.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004642.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005200.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005000.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297520.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297520.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297530.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297530.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297540.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297540.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297550.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297550.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004400.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004410.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004440.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004441.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004444.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004446.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004449.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004602.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004608.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004670.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004649.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005412.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005412.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005415.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005415.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006102.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006102.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006101.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297600.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297600.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297610.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297650.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297650.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297400.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297410.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297450.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297500.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297510.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004445.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004646.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004644.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006100.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006012.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006012.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006011.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006010.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004645.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004610.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004641.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004642.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_004640.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005200.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297520.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297530.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297540.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297550.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005412.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005415.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006105.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006105.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006104.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006104.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006103.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006103.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006106.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006106.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006115.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006115.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006110.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006109.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006109.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006107.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006107.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006500.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006500.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006501.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006501.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006600.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006600.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006601.flver.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006601.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297660.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297660.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297700.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o297820.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o297820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o298000.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o298000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o298010.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o298010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_005000.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006102.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297600.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297610.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297650.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006101.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006012.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006100.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/obj/o298100.objbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/obj/o298100.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c1050.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c1050.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1050.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1050.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1050.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1050.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006011.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006010.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006104.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006105.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006106.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006115.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006110.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006109.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006107.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006103.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006501.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006500.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c1050.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006601.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297660.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297700.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o297820.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o298000.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o298010.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c1100.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c1100.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1100.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1100.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1100.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1100.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c1100.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/map/m29_00_00_00/m29_00_00_00_006600.flver.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/obj/o298100.objbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1050.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c1150.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c1150.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1150.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1150.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1150.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1150.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c1180.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c1180.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c1180.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c1180.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c2020.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c2020.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2020.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2020.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c1150.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1100.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1050.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1100.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c1180.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c2020.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2020.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2020.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c2080.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c2080.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2080.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2080.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2080.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2080.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c2130.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c2130.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2130.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2130.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c2080.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1150.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1180.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c1150.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c2130.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2139.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2139.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2130.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2130.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c2530.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c2530.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2530.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2530.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2539.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2539.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2020.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2020.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2080.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2130.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c2530.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2080.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2530.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2530.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c2531.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c2531.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2531.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2531.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2130.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c2531.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2139.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c2531.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c2531.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c3010.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c3010.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c3010.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c3010.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c3010.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c3010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2530.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c3010.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2539.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2531.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c3040.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c3040.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c3040.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c3040.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c3040.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c3040.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c3130.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c3130.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c3130.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c3130.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2530.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c2531.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c3040.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c3130.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c3130.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c5010.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c5010.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c5010.chrbnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c5010.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c5010.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c5010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c9010.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c9010.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c3010.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c3010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c3130.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9010.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/action/script/c9030.hks flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/action/script/c9030.hks [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c9030.anibnd.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c9030.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c3040.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c3040.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c5010.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c3130.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c3130.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c9010.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/action/script/c9030.hks [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c5010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c3130_2.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c3130_2.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9010.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c9030.anibnd.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c5010.chrbnd.dcx [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/chr/c5010_2.tpf.dcx flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/chr/c5010_2.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c3130_2.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /app0/dvdroot_ps4/chr/c5010_2.tpf.dcx [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm29.fsb [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /app0/dvdroot_ps4/sound/sprj_xm29.fsb flags = 0x0 mode = 365 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /app0/dvdroot_ps4/sound/sprj_xm29.fsb [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xf54e5f9 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xa7450683 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[336]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _178 = 20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _187 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _188 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _193 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _197 = (cbuf_12.data[_178] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _204 = ((0u + ((_187 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _217 = uint4(cbuf_16.data[_204 + 0u], cbuf_16.data[_204 + 1u], cbuf_16.data[_204 + 2u], cbuf_16.data[_204 + 3u]); uint _225 = ((0u + ((_188 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _238 = uint4(cbuf_16.data[_225 + 0u], cbuf_16.data[_225 + 1u], cbuf_16.data[_225 + 2u], cbuf_16.data[_225 + 3u]); uint _246 = ((0u + ((_187 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _259 = uint4(cbuf_16.data[_246 + 0u], cbuf_16.data[_246 + 1u], cbuf_16.data[_246 + 2u], cbuf_16.data[_246 + 3u]); uint _267 = ((0u + ((_188 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _280 = uint4(cbuf_16.data[_267 + 0u], cbuf_16.data[_267 + 1u], cbuf_16.data[_267 + 2u], cbuf_16.data[_267 + 3u]); uint _288 = ((0u + (_187 * 16u)) + buf6_off) >> 2u; uint4 _301 = uint4(cbuf_16.data[_288 + 0u], cbuf_16.data[_288 + 1u], cbuf_16.data[_288 + 2u], cbuf_16.data[_288 + 3u]); uint _309 = ((0u + ((_193 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _322 = uint4(cbuf_16.data[_309 + 0u], cbuf_16.data[_309 + 1u], cbuf_16.data[_309 + 2u], cbuf_16.data[_309 + 3u]); uint _330 = ((0u + (_188 * 16u)) + buf6_off) >> 2u; uint4 _343 = uint4(cbuf_16.data[_330 + 0u], cbuf_16.data[_330 + 1u], cbuf_16.data[_330 + 2u], cbuf_16.data[_330 + 3u]); uint _351 = ((0u + ((_193 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _364 = uint4(cbuf_16.data[_351 + 0u], cbuf_16.data[_351 + 1u], cbuf_16.data[_351 + 2u], cbuf_16.data[_351 + 3u]); uint _372 = ((0u + ((_197 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _385 = uint4(cbuf_16.data[_372 + 0u], cbuf_16.data[_372 + 1u], cbuf_16.data[_372 + 2u], cbuf_16.data[_372 + 3u]); uint _393 = ((0u + (_193 * 16u)) + buf6_off) >> 2u; uint4 _406 = uint4(cbuf_16.data[_393 + 0u], cbuf_16.data[_393 + 1u], cbuf_16.data[_393 + 2u], cbuf_16.data[_393 + 3u]); uint _414 = ((0u + ((_197 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _427 = uint4(cbuf_16.data[_414 + 0u], cbuf_16.data[_414 + 1u], cbuf_16.data[_414 + 2u], cbuf_16.data[_414 + 3u]); uint _435 = ((0u + (_197 * 16u)) + buf6_off) >> 2u; uint4 _448 = uint4(cbuf_16.data[_435 + 0u], cbuf_16.data[_435 + 1u], cbuf_16.data[_435 + 2u], cbuf_16.data[_435 + 3u]); float _460 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _461 = spvFMul(in.vs_in_attr4.y, _460); float _462 = spvFMul(in.vs_in_attr4.x, _460); float _467 = spvFMul(in.vs_in_attr4.z, _460); float _546 = spvFMul(in.vs_in_attr4.w, _460); float _588 = fma(as_type(_385.z), _546, fma(as_type(_322.z), _467, fma(as_type(_238.z), _462, spvFMul(_461, as_type(_217.z))))); float _610 = fma(as_type(_427.z), _546, fma(as_type(_364.z), _467, fma(as_type(_280.z), _462, spvFMul(_461, as_type(_259.z))))); float _614 = fma(as_type(_385.y), _546, fma(as_type(_322.y), _467, fma(as_type(_238.y), _462, spvFMul(_461, as_type(_217.y))))); float _623 = fma(as_type(_448.z), _546, fma(as_type(_406.z), _467, fma(as_type(_343.z), _462, spvFMul(_461, as_type(_301.z))))); float _627 = fma(as_type(_427.y), _546, fma(as_type(_364.y), _467, fma(as_type(_280.y), _462, spvFMul(_461, as_type(_259.y))))); float _629 = fma(as_type(_385.x), _546, fma(as_type(_322.x), _467, fma(as_type(_238.x), _462, spvFMul(_461, as_type(_217.x))))); float _635 = fma(as_type(_448.y), _546, fma(as_type(_406.y), _467, fma(as_type(_343.y), _462, spvFMul(_461, as_type(_301.y))))); float _637 = fma(as_type(_427.x), _546, fma(as_type(_364.x), _467, fma(as_type(_280.x), _462, spvFMul(_461, as_type(_259.x))))); float _642 = fma(as_type(_448.x), _546, fma(as_type(_406.x), _467, fma(as_type(_343.x), _462, spvFMul(_461, as_type(_301.x))))); float _646 = spvFSub(fma(_629, in.vs_in_attr0.x, fma(_614, in.vs_in_attr0.y, fma(_588, in.vs_in_attr0.z, fma(as_type(_385.w), _546, fma(as_type(_322.w), _467, fma(as_type(_238.w), _462, spvFMul(_461, as_type(_217.w)))))))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _649 = spvFSub(fma(_637, in.vs_in_attr0.x, fma(_627, in.vs_in_attr0.y, fma(_610, in.vs_in_attr0.z, fma(as_type(_427.w), _546, fma(as_type(_364.w), _467, fma(as_type(_280.w), _462, spvFMul(_461, as_type(_259.w)))))))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _663 = spvFSub(fma(_642, in.vs_in_attr0.x, fma(_635, in.vs_in_attr0.y, fma(_623, in.vs_in_attr0.z, fma(as_type(_448.w), _546, fma(as_type(_406.w), _467, fma(as_type(_343.w), _462, spvFMul(_461, as_type(_301.w)))))))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _673 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _646, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _675 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _646, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _677 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _646, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _679 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _663, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _649, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _646, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _673; out.gl_Position.y = _675; out.gl_Position.z = _677; out.gl_Position.w = _679; float _706 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _709 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _712 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _714 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _724 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _725 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_642, _725, fma(_635, _714, spvFMul(_623, _709))); out.out_attr0.y = fma(_637, _725, fma(_627, _714, spvFMul(_610, _709))); out.out_attr0.z = fma(_629, _725, fma(_614, _714, spvFMul(_588, _709))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_642, _724, fma(_635, _712, spvFMul(_623, _706))); out.out_attr1.y = fma(_637, _724, fma(_627, _712, spvFMul(_610, _706))); out.out_attr1.z = fma(_629, _724, fma(_614, _712, spvFMul(_588, _706))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _673; out.out_attr3.y = _675; out.out_attr3.z = _677; out.out_attr3.w = _679; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; constant uint _115 = {}; constant uint _116 = {}; constant uint _117 = {}; constant uint _118 = {}; constant uint _119 = {}; constant uint _120 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_28 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img92 [[texture(0)]], texture2d fs_img44 [[texture(1)]], texture2d fs_img68 [[texture(2)]], texture2d fs_img60 [[texture(3)]], texture2d fs_img52 [[texture(4)]], texturecube fs_img84 [[texture(5)]], texturecube fs_img76 [[texture(6)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _147 = uint(gl_FrontFacing); float _236 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _258 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _269 = 1.0 / in.fs_in_attr3.w; float _272 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _299 = rsqrt(fma(_272, _272, fma(_258, _258, spvFMul(_236, _236)))); float _309 = spvFMul(0.25, spvFMul(as_type(cbuf_36.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr3.x), _269, 0.5))); float _311 = spvFMul(0.25, spvFMul(as_type(cbuf_36.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr3.y), _269, 0.5))); float _313 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _322 = fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))); float _326 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float4 _331 = fs_img92.sample(fs_samp20, float2(_309, _311)); float _333 = spvFMul(in.fs_in_attr0.x, _313); float _335 = spvFMul(in.fs_in_attr0.y, _313); float _337 = spvFMul(in.fs_in_attr0.z, _313); float _343 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _326, as_type(cbuf_36.data[183u + buf0_dword_off])); float _347 = fma(-_322, _326, as_type(cbuf_36.data[187u + buf0_dword_off])); float _351 = fma(-fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _326, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _352 = 0u == _147; uint _365; uint _366; uint _367; if (_352) { _365 = as_type(fast::max(-_335, -_335)); _366 = as_type(fast::max(-_333, -_333)); _367 = as_type(fast::max(-_337, -_337)); } else { _365 = as_type(_335); _366 = _147; _367 = as_type(_333); } uint _370; uint _371; if (!_352) { _370 = as_type(_337); _371 = _367; } else { _370 = _367; _371 = _366; } float _372 = spvFAdd(-0.5, _331.w); uint _404 = uint(in.fs_in_attr0.w) * 13u; float4 _421 = fs_img44.sample(fs_samp4, float2(fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[2u + buf1_dword_off])), fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[3u + buf1_dword_off])))); float _422 = _421.x; uint _423 = as_type(_422); float _424 = _421.y; uint _425 = as_type(_424); float _426 = _421.z; uint _427 = as_type(_426); float _428 = _421.w; uint _434 = ((12u + ((_404 + 7u) * 16u)) + buf2_off) >> 2u; float _448 = spvFMul(_428, in.fs_in_attr2.w); float _450 = spvFMul(_448, as_type(cbuf_32.data[_434])); bool _456 = (as_type(cbuf_28.data[20u + buf3_dword_off]) > fma(as_type(cbuf_28.data[21u + buf3_dword_off]), _372, _448)) || (_450 == 0.0); bool _457 = !_456; uint _980; uint _981; uint _982; uint _983; uint _984; uint _985; uint _986; uint _987; uint _988; uint _989; uint _990; uint _991; uint _992; uint _993; uint _994; uint _995; uint _996; uint _997; uint _998; bool _999; uint _1000; uint _1001; uint _1002; uint _1003; if (!_456) { float4 _483 = fs_img68.sample(fs_samp16, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _512 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _518 = fma(2.0, _483.y, -1.0); float _519 = spvFMul(fma(2.0, _483.x, -1.0), fma(2.0, _483.w, -1.0)); float _528 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _529 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_519, _519), spvFMul(_518, _518)), 0.0, 1.0))); float _541 = fma(spvFMul(spvFMul(_236, _299), in.fs_in_attr1.w), _519, fma(spvFMul(in.fs_in_attr1.z, _528), _518, spvFMul(as_type(_370), _529))); float _544 = fma(spvFMul(spvFMul(_258, _299), in.fs_in_attr1.w), _519, fma(spvFMul(in.fs_in_attr1.y, _528), _518, spvFMul(as_type(_365), _529))); float _547 = fma(spvFMul(spvFMul(_272, _299), in.fs_in_attr1.w), _519, fma(spvFMul(in.fs_in_attr1.x, _528), _518, spvFMul(as_type(_371), _529))); float _551 = rsqrt(fma(_343, _343, fma(_347, _347, spvFMul(_351, _351)))); float _552 = rsqrt(fma(_547, _547, fma(_544, _544, spvFMul(_541, _541)))); float _557 = spvFMul(_541, _552); float _559 = spvFMul(_544, _552); float _562 = spvFMul(_547, _552); float _564 = fma(_562, spvFMul(_343, _551), fma(_559, spvFMul(_347, _551), spvFMul(spvFMul(_351, _551), _557))); float _572 = spvFMul(fast::max(_564, _564), 2.0); float _575 = spvFMul(as_type(cbuf_28.data[8u + buf3_dword_off]), 0.00390625); float4 _583 = fs_img52.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _584 = _583.x; float _586 = _583.y; float _587 = _583.z; float _588 = spvFMul(_512.x, _575); float _590 = fma(-_343, _551, spvFMul(_562, _572)); float _592 = fma(-_347, _551, spvFMul(_559, _572)); float _594 = fma(-_351, _551, spvFMul(_557, _572)); float _605 = 1.0 / abs(1.0); float _607 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_588, 13.0), 0.5))); float _609 = fma(_592, _605, 1.5); float _610 = fma(_590, _605, 1.5); uint _614 = ((0u + ((_404 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _627 = uint4(cbuf_32.data[_614 + 0u], cbuf_32.data[_614 + 1u], cbuf_32.data[_614 + 2u], cbuf_32.data[_614 + 3u]); uint _628 = _627.x; uint _629 = _627.y; uint _630 = _627.z; float4 _638 = fs_img84.sample(fs_samp20, float3(spvFSub(_610, 1.5), spvFSub(_609, 1.5), _594), level(_607)); uint _645 = ((0u + ((_404 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _658 = uint4(cbuf_32.data[_645 + 0u], cbuf_32.data[_645 + 1u], cbuf_32.data[_645 + 2u], cbuf_32.data[_645 + 3u]); uint _666 = ((0u + ((_404 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _679 = uint4(cbuf_32.data[_666 + 0u], cbuf_32.data[_666 + 1u], cbuf_32.data[_666 + 2u], cbuf_32.data[_666 + 3u]); uint _687 = ((0u + ((_404 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _700 = uint4(cbuf_32.data[_687 + 0u], cbuf_32.data[_687 + 1u], cbuf_32.data[_687 + 2u], cbuf_32.data[_687 + 3u]); float4 _711 = fs_img76.sample(fs_samp20, float3(spvFSub(_610, 1.5), spvFSub(_609, 1.5), _594), level(_607)); float _712 = _711.x; float _713 = _711.y; float _714 = _711.z; float _722 = fast::clamp(spvFAdd(fma(_590, as_type(_371), fma(_592, as_type(_365), spvFMul(as_type(_370), _594))), 1.0), 0.0, 1.0); uint _723 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _732 = spvFAdd(1.0, _564); bool _744 = (_587 == 0.0) && (_586 == 0.0); float _746 = fast::clamp(spvFMul(_732, _732), 0.0, 1.0); float _747 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_564, _564), 0.0, 1.0))))); float _757 = spvFMul(_746, _747); float _758 = _744 ? _584 : _587; float _760 = _744 ? _584 : _586; float _799 = fma(_746, _747, -spvFMul(_584, _757)); float _805 = spvFMul(_588, _588); float _812 = spvFMul(_722, _722); float _831 = spvFMul(fma(_799, _805, _584), spvFMul(fma(as_type(_628), fma(-as_type(_629), _712, spvFMul(as_type(_630), _638.x)), spvFMul(as_type(_629), _712)), _812)); float _835 = fast::max(0.0, spvFAdd(as_type(_658.w), fma(_557, as_type(_658.z), fma(_562, as_type(_658.x), spvFMul(_559, as_type(_658.y)))))); float _836 = fast::max(0.0, spvFAdd(as_type(_679.w), fma(_557, as_type(_679.z), fma(_562, as_type(_679.x), spvFMul(_559, as_type(_679.y)))))); float _837 = fast::max(0.0, spvFAdd(as_type(_700.w), fma(_557, as_type(_700.z), fma(_562, as_type(_700.x), spvFMul(_559, as_type(_700.y)))))); float _844 = spvFMul(as_type(cbuf_28.data[5u + buf3_dword_off]), as_type(cbuf_40.data[_723])); float _848 = spvFMul(as_type(cbuf_28.data[6u + buf3_dword_off]), as_type(cbuf_40.data[_723])); float _860 = fma(-_584, _835, _835); float _872 = spvFMul(spvFMul(fma(fma(_746, _747, -spvFMul(_758, _757)), _805, _758), spvFMul(fma(as_type(_628), fma(-as_type(_629), _714, spvFMul(as_type(_630), _638.z)), spvFMul(as_type(_629), _714)), _812)), _848); bool _875 = _457 && (!_456); uint _876; if (_875) { _876 = 0u; } else { _876 = _630; } uint _921; uint _922; uint _923; uint _924; uint _925; uint _926; uint _927; uint _928; uint _929; uint _930; uint _931; uint _932; uint _933; if (_875) { bool _880 = as_type(cbuf_28.data[22u + buf3_dword_off]) != 0.0; _921 = as_type(_880 ? _450 : as_type(_627.w)); _922 = as_type(fma(0.5, _557, 0.500488758087158203125)); _923 = as_type(fma(0.5, _559, 0.500488758087158203125)); _924 = as_type(fma(0.5, _562, 0.500488758087158203125)); _925 = as_type(_880 ? _450 : 0.0); _926 = cbuf_32.data[((0u + ((_404 + 12u) * 16u)) + buf2_off) >> 2u]; _927 = as_type(spvFMul(_575, _588)); _928 = as_type(_880 ? _450 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_404 + 6u) * 16u)) + buf2_off) >> 2u]))); _929 = as_type(sqrt(_584)); _930 = as_type(_450); _931 = as_type(sqrt(_760)); _932 = as_type(sqrt(_758)); _933 = as_type(_880 ? _450 : 1.0); } else { _921 = as_type(_584); _922 = as_type(_799); _923 = _427; _924 = _425; _925 = _423; _926 = cbuf_40.data[_723]; _927 = as_type(_848); _928 = as_type(_844); _929 = as_type(_837); _930 = _404; _931 = as_type(_760); _932 = as_type(_758); _933 = as_type(_831); } uint _958; uint _959; uint _960; uint _961; uint _962; uint _963; uint _964; uint _965; uint _966; uint _967; uint _968; uint _969; uint _970; uint _971; uint _972; uint _973; uint _974; uint _975; uint _976; uint _977; uint _978; uint _979; if (_457 && (!_875)) { _958 = as_type(_450); _959 = as_type(_872); _960 = as_type(_450); _961 = as_type(_588); _962 = as_type(_872); _963 = as_type(_450); _964 = as_type(_450); _965 = as_type(_588); _966 = as_type(_860); _967 = as_type(_872); _968 = as_type(_450); _969 = as_type(_588); _970 = as_type(_860); _971 = as_type(_872); _972 = as_type(_588); _973 = as_type(_860); _974 = as_type(_588); _975 = as_type(_860); _976 = as_type(_450); _977 = as_type(_872); _978 = as_type(_860); _979 = as_type(_588); } else { _958 = _876; _959 = as_type(spvFMul(as_type(cbuf_28.data[2u + buf3_dword_off]), _426)); _960 = as_type(spvFMul(as_type(cbuf_28.data[1u + buf3_dword_off]), _424)); _961 = as_type(spvFMul(as_type(cbuf_28.data[0u + buf3_dword_off]), _422)); _962 = as_type(fma(-_758, _837, _837)); _963 = as_type(fma(-_760, _836, _836)); _964 = as_type(spvFMul(spvFMul(fma(fma(_746, _747, -spvFMul(_760, _757)), _805, _760), spvFMul(fma(as_type(_628), fma(-as_type(_629), _713, spvFMul(as_type(_630), _638.y)), spvFMul(as_type(_629), _713)), _812)), _844)); _965 = as_type(spvFMul(_831, spvFMul(as_type(cbuf_28.data[4u + buf3_dword_off]), as_type(cbuf_40.data[_723])))); _966 = _921; _967 = _922; _968 = _923; _969 = _924; _970 = _925; _971 = _926; _972 = _927; _973 = _928; _974 = _929; _975 = _930; _976 = _931; _977 = _932; _978 = _933; _979 = as_type(_860); } _980 = _967; _981 = _968; _982 = _969; _983 = _970; _984 = _971; _985 = _958; _986 = _972; _987 = _975; _988 = _959; _989 = _960; _990 = _961; _991 = _973; _992 = _977; _993 = _976; _994 = _974; _995 = _978; _996 = _962; _997 = _963; _998 = _979; _999 = _457; _1000 = _966; _1001 = as_type(_872); _1002 = _964; _1003 = _965; } else { _980 = as_type(_428); _981 = _427; _982 = _425; _983 = _423; _984 = cbuf_32.data[_434]; _985 = _115; _986 = as_type(_347); _987 = _404; _988 = _116; _989 = _117; _990 = _118; _991 = as_type(_343); _992 = as_type(in.fs_in_attr1.z); _993 = as_type(_372); _994 = as_type(in.fs_in_attr4.x); _995 = _370; _996 = _119; _997 = _120; _998 = _365; _999 = true; _1000 = as_type(_322); _1001 = _371; _1002 = as_type(_311); _1003 = as_type(_309); } if (!_999) { discard_fragment(); } out.frag_color5.x = as_type(_1003); out.frag_color5.y = as_type(_1002); out.frag_color5.z = as_type(_1001); out.frag_color5.w = as_type(_1000); if (!_999) { discard_fragment(); } out.frag_color4.x = as_type(_998); out.frag_color4.y = as_type(_997); out.frag_color4.z = as_type(_996); out.frag_color4.w = as_type(_995); if (!_999) { discard_fragment(); } out.frag_color3.x = as_type(_994); out.frag_color3.y = as_type(_993); out.frag_color3.z = as_type(_992); out.frag_color3.w = as_type(_991); if (!_999) { discard_fragment(); } out.frag_color2.x = as_type(_990); out.frag_color2.y = as_type(_989); out.frag_color2.z = as_type(_988); out.frag_color2.w = as_type(_987); if (!_999) { discard_fragment(); } out.frag_color1.x = as_type(_986); out.frag_color1.y = as_type(_985); out.frag_color1.z = as_type(_984); out.frag_color1.w = as_type(_983); if (_456) { discard_fragment(); } out.frag_color0.x = as_type(_982); out.frag_color0.y = as_type(_981); out.frag_color0.z = as_type(_980); out.frag_color0.w = as_type(_983); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x505acc58 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x97f2d384 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _163 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _169 = ((0u + ((_163 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _182 = uint4(cbuf_16.data[_169 + 0u], cbuf_16.data[_169 + 1u], cbuf_16.data[_169 + 2u], cbuf_16.data[_169 + 3u]); uint _183 = _182.x; uint _184 = _182.y; uint _185 = _182.z; uint _190 = ((0u + ((_163 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _203 = uint4(cbuf_16.data[_190 + 0u], cbuf_16.data[_190 + 1u], cbuf_16.data[_190 + 2u], cbuf_16.data[_190 + 3u]); uint _204 = _203.x; uint _205 = _203.y; uint _206 = _203.z; uint _211 = ((0u + (_163 * 16u)) + buf7_off) >> 2u; uint4 _224 = uint4(cbuf_16.data[_211 + 0u], cbuf_16.data[_211 + 1u], cbuf_16.data[_211 + 2u], cbuf_16.data[_211 + 3u]); uint _225 = _224.x; uint _226 = _224.y; uint _227 = _224.z; float _326 = spvFSub(fma(as_type(_183), in.vs_in_attr0.x, fma(as_type(_184), in.vs_in_attr0.y, fma(as_type(_185), in.vs_in_attr0.z, as_type(_182.w)))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _330 = spvFSub(fma(as_type(_204), in.vs_in_attr0.x, fma(as_type(_205), in.vs_in_attr0.y, fma(as_type(_206), in.vs_in_attr0.z, as_type(_203.w)))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _344 = spvFSub(fma(as_type(_225), in.vs_in_attr0.x, fma(as_type(_226), in.vs_in_attr0.y, fma(as_type(_227), in.vs_in_attr0.z, as_type(_224.w)))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _354 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _326, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _356 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _326, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _358 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _326, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _360 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _326, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _354; out.gl_Position.y = _356; out.gl_Position.z = _358; out.gl_Position.w = _360; float _387 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _390 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _393 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _411 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _412 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_225), _412, fma(as_type(_226), _395, spvFMul(as_type(_227), _390))); out.out_attr0.y = fma(as_type(_204), _412, fma(as_type(_205), _395, spvFMul(as_type(_206), _390))); out.out_attr0.z = fma(as_type(_183), _412, fma(as_type(_184), _395, spvFMul(as_type(_185), _390))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_225), _411, fma(as_type(_226), _393, spvFMul(as_type(_227), _387))); out.out_attr1.y = fma(as_type(_204), _411, fma(as_type(_205), _393, spvFMul(as_type(_206), _387))); out.out_attr1.z = fma(as_type(_183), _411, fma(as_type(_184), _393, spvFMul(as_type(_185), _387))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _354; out.out_attr3.y = _356; out.out_attr3.z = _358; out.out_attr3.w = _360; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template inline T spvQuadBroadcast(T value, uint lane) { return quad_broadcast(value, lane); } template<> inline bool spvQuadBroadcast(bool value, uint lane) { return !!quad_broadcast((ushort)value, lane); } template inline vec spvQuadBroadcast(vec value, uint lane) { return (vec)quad_broadcast((vec)value, lane); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[24]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[104]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_36 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_44 [[buffer(14)]], texture2d fs_img72 [[texture(0)]], texture2d fs_img64 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texturecube fs_img88 [[texture(3)]], texturecube fs_img80 [[texture(4)]], texture2d fs_img48 [[texture(5)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], uint gl_SubgroupInvocationID [[thread_index_in_simdgroup]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint _162 = uint(gl_FrontFacing); float _249 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _261 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _275 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); uint _297 = 12u + buf1_dword_off; uint _301 = 13u + buf1_dword_off; uint _305 = 14u + buf1_dword_off; uint _309 = 15u + buf1_dword_off; float _313 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _314 = rsqrt(fma(_275, _275, fma(_261, _261, spvFMul(_249, _249)))); float _322 = 1.0 / fma(as_type(cbuf_40.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float _326 = spvFMul(in.fs_in_attr1.z, _313); float _334 = fma(-fma(as_type(cbuf_40.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _322, as_type(cbuf_40.data[191u + buf0_dword_off])); float _335 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _336 = spvFMul(in.fs_in_attr1.y, _313); float _338 = spvFMul(in.fs_in_attr1.w, spvFMul(_249, _314)); float _343 = fma(-fma(as_type(cbuf_40.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))), _322, as_type(cbuf_40.data[187u + buf0_dword_off])); float _345 = spvFMul(in.fs_in_attr0.z, _335); float _346 = spvFMul(in.fs_in_attr1.x, _313); float _348 = spvFMul(in.fs_in_attr1.w, spvFMul(_261, _314)); float _351 = fma(-fma(as_type(cbuf_40.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _322, as_type(cbuf_40.data[183u + buf0_dword_off])); float _354 = spvFMul(in.fs_in_attr0.y, _335); float _356 = spvFMul(in.fs_in_attr1.w, spvFMul(_275, _314)); float _358 = fma(_346, _351, fma(_336, _343, spvFMul(_326, _334))); float _360 = spvFMul(in.fs_in_attr0.x, _335); float _362 = fma(_356, _351, fma(_348, _343, spvFMul(_338, _334))); float _369 = fma(_360, _351, fma(_354, _343, spvFMul(_345, _334))); float _372 = fma(as_type(cbuf_24.data[_297]), in.fs_in_attr4.x, as_type(cbuf_24.data[_305])); uint _373 = as_type(_372); float _376 = fma(as_type(cbuf_24.data[_301]), in.fs_in_attr4.y, as_type(cbuf_24.data[_309])); uint _377 = as_type(_376); uint _384 = spvQuadBroadcast(_373, extract_bits(0u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _389 = spvQuadBroadcast(_377, extract_bits(0u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _395 = spvQuadBroadcast(_373, extract_bits(170u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _400 = spvQuadBroadcast(_377, extract_bits(170u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); float _401 = sqrt(fma(_369, _369, fma(_362, _362, spvFMul(_358, _358)))); uint _407 = spvQuadBroadcast(_373, extract_bits(85u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _412 = spvQuadBroadcast(_377, extract_bits(85u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); float _415 = spvFSub(as_type(_395), as_type(_384)); float _418 = spvFSub(as_type(_400), as_type(_389)); uint _419 = 16u + buf2_dword_off; uint _427 = 19u + buf2_dword_off; float _434 = spvFSub(as_type(_407), as_type(_384)); float _437 = spvFSub(as_type(_412), as_type(_389)); float _447 = rsqrt(fma(_358, _358, spvFMul(_362, _362))); float _451 = fma(_351, _351, fma(_343, _343, spvFMul(_334, _334))); float _455 = spvFMul(sqrt(fma(-_369, _369, spvFMul(_401, _401))), 1.0 / _369); float _459 = rsqrt(_451); float _462 = fast::max(0.0, spvFMul(log2(fast::max(fma(_434, _434, spvFMul(_415, _415)), fma(_437, _437, spvFMul(_418, _418)))), 0.5)); float _463 = spvFMul(_351, _459); float _464 = spvFMul(_343, _459); float _465 = spvFMul(_334, _459); float _467 = spvFMul(as_type(cbuf_28.data[_419]), spvFMul(spvFMul(_362, _447), _455)); float _469 = spvFMul(as_type(cbuf_28.data[_419]), spvFMul(spvFMul(_358, _447), _455)); bool _471 = 3.0 >= _462; uint _472; if (_471) { _472 = 1065353216u; } else { _472 = as_type(_451); } uint _599; uint _600; if (_471) { float _476 = rsqrt(fma(_360, _360, fma(_354, _354, spvFMul(_345, _345)))); float _483 = rsqrt(fma(_463, _463, fma(_464, _464, spvFMul(_465, _465)))); uint _495 = uint(int(fma(fma(spvFMul(_463, _483), spvFMul(_360, _476), fma(spvFMul(_464, _483), spvFMul(_354, _476), spvFMul(spvFMul(_345, _476), spvFMul(_465, _483)))), spvFSub(as_type(cbuf_28.data[18u + buf2_dword_off]), as_type(cbuf_28.data[_427])), as_type(cbuf_28.data[_427])))); float _497 = 1.0 / float(int(_495)); uint _498 = as_type(_372); uint _499 = as_type(_376); bool _518; uint _522; uint _526; uint _537; uint _549; uint _550; bool _517; uint _542; uint _545; uint _546; uint _547; uint _551; uint _552; uint _553; uint _554; uint _500 = 0u; uint _501 = 0u; uint _502 = 0u; uint _503 = 0u; uint _504 = _472; uint _505 = _499; uint _506 = _498; uint _507 = 1065353216u; bool _508 = _471; bool _509 = _471; uint _510 = 0u; for (;;) { bool _513 = _509 && (!(int(_495) > int(_510))); if (_513) { bool _515 = _508 && (!_513); if (!_515) { _551 = _503; _552 = _500; _553 = _501; _554 = _502; break; } else { _517 = _515; } } else { _517 = _508; } _518 = _509 && _517; float _521 = fma(-_467, _497, as_type(_506)); _522 = as_type(_521); float _525 = fma(-_469, _497, as_type(_505)); _526 = as_type(_525); float4 _533 = fs_img72.sample(fs_samp16, float2(_521, _525), gradient2d(float2(_434, _437), float2(_415, _418))); float _534 = _533.z; float _536 = spvFSub(as_type(_507), _497); _537 = as_type(_536); bool _539 = _518 && (_534 > _536); if (_539) { _542 = as_type(spvFAdd(_497, _536)); } else { _542 = _502; } uint _548; if (_539) { _545 = as_type(_536); _546 = _504; _547 = as_type(_534); _548 = _495; } else { _545 = _500; _546 = _501; _547 = _503; _548 = _510; } _549 = _548 + 1u; _550 = as_type(_534); if (true) { _500 = _545; _501 = _546; _502 = _542; _503 = _547; _504 = _550; _505 = _526; _506 = _522; _507 = _537; _508 = _517; _509 = _518; _510 = _549; continue; } else { _551 = _547; _552 = _545; _553 = _546; _554 = _542; break; } } float _557 = spvFSub(as_type(_554), as_type(_553)); float _560 = spvFSub(as_type(_552), as_type(_551)); float _569 = fma(-fma(as_type(_552), _557, -spvFMul(as_type(_554), _560)), 1.0 / spvFSub(_557, _560), 1.0); float _572 = fma(-_569, _467, _372); float _575 = fma(-_569, _469, _376); bool _579 = _471 && (2.0 < _462); uint _582; if (_579) { _582 = as_type(trunc(_462)); } else { _582 = as_type(_569); } uint _591; uint _592; if (_579) { float _584 = spvFSub(_462, as_type(_582)); _591 = as_type(fma(_584, spvFSub(_376, _575), _575)); _592 = as_type(fma(_584, spvFSub(_372, _572), _572)); } else { _591 = as_type(_575); _592 = as_type(_572); } _599 = as_type(spvFSub(as_type(_592), _372)); _600 = as_type(spvFSub(as_type(_591), _376)); } else { _599 = _384; _600 = _373; } uint _602; uint _603; if (!_471) { _602 = 0u; _603 = 0u; } else { _602 = _600; _603 = _599; } float _609 = fma(as_type(_603), 1.0 / as_type(cbuf_24.data[_297]), in.fs_in_attr4.x); float _611 = fma(as_type(_602), 1.0 / as_type(cbuf_24.data[_301]), in.fs_in_attr4.y); bool _612 = 0u == _162; uint _625; uint _626; uint _627; if (_612) { _625 = as_type(fast::max(-_354, -_354)); _626 = as_type(fast::max(-_360, -_360)); _627 = as_type(fast::max(-_345, -_345)); } else { _625 = as_type(_354); _626 = _162; _627 = as_type(_360); } uint _630; uint _631; if (!_612) { _630 = _627; _631 = as_type(_345); } else { _630 = _626; _631 = _627; } float4 _642 = fs_img72.sample(fs_samp16, float2(fma(_609, as_type(cbuf_24.data[_297]), as_type(cbuf_24.data[_305])), fma(_611, as_type(cbuf_24.data[_301]), as_type(cbuf_24.data[_309])))); float4 _699 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), _609, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), _611, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _704 = fma(2.0, _642.y, -1.0); float _705 = spvFMul(fma(2.0, _642.x, -1.0), fma(2.0, _642.w, -1.0)); float _711 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_705, _705), spvFMul(_704, _704)), 0.0, 1.0))); float _720 = fma(_338, _705, fma(_326, _704, spvFMul(as_type(_631), _711))); float _722 = fma(_348, _705, fma(_336, _704, spvFMul(as_type(_625), _711))); float _724 = fma(_356, _705, fma(_346, _704, spvFMul(as_type(_630), _711))); float _727 = rsqrt(fma(_724, _724, fma(_722, _722, spvFMul(_720, _720)))); float _731 = spvFMul(_720, _727); float _732 = spvFMul(_722, _727); float _734 = spvFMul(_724, _727); float _736 = fma(_734, _463, fma(_732, _464, spvFMul(_465, _731))); float _747 = spvFMul(fast::max(_736, _736), 2.0); float _750 = spvFMul(as_type(cbuf_32.data[8u + buf3_dword_off]), 0.00390625); uint _754 = uint(in.fs_in_attr0.w) * 13u; float4 _759 = fs_img56.sample(fs_samp8, float2(fma(_609, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(_611, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _760 = _759.x; float _761 = _759.y; float _762 = _759.z; float _763 = spvFMul(_699.x, _750); float _765 = fma(-_351, _459, spvFMul(_734, _747)); float _767 = fma(-_343, _459, spvFMul(_732, _747)); float _769 = fma(-_334, _459, spvFMul(_731, _747)); float _780 = 1.0 / abs(1.0); float _782 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_763, 13.0), 0.5))); float _784 = fma(_767, _780, 1.5); float _785 = fma(_765, _780, 1.5); uint _791 = ((0u + ((_754 + 8u) * 16u)) + buf4_off) >> 2u; uint4 _804 = uint4(cbuf_36.data[_791 + 0u], cbuf_36.data[_791 + 1u], cbuf_36.data[_791 + 2u], cbuf_36.data[_791 + 3u]); uint _805 = _804.x; uint _806 = _804.y; uint _807 = _804.z; float4 _815 = fs_img88.sample(fs_samp20, float3(spvFSub(_785, 1.5), spvFSub(_784, 1.5), _769), level(_782)); uint _822 = ((0u + ((_754 + 9u) * 16u)) + buf4_off) >> 2u; uint4 _835 = uint4(cbuf_36.data[_822 + 0u], cbuf_36.data[_822 + 1u], cbuf_36.data[_822 + 2u], cbuf_36.data[_822 + 3u]); uint _843 = ((0u + ((_754 + 10u) * 16u)) + buf4_off) >> 2u; uint4 _856 = uint4(cbuf_36.data[_843 + 0u], cbuf_36.data[_843 + 1u], cbuf_36.data[_843 + 2u], cbuf_36.data[_843 + 3u]); uint _864 = ((0u + ((_754 + 11u) * 16u)) + buf4_off) >> 2u; uint4 _877 = uint4(cbuf_36.data[_864 + 0u], cbuf_36.data[_864 + 1u], cbuf_36.data[_864 + 2u], cbuf_36.data[_864 + 3u]); float4 _888 = fs_img80.sample(fs_samp20, float3(spvFSub(_785, 1.5), spvFSub(_784, 1.5), _769), level(_782)); float _889 = _888.x; float _890 = _888.y; float _891 = _888.z; float4 _902 = fs_img48.sample(fs_samp4, float2(fma(_609, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(_611, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); uint _926 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _930 = fast::clamp(spvFAdd(fma(_765, as_type(_630), fma(_767, as_type(_625), spvFMul(as_type(_631), _769))), 1.0), 0.0, 1.0); float _944 = spvFAdd(1.0, _736); bool _959 = (_762 == 0.0) && (_761 == 0.0); float _961 = fast::clamp(spvFMul(_944, _944), 0.0, 1.0); float _962 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_736, _736), 0.0, 1.0))))); float _972 = spvFMul(_961, _962); float _973 = _959 ? _760 : _762; float _974 = _959 ? _760 : _761; float _1019 = spvFMul(_763, _763); float _1026 = spvFMul(_930, _930); float _1050 = fast::max(0.0, spvFAdd(as_type(_835.w), fma(_731, as_type(_835.z), fma(_734, as_type(_835.x), spvFMul(_732, as_type(_835.y)))))); float _1051 = fast::max(0.0, spvFAdd(as_type(_856.w), fma(_731, as_type(_856.z), fma(_734, as_type(_856.x), spvFMul(_732, as_type(_856.y)))))); float _1052 = fast::max(0.0, spvFAdd(as_type(_877.w), fma(_731, as_type(_877.z), fma(_734, as_type(_877.x), spvFMul(_732, as_type(_877.y)))))); float _1063 = spvFMul(spvFMul(_902.w, in.fs_in_attr2.w), as_type(cbuf_36.data[((12u + ((_754 + 7u) * 16u)) + buf4_off) >> 2u])); bool _1067 = as_type(cbuf_32.data[22u + buf3_dword_off]) != 0.0; float _1090 = _1067 ? _1063 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_961, _962, -spvFMul(_760, _972)), _1019, _760), spvFMul(fma(as_type(_805), fma(-as_type(_806), _889, spvFMul(as_type(_807), _815.x)), spvFMul(as_type(_806), _889)), _1026)), spvFMul(as_type(cbuf_32.data[4u + buf3_dword_off]), as_type(cbuf_44.data[_926]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_961, _962, -spvFMul(_974, _972)), _1019, _974), spvFMul(fma(as_type(_805), fma(-as_type(_806), _890, spvFMul(as_type(_807), _815.y)), spvFMul(as_type(_806), _890)), _1026)), spvFMul(as_type(cbuf_32.data[5u + buf3_dword_off]), as_type(cbuf_44.data[_926]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_961, _962, -spvFMul(_973, _972)), _1019, _973), spvFMul(fma(as_type(_805), fma(-as_type(_806), _891, spvFMul(as_type(_807), _815.z)), spvFMul(as_type(_806), _891)), _1026)), spvFMul(as_type(cbuf_32.data[6u + buf3_dword_off]), as_type(cbuf_44.data[_926]))); out.frag_color5.w = _1067 ? _1063 : as_type(_804.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_760, _1050, _1050); out.frag_color4.y = fma(-_974, _1051, _1051); out.frag_color4.z = fma(-_973, _1052, _1052); out.frag_color4.w = _1067 ? _1063 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_760); out.frag_color3.y = sqrt(_974); out.frag_color3.z = sqrt(_973); out.frag_color3.w = _1067 ? _1063 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + ((_754 + 6u) * 16u)) + buf4_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_32.data[0u + buf3_dword_off]), _902.x); out.frag_color2.y = spvFMul(as_type(cbuf_32.data[1u + buf3_dword_off]), _902.y); out.frag_color2.z = spvFMul(as_type(cbuf_32.data[2u + buf3_dword_off]), _902.z); out.frag_color2.w = _1063; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_750, _763); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_36.data[((0u + ((_754 + 12u) * 16u)) + buf4_off) >> 2u]); out.frag_color1.w = _1090; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _734, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _732, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _731, 0.500488758087158203125); out.frag_color0.w = _1090; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xf7422e74 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[164]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_36 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_28 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_44 [[buffer(14)]], texture2d fs_img72 [[texture(0)]], texture2d fs_img64 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texturecube fs_img88 [[texture(3)]], texturecube fs_img80 [[texture(4)]], texture2d fs_img48 [[texture(5)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint _140 = uint(gl_FrontFacing); float _151 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _152 = spvFMul(in.fs_in_attr0.x, _151); float _154 = spvFMul(in.fs_in_attr0.y, _151); float _155 = spvFMul(in.fs_in_attr0.z, _151); float _167 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _169 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _171 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _175 = rsqrt(fma(_167, _167, fma(_169, _169, spvFMul(_171, _171)))); float _289 = 1.0 / fma(as_type(cbuf_40.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float _304 = fma(-fma(as_type(cbuf_40.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _289, as_type(cbuf_40.data[183u + buf0_dword_off])); float _307 = fma(-fma(as_type(cbuf_40.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))), _289, as_type(cbuf_40.data[187u + buf0_dword_off])); float _310 = fma(-fma(as_type(cbuf_40.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _289, as_type(cbuf_40.data[191u + buf0_dword_off])); bool _311 = 0u == _140; uint _324; uint _325; uint _326; if (_311) { _324 = as_type(fast::max(-_152, -_152)); _325 = as_type(fast::max(-_155, -_155)); _326 = as_type(fast::max(-_154, -_154)); } else { _324 = as_type(_152); _325 = as_type(_155); _326 = _140; } uint _329; if (!_311) { _329 = as_type(_154); } else { _329 = _326; } float4 _360 = fs_img72.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _389 = fs_img64.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[8u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[10u + buf1_dword_off])), fma(as_type(cbuf_24.data[9u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[11u + buf1_dword_off])))); float _395 = fma(2.0, _360.y, -1.0); float _396 = spvFMul(fma(2.0, _360.x, -1.0), fma(2.0, _360.w, -1.0)); float _405 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _406 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_396, _396), spvFMul(_395, _395)), 0.0, 1.0))); float _418 = fma(spvFMul(spvFMul(_171, _175), in.fs_in_attr1.w), _396, fma(spvFMul(in.fs_in_attr1.z, _405), _395, spvFMul(as_type(_325), _406))); float _421 = fma(spvFMul(spvFMul(_169, _175), in.fs_in_attr1.w), _396, fma(spvFMul(in.fs_in_attr1.y, _405), _395, spvFMul(as_type(_329), _406))); float _424 = fma(spvFMul(spvFMul(_167, _175), in.fs_in_attr1.w), _396, fma(spvFMul(in.fs_in_attr1.x, _405), _395, spvFMul(as_type(_324), _406))); float _444 = rsqrt(fma(_304, _304, fma(_307, _307, spvFMul(_310, _310)))); float _445 = rsqrt(fma(_424, _424, fma(_421, _421, spvFMul(_418, _418)))); float _450 = spvFMul(_418, _445); float _452 = spvFMul(_421, _445); float _455 = spvFMul(_424, _445); float _457 = fma(_455, spvFMul(_304, _444), fma(_452, spvFMul(_307, _444), spvFMul(spvFMul(_310, _444), _450))); float _468 = spvFMul(fast::max(_457, _457), 2.0); float _471 = spvFMul(as_type(cbuf_32.data[8u + buf2_dword_off]), 0.00390625); uint _475 = uint(in.fs_in_attr0.w) * 13u; float4 _480 = fs_img56.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _481 = _480.x; float _482 = _480.y; float _483 = _480.z; float _496 = spvFMul(_389.x, _471); float _498 = fma(-_304, _444, spvFMul(_455, _468)); float _500 = fma(-_307, _444, spvFMul(_452, _468)); float _502 = fma(-_310, _444, spvFMul(_450, _468)); float _514 = 1.0 / abs(1.0); float _516 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_496, 13.0), 0.5))); float _518 = fma(_500, _514, 1.5); float _519 = fma(_498, _514, 1.5); uint _525 = ((0u + ((_475 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _538 = uint4(cbuf_36.data[_525 + 0u], cbuf_36.data[_525 + 1u], cbuf_36.data[_525 + 2u], cbuf_36.data[_525 + 3u]); uint _539 = _538.x; uint _540 = _538.y; uint _541 = _538.z; float4 _549 = fs_img88.sample(fs_samp20, float3(spvFSub(_519, 1.5), spvFSub(_518, 1.5), _502), level(_516)); uint _556 = ((0u + ((_475 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _569 = uint4(cbuf_36.data[_556 + 0u], cbuf_36.data[_556 + 1u], cbuf_36.data[_556 + 2u], cbuf_36.data[_556 + 3u]); uint _577 = ((0u + ((_475 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _590 = uint4(cbuf_36.data[_577 + 0u], cbuf_36.data[_577 + 1u], cbuf_36.data[_577 + 2u], cbuf_36.data[_577 + 3u]); uint _598 = ((0u + ((_475 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _611 = uint4(cbuf_36.data[_598 + 0u], cbuf_36.data[_598 + 1u], cbuf_36.data[_598 + 2u], cbuf_36.data[_598 + 3u]); float4 _622 = fs_img80.sample(fs_samp20, float3(spvFSub(_519, 1.5), spvFSub(_518, 1.5), _502), level(_516)); float _623 = _622.x; float _624 = _622.y; float _625 = _622.z; float4 _636 = fs_img48.sample(fs_samp4, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); uint _662 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _667 = fast::clamp(spvFAdd(fma(_498, as_type(_324), fma(_500, as_type(_329), spvFMul(as_type(_325), _502))), 1.0), 0.0, 1.0); float _681 = spvFAdd(1.0, _457); bool _696 = (_483 == 0.0) && (_482 == 0.0); float _698 = fast::clamp(spvFMul(_681, _681), 0.0, 1.0); float _699 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_457, _457), 0.0, 1.0))))); float _709 = spvFMul(_698, _699); float _710 = _696 ? _481 : _483; float _711 = _696 ? _481 : _482; float _756 = spvFMul(_496, _496); float _763 = spvFMul(_667, _667); float _791 = fast::max(0.0, spvFAdd(as_type(_569.w), fma(_450, as_type(_569.z), fma(_455, as_type(_569.x), spvFMul(_452, as_type(_569.y)))))); float _792 = fast::max(0.0, spvFAdd(as_type(_590.w), fma(_450, as_type(_590.z), fma(_455, as_type(_590.x), spvFMul(_452, as_type(_590.y)))))); float _793 = fast::max(0.0, spvFAdd(as_type(_611.w), fma(_450, as_type(_611.z), fma(_455, as_type(_611.x), spvFMul(_452, as_type(_611.y)))))); float _804 = spvFMul(spvFMul(_636.w, in.fs_in_attr2.w), as_type(cbuf_36.data[((12u + ((_475 + 7u) * 16u)) + buf3_off) >> 2u])); bool _808 = as_type(cbuf_32.data[22u + buf2_dword_off]) != 0.0; float _833 = _808 ? _804 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_698, _699, -spvFMul(_481, _709)), _756, _481), spvFMul(fma(as_type(_539), fma(-as_type(_540), _623, spvFMul(as_type(_541), _549.x)), spvFMul(as_type(_540), _623)), _763)), spvFMul(as_type(cbuf_32.data[4u + buf2_dword_off]), as_type(cbuf_44.data[_662]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_698, _699, -spvFMul(_711, _709)), _756, _711), spvFMul(fma(as_type(_539), fma(-as_type(_540), _624, spvFMul(as_type(_541), _549.y)), spvFMul(as_type(_540), _624)), _763)), spvFMul(as_type(cbuf_32.data[5u + buf2_dword_off]), as_type(cbuf_44.data[_662]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_698, _699, -spvFMul(_710, _709)), _756, _710), spvFMul(fma(as_type(_539), fma(-as_type(_540), _625, spvFMul(as_type(_541), _549.z)), spvFMul(as_type(_540), _625)), _763)), spvFMul(as_type(cbuf_32.data[6u + buf2_dword_off]), as_type(cbuf_44.data[_662]))); out.frag_color5.w = _808 ? _804 : as_type(_538.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_481, _791, _791); out.frag_color4.y = fma(-_711, _792, _792); out.frag_color4.z = fma(-_710, _793, _793); out.frag_color4.w = _808 ? _804 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_481); out.frag_color3.y = sqrt(_711); out.frag_color3.z = sqrt(_710); out.frag_color3.w = _808 ? _804 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + ((_475 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_32.data[0u + buf2_dword_off]), _636.x); out.frag_color2.y = spvFMul(as_type(cbuf_32.data[1u + buf2_dword_off]), _636.y); out.frag_color2.z = spvFMul(as_type(cbuf_32.data[2u + buf2_dword_off]), _636.z); out.frag_color2.w = _804; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_471, _496); out.frag_color1.y = spvFMul(0.100000001490116119384765625, spvFMul(as_type(cbuf_28.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr2.y)); out.frag_color1.z = as_type(cbuf_36.data[((0u + ((_475 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _833; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _455, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _452, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _450, 0.500488758087158203125); out.frag_color0.w = _833; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x2c48fce0 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x2eb1916b [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[24]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf6_dword_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr3.x = in.vs_in_attr4.x; out.out_attr3.y = in.vs_in_attr4.y; out.out_attr3.z = in.vs_in_attr4.z; out.out_attr3.w = in.vs_in_attr4.w; uint _265 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; float _278 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _279 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _280 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _290 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _291 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _292 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _300 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _301 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _302 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _306 = ((0u + (_265 * 16u)) + buf7_off) >> 2u; uint4 _319 = uint4(cbuf_16.data[_306 + 0u], cbuf_16.data[_306 + 1u], cbuf_16.data[_306 + 2u], cbuf_16.data[_306 + 3u]); uint _320 = _319.x; uint _321 = _319.y; uint _322 = _319.z; uint _327 = ((0u + ((_265 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _340 = uint4(cbuf_16.data[_327 + 0u], cbuf_16.data[_327 + 1u], cbuf_16.data[_327 + 2u], cbuf_16.data[_327 + 3u]); uint _341 = _340.x; uint _342 = _340.y; uint _343 = _340.z; uint _348 = ((0u + ((_265 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _361 = uint4(cbuf_16.data[_348 + 0u], cbuf_16.data[_348 + 1u], cbuf_16.data[_348 + 2u], cbuf_16.data[_348 + 3u]); uint _362 = _361.x; uint _363 = _361.y; uint _364 = _361.z; float _389 = spvFSub(fma(as_type(_320), in.vs_in_attr0.x, fma(as_type(_321), in.vs_in_attr0.y, fma(as_type(_322), in.vs_in_attr0.z, as_type(_319.w)))), as_type(cbuf_20.data[183u + buf6_dword_off])); float _391 = spvFSub(fma(as_type(_341), in.vs_in_attr0.x, fma(as_type(_342), in.vs_in_attr0.y, fma(as_type(_343), in.vs_in_attr0.z, as_type(_340.w)))), as_type(cbuf_20.data[187u + buf6_dword_off])); float _393 = spvFSub(fma(as_type(_362), in.vs_in_attr0.x, fma(as_type(_363), in.vs_in_attr0.y, fma(as_type(_364), in.vs_in_attr0.z, as_type(_361.w)))), as_type(cbuf_20.data[191u + buf6_dword_off])); float _415 = fma(as_type(cbuf_20.data[200u + buf6_dword_off]), _389, fma(as_type(cbuf_20.data[201u + buf6_dword_off]), _391, fma(as_type(cbuf_20.data[202u + buf6_dword_off]), _393, as_type(cbuf_20.data[203u + buf6_dword_off])))); float _417 = fma(as_type(cbuf_20.data[204u + buf6_dword_off]), _389, fma(as_type(cbuf_20.data[205u + buf6_dword_off]), _391, fma(as_type(cbuf_20.data[206u + buf6_dword_off]), _393, as_type(cbuf_20.data[207u + buf6_dword_off])))); float _419 = fma(as_type(cbuf_20.data[208u + buf6_dword_off]), _389, fma(as_type(cbuf_20.data[209u + buf6_dword_off]), _391, fma(as_type(cbuf_20.data[210u + buf6_dword_off]), _393, as_type(cbuf_20.data[211u + buf6_dword_off])))); float _421 = fma(as_type(cbuf_20.data[212u + buf6_dword_off]), _389, fma(as_type(cbuf_20.data[213u + buf6_dword_off]), _391, fma(as_type(cbuf_20.data[214u + buf6_dword_off]), _393, as_type(cbuf_20.data[215u + buf6_dword_off])))); out.gl_Position.x = _415; out.gl_Position.y = _417; out.gl_Position.z = _419; out.gl_Position.w = _421; out.out_attr5.x = _415; out.out_attr5.y = _417; out.out_attr5.z = _419; out.out_attr5.w = _421; out.out_attr1.x = fma(as_type(_320), _278, fma(as_type(_321), _279, spvFMul(_280, as_type(_322)))); out.out_attr1.y = fma(as_type(_341), _278, fma(as_type(_342), _279, spvFMul(_280, as_type(_343)))); out.out_attr1.z = fma(as_type(_362), _278, fma(as_type(_363), _279, spvFMul(_280, as_type(_364)))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr2.x = fma(as_type(_320), _290, fma(as_type(_321), _291, spvFMul(_292, as_type(_322)))); out.out_attr2.y = fma(as_type(_341), _290, fma(as_type(_342), _291, spvFMul(_292, as_type(_343)))); out.out_attr2.z = fma(as_type(_362), _290, fma(as_type(_363), _291, spvFMul(_292, as_type(_364)))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = fma(as_type(cbuf_8.data[4u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.z))))), as_type(cbuf_8.data[6u + buf8_dword_off])); out.out_attr4.w = fma(as_type(cbuf_8.data[5u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.w))))), as_type(cbuf_8.data[7u + buf8_dword_off])); out.out_attr0.x = fma(as_type(_320), _300, fma(as_type(_321), _301, spvFMul(_302, as_type(_322)))); out.out_attr0.y = fma(as_type(_341), _300, fma(as_type(_342), _301, spvFMul(_302, as_type(_343)))); out.out_attr0.z = fma(as_type(_362), _300, fma(as_type(_363), _301, spvFMul(_302, as_type(_364)))); out.out_attr0.w = 0.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[168]; }; struct fs_cbuf_block_f32_3 { uint data[104]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_28 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img68 [[texture(0)]], texture2d fs_img100 [[texture(1)]], texture2d fs_img60 [[texture(2)]], texture2d fs_img92 [[texture(3)]], texture2d fs_img52 [[texture(4)]], texture2d fs_img84 [[texture(5)]], texturecube fs_img116 [[texture(6)]], texturecube fs_img108 [[texture(7)]], texture2d fs_img44 [[texture(8)]], texture2d fs_img76 [[texture(9)]], sampler fs_samp16 [[sampler(0)]], sampler fs_samp8 [[sampler(1)]], sampler fs_samp20 [[sampler(2)]], sampler fs_samp4 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u); uint _139 = uint(gl_FrontFacing); float _150 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _151 = spvFMul(in.fs_in_attr0.x, _150); float _153 = spvFMul(in.fs_in_attr0.y, _150); float _154 = spvFMul(in.fs_in_attr0.z, _150); float _174 = spvFMul(fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)), in.fs_in_attr1.w); float _175 = spvFMul(fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)), in.fs_in_attr1.w); float _176 = spvFMul(fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)), in.fs_in_attr1.w); float _194 = spvFMul(fma(_153, in.fs_in_attr2.z, -spvFMul(_154, in.fs_in_attr2.y)), in.fs_in_attr2.w); float _195 = spvFMul(fma(_154, in.fs_in_attr2.x, -spvFMul(_151, in.fs_in_attr2.z)), in.fs_in_attr2.w); float _196 = spvFMul(fma(_151, in.fs_in_attr2.y, -spvFMul(_153, in.fs_in_attr2.x)), in.fs_in_attr2.w); float _301 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr5.w)))); float _316 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr5.w)))), _301, as_type(cbuf_36.data[183u + buf0_dword_off])); float _319 = fma(-fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr5.w)))), _301, as_type(cbuf_36.data[187u + buf0_dword_off])); float _322 = fma(-fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr5.w)))), _301, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _323 = 0u == _139; uint _328; if (_323) { _328 = as_type(fast::max(-_151, -_151)); } else { _328 = _139; } uint _337; uint _338; if (_323) { _337 = as_type(fast::max(-_154, -_154)); _338 = as_type(fast::max(-_153, -_153)); } else { _337 = as_type(_151); _338 = as_type(_154); } uint _341; uint _342; uint _343; if (!_323) { _341 = _337; _342 = as_type(_153); _343 = _338; } else { _341 = _328; _342 = _338; _343 = _337; } float4 _400 = fs_img68.sample(fs_samp16, float2(fma(as_type(cbuf_24.data[12u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[14u + buf1_dword_off])), fma(as_type(cbuf_24.data[13u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _408 = fs_img100.sample(fs_samp16, float2(fma(in.fs_in_attr4.z, as_type(cbuf_24.data[40u + buf1_dword_off]), as_type(cbuf_24.data[42u + buf1_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_24.data[41u + buf1_dword_off]), as_type(cbuf_24.data[43u + buf1_dword_off])))); float4 _459 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _460 = _459.x; float _473 = fma(2.0, _400.y, -1.0); float _474 = spvFMul(fma(2.0, _400.x, -1.0), fma(2.0, _400.w, -1.0)); float _475 = fma(2.0, _408.y, -1.0); float _476 = spvFMul(fma(2.0, _408.x, -1.0), fma(2.0, _408.w, -1.0)); float _497 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _499 = rsqrt(fma(in.fs_in_attr2.x, in.fs_in_attr2.x, fma(in.fs_in_attr2.y, in.fs_in_attr2.y, spvFMul(in.fs_in_attr2.z, in.fs_in_attr2.z)))); float _501 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_474, _474), spvFMul(_473, _473)), 0.0, 1.0))); float _502 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_476, _476), spvFMul(_475, _475)), 0.0, 1.0))); float _504 = rsqrt(fma(_174, _174, fma(_175, _175, spvFMul(_176, _176)))); float _506 = rsqrt(fma(_194, _194, fma(_195, _195, spvFMul(_196, _196)))); float _528 = fma(spvFMul(_176, _504), _474, fma(spvFMul(in.fs_in_attr1.z, _497), _473, spvFMul(as_type(_343), _501))); float _538 = fma(spvFMul(_175, _504), _474, fma(spvFMul(in.fs_in_attr1.y, _497), _473, spvFMul(as_type(_342), _501))); float _542 = fma(spvFMul(_174, _504), _474, fma(spvFMul(in.fs_in_attr1.x, _497), _473, spvFMul(as_type(_341), _501))); float _545 = fma(in.fs_in_attr3.w, spvFSub(fma(spvFMul(_196, _506), _476, fma(spvFMul(in.fs_in_attr2.z, _499), _475, spvFMul(as_type(_343), _502))), _528), _528); float _576 = fma(in.fs_in_attr3.w, spvFSub(fma(spvFMul(_195, _506), _476, fma(spvFMul(in.fs_in_attr2.y, _499), _475, spvFMul(as_type(_342), _502))), _538), _538); float _579 = fma(in.fs_in_attr3.w, spvFSub(fma(spvFMul(_194, _506), _476, fma(spvFMul(in.fs_in_attr2.x, _499), _475, spvFMul(as_type(_341), _502))), _542), _542); float _583 = rsqrt(fma(_316, _316, fma(_319, _319, spvFMul(_322, _322)))); float _584 = rsqrt(fma(_579, _579, fma(_576, _576, spvFMul(_545, _545)))); float _589 = spvFMul(_545, _584); float _591 = spvFMul(_576, _584); float _594 = spvFMul(_579, _584); float _608 = fma(_594, spvFMul(_316, _583), fma(_591, spvFMul(_319, _583), spvFMul(spvFMul(_322, _583), _589))); float4 _615 = fs_img52.sample(fs_samp8, float2(fma(as_type(cbuf_24.data[4u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[6u + buf1_dword_off])), fma(as_type(cbuf_24.data[5u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[7u + buf1_dword_off])))); float _616 = _615.x; float _617 = _615.y; float _618 = _615.z; float4 _623 = fs_img84.sample(fs_samp8, float2(fma(in.fs_in_attr4.z, as_type(cbuf_24.data[32u + buf1_dword_off]), as_type(cbuf_24.data[34u + buf1_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_24.data[33u + buf1_dword_off]), as_type(cbuf_24.data[35u + buf1_dword_off])))); float _624 = _623.x; float _625 = _623.y; float _626 = _623.z; float _629 = spvFMul(fast::max(_608, _608), 2.0); float _658 = spvFMul(as_type(cbuf_28.data[8u + buf2_dword_off]), 0.00390625); uint _662 = uint(in.fs_in_attr0.w) * 13u; float _663 = spvFMul(fma(in.fs_in_attr3.w, spvFSub(fs_img92.sample(fs_samp8, float2(fma(in.fs_in_attr4.z, as_type(cbuf_24.data[36u + buf1_dword_off]), as_type(cbuf_24.data[38u + buf1_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_24.data[37u + buf1_dword_off]), as_type(cbuf_24.data[39u + buf1_dword_off])))).x, _460), _460), _658); float _665 = fma(-_316, _583, spvFMul(_594, _629)); float _667 = fma(-_319, _583, spvFMul(_591, _629)); float _669 = fma(-_322, _583, spvFMul(_589, _629)); float _681 = 1.0 / abs(1.0); float _683 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_663, 13.0), 0.5))); float _685 = fma(_667, _681, 1.5); float _686 = fma(_665, _681, 1.5); uint _692 = ((0u + ((_662 + 8u) * 16u)) + buf3_off) >> 2u; uint4 _705 = uint4(cbuf_32.data[_692 + 0u], cbuf_32.data[_692 + 1u], cbuf_32.data[_692 + 2u], cbuf_32.data[_692 + 3u]); uint _706 = _705.x; uint _707 = _705.y; uint _708 = _705.z; float4 _716 = fs_img116.sample(fs_samp20, float3(spvFSub(_686, 1.5), spvFSub(_685, 1.5), _669), level(_683)); uint _723 = ((0u + ((_662 + 9u) * 16u)) + buf3_off) >> 2u; uint4 _736 = uint4(cbuf_32.data[_723 + 0u], cbuf_32.data[_723 + 1u], cbuf_32.data[_723 + 2u], cbuf_32.data[_723 + 3u]); uint _744 = ((0u + ((_662 + 10u) * 16u)) + buf3_off) >> 2u; uint4 _757 = uint4(cbuf_32.data[_744 + 0u], cbuf_32.data[_744 + 1u], cbuf_32.data[_744 + 2u], cbuf_32.data[_744 + 3u]); uint _765 = ((0u + ((_662 + 11u) * 16u)) + buf3_off) >> 2u; uint4 _778 = uint4(cbuf_32.data[_765 + 0u], cbuf_32.data[_765 + 1u], cbuf_32.data[_765 + 2u], cbuf_32.data[_765 + 3u]); float4 _801 = fs_img108.sample(fs_samp20, float3(spvFSub(_686, 1.5), spvFSub(_685, 1.5), _669), level(_683)); float _802 = _801.x; float _803 = _801.y; float _804 = _801.z; float4 _809 = fs_img44.sample(fs_samp4, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[0u + buf1_dword_off]), as_type(cbuf_24.data[2u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[1u + buf1_dword_off]), as_type(cbuf_24.data[3u + buf1_dword_off])))); float _810 = _809.x; float _811 = _809.y; float _812 = _809.z; float _813 = _809.w; float4 _818 = fs_img76.sample(fs_samp4, float2(fma(in.fs_in_attr4.z, as_type(cbuf_24.data[28u + buf1_dword_off]), as_type(cbuf_24.data[30u + buf1_dword_off])), fma(in.fs_in_attr4.w, as_type(cbuf_24.data[29u + buf1_dword_off]), as_type(cbuf_24.data[31u + buf1_dword_off])))); uint _842 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _846 = fast::clamp(spvFAdd(fma(_665, as_type(_341), fma(_667, as_type(_342), spvFMul(as_type(_343), _669))), 1.0), 0.0, 1.0); bool _861 = (_618 == 0.0) && (_617 == 0.0); bool _863 = (_626 == 0.0) && (_625 == 0.0); float _864 = spvFAdd(1.0, _608); float _867 = _861 ? _616 : _618; float _868 = _861 ? _616 : _617; float _884 = fast::clamp(spvFMul(_864, _864), 0.0, 1.0); float _885 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_608, _608), 0.0, 1.0))))); float _898 = spvFMul(_884, _885); float _899 = fma(in.fs_in_attr3.w, spvFSub(_624, _616), _616); float _900 = fma(in.fs_in_attr3.w, spvFSub(_863 ? _624 : _625, _868), _868); float _901 = fma(in.fs_in_attr3.w, spvFSub(_863 ? _624 : _626, _867), _867); float _945 = spvFMul(_663, _663); float _952 = spvFMul(_846, _846); float _982 = fast::max(0.0, spvFAdd(as_type(_736.w), fma(_589, as_type(_736.z), fma(_594, as_type(_736.x), spvFMul(_591, as_type(_736.y)))))); float _983 = fast::max(0.0, spvFAdd(as_type(_757.w), fma(_589, as_type(_757.z), fma(_594, as_type(_757.x), spvFMul(_591, as_type(_757.y)))))); float _984 = fast::max(0.0, spvFAdd(as_type(_778.w), fma(_589, as_type(_778.z), fma(_594, as_type(_778.x), spvFMul(_591, as_type(_778.y)))))); float _995 = spvFMul(fma(in.fs_in_attr3.w, spvFSub(_818.w, _813), _813), as_type(cbuf_32.data[((12u + ((_662 + 7u) * 16u)) + buf3_off) >> 2u])); bool _999 = as_type(cbuf_28.data[22u + buf2_dword_off]) != 0.0; float _1022 = _999 ? _995 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_884, _885, -spvFMul(_898, _899)), _945, _899), spvFMul(fma(as_type(_706), fma(-as_type(_707), _802, spvFMul(as_type(_708), _716.x)), spvFMul(as_type(_707), _802)), _952)), spvFMul(as_type(cbuf_28.data[4u + buf2_dword_off]), as_type(cbuf_40.data[_842]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_884, _885, -spvFMul(_898, _900)), _945, _900), spvFMul(fma(as_type(_706), fma(-as_type(_707), _803, spvFMul(as_type(_708), _716.y)), spvFMul(as_type(_707), _803)), _952)), spvFMul(as_type(cbuf_28.data[5u + buf2_dword_off]), as_type(cbuf_40.data[_842]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_884, _885, -spvFMul(_898, _901)), _945, _901), spvFMul(fma(as_type(_706), fma(-as_type(_707), _804, spvFMul(as_type(_708), _716.z)), spvFMul(as_type(_707), _804)), _952)), spvFMul(as_type(cbuf_28.data[6u + buf2_dword_off]), as_type(cbuf_40.data[_842]))); out.frag_color5.w = _999 ? _995 : as_type(_705.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_899, _982, _982); out.frag_color4.y = fma(-_900, _983, _983); out.frag_color4.z = fma(-_901, _984, _984); out.frag_color4.w = _999 ? _995 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_899); out.frag_color3.y = sqrt(_900); out.frag_color3.z = sqrt(_901); out.frag_color3.w = _999 ? _995 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_662 + 6u) * 16u)) + buf3_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_28.data[0u + buf2_dword_off]), fma(in.fs_in_attr3.w, spvFSub(_818.x, _810), _810)); out.frag_color2.y = spvFMul(as_type(cbuf_28.data[1u + buf2_dword_off]), fma(in.fs_in_attr3.w, spvFSub(_818.y, _811), _811)); out.frag_color2.z = spvFMul(as_type(cbuf_28.data[2u + buf2_dword_off]), fma(in.fs_in_attr3.w, spvFSub(_818.z, _812), _812)); out.frag_color2.w = _995; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_658, _663); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_32.data[((0u + ((_662 + 12u) * 16u)) + buf3_off) >> 2u]); out.frag_color1.w = _1022; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _594, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _591, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _589, 0.500488758087158203125); out.frag_color0.w = _1022; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x6a40bf0c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _163 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _169 = ((0u + ((_163 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _182 = uint4(cbuf_16.data[_169 + 0u], cbuf_16.data[_169 + 1u], cbuf_16.data[_169 + 2u], cbuf_16.data[_169 + 3u]); uint _183 = _182.x; uint _184 = _182.y; uint _185 = _182.z; uint _190 = ((0u + ((_163 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _203 = uint4(cbuf_16.data[_190 + 0u], cbuf_16.data[_190 + 1u], cbuf_16.data[_190 + 2u], cbuf_16.data[_190 + 3u]); uint _204 = _203.x; uint _205 = _203.y; uint _206 = _203.z; uint _211 = ((0u + (_163 * 16u)) + buf7_off) >> 2u; uint4 _224 = uint4(cbuf_16.data[_211 + 0u], cbuf_16.data[_211 + 1u], cbuf_16.data[_211 + 2u], cbuf_16.data[_211 + 3u]); uint _225 = _224.x; uint _226 = _224.y; uint _227 = _224.z; float _326 = spvFSub(fma(as_type(_183), in.vs_in_attr0.x, fma(as_type(_184), in.vs_in_attr0.y, fma(as_type(_185), in.vs_in_attr0.z, as_type(_182.w)))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _330 = spvFSub(fma(as_type(_204), in.vs_in_attr0.x, fma(as_type(_205), in.vs_in_attr0.y, fma(as_type(_206), in.vs_in_attr0.z, as_type(_203.w)))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _344 = spvFSub(fma(as_type(_225), in.vs_in_attr0.x, fma(as_type(_226), in.vs_in_attr0.y, fma(as_type(_227), in.vs_in_attr0.z, as_type(_224.w)))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _354 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _326, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _356 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _326, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _358 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _326, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _360 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _344, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _330, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _326, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _354; out.gl_Position.y = _356; out.gl_Position.z = _358; out.gl_Position.w = _360; float _387 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _390 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _393 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _411 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _412 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_225), _412, fma(as_type(_226), _395, spvFMul(as_type(_227), _390))); out.out_attr0.y = fma(as_type(_204), _412, fma(as_type(_205), _395, spvFMul(as_type(_206), _390))); out.out_attr0.z = fma(as_type(_183), _412, fma(as_type(_184), _395, spvFMul(as_type(_185), _390))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_225), _411, fma(as_type(_226), _393, spvFMul(as_type(_227), _387))); out.out_attr1.y = fma(as_type(_204), _411, fma(as_type(_205), _393, spvFMul(as_type(_206), _387))); out.out_attr1.z = fma(as_type(_183), _411, fma(as_type(_184), _393, spvFMul(as_type(_185), _387))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _354; out.out_attr3.y = _356; out.out_attr3.z = _358; out.out_attr3.w = _360; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[8]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; constant uint _120 = {}; constant uint _121 = {}; constant uint _122 = {}; constant uint _123 = {}; constant uint _124 = {}; constant uint _125 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_40 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_36 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_32 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_28 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_44 [[buffer(14)]], texture2d fs_img96 [[texture(0)]], texture2d fs_img48 [[texture(1)]], texture2d fs_img72 [[texture(2)]], texture2d fs_img64 [[texture(3)]], texture2d fs_img56 [[texture(4)]], texturecube fs_img88 [[texture(5)]], texturecube fs_img80 [[texture(6)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _155 = uint(gl_FrontFacing); float _244 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _266 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _277 = 1.0 / in.fs_in_attr3.w; float _280 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _307 = rsqrt(fma(_280, _280, fma(_266, _266, spvFMul(_244, _244)))); float _317 = spvFMul(0.25, spvFMul(as_type(cbuf_40.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr3.x), _277, 0.5))); float _320 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _332 = 1.0 / fma(as_type(cbuf_40.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float4 _337 = fs_img96.sample(fs_samp20, float2(_317, spvFMul(0.25, spvFMul(as_type(cbuf_40.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr3.y), _277, 0.5))))); float _339 = spvFMul(in.fs_in_attr0.x, _320); float _341 = spvFMul(in.fs_in_attr0.y, _320); float _343 = spvFMul(in.fs_in_attr0.z, _320); float _346 = spvFMul(spvFMul(_244, _307), in.fs_in_attr1.w); float _350 = fma(-fma(as_type(cbuf_40.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _332, as_type(cbuf_40.data[183u + buf0_dword_off])); float _354 = fma(-fma(as_type(cbuf_40.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))), _332, as_type(cbuf_40.data[187u + buf0_dword_off])); float _358 = fma(-fma(as_type(cbuf_40.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_40.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_40.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_40.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _332, as_type(cbuf_40.data[191u + buf0_dword_off])); bool _360 = 0u == _155; uint _373; uint _374; uint _375; if (_360) { _373 = as_type(fast::max(-_341, -_341)); _374 = as_type(fast::max(-_339, -_339)); _375 = as_type(fast::max(-_343, -_343)); } else { _373 = as_type(_341); _374 = _155; _375 = as_type(_339); } uint _378; uint _379; if (!_360) { _378 = as_type(_343); _379 = _375; } else { _378 = _375; _379 = _374; } float _380 = spvFAdd(-0.5, _337.w); uint _398 = uint(in.fs_in_attr0.w) * 13u; float4 _416 = fs_img48.sample(fs_samp4, float2(fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[2u + buf1_dword_off])), fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[3u + buf1_dword_off])))); float _417 = _416.x; uint _418 = as_type(_417); float _419 = _416.y; uint _420 = as_type(_419); float _421 = _416.z; uint _422 = as_type(_421); float _443 = spvFMul(_416.w, in.fs_in_attr2.w); float _445 = spvFMul(_443, as_type(cbuf_36.data[((12u + ((_398 + 7u) * 16u)) + buf2_off) >> 2u])); uint _446 = as_type(_445); float _448 = fma(as_type(cbuf_32.data[21u + buf3_dword_off]), _380, _443); bool _453 = (as_type(cbuf_32.data[20u + buf3_dword_off]) > _448) || (_445 == 0.0); bool _454 = !_453; uint _1000; uint _1001; uint _1002; uint _1003; uint _1004; uint _1005; uint _1006; uint _1007; uint _1008; uint _1009; uint _1010; uint _1011; uint _1012; uint _1013; uint _1014; uint _1015; uint _1016; uint _1017; uint _1018; bool _1019; uint _1020; uint _1021; uint _1022; uint _1023; if (!_453) { float4 _480 = fs_img72.sample(fs_samp16, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _509 = fs_img64.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _515 = fma(2.0, _480.y, -1.0); float _516 = spvFMul(fma(2.0, _480.x, -1.0), fma(2.0, _480.w, -1.0)); float _525 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _526 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_516, _516), spvFMul(_515, _515)), 0.0, 1.0))); float _538 = fma(_346, _516, fma(spvFMul(in.fs_in_attr1.z, _525), _515, spvFMul(as_type(_378), _526))); float _541 = fma(spvFMul(spvFMul(_266, _307), in.fs_in_attr1.w), _516, fma(spvFMul(in.fs_in_attr1.y, _525), _515, spvFMul(as_type(_373), _526))); float _544 = fma(spvFMul(spvFMul(_280, _307), in.fs_in_attr1.w), _516, fma(spvFMul(in.fs_in_attr1.x, _525), _515, spvFMul(as_type(_379), _526))); float _561 = rsqrt(fma(_350, _350, fma(_354, _354, spvFMul(_358, _358)))); float _562 = rsqrt(fma(_544, _544, fma(_541, _541, spvFMul(_538, _538)))); float _567 = spvFMul(_538, _562); float _569 = spvFMul(_541, _562); float _573 = spvFMul(_544, _562); float _575 = fma(_573, spvFMul(_350, _561), fma(_569, spvFMul(_354, _561), spvFMul(spvFMul(_358, _561), _567))); float _583 = spvFMul(fast::max(_575, _575), 2.0); float _586 = spvFMul(as_type(cbuf_32.data[8u + buf3_dword_off]), 0.00390625); float4 _595 = fs_img56.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _596 = _595.x; float _597 = _595.y; float _598 = _595.z; float _599 = spvFMul(_509.x, _586); float _601 = fma(-_350, _561, spvFMul(_573, _583)); float _603 = fma(-_354, _561, spvFMul(_569, _583)); float _605 = fma(-_358, _561, spvFMul(_567, _583)); float _616 = 1.0 / abs(1.0); float _618 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_599, 13.0), 0.5))); float _620 = fma(_603, _616, 1.5); float _621 = fma(_601, _616, 1.5); uint _625 = ((0u + ((_398 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _638 = uint4(cbuf_36.data[_625 + 0u], cbuf_36.data[_625 + 1u], cbuf_36.data[_625 + 2u], cbuf_36.data[_625 + 3u]); uint _639 = _638.x; uint _640 = _638.y; uint _641 = _638.z; float4 _649 = fs_img88.sample(fs_samp20, float3(spvFSub(_621, 1.5), spvFSub(_620, 1.5), _605), level(_618)); uint _656 = ((0u + ((_398 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _669 = uint4(cbuf_36.data[_656 + 0u], cbuf_36.data[_656 + 1u], cbuf_36.data[_656 + 2u], cbuf_36.data[_656 + 3u]); uint _677 = ((0u + ((_398 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _690 = uint4(cbuf_36.data[_677 + 0u], cbuf_36.data[_677 + 1u], cbuf_36.data[_677 + 2u], cbuf_36.data[_677 + 3u]); uint _698 = ((0u + ((_398 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _711 = uint4(cbuf_36.data[_698 + 0u], cbuf_36.data[_698 + 1u], cbuf_36.data[_698 + 2u], cbuf_36.data[_698 + 3u]); float4 _722 = fs_img80.sample(fs_samp20, float3(spvFSub(_621, 1.5), spvFSub(_620, 1.5), _605), level(_618)); float _723 = _722.x; float _724 = _722.y; float _725 = _722.z; uint _735 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _739 = fast::clamp(spvFAdd(fma(_601, as_type(_379), fma(_603, as_type(_373), spvFMul(as_type(_378), _605))), 1.0), 0.0, 1.0); float _746 = spvFAdd(1.0, _575); bool _758 = (_598 == 0.0) && (_597 == 0.0); float _760 = fast::clamp(spvFMul(_746, _746), 0.0, 1.0); float _761 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_575, _575), 0.0, 1.0))))); float _771 = spvFMul(_760, _761); float _772 = _758 ? _596 : _598; float _774 = _758 ? _596 : _597; float _818 = spvFMul(_599, _599); float _820 = fma(as_type(_639), fma(-as_type(_640), _723, spvFMul(as_type(_641), _649.x)), spvFMul(as_type(_640), _723)); float _826 = spvFMul(_739, _739); float _828 = fma(_567, as_type(_669.z), fma(_573, as_type(_669.x), spvFMul(_569, as_type(_669.y)))); float _845 = spvFAdd(as_type(_711.w), fma(_567, as_type(_711.z), fma(_573, as_type(_711.x), spvFMul(_569, as_type(_711.y))))); float _850 = spvFMul(fma(fma(_760, _761, -spvFMul(_774, _771)), _818, _774), spvFMul(fma(as_type(_639), fma(-as_type(_640), _724, spvFMul(as_type(_641), _649.y)), spvFMul(as_type(_640), _724)), _826)); float _853 = fast::max(0.0, spvFAdd(as_type(_669.w), _828)); float _854 = fast::max(0.0, spvFAdd(as_type(_690.w), fma(_567, as_type(_690.z), fma(_573, as_type(_690.x), spvFMul(_569, as_type(_690.y)))))); float _855 = fast::max(0.0, _845); float _859 = spvFMul(as_type(cbuf_32.data[4u + buf3_dword_off]), as_type(cbuf_44.data[_735])); float _866 = spvFMul(as_type(cbuf_32.data[6u + buf3_dword_off]), as_type(cbuf_44.data[_735])); float _878 = spvFMul(as_type(cbuf_28.data[4u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u)]), in.fs_in_attr2.y); float _880 = fma(-_596, _853, _853); float _890 = spvFMul(_850, spvFMul(as_type(cbuf_32.data[5u + buf3_dword_off]), as_type(cbuf_44.data[_735]))); float _892 = spvFMul(spvFMul(fma(fma(_760, _761, -spvFMul(_772, _771)), _818, _772), spvFMul(fma(as_type(_639), fma(-as_type(_640), _725, spvFMul(as_type(_641), _649.z)), spvFMul(as_type(_640), _725)), _826)), _866); bool _895 = _454 && (!_453); uint _897; if (_895) { _897 = _398 + 6u; } else { _897 = as_type(_859); } uint _943; uint _944; uint _945; uint _946; uint _947; uint _948; uint _949; uint _950; uint _951; uint _952; uint _953; uint _954; uint _955; if (_895) { bool _900 = as_type(cbuf_32.data[22u + buf3_dword_off]) != 0.0; _943 = cbuf_36.data[((0u + ((_398 + 12u) * 16u)) + buf2_off) >> 2u]; _944 = as_type(_900 ? _445 : as_type(_638.w)); _945 = as_type(fma(0.5, _567, 0.500488758087158203125)); _946 = as_type(fma(0.5, _569, 0.500488758087158203125)); _947 = as_type(fma(0.5, _573, 0.500488758087158203125)); _948 = as_type(_900 ? _445 : 0.0); _949 = as_type(spvFMul(0.100000001490116119384765625, _878)); _950 = as_type(spvFMul(_586, _599)); _951 = as_type(_900 ? _445 : spvFMul(0.0039215688593685626983642578125, float(cbuf_36.data[((0u + (_897 * 16u)) + buf2_off) >> 2u]))); _952 = as_type(sqrt(_596)); _953 = as_type(sqrt(_774)); _954 = as_type(sqrt(_772)); _955 = as_type(_900 ? _445 : 1.0); } else { _943 = as_type(_820); _944 = as_type(_828); _945 = as_type(_569); _946 = _422; _947 = _420; _948 = _418; _949 = as_type(_586); _950 = as_type(_845); _951 = as_type(_866); _952 = as_type(_855); _953 = as_type(_774); _954 = as_type(_772); _955 = as_type(_850); } uint _979; uint _980; uint _981; uint _982; uint _983; uint _984; uint _985; uint _986; uint _987; uint _988; uint _989; uint _990; uint _991; uint _992; uint _993; uint _994; uint _995; uint _996; uint _997; uint _998; uint _999; if (_454 && (!_895)) { _979 = as_type(_892); _980 = as_type(_892); _981 = as_type(_890); _982 = as_type(_878); _983 = as_type(_890); _984 = as_type(_880); _985 = as_type(_878); _986 = as_type(_892); _987 = as_type(_890); _988 = as_type(_878); _989 = as_type(_880); _990 = as_type(_880); _991 = as_type(_890); _992 = as_type(_878); _993 = as_type(_880); _994 = as_type(_878); _995 = as_type(_890); _996 = as_type(_892); _997 = as_type(_892); _998 = as_type(_880); _999 = as_type(_878); } else { _979 = _943; _980 = as_type(spvFMul(as_type(cbuf_32.data[2u + buf3_dword_off]), _421)); _981 = as_type(spvFMul(as_type(cbuf_32.data[1u + buf3_dword_off]), _419)); _982 = as_type(spvFMul(as_type(cbuf_32.data[0u + buf3_dword_off]), _417)); _983 = as_type(fma(-_774, _854, _854)); _984 = _944; _985 = as_type(spvFMul(spvFMul(fma(fma(_760, _761, -spvFMul(_596, _771)), _818, _596), spvFMul(_820, _826)), _859)); _986 = _945; _987 = _946; _988 = _947; _989 = _948; _990 = _446; _991 = _949; _992 = _950; _993 = _951; _994 = _952; _995 = _953; _996 = _954; _997 = as_type(fma(-_772, _855, _855)); _998 = _955; _999 = as_type(_880); } _1000 = _986; _1001 = _987; _1002 = _988; _1003 = _989; _1004 = _979; _1005 = _991; _1006 = _992; _1007 = _990; _1008 = _980; _1009 = _981; _1010 = _982; _1011 = _993; _1012 = _996; _1013 = _995; _1014 = _994; _1015 = _998; _1016 = _997; _1017 = _983; _1018 = _999; _1019 = _454; _1020 = _984; _1021 = as_type(_892); _1022 = as_type(_890); _1023 = _985; } else { _1000 = as_type(_448); _1001 = _422; _1002 = _420; _1003 = _418; _1004 = _120; _1005 = as_type(in.fs_in_attr4.y); _1006 = as_type(_354); _1007 = _446; _1008 = _122; _1009 = _123; _1010 = _124; _1011 = as_type(_350); _1012 = as_type(_380); _1013 = as_type(_346); _1014 = as_type(_358); _1015 = _378; _1016 = as_type(in.fs_in_attr1.y); _1017 = _125; _1018 = _373; _1019 = true; _1020 = as_type(_317); _1021 = _379; _1022 = _121; _1023 = as_type(in.fs_in_attr2.w); } if (!_1019) { discard_fragment(); } out.frag_color5.x = as_type(_1023); out.frag_color5.y = as_type(_1022); out.frag_color5.z = as_type(_1021); out.frag_color5.w = as_type(_1020); if (!_1019) { discard_fragment(); } out.frag_color4.x = as_type(_1018); out.frag_color4.y = as_type(_1017); out.frag_color4.z = as_type(_1016); out.frag_color4.w = as_type(_1015); if (!_1019) { discard_fragment(); } out.frag_color3.x = as_type(_1014); out.frag_color3.y = as_type(_1013); out.frag_color3.z = as_type(_1012); out.frag_color3.w = as_type(_1011); if (!_1019) { discard_fragment(); } out.frag_color2.x = as_type(_1010); out.frag_color2.y = as_type(_1009); out.frag_color2.z = as_type(_1008); out.frag_color2.w = as_type(_1007); if (!_1019) { discard_fragment(); } out.frag_color1.x = as_type(_1006); out.frag_color1.y = as_type(_1005); out.frag_color1.z = as_type(_1004); out.frag_color1.w = as_type(_1003); if (_453) { discard_fragment(); } out.frag_color0.x = as_type(_1002); out.frag_color0.y = as_type(_1001); out.frag_color0.z = as_type(_1000); out.frag_color0.w = as_type(_1003); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x97f2d384 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _163 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _169 = ((0u + ((_163 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _182 = uint4(cbuf_16.data[_169 + 0u], cbuf_16.data[_169 + 1u], cbuf_16.data[_169 + 2u], cbuf_16.data[_169 + 3u]); uint _183 = _182.x; uint _184 = _182.y; uint _185 = _182.z; uint _190 = ((0u + ((_163 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _203 = uint4(cbuf_16.data[_190 + 0u], cbuf_16.data[_190 + 1u], cbuf_16.data[_190 + 2u], cbuf_16.data[_190 + 3u]); uint _204 = _203.x; uint _205 = _203.y; uint _206 = _203.z; uint _211 = ((0u + (_163 * 16u)) + buf6_off) >> 2u; uint4 _224 = uint4(cbuf_16.data[_211 + 0u], cbuf_16.data[_211 + 1u], cbuf_16.data[_211 + 2u], cbuf_16.data[_211 + 3u]); uint _225 = _224.x; uint _226 = _224.y; uint _227 = _224.z; float _326 = spvFSub(fma(as_type(_183), in.vs_in_attr0.x, fma(as_type(_184), in.vs_in_attr0.y, fma(as_type(_185), in.vs_in_attr0.z, as_type(_182.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _330 = spvFSub(fma(as_type(_204), in.vs_in_attr0.x, fma(as_type(_205), in.vs_in_attr0.y, fma(as_type(_206), in.vs_in_attr0.z, as_type(_203.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _344 = spvFSub(fma(as_type(_225), in.vs_in_attr0.x, fma(as_type(_226), in.vs_in_attr0.y, fma(as_type(_227), in.vs_in_attr0.z, as_type(_224.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _354 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _326, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _356 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _326, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _358 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _326, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _360 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _344, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _330, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _326, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _354; out.gl_Position.y = _356; out.gl_Position.z = _358; out.gl_Position.w = _360; float _387 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _390 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _393 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _411 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _412 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_225), _412, fma(as_type(_226), _395, spvFMul(as_type(_227), _390))); out.out_attr0.y = fma(as_type(_204), _412, fma(as_type(_205), _395, spvFMul(as_type(_206), _390))); out.out_attr0.z = fma(as_type(_183), _412, fma(as_type(_184), _395, spvFMul(as_type(_185), _390))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(as_type(_225), _411, fma(as_type(_226), _393, spvFMul(as_type(_227), _387))); out.out_attr1.y = fma(as_type(_204), _411, fma(as_type(_205), _393, spvFMul(as_type(_206), _387))); out.out_attr1.z = fma(as_type(_183), _411, fma(as_type(_184), _393, spvFMul(as_type(_185), _387))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _354; out.out_attr3.y = _356; out.out_attr3.z = _358; out.out_attr3.w = _360; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[216]; }; struct fs_cbuf_block_f32_1 { uint data[100]; }; struct fs_cbuf_block_f32_2 { uint data[104]; }; struct fs_cbuf_block_f32_3 { uint data[164]; }; struct fs_cbuf_block_f32_4 { uint data[44]; }; constant uint _115 = {}; constant uint _116 = {}; constant uint _117 = {}; constant uint _118 = {}; constant uint _119 = {}; constant uint _120 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_28 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], texture2d fs_img92 [[texture(0)]], texture2d fs_img44 [[texture(1)]], texture2d fs_img68 [[texture(2)]], texture2d fs_img60 [[texture(3)]], texture2d fs_img52 [[texture(4)]], texturecube fs_img84 [[texture(5)]], texturecube fs_img76 [[texture(6)]], sampler fs_samp20 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp8 [[sampler(3)]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u); uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _147 = uint(gl_FrontFacing); float _236 = fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x)); float _258 = fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z)); float _269 = 1.0 / in.fs_in_attr3.w; float _272 = fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y)); float _299 = rsqrt(fma(_272, _272, fma(_258, _258, spvFMul(_236, _236)))); float _309 = spvFMul(0.25, spvFMul(as_type(cbuf_36.data[4u + buf0_dword_off]), fma(spvFMul(0.5, in.fs_in_attr3.x), _269, 0.5))); float _311 = spvFMul(0.25, spvFMul(as_type(cbuf_36.data[5u + buf0_dword_off]), fma(spvFMul(-0.5, in.fs_in_attr3.y), _269, 0.5))); float _313 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _322 = fma(as_type(cbuf_36.data[24u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[25u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[26u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[27u + buf0_dword_off]), in.fs_in_attr3.w)))); float _326 = 1.0 / fma(as_type(cbuf_36.data[32u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[33u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[34u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[35u + buf0_dword_off]), in.fs_in_attr3.w)))); float4 _331 = fs_img92.sample(fs_samp20, float2(_309, _311)); float _333 = spvFMul(in.fs_in_attr0.x, _313); float _335 = spvFMul(in.fs_in_attr0.y, _313); float _337 = spvFMul(in.fs_in_attr0.z, _313); float _343 = fma(-fma(as_type(cbuf_36.data[20u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[21u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[22u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[23u + buf0_dword_off]), in.fs_in_attr3.w)))), _326, as_type(cbuf_36.data[183u + buf0_dword_off])); float _347 = fma(-_322, _326, as_type(cbuf_36.data[187u + buf0_dword_off])); float _351 = fma(-fma(as_type(cbuf_36.data[28u + buf0_dword_off]), in.fs_in_attr3.x, fma(as_type(cbuf_36.data[29u + buf0_dword_off]), in.fs_in_attr3.y, fma(as_type(cbuf_36.data[30u + buf0_dword_off]), in.fs_in_attr3.z, spvFMul(as_type(cbuf_36.data[31u + buf0_dword_off]), in.fs_in_attr3.w)))), _326, as_type(cbuf_36.data[191u + buf0_dword_off])); bool _352 = 0u == _147; uint _365; uint _366; uint _367; if (_352) { _365 = as_type(fast::max(-_335, -_335)); _366 = as_type(fast::max(-_333, -_333)); _367 = as_type(fast::max(-_337, -_337)); } else { _365 = as_type(_335); _366 = _147; _367 = as_type(_333); } uint _370; uint _371; if (!_352) { _370 = as_type(_337); _371 = _367; } else { _370 = _367; _371 = _366; } float _372 = spvFAdd(-0.5, _331.w); uint _404 = uint(in.fs_in_attr0.w) * 13u; float4 _421 = fs_img44.sample(fs_samp4, float2(fma(as_type(cbuf_24.data[0u + buf1_dword_off]), in.fs_in_attr4.x, as_type(cbuf_24.data[2u + buf1_dword_off])), fma(as_type(cbuf_24.data[1u + buf1_dword_off]), in.fs_in_attr4.y, as_type(cbuf_24.data[3u + buf1_dword_off])))); float _422 = _421.x; uint _423 = as_type(_422); float _424 = _421.y; uint _425 = as_type(_424); float _426 = _421.z; uint _427 = as_type(_426); float _428 = _421.w; uint _434 = ((12u + ((_404 + 7u) * 16u)) + buf2_off) >> 2u; float _448 = spvFMul(_428, in.fs_in_attr2.w); float _450 = spvFMul(_448, as_type(cbuf_32.data[_434])); bool _456 = (as_type(cbuf_28.data[20u + buf3_dword_off]) > fma(as_type(cbuf_28.data[21u + buf3_dword_off]), _372, _448)) || (_450 == 0.0); bool _457 = !_456; uint _980; uint _981; uint _982; uint _983; uint _984; uint _985; uint _986; uint _987; uint _988; uint _989; uint _990; uint _991; uint _992; uint _993; uint _994; uint _995; uint _996; uint _997; uint _998; bool _999; uint _1000; uint _1001; uint _1002; uint _1003; if (!_456) { float4 _483 = fs_img68.sample(fs_samp16, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[12u + buf1_dword_off]), as_type(cbuf_24.data[14u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[13u + buf1_dword_off]), as_type(cbuf_24.data[15u + buf1_dword_off])))); float4 _512 = fs_img60.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[8u + buf1_dword_off]), as_type(cbuf_24.data[10u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[9u + buf1_dword_off]), as_type(cbuf_24.data[11u + buf1_dword_off])))); float _518 = fma(2.0, _483.y, -1.0); float _519 = spvFMul(fma(2.0, _483.x, -1.0), fma(2.0, _483.w, -1.0)); float _528 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _529 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_519, _519), spvFMul(_518, _518)), 0.0, 1.0))); float _541 = fma(spvFMul(spvFMul(_236, _299), in.fs_in_attr1.w), _519, fma(spvFMul(in.fs_in_attr1.z, _528), _518, spvFMul(as_type(_370), _529))); float _544 = fma(spvFMul(spvFMul(_258, _299), in.fs_in_attr1.w), _519, fma(spvFMul(in.fs_in_attr1.y, _528), _518, spvFMul(as_type(_365), _529))); float _547 = fma(spvFMul(spvFMul(_272, _299), in.fs_in_attr1.w), _519, fma(spvFMul(in.fs_in_attr1.x, _528), _518, spvFMul(as_type(_371), _529))); float _551 = rsqrt(fma(_343, _343, fma(_347, _347, spvFMul(_351, _351)))); float _552 = rsqrt(fma(_547, _547, fma(_544, _544, spvFMul(_541, _541)))); float _557 = spvFMul(_541, _552); float _559 = spvFMul(_544, _552); float _562 = spvFMul(_547, _552); float _564 = fma(_562, spvFMul(_343, _551), fma(_559, spvFMul(_347, _551), spvFMul(spvFMul(_351, _551), _557))); float _572 = spvFMul(fast::max(_564, _564), 2.0); float _575 = spvFMul(as_type(cbuf_28.data[8u + buf3_dword_off]), 0.00390625); float4 _583 = fs_img52.sample(fs_samp8, float2(fma(in.fs_in_attr4.x, as_type(cbuf_24.data[4u + buf1_dword_off]), as_type(cbuf_24.data[6u + buf1_dword_off])), fma(in.fs_in_attr4.y, as_type(cbuf_24.data[5u + buf1_dword_off]), as_type(cbuf_24.data[7u + buf1_dword_off])))); float _584 = _583.x; float _586 = _583.y; float _587 = _583.z; float _588 = spvFMul(_512.x, _575); float _590 = fma(-_343, _551, spvFMul(_562, _572)); float _592 = fma(-_347, _551, spvFMul(_559, _572)); float _594 = fma(-_351, _551, spvFMul(_557, _572)); float _605 = 1.0 / abs(1.0); float _607 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_588, 13.0), 0.5))); float _609 = fma(_592, _605, 1.5); float _610 = fma(_590, _605, 1.5); uint _614 = ((0u + ((_404 + 8u) * 16u)) + buf2_off) >> 2u; uint4 _627 = uint4(cbuf_32.data[_614 + 0u], cbuf_32.data[_614 + 1u], cbuf_32.data[_614 + 2u], cbuf_32.data[_614 + 3u]); uint _628 = _627.x; uint _629 = _627.y; uint _630 = _627.z; float4 _638 = fs_img84.sample(fs_samp20, float3(spvFSub(_610, 1.5), spvFSub(_609, 1.5), _594), level(_607)); uint _645 = ((0u + ((_404 + 9u) * 16u)) + buf2_off) >> 2u; uint4 _658 = uint4(cbuf_32.data[_645 + 0u], cbuf_32.data[_645 + 1u], cbuf_32.data[_645 + 2u], cbuf_32.data[_645 + 3u]); uint _666 = ((0u + ((_404 + 10u) * 16u)) + buf2_off) >> 2u; uint4 _679 = uint4(cbuf_32.data[_666 + 0u], cbuf_32.data[_666 + 1u], cbuf_32.data[_666 + 2u], cbuf_32.data[_666 + 3u]); uint _687 = ((0u + ((_404 + 11u) * 16u)) + buf2_off) >> 2u; uint4 _700 = uint4(cbuf_32.data[_687 + 0u], cbuf_32.data[_687 + 1u], cbuf_32.data[_687 + 2u], cbuf_32.data[_687 + 3u]); float4 _711 = fs_img76.sample(fs_samp20, float3(spvFSub(_610, 1.5), spvFSub(_609, 1.5), _594), level(_607)); float _712 = _711.x; float _713 = _711.y; float _714 = _711.z; float _722 = fast::clamp(spvFAdd(fma(_590, as_type(_371), fma(_592, as_type(_365), spvFMul(as_type(_370), _594))), 1.0), 0.0, 1.0); uint _723 = 12u + (extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u); float _732 = spvFAdd(1.0, _564); bool _744 = (_587 == 0.0) && (_586 == 0.0); float _746 = fast::clamp(spvFMul(_732, _732), 0.0, 1.0); float _747 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_564, _564), 0.0, 1.0))))); float _757 = spvFMul(_746, _747); float _758 = _744 ? _584 : _587; float _760 = _744 ? _584 : _586; float _799 = fma(_746, _747, -spvFMul(_584, _757)); float _805 = spvFMul(_588, _588); float _812 = spvFMul(_722, _722); float _831 = spvFMul(fma(_799, _805, _584), spvFMul(fma(as_type(_628), fma(-as_type(_629), _712, spvFMul(as_type(_630), _638.x)), spvFMul(as_type(_629), _712)), _812)); float _835 = fast::max(0.0, spvFAdd(as_type(_658.w), fma(_557, as_type(_658.z), fma(_562, as_type(_658.x), spvFMul(_559, as_type(_658.y)))))); float _836 = fast::max(0.0, spvFAdd(as_type(_679.w), fma(_557, as_type(_679.z), fma(_562, as_type(_679.x), spvFMul(_559, as_type(_679.y)))))); float _837 = fast::max(0.0, spvFAdd(as_type(_700.w), fma(_557, as_type(_700.z), fma(_562, as_type(_700.x), spvFMul(_559, as_type(_700.y)))))); float _844 = spvFMul(as_type(cbuf_28.data[5u + buf3_dword_off]), as_type(cbuf_40.data[_723])); float _848 = spvFMul(as_type(cbuf_28.data[6u + buf3_dword_off]), as_type(cbuf_40.data[_723])); float _860 = fma(-_584, _835, _835); float _872 = spvFMul(spvFMul(fma(fma(_746, _747, -spvFMul(_758, _757)), _805, _758), spvFMul(fma(as_type(_628), fma(-as_type(_629), _714, spvFMul(as_type(_630), _638.z)), spvFMul(as_type(_629), _714)), _812)), _848); bool _875 = _457 && (!_456); uint _876; if (_875) { _876 = 0u; } else { _876 = _630; } uint _921; uint _922; uint _923; uint _924; uint _925; uint _926; uint _927; uint _928; uint _929; uint _930; uint _931; uint _932; uint _933; if (_875) { bool _880 = as_type(cbuf_28.data[22u + buf3_dword_off]) != 0.0; _921 = as_type(_880 ? _450 : as_type(_627.w)); _922 = as_type(fma(0.5, _557, 0.500488758087158203125)); _923 = as_type(fma(0.5, _559, 0.500488758087158203125)); _924 = as_type(fma(0.5, _562, 0.500488758087158203125)); _925 = as_type(_880 ? _450 : 0.0); _926 = cbuf_32.data[((0u + ((_404 + 12u) * 16u)) + buf2_off) >> 2u]; _927 = as_type(spvFMul(_575, _588)); _928 = as_type(_880 ? _450 : spvFMul(0.0039215688593685626983642578125, float(cbuf_32.data[((0u + ((_404 + 6u) * 16u)) + buf2_off) >> 2u]))); _929 = as_type(sqrt(_584)); _930 = as_type(_450); _931 = as_type(sqrt(_760)); _932 = as_type(sqrt(_758)); _933 = as_type(_880 ? _450 : 1.0); } else { _921 = as_type(_584); _922 = as_type(_799); _923 = _427; _924 = _425; _925 = _423; _926 = cbuf_40.data[_723]; _927 = as_type(_848); _928 = as_type(_844); _929 = as_type(_837); _930 = _404; _931 = as_type(_760); _932 = as_type(_758); _933 = as_type(_831); } uint _958; uint _959; uint _960; uint _961; uint _962; uint _963; uint _964; uint _965; uint _966; uint _967; uint _968; uint _969; uint _970; uint _971; uint _972; uint _973; uint _974; uint _975; uint _976; uint _977; uint _978; uint _979; if (_457 && (!_875)) { _958 = as_type(_450); _959 = as_type(_872); _960 = as_type(_450); _961 = as_type(_588); _962 = as_type(_872); _963 = as_type(_450); _964 = as_type(_450); _965 = as_type(_588); _966 = as_type(_860); _967 = as_type(_872); _968 = as_type(_450); _969 = as_type(_588); _970 = as_type(_860); _971 = as_type(_872); _972 = as_type(_588); _973 = as_type(_860); _974 = as_type(_588); _975 = as_type(_860); _976 = as_type(_450); _977 = as_type(_872); _978 = as_type(_860); _979 = as_type(_588); } else { _958 = _876; _959 = as_type(spvFMul(as_type(cbuf_28.data[2u + buf3_dword_off]), _426)); _960 = as_type(spvFMul(as_type(cbuf_28.data[1u + buf3_dword_off]), _424)); _961 = as_type(spvFMul(as_type(cbuf_28.data[0u + buf3_dword_off]), _422)); _962 = as_type(fma(-_758, _837, _837)); _963 = as_type(fma(-_760, _836, _836)); _964 = as_type(spvFMul(spvFMul(fma(fma(_746, _747, -spvFMul(_760, _757)), _805, _760), spvFMul(fma(as_type(_628), fma(-as_type(_629), _713, spvFMul(as_type(_630), _638.y)), spvFMul(as_type(_629), _713)), _812)), _844)); _965 = as_type(spvFMul(_831, spvFMul(as_type(cbuf_28.data[4u + buf3_dword_off]), as_type(cbuf_40.data[_723])))); _966 = _921; _967 = _922; _968 = _923; _969 = _924; _970 = _925; _971 = _926; _972 = _927; _973 = _928; _974 = _929; _975 = _930; _976 = _931; _977 = _932; _978 = _933; _979 = as_type(_860); } _980 = _967; _981 = _968; _982 = _969; _983 = _970; _984 = _971; _985 = _958; _986 = _972; _987 = _975; _988 = _959; _989 = _960; _990 = _961; _991 = _973; _992 = _977; _993 = _976; _994 = _974; _995 = _978; _996 = _962; _997 = _963; _998 = _979; _999 = _457; _1000 = _966; _1001 = as_type(_872); _1002 = _964; _1003 = _965; } else { _980 = as_type(_428); _981 = _427; _982 = _425; _983 = _423; _984 = cbuf_32.data[_434]; _985 = _115; _986 = as_type(_347); _987 = _404; _988 = _116; _989 = _117; _990 = _118; _991 = as_type(_343); _992 = as_type(in.fs_in_attr1.z); _993 = as_type(_372); _994 = as_type(in.fs_in_attr4.x); _995 = _370; _996 = _119; _997 = _120; _998 = _365; _999 = true; _1000 = as_type(_322); _1001 = _371; _1002 = as_type(_311); _1003 = as_type(_309); } if (!_999) { discard_fragment(); } out.frag_color5.x = as_type(_1003); out.frag_color5.y = as_type(_1002); out.frag_color5.z = as_type(_1001); out.frag_color5.w = as_type(_1000); if (!_999) { discard_fragment(); } out.frag_color4.x = as_type(_998); out.frag_color4.y = as_type(_997); out.frag_color4.z = as_type(_996); out.frag_color4.w = as_type(_995); if (!_999) { discard_fragment(); } out.frag_color3.x = as_type(_994); out.frag_color3.y = as_type(_993); out.frag_color3.z = as_type(_992); out.frag_color3.w = as_type(_991); if (!_999) { discard_fragment(); } out.frag_color2.x = as_type(_990); out.frag_color2.y = as_type(_989); out.frag_color2.z = as_type(_988); out.frag_color2.w = as_type(_987); if (!_999) { discard_fragment(); } out.frag_color1.x = as_type(_986); out.frag_color1.y = as_type(_985); out.frag_color1.z = as_type(_984); out.frag_color1.w = as_type(_983); if (_456) { discard_fragment(); } out.frag_color0.x = as_type(_982); out.frag_color0.y = as_type(_981); out.frag_color0.z = as_type(_980); out.frag_color0.w = as_type(_983); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4efb29f6 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _171 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf5_off) >> 2u]) * 3u; uint _177 = ((0u + ((_171 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _190 = uint4(cbuf_16.data[_177 + 0u], cbuf_16.data[_177 + 1u], cbuf_16.data[_177 + 2u], cbuf_16.data[_177 + 3u]); uint _191 = _190.x; uint _192 = _190.y; uint _193 = _190.z; uint _198 = ((0u + ((_171 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _211 = uint4(cbuf_16.data[_198 + 0u], cbuf_16.data[_198 + 1u], cbuf_16.data[_198 + 2u], cbuf_16.data[_198 + 3u]); uint _212 = _211.x; uint _213 = _211.y; uint _214 = _211.z; uint _219 = ((0u + (_171 * 16u)) + buf6_off) >> 2u; uint4 _232 = uint4(cbuf_16.data[_219 + 0u], cbuf_16.data[_219 + 1u], cbuf_16.data[_219 + 2u], cbuf_16.data[_219 + 3u]); uint _233 = _232.x; uint _234 = _232.y; uint _235 = _232.z; float _334 = spvFSub(fma(as_type(_191), in.vs_in_attr0.x, fma(as_type(_192), in.vs_in_attr0.y, fma(as_type(_193), in.vs_in_attr0.z, as_type(_190.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _338 = spvFSub(fma(as_type(_212), in.vs_in_attr0.x, fma(as_type(_213), in.vs_in_attr0.y, fma(as_type(_214), in.vs_in_attr0.z, as_type(_211.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _352 = spvFSub(fma(as_type(_233), in.vs_in_attr0.x, fma(as_type(_234), in.vs_in_attr0.y, fma(as_type(_235), in.vs_in_attr0.z, as_type(_232.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _362 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _334, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _364 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _334, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _366 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _334, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _368 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _334, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _362; out.gl_Position.y = _364; out.gl_Position.z = _366; out.gl_Position.w = _368; float _395 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _398 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _401 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _403 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _419 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _420 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_233), _420, fma(as_type(_234), _403, spvFMul(as_type(_235), _398))); out.out_attr0.y = fma(as_type(_212), _420, fma(as_type(_213), _403, spvFMul(as_type(_214), _398))); out.out_attr0.z = fma(as_type(_191), _420, fma(as_type(_192), _403, spvFMul(as_type(_193), _398))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_233), _419, fma(as_type(_234), _401, spvFMul(as_type(_235), _395))); out.out_attr1.y = fma(as_type(_212), _419, fma(as_type(_213), _401, spvFMul(as_type(_214), _395))); out.out_attr1.z = fma(as_type(_191), _419, fma(as_type(_192), _401, spvFMul(as_type(_193), _395))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _362; out.out_attr3.y = _364; out.out_attr3.z = _366; out.out_attr3.w = _368; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x5695664b [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr3.x = in.vs_in_attr4.x; out.out_attr3.y = in.vs_in_attr4.y; out.out_attr3.z = in.vs_in_attr4.z; out.out_attr3.w = in.vs_in_attr4.w; float _199 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _200 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _201 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _211 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _212 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _213 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _221 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _222 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _223 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _232 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf5_off) >> 2u]) * 3u; uint _238 = ((0u + (_232 * 16u)) + buf6_off) >> 2u; uint4 _251 = uint4(cbuf_16.data[_238 + 0u], cbuf_16.data[_238 + 1u], cbuf_16.data[_238 + 2u], cbuf_16.data[_238 + 3u]); uint _252 = _251.x; uint _253 = _251.y; uint _254 = _251.z; uint _259 = ((0u + ((_232 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _272 = uint4(cbuf_16.data[_259 + 0u], cbuf_16.data[_259 + 1u], cbuf_16.data[_259 + 2u], cbuf_16.data[_259 + 3u]); uint _273 = _272.x; uint _274 = _272.y; uint _275 = _272.z; uint _280 = ((0u + ((_232 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _293 = uint4(cbuf_16.data[_280 + 0u], cbuf_16.data[_280 + 1u], cbuf_16.data[_280 + 2u], cbuf_16.data[_280 + 3u]); uint _294 = _293.x; uint _295 = _293.y; uint _296 = _293.z; float _397 = spvFSub(fma(as_type(_252), in.vs_in_attr0.x, fma(as_type(_253), in.vs_in_attr0.y, fma(as_type(_254), in.vs_in_attr0.z, as_type(_251.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _399 = spvFSub(fma(as_type(_273), in.vs_in_attr0.x, fma(as_type(_274), in.vs_in_attr0.y, fma(as_type(_275), in.vs_in_attr0.z, as_type(_272.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _401 = spvFSub(fma(as_type(_294), in.vs_in_attr0.x, fma(as_type(_295), in.vs_in_attr0.y, fma(as_type(_296), in.vs_in_attr0.z, as_type(_293.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _423 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _397, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _401, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _425 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _397, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _401, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _427 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _397, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _401, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _429 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _397, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _401, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _423; out.gl_Position.y = _425; out.gl_Position.z = _427; out.gl_Position.w = _429; out.out_attr5.x = _423; out.out_attr5.y = _425; out.out_attr5.z = _427; out.out_attr5.w = _429; out.out_attr0.x = fma(as_type(_252), _221, fma(as_type(_253), _222, spvFMul(_223, as_type(_254)))); out.out_attr0.y = fma(as_type(_273), _221, fma(as_type(_274), _222, spvFMul(_223, as_type(_275)))); out.out_attr0.z = fma(as_type(_294), _221, fma(as_type(_295), _222, spvFMul(_223, as_type(_296)))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_252), _199, fma(as_type(_253), _200, spvFMul(_201, as_type(_254)))); out.out_attr1.y = fma(as_type(_273), _199, fma(as_type(_274), _200, spvFMul(_201, as_type(_275)))); out.out_attr1.z = fma(as_type(_294), _199, fma(as_type(_295), _200, spvFMul(_201, as_type(_296)))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr2.x = fma(as_type(_252), _211, fma(as_type(_253), _212, spvFMul(_213, as_type(_254)))); out.out_attr2.y = fma(as_type(_273), _211, fma(as_type(_274), _212, spvFMul(_213, as_type(_275)))); out.out_attr2.z = fma(as_type(_294), _211, fma(as_type(_295), _212, spvFMul(_213, as_type(_296)))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = fma(as_type(cbuf_8.data[4u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.z))))), as_type(cbuf_8.data[6u + buf8_dword_off])); out.out_attr4.w = fma(as_type(cbuf_8.data[5u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.w))))), as_type(cbuf_8.data[7u + buf8_dword_off])); out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4efb29f6 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _171 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf6_off) >> 2u]) * 3u; uint _177 = ((0u + ((_171 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _190 = uint4(cbuf_16.data[_177 + 0u], cbuf_16.data[_177 + 1u], cbuf_16.data[_177 + 2u], cbuf_16.data[_177 + 3u]); uint _191 = _190.x; uint _192 = _190.y; uint _193 = _190.z; uint _198 = ((0u + ((_171 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _211 = uint4(cbuf_16.data[_198 + 0u], cbuf_16.data[_198 + 1u], cbuf_16.data[_198 + 2u], cbuf_16.data[_198 + 3u]); uint _212 = _211.x; uint _213 = _211.y; uint _214 = _211.z; uint _219 = ((0u + (_171 * 16u)) + buf7_off) >> 2u; uint4 _232 = uint4(cbuf_16.data[_219 + 0u], cbuf_16.data[_219 + 1u], cbuf_16.data[_219 + 2u], cbuf_16.data[_219 + 3u]); uint _233 = _232.x; uint _234 = _232.y; uint _235 = _232.z; float _334 = spvFSub(fma(as_type(_191), in.vs_in_attr0.x, fma(as_type(_192), in.vs_in_attr0.y, fma(as_type(_193), in.vs_in_attr0.z, as_type(_190.w)))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _338 = spvFSub(fma(as_type(_212), in.vs_in_attr0.x, fma(as_type(_213), in.vs_in_attr0.y, fma(as_type(_214), in.vs_in_attr0.z, as_type(_211.w)))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _352 = spvFSub(fma(as_type(_233), in.vs_in_attr0.x, fma(as_type(_234), in.vs_in_attr0.y, fma(as_type(_235), in.vs_in_attr0.z, as_type(_232.w)))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _362 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _334, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _364 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _334, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _366 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _334, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _368 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _334, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _362; out.gl_Position.y = _364; out.gl_Position.z = _366; out.gl_Position.w = _368; float _395 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _398 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _401 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _403 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _419 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _420 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_233), _420, fma(as_type(_234), _403, spvFMul(as_type(_235), _398))); out.out_attr0.y = fma(as_type(_212), _420, fma(as_type(_213), _403, spvFMul(as_type(_214), _398))); out.out_attr0.z = fma(as_type(_191), _420, fma(as_type(_192), _403, spvFMul(as_type(_193), _398))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_233), _419, fma(as_type(_234), _401, spvFMul(as_type(_235), _395))); out.out_attr1.y = fma(as_type(_212), _419, fma(as_type(_213), _401, spvFMul(as_type(_214), _395))); out.out_attr1.z = fma(as_type(_191), _419, fma(as_type(_192), _401, spvFMul(as_type(_193), _395))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _362; out.out_attr3.y = _364; out.out_attr3.z = _366; out.out_attr3.w = _368; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4efb29f6 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf5_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u); uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _171 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf5_off) >> 2u]) * 3u; uint _177 = ((0u + ((_171 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _190 = uint4(cbuf_16.data[_177 + 0u], cbuf_16.data[_177 + 1u], cbuf_16.data[_177 + 2u], cbuf_16.data[_177 + 3u]); uint _191 = _190.x; uint _192 = _190.y; uint _193 = _190.z; uint _198 = ((0u + ((_171 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _211 = uint4(cbuf_16.data[_198 + 0u], cbuf_16.data[_198 + 1u], cbuf_16.data[_198 + 2u], cbuf_16.data[_198 + 3u]); uint _212 = _211.x; uint _213 = _211.y; uint _214 = _211.z; uint _219 = ((0u + (_171 * 16u)) + buf6_off) >> 2u; uint4 _232 = uint4(cbuf_16.data[_219 + 0u], cbuf_16.data[_219 + 1u], cbuf_16.data[_219 + 2u], cbuf_16.data[_219 + 3u]); uint _233 = _232.x; uint _234 = _232.y; uint _235 = _232.z; float _334 = spvFSub(fma(as_type(_191), in.vs_in_attr0.x, fma(as_type(_192), in.vs_in_attr0.y, fma(as_type(_193), in.vs_in_attr0.z, as_type(_190.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _338 = spvFSub(fma(as_type(_212), in.vs_in_attr0.x, fma(as_type(_213), in.vs_in_attr0.y, fma(as_type(_214), in.vs_in_attr0.z, as_type(_211.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _352 = spvFSub(fma(as_type(_233), in.vs_in_attr0.x, fma(as_type(_234), in.vs_in_attr0.y, fma(as_type(_235), in.vs_in_attr0.z, as_type(_232.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _362 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _334, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _364 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _334, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _366 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _334, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _368 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _352, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _338, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _334, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _362; out.gl_Position.y = _364; out.gl_Position.z = _366; out.gl_Position.w = _368; float _395 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _398 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _401 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _403 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _419 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _420 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_233), _420, fma(as_type(_234), _403, spvFMul(as_type(_235), _398))); out.out_attr0.y = fma(as_type(_212), _420, fma(as_type(_213), _403, spvFMul(as_type(_214), _398))); out.out_attr0.z = fma(as_type(_191), _420, fma(as_type(_192), _403, spvFMul(as_type(_193), _398))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_233), _419, fma(as_type(_234), _401, spvFMul(as_type(_235), _395))); out.out_attr1.y = fma(as_type(_212), _419, fma(as_type(_213), _401, spvFMul(as_type(_214), _395))); out.out_attr1.z = fma(as_type(_191), _419, fma(as_type(_192), _401, spvFMul(as_type(_193), _395))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _362; out.out_attr3.y = _364; out.out_attr3.z = _366; out.out_attr3.w = _368; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x38236b29 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x725b4d00 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[216]; }; struct vs_cbuf_block_f32_2 { uint data[24]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; int4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]]) { main0_out out = {}; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u); uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; out.out_attr3.x = in.vs_in_attr4.x; out.out_attr3.y = in.vs_in_attr4.y; out.out_attr3.z = in.vs_in_attr4.z; out.out_attr3.w = in.vs_in_attr4.w; uint _275 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[1u], 16u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; float _288 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _289 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _290 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _300 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _301 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _302 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _310 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _311 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _312 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _316 = ((0u + (_275 * 16u)) + buf8_off) >> 2u; uint4 _329 = uint4(cbuf_16.data[_316 + 0u], cbuf_16.data[_316 + 1u], cbuf_16.data[_316 + 2u], cbuf_16.data[_316 + 3u]); uint _330 = _329.x; uint _331 = _329.y; uint _332 = _329.z; uint _337 = ((0u + ((_275 + 1u) * 16u)) + buf8_off) >> 2u; uint4 _350 = uint4(cbuf_16.data[_337 + 0u], cbuf_16.data[_337 + 1u], cbuf_16.data[_337 + 2u], cbuf_16.data[_337 + 3u]); uint _351 = _350.x; uint _352 = _350.y; uint _353 = _350.z; uint _358 = ((0u + ((_275 + 2u) * 16u)) + buf8_off) >> 2u; uint4 _371 = uint4(cbuf_16.data[_358 + 0u], cbuf_16.data[_358 + 1u], cbuf_16.data[_358 + 2u], cbuf_16.data[_358 + 3u]); uint _372 = _371.x; uint _373 = _371.y; uint _374 = _371.z; float _399 = spvFSub(fma(as_type(_330), in.vs_in_attr0.x, fma(as_type(_331), in.vs_in_attr0.y, fma(as_type(_332), in.vs_in_attr0.z, as_type(_329.w)))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _401 = spvFSub(fma(as_type(_351), in.vs_in_attr0.x, fma(as_type(_352), in.vs_in_attr0.y, fma(as_type(_353), in.vs_in_attr0.z, as_type(_350.w)))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _403 = spvFSub(fma(as_type(_372), in.vs_in_attr0.x, fma(as_type(_373), in.vs_in_attr0.y, fma(as_type(_374), in.vs_in_attr0.z, as_type(_371.w)))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _425 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _401, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _403, as_type(cbuf_20.data[203u + buf7_dword_off])))); float _427 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _401, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _403, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _429 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _401, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _403, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _431 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _399, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _401, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _403, as_type(cbuf_20.data[215u + buf7_dword_off])))); out.gl_Position.x = _425; out.gl_Position.y = _427; out.gl_Position.z = _429; out.gl_Position.w = _431; out.out_attr5.x = _425; out.out_attr5.y = _427; out.out_attr5.z = _429; out.out_attr5.w = _431; out.out_attr1.x = fma(as_type(_330), _288, fma(as_type(_331), _289, spvFMul(as_type(_332), _290))); out.out_attr1.y = fma(as_type(_351), _288, fma(as_type(_352), _289, spvFMul(as_type(_353), _290))); out.out_attr1.z = fma(as_type(_372), _288, fma(as_type(_373), _289, spvFMul(as_type(_374), _290))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr2.x = fma(as_type(_330), _300, fma(as_type(_331), _301, spvFMul(as_type(_332), _302))); out.out_attr2.y = fma(as_type(_351), _300, fma(as_type(_352), _301, spvFMul(as_type(_353), _302))); out.out_attr2.z = fma(as_type(_372), _300, fma(as_type(_373), _301, spvFMul(as_type(_374), _302))); out.out_attr2.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr4.z = fma(as_type(cbuf_8.data[4u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.z))))), as_type(cbuf_8.data[6u + buf9_dword_off])); out.out_attr4.w = fma(as_type(cbuf_8.data[5u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr5.w))))), as_type(cbuf_8.data[7u + buf9_dword_off])); out.out_attr0.x = fma(as_type(_330), _310, fma(as_type(_331), _311, spvFMul(as_type(_332), _312))); out.out_attr0.y = fma(as_type(_351), _310, fma(as_type(_352), _311, spvFMul(as_type(_353), _312))); out.out_attr0.z = fma(as_type(_372), _310, fma(as_type(_373), _311, spvFMul(as_type(_374), _312))); out.out_attr0.w = 0.0; out.out_attr6.x = fma(as_type(cbuf_8.data[12u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[14u + buf9_dword_off])); out.out_attr6.y = fma(as_type(cbuf_8.data[13u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[15u + buf9_dword_off])); out.out_attr6.z = 0.0; out.out_attr6.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template inline T spvQuadBroadcast(T value, uint lane) { return quad_broadcast(value, lane); } template<> inline bool spvQuadBroadcast(bool value, uint lane) { return !!quad_broadcast((ushort)value, lane); } template inline vec spvQuadBroadcast(vec value, uint lane) { return (vec)quad_broadcast((vec)value, lane); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[100]; }; struct fs_cbuf_block_f32_1 { uint data[216]; }; struct fs_cbuf_block_f32_2 { uint data[32]; }; struct fs_cbuf_block_f32_3 { uint data[168]; }; struct fs_cbuf_block_f32_4 { uint data[104]; }; struct fs_cbuf_block_f32_5 { uint data[44]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; float4 frag_color2 [[color(2)]]; float4 frag_color3 [[color(3)]]; float4 frag_color4 [[color(4)]]; float4 frag_color5 [[color(5)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_28 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_44 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_32 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_36 [[buffer(12)]], constant fs_cbuf_block_f32_4& cbuf_40 [[buffer(13)]], constant fs_cbuf_block_f32_5& cbuf_48 [[buffer(14)]], texture2d fs_img116 [[texture(0)]], texture2d fs_img76 [[texture(1)]], texture2d fs_img108 [[texture(2)]], texture2d fs_img68 [[texture(3)]], texture2d fs_img100 [[texture(4)]], texture2d fs_img60 [[texture(5)]], texture2d fs_img92 [[texture(6)]], texturecube fs_img132 [[texture(7)]], texturecube fs_img124 [[texture(8)]], texture2d fs_img52 [[texture(9)]], texture2d fs_img84 [[texture(10)]], sampler fs_samp24 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp8 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp4 [[sampler(4)]], uint gl_SubgroupInvocationID [[thread_index_in_simdgroup]], bool gl_FrontFacing [[front_facing]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint buf4_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u); uint _171 = uint(gl_FrontFacing); float4 _203 = fs_img116.sample(fs_samp24, float2(fma(in.fs_in_attr6.x, as_type(cbuf_28.data[56u + buf0_dword_off]), as_type(cbuf_28.data[58u + buf0_dword_off])), fma(in.fs_in_attr6.y, as_type(cbuf_28.data[57u + buf0_dword_off]), as_type(cbuf_28.data[59u + buf0_dword_off])))); float _316 = spvFMul(in.fs_in_attr1.w, fma(in.fs_in_attr0.x, in.fs_in_attr1.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr1.x))); float _321 = spvFMul(in.fs_in_attr2.w, fma(in.fs_in_attr0.x, in.fs_in_attr2.y, -spvFMul(in.fs_in_attr0.y, in.fs_in_attr2.x))); float _335 = spvFMul(in.fs_in_attr1.w, fma(in.fs_in_attr0.z, in.fs_in_attr1.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr1.z))); float _340 = spvFMul(in.fs_in_attr2.w, fma(in.fs_in_attr0.z, in.fs_in_attr2.x, -spvFMul(in.fs_in_attr0.x, in.fs_in_attr2.z))); float _352 = spvFMul(in.fs_in_attr1.w, fma(in.fs_in_attr0.y, in.fs_in_attr1.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr1.y))); float _355 = spvFMul(in.fs_in_attr2.w, fma(in.fs_in_attr0.y, in.fs_in_attr2.z, -spvFMul(in.fs_in_attr0.z, in.fs_in_attr2.y))); uint _366 = 12u + buf0_dword_off; uint _370 = 13u + buf0_dword_off; uint _374 = 14u + buf0_dword_off; uint _378 = 15u + buf0_dword_off; float _382 = rsqrt(fma(in.fs_in_attr1.x, in.fs_in_attr1.x, fma(in.fs_in_attr1.y, in.fs_in_attr1.y, spvFMul(in.fs_in_attr1.z, in.fs_in_attr1.z)))); float _384 = rsqrt(fma(in.fs_in_attr2.x, in.fs_in_attr2.x, fma(in.fs_in_attr2.y, in.fs_in_attr2.y, spvFMul(in.fs_in_attr2.z, in.fs_in_attr2.z)))); float _393 = 1.0 / fma(as_type(cbuf_44.data[32u + buf1_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_44.data[33u + buf1_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_44.data[34u + buf1_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_44.data[35u + buf1_dword_off]), in.fs_in_attr5.w)))); float _395 = spvFMul(in.fs_in_attr1.z, _382); float _396 = rsqrt(fma(_352, _352, fma(_335, _335, spvFMul(_316, _316)))); float _397 = spvFMul(in.fs_in_attr2.z, _384); float _398 = rsqrt(fma(_355, _355, fma(_340, _340, spvFMul(_321, _321)))); float _405 = fma(-fma(as_type(cbuf_44.data[28u + buf1_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_44.data[29u + buf1_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_44.data[30u + buf1_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_44.data[31u + buf1_dword_off]), in.fs_in_attr5.w)))), _393, as_type(cbuf_44.data[191u + buf1_dword_off])); float _412 = rsqrt(fma(in.fs_in_attr0.x, in.fs_in_attr0.x, fma(in.fs_in_attr0.y, in.fs_in_attr0.y, spvFMul(in.fs_in_attr0.z, in.fs_in_attr0.z)))); float _413 = spvFMul(in.fs_in_attr1.y, _382); float _414 = spvFMul(_316, _396); float _415 = spvFMul(in.fs_in_attr2.y, _384); float _416 = spvFMul(_321, _398); float _421 = fma(-fma(as_type(cbuf_44.data[24u + buf1_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_44.data[25u + buf1_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_44.data[26u + buf1_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_44.data[27u + buf1_dword_off]), in.fs_in_attr5.w)))), _393, as_type(cbuf_44.data[187u + buf1_dword_off])); float _424 = spvFMul(in.fs_in_attr0.z, _412); float _425 = spvFMul(in.fs_in_attr1.x, _382); float _426 = spvFMul(_335, _396); float _427 = spvFMul(in.fs_in_attr2.x, _384); float _428 = spvFMul(_340, _398); float _431 = fma(-fma(as_type(cbuf_44.data[20u + buf1_dword_off]), in.fs_in_attr5.x, fma(as_type(cbuf_44.data[21u + buf1_dword_off]), in.fs_in_attr5.y, fma(as_type(cbuf_44.data[22u + buf1_dword_off]), in.fs_in_attr5.z, spvFMul(as_type(cbuf_44.data[23u + buf1_dword_off]), in.fs_in_attr5.w)))), _393, as_type(cbuf_44.data[183u + buf1_dword_off])); float _436 = spvFMul(in.fs_in_attr0.y, _412); float _438 = spvFMul(_352, _396); float _439 = spvFMul(_355, _398); float _441 = fma(_425, _431, fma(_413, _421, spvFMul(_395, _405))); float _444 = fma(_427, _431, fma(_415, _421, spvFMul(_397, _405))); float _445 = spvFMul(in.fs_in_attr0.x, _412); float _449 = fma(_438, _431, fma(_426, _421, spvFMul(_414, _405))); float _451 = fma(_439, _431, fma(_428, _421, spvFMul(_416, _405))); uint _457 = 40u + buf0_dword_off; uint _461 = 41u + buf0_dword_off; uint _465 = 42u + buf0_dword_off; uint _469 = 43u + buf0_dword_off; float _472 = fma(_445, _431, fma(_436, _421, spvFMul(_424, _405))); float _475 = fma(as_type(cbuf_28.data[_366]), in.fs_in_attr4.x, as_type(cbuf_28.data[_374])); uint _476 = as_type(_475); float _479 = fma(as_type(cbuf_28.data[_370]), in.fs_in_attr4.y, as_type(cbuf_28.data[_378])); uint _480 = as_type(_479); uint _491 = spvQuadBroadcast(_476, extract_bits(0u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _496 = spvQuadBroadcast(_480, extract_bits(0u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _502 = spvQuadBroadcast(_476, extract_bits(170u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _507 = spvQuadBroadcast(_480, extract_bits(170u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); float _510 = fma(as_type(cbuf_32.data[12u + buf2_dword_off]), _203.x, as_type(cbuf_32.data[14u + buf2_dword_off])); float _513 = sqrt(fma(_472, _472, fma(_449, _449, spvFMul(_441, _441)))); float _514 = sqrt(fma(_472, _472, fma(_451, _451, spvFMul(_444, _444)))); uint _520 = spvQuadBroadcast(_476, extract_bits(85u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _525 = spvQuadBroadcast(_480, extract_bits(85u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); float _528 = spvFSub(as_type(_502), as_type(_491)); float _531 = spvFSub(as_type(_507), as_type(_496)); uint _532 = 16u + buf2_dword_off; uint _540 = 19u + buf2_dword_off; uint _543 = 28u + buf2_dword_off; float _556 = spvFSub(as_type(_520), as_type(_491)); float _559 = spvFSub(as_type(_525), as_type(_496)); float _563 = (0.0 < _510) ? fma(-_510, spvFSub(0.0, in.fs_in_attr3.w), in.fs_in_attr3.w) : fma(_510, spvFSub(1.0, in.fs_in_attr3.w), in.fs_in_attr3.w); float _578 = fast::clamp(fast::max(_563, _563), 0.0, 1.0); float _579 = rsqrt(fma(_441, _441, spvFMul(_449, _449))); float _580 = rsqrt(fma(_444, _444, spvFMul(_451, _451))); float _582 = 1.0 / _472; float _586 = spvFMul(_578, _578); float _590 = fma(as_type(cbuf_28.data[_457]), in.fs_in_attr4.z, as_type(cbuf_28.data[_465])); uint _591 = as_type(_590); float _594 = fma(as_type(cbuf_28.data[_461]), in.fs_in_attr4.w, as_type(cbuf_28.data[_469])); uint _595 = as_type(_594); float _600 = spvFMul(sqrt(fma(-_472, _472, spvFMul(_513, _513))), _582); float _601 = spvFMul(sqrt(fma(-_472, _472, spvFMul(_514, _514))), _582); float _605 = rsqrt(fma(_431, _431, fma(_421, _421, spvFMul(_405, _405)))); uint _617 = spvQuadBroadcast(_591, extract_bits(85u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _622 = spvQuadBroadcast(_591, extract_bits(0u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _627 = spvQuadBroadcast(_595, extract_bits(85u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _632 = spvQuadBroadcast(_595, extract_bits(0u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _637 = spvQuadBroadcast(_591, extract_bits(170u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); uint _642 = spvQuadBroadcast(_595, extract_bits(170u, (gl_SubgroupInvocationID & 3u) << 1u, 2u)); float _643 = fast::max(0.0, spvFMul(log2(fast::max(fma(_556, _556, spvFMul(_528, _528)), fma(_559, _559, spvFMul(_531, _531)))), 0.5)); float _644 = spvFMul(_431, _605); float _645 = spvFMul(_421, _605); float _646 = spvFMul(_405, _605); float _649 = fma(_586, 3.0, -spvFMul(spvFMul(_578, _586), 2.0)); float _651 = spvFMul(as_type(cbuf_32.data[_532]), spvFMul(spvFMul(_449, _579), _600)); float _653 = spvFMul(as_type(cbuf_32.data[_532]), spvFMul(spvFMul(_441, _579), _600)); float _655 = spvFMul(as_type(cbuf_32.data[_543]), spvFMul(spvFMul(_451, _580), _601)); float _657 = spvFMul(as_type(cbuf_32.data[_543]), spvFMul(spvFMul(_444, _580), _601)); float _661 = spvFSub(as_type(_617), as_type(_622)); float _664 = spvFSub(as_type(_627), as_type(_632)); float _667 = spvFSub(as_type(_637), as_type(_622)); float _671 = spvFSub(as_type(_642), as_type(_632)); bool _672 = 3.0 >= _643; uint _673; if (_672) { _673 = 1065353216u; } else { _673 = as_type(_586); } uint _844; uint _845; uint _846; uint _847; if (_672) { float _677 = rsqrt(fma(_445, _445, fma(_436, _436, spvFMul(_424, _424)))); float _684 = rsqrt(fma(_644, _644, fma(_645, _645, spvFMul(_646, _646)))); uint _696 = uint(int(fma(fma(spvFMul(_644, _684), spvFMul(_445, _677), fma(spvFMul(_645, _684), spvFMul(_436, _677), spvFMul(spvFMul(_424, _677), spvFMul(_646, _684)))), spvFSub(as_type(cbuf_32.data[18u + buf2_dword_off]), as_type(cbuf_32.data[_540])), as_type(cbuf_32.data[_540])))); float _698 = 1.0 / float(int(_696)); uint _699 = as_type(_475); uint _700 = as_type(_479); uint _701 = as_type(_590); uint _702 = as_type(_594); bool _723; uint _727; uint _731; uint _735; uint _739; uint _760; uint _775; uint _776; bool _722; uint _768; uint _771; uint _772; uint _773; uint _777; uint _778; uint _779; uint _780; uint _703 = 0u; uint _704 = 0u; uint _705 = 0u; uint _706 = 0u; uint _707 = _673; uint _708 = _700; uint _709 = _699; uint _710 = _702; uint _711 = _701; uint _712 = 1065353216u; bool _713 = _672; bool _714 = _672; uint _715 = 0u; for (;;) { bool _718 = _714 && (!(int(_696) > int(_715))); if (_718) { bool _720 = _713 && (!_718); if (!_720) { _777 = _703; _778 = _704; _779 = _705; _780 = _706; break; } else { _722 = _720; } } else { _722 = _713; } _723 = _714 && _722; float _726 = fma(-_651, _698, as_type(_709)); _727 = as_type(_726); float _730 = fma(-_653, _698, as_type(_708)); _731 = as_type(_730); float _734 = fma(-_655, _698, as_type(_711)); _735 = as_type(_734); float _738 = fma(-_657, _698, as_type(_710)); _739 = as_type(_738); float4 _746 = fs_img76.sample(fs_samp16, float2(_726, _730), gradient2d(float2(_556, _559), float2(_528, _531))); float _747 = _746.z; float _759 = spvFSub(as_type(_712), _698); _760 = as_type(_759); float _761 = spvFSub(fs_img108.sample(fs_samp16, float2(_734, _738), gradient2d(float2(_661, _664), float2(_667, _671))).z, _747); float _763 = fma(_649, _761, _747); bool _765 = _723 && (_763 > _759); if (_765) { _768 = as_type(spvFAdd(_698, _759)); } else { _768 = _706; } uint _774; if (_765) { _771 = as_type(_763); _772 = as_type(_759); _773 = _707; _774 = _696; } else { _771 = _703; _772 = _704; _773 = _705; _774 = _715; } _775 = _774 + 1u; _776 = as_type(_763); if (true) { _703 = _771; _704 = _772; _705 = _773; _706 = _768; _707 = _776; _708 = _731; _709 = _727; _710 = _739; _711 = _735; _712 = _760; _713 = _722; _714 = _723; _715 = _775; continue; } else { _777 = _771; _778 = _772; _779 = _773; _780 = _768; break; } } float _783 = spvFSub(as_type(_780), as_type(_779)); float _786 = spvFSub(as_type(_778), as_type(_777)); float _795 = fma(-fma(as_type(_778), _783, -spvFMul(as_type(_780), _786)), 1.0 / spvFSub(_783, _786), 1.0); float _798 = fma(-_795, _651, _475); float _801 = fma(-_795, _653, _479); float _804 = fma(-_795, _655, _590); float _807 = fma(-_795, _657, _594); bool _810 = _672 && (2.0 < _643); uint _813; if (_810) { _813 = as_type(trunc(_643)); } else { _813 = as_type(_795); } uint _828; uint _829; uint _830; uint _831; if (_810) { float _815 = spvFSub(_643, as_type(_813)); _828 = as_type(fma(_815, spvFSub(_594, _807), _807)); _829 = as_type(fma(_815, spvFSub(_590, _804), _804)); _830 = as_type(fma(_815, spvFSub(_479, _801), _801)); _831 = as_type(fma(_815, spvFSub(_475, _798), _798)); } else { _828 = as_type(_807); _829 = as_type(_804); _830 = as_type(_801); _831 = as_type(_798); } _844 = as_type(spvFSub(as_type(_828), _594)); _845 = as_type(spvFSub(as_type(_829), _590)); _846 = as_type(spvFSub(as_type(_830), _479)); _847 = as_type(spvFSub(as_type(_831), _475)); } else { _844 = as_type(_667); _845 = _480; _846 = _476; _847 = as_type(_657); } uint _849; uint _850; uint _851; uint _852; if (!_672) { _849 = 0u; _850 = 0u; _851 = 0u; _852 = 0u; } else { _849 = _844; _850 = _845; _851 = _846; _852 = _847; } float _858 = fma(as_type(_852), 1.0 / as_type(cbuf_28.data[_366]), in.fs_in_attr4.x); float _860 = fma(as_type(_851), 1.0 / as_type(cbuf_28.data[_370]), in.fs_in_attr4.y); float _866 = fma(as_type(_850), 1.0 / as_type(cbuf_28.data[_457]), in.fs_in_attr4.z); float _868 = fma(as_type(_849), 1.0 / as_type(cbuf_28.data[_461]), in.fs_in_attr4.w); bool _869 = 0u == _171; uint _882; uint _883; uint _884; if (_869) { _882 = as_type(fast::max(-_436, -_436)); _883 = as_type(fast::max(-_445, -_445)); _884 = as_type(fast::max(-_424, -_424)); } else { _882 = as_type(_436); _883 = _171; _884 = as_type(_445); } uint _887; uint _888; if (!_869) { _887 = _884; _888 = as_type(_424); } else { _887 = _883; _888 = _884; } float4 _905 = fs_img76.sample(fs_samp16, float2(fma(_858, as_type(cbuf_28.data[_366]), as_type(cbuf_28.data[_374])), fma(_860, as_type(cbuf_28.data[_370]), as_type(cbuf_28.data[_378])))); float4 _913 = fs_img108.sample(fs_samp16, float2(fma(as_type(cbuf_28.data[_457]), _866, as_type(cbuf_28.data[_465])), fma(as_type(cbuf_28.data[_461]), _868, as_type(cbuf_28.data[_469])))); float4 _964 = fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[8u + buf0_dword_off]), _858, as_type(cbuf_28.data[10u + buf0_dword_off])), fma(as_type(cbuf_28.data[9u + buf0_dword_off]), _860, as_type(cbuf_28.data[11u + buf0_dword_off])))); float _965 = _964.x; float _977 = fma(2.0, _905.y, -1.0); float _978 = spvFMul(fma(2.0, _905.x, -1.0), fma(2.0, _905.w, -1.0)); float _979 = fma(2.0, _913.y, -1.0); float _980 = spvFMul(fma(2.0, _913.x, -1.0), fma(2.0, _913.w, -1.0)); float _991 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_978, _978), spvFMul(_977, _977)), 0.0, 1.0))); float _992 = sqrt(spvFSub(1.0, fast::clamp(spvFAdd(spvFMul(_980, _980), spvFMul(_979, _979)), 0.0, 1.0))); float _1006 = fma(_414, _978, fma(_395, _977, spvFMul(as_type(_888), _991))); float _1012 = fma(_426, _978, fma(_413, _977, spvFMul(as_type(_882), _991))); float _1016 = fma(_438, _978, fma(_425, _977, spvFMul(as_type(_887), _991))); float _1019 = fma(_649, spvFSub(fma(_416, _980, fma(_397, _979, spvFMul(as_type(_888), _992))), _1006), _1006); float _1049 = fma(_649, spvFSub(fma(_428, _980, fma(_415, _979, spvFMul(as_type(_882), _992))), _1012), _1012); float _1051 = fma(_649, spvFSub(fma(_439, _980, fma(_427, _979, spvFMul(as_type(_887), _992))), _1016), _1016); float _1054 = rsqrt(fma(_1051, _1051, fma(_1049, _1049, spvFMul(_1019, _1019)))); float _1058 = spvFMul(_1019, _1054); float _1059 = spvFMul(_1049, _1054); float _1061 = spvFMul(_1051, _1054); float _1075 = fma(_1061, _644, fma(_1059, _645, spvFMul(_646, _1058))); float4 _1082 = fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[4u + buf0_dword_off]), _858, as_type(cbuf_28.data[6u + buf0_dword_off])), fma(as_type(cbuf_28.data[5u + buf0_dword_off]), _860, as_type(cbuf_28.data[7u + buf0_dword_off])))); float _1083 = _1082.x; float _1084 = _1082.y; float _1085 = _1082.z; float4 _1090 = fs_img92.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[32u + buf0_dword_off]), _866, as_type(cbuf_28.data[34u + buf0_dword_off])), fma(as_type(cbuf_28.data[33u + buf0_dword_off]), _868, as_type(cbuf_28.data[35u + buf0_dword_off])))); float _1091 = _1090.x; float _1092 = _1090.y; float _1093 = _1090.z; float _1096 = spvFMul(fast::max(_1075, _1075), 2.0); float _1125 = spvFMul(as_type(cbuf_36.data[8u + buf3_dword_off]), 0.00390625); uint _1129 = uint(in.fs_in_attr0.w) * 13u; float _1130 = spvFMul(fma(_649, spvFSub(fs_img100.sample(fs_samp8, float2(fma(as_type(cbuf_28.data[36u + buf0_dword_off]), _866, as_type(cbuf_28.data[38u + buf0_dword_off])), fma(as_type(cbuf_28.data[37u + buf0_dword_off]), _868, as_type(cbuf_28.data[39u + buf0_dword_off])))).x, _965), _965), _1125); float _1132 = fma(-_431, _605, spvFMul(_1061, _1096)); float _1134 = fma(-_421, _605, spvFMul(_1059, _1096)); float _1136 = fma(-_405, _605, spvFMul(_1058, _1096)); float _1147 = 1.0 / abs(1.0); float _1149 = fast::min(6.0, spvFSub(6.5, spvFMul(spvFMul(_1130, 13.0), 0.5))); float _1151 = fma(_1134, _1147, 1.5); float _1152 = fma(_1132, _1147, 1.5); uint _1158 = ((0u + ((_1129 + 8u) * 16u)) + buf4_off) >> 2u; uint4 _1171 = uint4(cbuf_40.data[_1158 + 0u], cbuf_40.data[_1158 + 1u], cbuf_40.data[_1158 + 2u], cbuf_40.data[_1158 + 3u]); uint _1172 = _1171.x; uint _1173 = _1171.y; uint _1174 = _1171.z; float4 _1182 = fs_img132.sample(fs_samp20, float3(spvFSub(_1152, 1.5), spvFSub(_1151, 1.5), _1136), level(_1149)); uint _1189 = ((0u + ((_1129 + 9u) * 16u)) + buf4_off) >> 2u; uint4 _1202 = uint4(cbuf_40.data[_1189 + 0u], cbuf_40.data[_1189 + 1u], cbuf_40.data[_1189 + 2u], cbuf_40.data[_1189 + 3u]); uint _1210 = ((0u + ((_1129 + 10u) * 16u)) + buf4_off) >> 2u; uint4 _1223 = uint4(cbuf_40.data[_1210 + 0u], cbuf_40.data[_1210 + 1u], cbuf_40.data[_1210 + 2u], cbuf_40.data[_1210 + 3u]); uint _1231 = ((0u + ((_1129 + 11u) * 16u)) + buf4_off) >> 2u; uint4 _1244 = uint4(cbuf_40.data[_1231 + 0u], cbuf_40.data[_1231 + 1u], cbuf_40.data[_1231 + 2u], cbuf_40.data[_1231 + 3u]); float4 _1267 = fs_img124.sample(fs_samp20, float3(spvFSub(_1152, 1.5), spvFSub(_1151, 1.5), _1136), level(_1149)); float _1268 = _1267.x; float _1269 = _1267.y; float _1270 = _1267.z; float4 _1275 = fs_img52.sample(fs_samp4, float2(fma(as_type(cbuf_28.data[0u + buf0_dword_off]), _858, as_type(cbuf_28.data[2u + buf0_dword_off])), fma(as_type(cbuf_28.data[1u + buf0_dword_off]), _860, as_type(cbuf_28.data[3u + buf0_dword_off])))); float _1276 = _1275.x; float _1277 = _1275.y; float _1278 = _1275.z; float _1279 = _1275.w; float4 _1284 = fs_img84.sample(fs_samp4, float2(fma(_866, as_type(cbuf_28.data[28u + buf0_dword_off]), as_type(cbuf_28.data[30u + buf0_dword_off])), fma(_868, as_type(cbuf_28.data[29u + buf0_dword_off]), as_type(cbuf_28.data[31u + buf0_dword_off])))); uint _1308 = 12u + (extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u); float _1312 = fast::clamp(spvFAdd(fma(_1132, as_type(_887), fma(_1134, as_type(_882), spvFMul(as_type(_888), _1136))), 1.0), 0.0, 1.0); bool _1327 = (_1085 == 0.0) && (_1084 == 0.0); bool _1329 = (_1093 == 0.0) && (_1092 == 0.0); float _1330 = spvFAdd(1.0, _1075); float _1333 = _1327 ? _1083 : _1085; float _1334 = _1327 ? _1083 : _1084; float _1350 = fast::clamp(spvFMul(_1330, _1330), 0.0, 1.0); float _1351 = exp2(spvFMul(5.0, log2(spvFSub(1.0, fast::clamp(fast::max(_1075, _1075), 0.0, 1.0))))); float _1364 = spvFMul(_1350, _1351); float _1365 = fma(_649, spvFSub(_1091, _1083), _1083); float _1366 = fma(_649, spvFSub(_1329 ? _1091 : _1092, _1334), _1334); float _1367 = fma(_649, spvFSub(_1329 ? _1091 : _1093, _1333), _1333); float _1411 = spvFMul(_1130, _1130); float _1418 = spvFMul(_1312, _1312); float _1448 = fast::max(0.0, spvFAdd(as_type(_1202.w), fma(_1058, as_type(_1202.z), fma(_1061, as_type(_1202.x), spvFMul(_1059, as_type(_1202.y)))))); float _1449 = fast::max(0.0, spvFAdd(as_type(_1223.w), fma(_1058, as_type(_1223.z), fma(_1061, as_type(_1223.x), spvFMul(_1059, as_type(_1223.y)))))); float _1450 = fast::max(0.0, spvFAdd(as_type(_1244.w), fma(_1058, as_type(_1244.z), fma(_1061, as_type(_1244.x), spvFMul(_1059, as_type(_1244.y)))))); float _1461 = spvFMul(fma(_649, spvFSub(_1284.w, _1279), _1279), as_type(cbuf_40.data[((12u + ((_1129 + 7u) * 16u)) + buf4_off) >> 2u])); bool _1465 = as_type(cbuf_36.data[22u + buf3_dword_off]) != 0.0; float _1488 = _1465 ? _1461 : 0.0; if (false) { discard_fragment(); } out.frag_color5.x = spvFMul(spvFMul(fma(fma(_1350, _1351, -spvFMul(_1364, _1365)), _1411, _1365), spvFMul(fma(as_type(_1172), fma(-as_type(_1173), _1268, spvFMul(as_type(_1174), _1182.x)), spvFMul(as_type(_1173), _1268)), _1418)), spvFMul(as_type(cbuf_36.data[4u + buf3_dword_off]), as_type(cbuf_48.data[_1308]))); out.frag_color5.y = spvFMul(spvFMul(fma(fma(_1350, _1351, -spvFMul(_1364, _1366)), _1411, _1366), spvFMul(fma(as_type(_1172), fma(-as_type(_1173), _1269, spvFMul(as_type(_1174), _1182.y)), spvFMul(as_type(_1173), _1269)), _1418)), spvFMul(as_type(cbuf_36.data[5u + buf3_dword_off]), as_type(cbuf_48.data[_1308]))); out.frag_color5.z = spvFMul(spvFMul(fma(fma(_1350, _1351, -spvFMul(_1364, _1367)), _1411, _1367), spvFMul(fma(as_type(_1172), fma(-as_type(_1173), _1270, spvFMul(as_type(_1174), _1182.z)), spvFMul(as_type(_1173), _1270)), _1418)), spvFMul(as_type(cbuf_36.data[6u + buf3_dword_off]), as_type(cbuf_48.data[_1308]))); out.frag_color5.w = _1465 ? _1461 : as_type(_1171.w); if (false) { discard_fragment(); } out.frag_color4.x = fma(-_1365, _1448, _1448); out.frag_color4.y = fma(-_1366, _1449, _1449); out.frag_color4.z = fma(-_1367, _1450, _1450); out.frag_color4.w = _1465 ? _1461 : 1.0; if (false) { discard_fragment(); } out.frag_color3.x = sqrt(_1365); out.frag_color3.y = sqrt(_1366); out.frag_color3.z = sqrt(_1367); out.frag_color3.w = _1465 ? _1461 : spvFMul(0.0039215688593685626983642578125, float(cbuf_40.data[((0u + ((_1129 + 6u) * 16u)) + buf4_off) >> 2u])); if (false) { discard_fragment(); } out.frag_color2.x = spvFMul(as_type(cbuf_36.data[0u + buf3_dword_off]), fma(_649, spvFSub(_1284.x, _1276), _1276)); out.frag_color2.y = spvFMul(as_type(cbuf_36.data[1u + buf3_dword_off]), fma(_649, spvFSub(_1284.y, _1277), _1277)); out.frag_color2.z = spvFMul(as_type(cbuf_36.data[2u + buf3_dword_off]), fma(_649, spvFSub(_1284.z, _1278), _1278)); out.frag_color2.w = _1461; if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_1125, _1130); out.frag_color1.y = 0.0; out.frag_color1.z = as_type(cbuf_40.data[((0u + ((_1129 + 12u) * 16u)) + buf4_off) >> 2u]); out.frag_color1.w = _1488; if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, _1061, 0.500488758087158203125); out.frag_color0.y = fma(0.5, _1059, 0.500488758087158203125); out.frag_color0.z = fma(0.5, _1058, 0.500488758087158203125); out.frag_color0.w = _1488; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xbc03d90c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[16]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[104]; }; struct vs_cbuf_block_f32_3 { uint data[24]; }; struct vs_cbuf_block_f32_4 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; int4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(13)]], constant vs_cbuf_block_f32_1& cbuf_20 [[buffer(14)]], constant vs_cbuf_block_f32_2& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_3& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_4& cbuf_24 [[buffer(17)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _317 = as_type(in.vs_in_attr4.x); uint _347 = 35u + buf5_dword_off; uint _351 = 96u + buf5_dword_off; uint _379 = 83u + buf5_dword_off; float _394 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _395 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _396 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); uint _422 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf6_off) >> 2u]) * 3u; uint _424 = _422 + 2u; uint _428 = ((0u + (_422 * 16u)) + buf7_off) >> 2u; uint4 _441 = uint4(cbuf_16.data[_428 + 0u], cbuf_16.data[_428 + 1u], cbuf_16.data[_428 + 2u], cbuf_16.data[_428 + 3u]); uint _442 = _441.x; uint _443 = _441.y; uint _444 = _441.z; uint _449 = ((0u + ((_422 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _462 = uint4(cbuf_16.data[_449 + 0u], cbuf_16.data[_449 + 1u], cbuf_16.data[_449 + 2u], cbuf_16.data[_449 + 3u]); uint _463 = _462.x; uint _464 = _462.y; uint _465 = _462.z; uint _470 = ((0u + (_424 * 16u)) + buf7_off) >> 2u; uint4 _483 = uint4(cbuf_16.data[_470 + 0u], cbuf_16.data[_470 + 1u], cbuf_16.data[_470 + 2u], cbuf_16.data[_470 + 3u]); uint _484 = _483.x; uint _485 = _483.y; uint _486 = _483.z; float _494 = fma(as_type(_442), in.vs_in_attr0.x, fma(as_type(_443), in.vs_in_attr0.y, fma(as_type(_444), in.vs_in_attr0.z, as_type(_441.w)))); float _506 = fma(as_type(_463), in.vs_in_attr0.x, fma(as_type(_464), in.vs_in_attr0.y, fma(as_type(_465), in.vs_in_attr0.z, as_type(_462.w)))); float _508 = fma(as_type(_484), in.vs_in_attr0.x, fma(as_type(_485), in.vs_in_attr0.y, fma(as_type(_486), in.vs_in_attr0.z, as_type(_483.w)))); float _530 = sqrt(spvFAdd(spvFMul(_494, _494), spvFMul(_508, _508))); float _534 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[99u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[_347]), as_type(cbuf_20.data[98u + buf5_dword_off])))); float _539 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _534)))); float _544 = spvFAdd(-3.1415927410125732421875, (0.0 > _534) ? (-_539) : _539); float _560 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_544)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _544)))))), 0.5, 0.5))); float _571 = fma(spvFMul(spvFMul(_560, spvFMul(_560, _560)), fma(_560, spvFAdd(-15.0, spvFMul(6.0, _560)), 10.0)), spvFSub(as_type(cbuf_20.data[97u + buf5_dword_off]), as_type(cbuf_20.data[_351])), as_type(cbuf_20.data[_351])); float _573 = spvFMul(as_type(cbuf_20.data[32u + buf5_dword_off]), _571); float _576 = spvFMul(as_type(cbuf_20.data[33u + buf5_dword_off]), _571); float _578 = spvFMul(as_type(cbuf_20.data[34u + buf5_dword_off]), _571); float _581 = spvFSub(_494, as_type(cbuf_20.data[80u + buf5_dword_off])); float _584 = spvFSub(_506, as_type(cbuf_20.data[81u + buf5_dword_off])); float _586 = spvFSub(_508, as_type(cbuf_20.data[82u + buf5_dword_off])); float _589 = fma(_581, _581, fma(_584, _584, spvFMul(_586, _586))); bool _591 = 0.0 < _589; uint _594; if (_591) { _594 = as_type(sqrt(_589)); } else { _594 = as_type(_581); } uint _596; if (!_591) { _596 = 0u; } else { _596 = _594; } bool _598 = as_type(cbuf_20.data[_379]) > 0.0; uint _610; if (_598) { _610 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_596), 1.0 / fast::max(as_type(cbuf_20.data[_379]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _610 = _596; } uint _611; if (!_598) { _611 = 1065353216u; } else { _611 = _610; } bool _613 = as_type(cbuf_20.data[_347]) > 0.0; uint _687; uint _688; uint _689; uint _690; uint _691; if (_613) { bool _618 = 0.0 < fma(_573, _573, fma(_576, _576, spvFMul(_578, _578))); uint _622; if (_618) { _622 = as_type(spvFMul(_578, _578)); } else { _622 = as_type(_589); } uint _633; uint _634; uint _635; if (_618) { float _626 = rsqrt(fma(_573, _573, fma(_576, _576, as_type(_622)))); _633 = as_type(spvFMul(_576, _626)); _634 = as_type(spvFMul(_573, _626)); _635 = as_type(spvFMul(_578, _626)); } else { _633 = 0u; _634 = 0u; _635 = _424; } uint _637; uint _638; uint _639; if (!_618) { _637 = 0u; _638 = 0u; _639 = 0u; } else { _637 = _634; _638 = _633; _639 = _635; } float _649 = fma(spvFMul(as_type(cbuf_20.data[_347]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), fma(as_type(_637), _494, fma(as_type(_638), _506, spvFMul(_508, as_type(_639)))))); float _653 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _649)))); float _656 = (0.0 > _649) ? (-_653) : _653; float _666 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_656)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _656)))))); float _676 = spvFMul(_578, _666); float _678 = fma(_666, 0.5, 0.5); _687 = as_type(fma(spvFMul(_573, _666), as_type(_611), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_573, as_type(_611)))), _678))); _688 = as_type(fma(_676, as_type(_611), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_578, as_type(_611)))), _678))); _689 = _638; _690 = as_type(_676); _691 = _637; } else { _687 = _442; _688 = as_type(_573); _689 = 0u; _690 = as_type(_578); _691 = 0u; } uint _692; uint _693; if (!_613) { _692 = 0u; _693 = 0u; } else { _692 = _687; _693 = _688; } uint _695 = 100u + buf5_dword_off; uint _723 = 39u + buf5_dword_off; float _731 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[103u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[_723]), as_type(cbuf_20.data[102u + buf5_dword_off])))); float _735 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _731)))); float _739 = spvFAdd(-3.1415927410125732421875, (0.0 > _731) ? (-_735) : _735); uint _760 = 87u + buf5_dword_off; float _768 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_739)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _739)))))), 0.5, 0.5))); float _773 = spvFSub(_508, as_type(cbuf_20.data[86u + buf5_dword_off])); float _777 = spvFSub(_506, as_type(cbuf_20.data[85u + buf5_dword_off])); float _784 = spvFSub(_494, as_type(cbuf_20.data[84u + buf5_dword_off])); float _787 = fma(spvFMul(spvFMul(_768, spvFMul(_768, _768)), fma(_768, spvFAdd(-15.0, spvFMul(6.0, _768)), 10.0)), spvFSub(as_type(cbuf_20.data[101u + buf5_dword_off]), as_type(cbuf_20.data[_695])), as_type(cbuf_20.data[_695])); float _788 = fma(_784, _784, fma(_777, _777, spvFMul(_773, _773))); float _791 = spvFMul(as_type(cbuf_20.data[36u + buf5_dword_off]), _787); float _794 = spvFMul(as_type(cbuf_20.data[37u + buf5_dword_off]), _787); float _796 = spvFMul(as_type(cbuf_20.data[38u + buf5_dword_off]), _787); bool _797 = 0.0 < _788; uint _800; if (_797) { _800 = as_type(sqrt(_788)); } else { _800 = as_type(_788); } uint _802; if (!_797) { _802 = 0u; } else { _802 = _800; } bool _804 = as_type(cbuf_20.data[_760]) > 0.0; uint _815; if (_804) { _815 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_802), 1.0 / fast::max(as_type(cbuf_20.data[_760]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _815 = _802; } uint _816; if (!_804) { _816 = 1065353216u; } else { _816 = _815; } bool _818 = as_type(cbuf_20.data[_723]) > 0.0; uint _893; uint _894; uint _895; uint _896; uint _897; if (_818) { bool _823 = 0.0 < fma(_791, _791, fma(_794, _794, spvFMul(_796, _796))); uint _827; if (_823) { _827 = as_type(spvFMul(_796, _796)); } else { _827 = _691; } uint _838; uint _839; uint _840; if (_823) { float _831 = rsqrt(fma(_791, _791, fma(_794, _794, as_type(_827)))); _838 = as_type(spvFMul(_794, _831)); _839 = as_type(spvFMul(_796, _831)); _840 = as_type(spvFMul(_791, _831)); } else { _838 = _443; _839 = _689; _840 = _690; } uint _842; uint _843; uint _844; if (!_823) { _842 = 0u; _843 = 0u; _844 = 0u; } else { _842 = _840; _843 = _838; _844 = _839; } float _850 = fma(as_type(_842), _494, fma(as_type(_843), _506, spvFMul(_508, as_type(_844)))); float _855 = fma(spvFMul(as_type(cbuf_20.data[_723]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), _850)); float _859 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _855)))); float _862 = (0.0 > _855) ? (-_859) : _859; float _872 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_862)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _862)))))); float _880 = spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_796, as_type(_816)))); float _884 = fma(_872, 0.5, 0.5); _893 = _843; _894 = as_type(_850); _895 = as_type(_880); _896 = as_type(fma(spvFMul(_796, _872), as_type(_816), spvFMul(_880, _884))); _897 = as_type(fma(spvFMul(_791, _872), as_type(_816), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_791, as_type(_816)))), _884))); } else { _893 = _443; _894 = _689; _895 = _691; _896 = as_type(_791); _897 = _690; } uint _898; uint _899; if (!_818) { _898 = 0u; _899 = 0u; } else { _898 = _896; _899 = _897; } uint _900 = 104u + buf5_dword_off; uint _928 = 43u + buf5_dword_off; float _942 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[107u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[_928]), as_type(cbuf_20.data[106u + buf5_dword_off])))); float _946 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _942)))); float _950 = spvFAdd(-3.1415927410125732421875, (0.0 > _942) ? (-_946) : _946); uint _971 = 91u + buf5_dword_off; float _979 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_950)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _950)))))), 0.5, 0.5))); float _984 = spvFSub(_508, as_type(cbuf_20.data[90u + buf5_dword_off])); float _988 = spvFSub(_506, as_type(cbuf_20.data[89u + buf5_dword_off])); float _995 = spvFSub(_494, as_type(cbuf_20.data[88u + buf5_dword_off])); float _998 = fma(spvFMul(spvFMul(_979, spvFMul(_979, _979)), fma(_979, spvFAdd(-15.0, spvFMul(6.0, _979)), 10.0)), spvFSub(as_type(cbuf_20.data[105u + buf5_dword_off]), as_type(cbuf_20.data[_900])), as_type(cbuf_20.data[_900])); float _999 = fma(_995, _995, fma(_988, _988, spvFMul(_984, _984))); float _1002 = spvFMul(as_type(cbuf_20.data[40u + buf5_dword_off]), _998); float _1005 = spvFMul(as_type(cbuf_20.data[41u + buf5_dword_off]), _998); float _1007 = spvFMul(as_type(cbuf_20.data[42u + buf5_dword_off]), _998); bool _1008 = 0.0 < _999; uint _1011; if (_1008) { _1011 = as_type(sqrt(_999)); } else { _1011 = as_type(_999); } uint _1013; if (!_1008) { _1013 = 0u; } else { _1013 = _1011; } bool _1015 = as_type(cbuf_20.data[_971]) > 0.0; uint _1026; if (_1015) { _1026 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_1013), 1.0 / fast::max(as_type(cbuf_20.data[_971]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _1026 = _1013; } uint _1027; if (!_1015) { _1027 = 1065353216u; } else { _1027 = _1026; } bool _1029 = as_type(cbuf_20.data[_928]) > 0.0; uint _1104; uint _1105; uint _1106; uint _1107; uint _1108; uint _1109; if (_1029) { bool _1034 = 0.0 < fma(_1002, _1002, fma(_1005, _1005, spvFMul(_1007, _1007))); uint _1038; if (_1034) { _1038 = as_type(spvFMul(_1007, _1007)); } else { _1038 = _895; } uint _1049; uint _1050; uint _1051; if (_1034) { float _1042 = rsqrt(fma(_1002, _1002, fma(_1005, _1005, as_type(_1038)))); _1049 = as_type(spvFMul(_1005, _1042)); _1050 = as_type(spvFMul(_1002, _1042)); _1051 = as_type(spvFMul(_1007, _1042)); } else { _1049 = _893; _1050 = _692; _1051 = _894; } uint _1053; uint _1054; uint _1055; if (!_1034) { _1053 = 0u; _1054 = 0u; _1055 = 0u; } else { _1053 = _1050; _1054 = _1049; _1055 = _1051; } float _1061 = fma(as_type(_1053), _494, fma(as_type(_1054), _506, spvFMul(_508, as_type(_1055)))); float _1066 = fma(spvFMul(as_type(cbuf_20.data[_928]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), _1061)); float _1070 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1066)))); float _1073 = (0.0 > _1066) ? (-_1070) : _1070; float _1083 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1073)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1073)))))); float _1091 = spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1007, as_type(_1027)))); float _1095 = fma(_1083, 0.5, 0.5); _1104 = _1054; _1105 = _1053; _1106 = as_type(_1061); _1107 = as_type(_1091); _1108 = as_type(fma(spvFMul(_1002, _1083), as_type(_1027), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1002, as_type(_1027)))), _1095))); _1109 = as_type(fma(spvFMul(_1007, _1083), as_type(_1027), spvFMul(_1091, _1095))); } else { _1104 = _893; _1105 = _692; _1106 = _894; _1107 = _895; _1108 = 0u; _1109 = as_type(_1002); } uint _1110; uint _1111; if (!_1029) { _1110 = 0u; _1111 = 0u; } else { _1110 = _1109; _1111 = _1108; } uint _1113 = 108u + buf5_dword_off; uint _1141 = 47u + buf5_dword_off; float _1153 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[111u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[_1141]), as_type(cbuf_20.data[110u + buf5_dword_off])))); float _1157 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1153)))); float _1161 = spvFAdd(-3.1415927410125732421875, (0.0 > _1153) ? (-_1157) : _1157); uint _1182 = 95u + buf5_dword_off; float _1190 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1161)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1161)))))), 0.5, 0.5))); float _1195 = spvFSub(_508, as_type(cbuf_20.data[94u + buf5_dword_off])); float _1199 = spvFSub(_506, as_type(cbuf_20.data[93u + buf5_dword_off])); float _1206 = spvFSub(_494, as_type(cbuf_20.data[92u + buf5_dword_off])); float _1209 = fma(spvFMul(spvFMul(_1190, spvFMul(_1190, _1190)), fma(_1190, spvFAdd(-15.0, spvFMul(6.0, _1190)), 10.0)), spvFSub(as_type(cbuf_20.data[109u + buf5_dword_off]), as_type(cbuf_20.data[_1113])), as_type(cbuf_20.data[_1113])); float _1210 = fma(_1206, _1206, fma(_1199, _1199, spvFMul(_1195, _1195))); float _1213 = spvFMul(as_type(cbuf_20.data[44u + buf5_dword_off]), _1209); float _1216 = spvFMul(as_type(cbuf_20.data[45u + buf5_dword_off]), _1209); float _1218 = spvFMul(as_type(cbuf_20.data[46u + buf5_dword_off]), _1209); bool _1219 = 0.0 < _1210; uint _1222; if (_1219) { _1222 = as_type(sqrt(_1210)); } else { _1222 = as_type(_1210); } uint _1224; if (!_1219) { _1224 = 0u; } else { _1224 = _1222; } bool _1226 = as_type(cbuf_20.data[_1182]) > 0.0; uint _1237; if (_1226) { _1237 = as_type(fast::clamp(spvFAdd(-spvFMul(as_type(_1224), 1.0 / fast::max(as_type(cbuf_20.data[_1182]), 9.9999997473787516355514526367188e-05)), 1.0), 0.0, 1.0)); } else { _1237 = _1224; } uint _1238; if (!_1226) { _1238 = 1065353216u; } else { _1238 = _1237; } bool _1240 = as_type(cbuf_20.data[_1141]) > 0.0; uint _1314; uint _1315; uint _1316; uint _1317; uint _1318; if (_1240) { bool _1245 = 0.0 < fma(_1213, _1213, fma(_1216, _1216, spvFMul(_1218, _1218))); uint _1249; if (_1245) { _1249 = as_type(spvFMul(_1218, _1218)); } else { _1249 = _1107; } uint _1260; uint _1261; uint _1262; if (_1245) { float _1253 = rsqrt(fma(_1213, _1213, fma(_1216, _1216, as_type(_1249)))); _1260 = as_type(spvFMul(_1216, _1253)); _1261 = as_type(spvFMul(_1213, _1253)); _1262 = as_type(spvFMul(_1218, _1253)); } else { _1260 = _1105; _1261 = _317; _1262 = _1106; } uint _1264; uint _1265; uint _1266; if (!_1245) { _1264 = 0u; _1265 = 0u; _1266 = 0u; } else { _1264 = _1261; _1265 = _1260; _1266 = _1262; } float _1272 = fma(as_type(_1264), _494, fma(as_type(_1265), _506, spvFMul(_508, as_type(_1266)))); float _1277 = fma(spvFMul(as_type(cbuf_20.data[_1141]), in.vs_in_attr4.z), 10.0, spvFSub(spvFMul(6.283185482025146484375, in.vs_in_attr4.x), _1272)); float _1281 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1277)))); float _1284 = (0.0 > _1277) ? (-_1281) : _1281; float _1294 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1284)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1284)))))); float _1305 = fma(_1294, 0.5, 0.5); _1314 = as_type(_1272); _1315 = _1265; _1316 = _1264; _1317 = as_type(fma(spvFMul(_1213, _1294), as_type(_1238), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1213, as_type(_1238)))), _1305))); _1318 = as_type(fma(spvFMul(_1218, _1294), as_type(_1238), spvFMul(spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1218, as_type(_1238)))), _1305))); } else { _1314 = _1106; _1315 = _1105; _1316 = _317; _1317 = 0u; _1318 = as_type(_1213); } uint _1319; uint _1320; if (!_1240) { _1319 = 0u; _1320 = 0u; } else { _1319 = _1318; _1320 = _1317; } uint _1334 = 51u + buf5_dword_off; uint _1338 = 112u + buf5_dword_off; float _1362 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[115u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[114u + buf5_dword_off]), as_type(cbuf_20.data[_1334])))); float _1366 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1362)))); float _1370 = spvFAdd(-3.1415927410125732421875, (0.0 > _1362) ? (-_1366) : _1366); float _1383 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1370)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1370)))))), 0.5, 0.5))); float _1406 = fma(spvFMul(spvFMul(_1383, spvFMul(_1383, _1383)), fma(_1383, spvFAdd(-15.0, spvFMul(6.0, _1383)), 10.0)), spvFSub(as_type(cbuf_20.data[113u + buf5_dword_off]), as_type(cbuf_20.data[_1338])), as_type(cbuf_20.data[_1338])); float _1408 = spvFMul(as_type(cbuf_20.data[52u + buf5_dword_off]), _1406); uint _1409 = as_type(_1408); float _1411 = spvFMul(as_type(cbuf_20.data[53u + buf5_dword_off]), _1406); bool _1416 = as_type(cbuf_20.data[_1334]) > 0.0; uint _1581; uint _1582; uint _1583; uint _1584; uint _1585; uint _1586; uint _1587; if (_1416) { float _1419 = spvFSub(_494, as_type(cbuf_20.data[48u + buf5_dword_off])); float _1421 = spvFSub(_506, as_type(cbuf_20.data[49u + buf5_dword_off])); float _1424 = spvFSub(_508, as_type(cbuf_20.data[50u + buf5_dword_off])); float _1427 = fma(_1419, _1419, fma(_1421, _1421, spvFMul(_1424, _1424))); bool _1429 = 0.0 < _1427; uint _1432; if (_1429) { _1432 = as_type(sqrt(_1427)); } else { _1432 = _1316; } uint _1440; uint _1441; if (_1429) { float _1435 = rsqrt(fma(_1419, _1419, spvFMul(_1424, _1424))); _1440 = as_type(spvFMul(_1419, _1435)); _1441 = as_type(spvFMul(_1424, _1435)); } else { _1440 = _1104; _1441 = as_type(_1427); } uint _1443; uint _1444; uint _1445; if (!_1429) { _1443 = 0u; _1444 = 0u; _1445 = 0u; } else { _1443 = _1432; _1444 = _1440; _1445 = _1441; } uint _1447 = 128u + buf5_dword_off; uint _1451 = 129u + buf5_dword_off; uint _1455 = 130u + buf5_dword_off; bool _1463 = as_type(cbuf_20.data[131u + buf5_dword_off]) > 0.0; uint _1507; uint _1508; uint _1509; uint _1510; uint _1511; if (_1463) { float _1473 = fma(as_type(cbuf_20.data[_1447]), as_type(cbuf_20.data[_1447]), fma(as_type(cbuf_20.data[_1451]), as_type(cbuf_20.data[_1451]), spvFMul(as_type(cbuf_20.data[_1455]), as_type(cbuf_20.data[_1455])))); bool _1475 = _1473 > 0.0; uint _1490; uint _1491; if (_1475) { float _1483 = rsqrt(fma(as_type(cbuf_20.data[_1447]), as_type(cbuf_20.data[_1447]), spvFMul(as_type(cbuf_20.data[_1455]), as_type(cbuf_20.data[_1455])))); _1490 = as_type(spvFMul(as_type(cbuf_20.data[_1447]), _1483)); _1491 = as_type(spvFMul(as_type(cbuf_20.data[_1455]), _1483)); } else { _1490 = _444; _1491 = as_type(_1473); } uint _1492; uint _1493; if (!_1475) { _1492 = 0u; _1493 = 0u; } else { _1492 = _1490; _1493 = _1491; } float _1500 = fma(as_type(_1492), as_type(_1444), spvFAdd(0.0, spvFMul(as_type(_1445), as_type(_1493)))); _1507 = 0u; _1508 = _1492; _1509 = _1493; _1510 = as_type(fast::clamp(fma(_1500, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _1511 = as_type(_1500); } else { _1507 = _1315; _1508 = _444; _1509 = 0u; _1510 = as_type(_1421); _1511 = _1445; } uint _1512; uint _1513; uint _1514; if (!_1463) { _1512 = _1444; _1513 = _1511; _1514 = 1065353216u; } else { _1512 = _1508; _1513 = _1509; _1514 = _1510; } float _1523 = spvFMul(as_type(_1514), spvFSub(1.0, fast::clamp(spvFMul(as_type(_1443), 1.0 / fast::max(0.001000000047497451305389404296875, _1411)), 0.0, 1.0))); bool _1525 = 0.0 < _1523; uint _1526; if (_1525) { _1526 = 1092616192u; } else { _1526 = _1514; } uint _1574; uint _1575; uint _1576; uint _1577; if (_1525) { float _1533 = fma(-as_type(_1443), 2.0, spvFMul(as_type(cbuf_20.data[_1334]), as_type(_1526))); float _1537 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1533)))); float _1540 = (0.0 > _1533) ? (-_1537) : _1537; uint _1546 = as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1540)))); float _1550 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1540)) | _1546)); float _1559 = spvFMul(_1408, _1523); float _1564 = spvFSub(1.0, _1550); float _1566 = fma(spvFMul(as_type(cbuf_20.data[54u + buf5_dword_off]), _1406), _1564, _1550); float _1567 = fma(_1566, 0.5, 0.5); _1574 = as_type(_1564); _1575 = _1546; _1576 = as_type(fma(spvFMul(as_type(_1512), _1559), _1566, spvFMul(spvFMul(_1523, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1408, _1419)))), _1567))); _1577 = as_type(fma(spvFMul(as_type(_1513), _1559), _1566, spvFMul(spvFMul(_1523, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1408, _1424)))), _1567))); } else { _1574 = _1511; _1575 = _1443; _1576 = as_type(_1523); _1577 = _1409; } uint _1579; uint _1580; if (!_1525) { _1579 = 0u; _1580 = 0u; } else { _1579 = _1576; _1580 = _1577; } _1581 = _1574; _1582 = _1507; _1583 = _1575; _1584 = _1512; _1585 = _1444; _1586 = _1579; _1587 = _1580; } else { _1581 = _1314; _1582 = _1315; _1583 = _1316; _1584 = _444; _1585 = _1104; _1586 = as_type(_1411); _1587 = _1409; } uint _1588; uint _1589; if (!_1416) { _1588 = 0u; _1589 = 0u; } else { _1588 = _1587; _1589 = _1586; } uint _1603 = 59u + buf5_dword_off; uint _1607 = 116u + buf5_dword_off; float _1631 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[119u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[118u + buf5_dword_off]), as_type(cbuf_20.data[_1603])))); float _1635 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1631)))); float _1639 = spvFAdd(-3.1415927410125732421875, (0.0 > _1631) ? (-_1635) : _1635); float _1652 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1639)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1639)))))), 0.5, 0.5))); float _1675 = fma(spvFMul(spvFMul(_1652, spvFMul(_1652, _1652)), fma(_1652, spvFAdd(-15.0, spvFMul(6.0, _1652)), 10.0)), spvFSub(as_type(cbuf_20.data[117u + buf5_dword_off]), as_type(cbuf_20.data[_1607])), as_type(cbuf_20.data[_1607])); float _1677 = spvFMul(as_type(cbuf_20.data[60u + buf5_dword_off]), _1675); uint _1678 = as_type(_1677); float _1680 = spvFMul(as_type(cbuf_20.data[61u + buf5_dword_off]), _1675); bool _1685 = as_type(cbuf_20.data[_1603]) > 0.0; uint _1846; uint _1847; uint _1848; uint _1849; uint _1850; uint _1851; uint _1852; if (_1685) { float _1688 = spvFSub(_494, as_type(cbuf_20.data[56u + buf5_dword_off])); float _1690 = spvFSub(_506, as_type(cbuf_20.data[57u + buf5_dword_off])); float _1693 = spvFSub(_508, as_type(cbuf_20.data[58u + buf5_dword_off])); float _1696 = fma(_1688, _1688, fma(_1690, _1690, spvFMul(_1693, _1693))); bool _1698 = 0.0 < _1696; uint _1701; if (_1698) { _1701 = as_type(sqrt(_1696)); } else { _1701 = _1583; } uint _1709; uint _1710; if (_1698) { float _1704 = rsqrt(fma(_1688, _1688, spvFMul(_1693, _1693))); _1709 = as_type(spvFMul(_1688, _1704)); _1710 = as_type(spvFMul(_1693, _1704)); } else { _1709 = _1585; _1710 = as_type(_1696); } uint _1712; uint _1713; uint _1714; if (!_1698) { _1712 = 0u; _1713 = 0u; _1714 = 0u; } else { _1712 = _1701; _1713 = _1709; _1714 = _1710; } uint _1716 = 132u + buf5_dword_off; uint _1720 = 133u + buf5_dword_off; uint _1724 = 134u + buf5_dword_off; bool _1732 = as_type(cbuf_20.data[135u + buf5_dword_off]) > 0.0; uint _1774; uint _1775; uint _1776; uint _1777; uint _1778; if (_1732) { float _1742 = fma(as_type(cbuf_20.data[_1716]), as_type(cbuf_20.data[_1716]), fma(as_type(cbuf_20.data[_1720]), as_type(cbuf_20.data[_1720]), spvFMul(as_type(cbuf_20.data[_1724]), as_type(cbuf_20.data[_1724])))); bool _1744 = _1742 > 0.0; uint _1759; uint _1760; if (_1744) { float _1752 = rsqrt(fma(as_type(cbuf_20.data[_1716]), as_type(cbuf_20.data[_1716]), spvFMul(as_type(cbuf_20.data[_1724]), as_type(cbuf_20.data[_1724])))); _1759 = as_type(spvFMul(as_type(cbuf_20.data[_1716]), _1752)); _1760 = as_type(spvFMul(as_type(cbuf_20.data[_1724]), _1752)); } else { _1759 = _1584; _1760 = as_type(_1742); } uint _1761; uint _1762; if (!_1744) { _1761 = 0u; _1762 = 0u; } else { _1761 = _1759; _1762 = _1760; } float _1769 = fma(as_type(_1761), as_type(_1713), spvFAdd(0.0, spvFMul(as_type(_1714), as_type(_1762)))); _1774 = 0u; _1775 = _1761; _1776 = _1762; _1777 = as_type(fast::clamp(fma(_1769, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _1778 = as_type(_1769); } else { _1774 = _1582; _1775 = _1584; _1776 = 0u; _1777 = as_type(_1690); _1778 = _1714; } uint _1779; uint _1780; uint _1781; if (!_1732) { _1779 = _1713; _1780 = _1778; _1781 = 1065353216u; } else { _1779 = _1775; _1780 = _1776; _1781 = _1777; } float _1789 = spvFMul(as_type(_1781), spvFSub(1.0, fast::clamp(spvFMul(as_type(_1712), 1.0 / fast::max(0.001000000047497451305389404296875, _1680)), 0.0, 1.0))); bool _1791 = 0.0 < _1789; uint _1792; if (_1791) { _1792 = 1092616192u; } else { _1792 = _1781; } uint _1839; uint _1840; uint _1841; uint _1842; if (_1791) { float _1798 = fma(-as_type(_1712), 2.0, spvFMul(as_type(cbuf_20.data[_1603]), as_type(_1792))); float _1802 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1798)))); float _1805 = (0.0 > _1798) ? (-_1802) : _1802; uint _1811 = as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1805)))); float _1815 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1805)) | _1811)); float _1824 = spvFMul(_1677, _1789); float _1829 = spvFSub(1.0, _1815); float _1831 = fma(spvFMul(as_type(cbuf_20.data[62u + buf5_dword_off]), _1675), _1829, _1815); float _1832 = fma(_1831, 0.5, 0.5); _1839 = as_type(_1829); _1840 = _1811; _1841 = as_type(fma(spvFMul(as_type(_1779), _1824), _1831, spvFMul(spvFMul(_1789, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1677, _1688)))), _1832))); _1842 = as_type(fma(spvFMul(as_type(_1780), _1824), _1831, spvFMul(spvFMul(_1789, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1677, _1693)))), _1832))); } else { _1839 = _1778; _1840 = _1712; _1841 = as_type(_1789); _1842 = _1678; } uint _1844; uint _1845; if (!_1791) { _1844 = 0u; _1845 = 0u; } else { _1844 = _1841; _1845 = _1842; } _1846 = _1839; _1847 = _1774; _1848 = _1840; _1849 = _1779; _1850 = _1713; _1851 = _1844; _1852 = _1845; } else { _1846 = _1581; _1847 = _1582; _1848 = _1583; _1849 = _1584; _1850 = _1585; _1851 = as_type(_1680); _1852 = _1678; } uint _1853; uint _1854; if (!_1685) { _1853 = 0u; _1854 = 0u; } else { _1853 = _1852; _1854 = _1851; } uint _1868 = 67u + buf5_dword_off; uint _1872 = 120u + buf5_dword_off; float _1896 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[123u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[122u + buf5_dword_off]), as_type(cbuf_20.data[_1868])))); float _1900 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _1896)))); float _1904 = spvFAdd(-3.1415927410125732421875, (0.0 > _1896) ? (-_1900) : _1900); float _1917 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_1904)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _1904)))))), 0.5, 0.5))); float _1940 = fma(spvFMul(spvFMul(_1917, spvFMul(_1917, _1917)), fma(_1917, spvFAdd(-15.0, spvFMul(6.0, _1917)), 10.0)), spvFSub(as_type(cbuf_20.data[121u + buf5_dword_off]), as_type(cbuf_20.data[_1872])), as_type(cbuf_20.data[_1872])); float _1942 = spvFMul(as_type(cbuf_20.data[68u + buf5_dword_off]), _1940); uint _1943 = as_type(_1942); float _1945 = spvFMul(as_type(cbuf_20.data[69u + buf5_dword_off]), _1940); bool _1950 = as_type(cbuf_20.data[_1868]) > 0.0; uint _2110; uint _2111; uint _2112; uint _2113; uint _2114; if (_1950) { float _1953 = spvFSub(_494, as_type(cbuf_20.data[64u + buf5_dword_off])); float _1955 = spvFSub(_506, as_type(cbuf_20.data[65u + buf5_dword_off])); float _1958 = spvFSub(_508, as_type(cbuf_20.data[66u + buf5_dword_off])); float _1961 = fma(_1953, _1953, fma(_1955, _1955, spvFMul(_1958, _1958))); bool _1963 = 0.0 < _1961; uint _1966; if (_1963) { _1966 = as_type(sqrt(_1961)); } else { _1966 = _1848; } uint _1974; uint _1975; if (_1963) { float _1969 = rsqrt(fma(_1953, _1953, spvFMul(_1958, _1958))); _1974 = as_type(spvFMul(_1953, _1969)); _1975 = as_type(spvFMul(_1958, _1969)); } else { _1974 = _1850; _1975 = as_type(_1961); } uint _1977; uint _1978; uint _1979; if (!_1963) { _1977 = 0u; _1978 = 0u; _1979 = 0u; } else { _1977 = _1966; _1978 = _1974; _1979 = _1975; } uint _1981 = 136u + buf5_dword_off; uint _1985 = 137u + buf5_dword_off; uint _1989 = 138u + buf5_dword_off; bool _1997 = as_type(cbuf_20.data[139u + buf5_dword_off]) > 0.0; uint _2039; uint _2040; uint _2041; uint _2042; uint _2043; if (_1997) { float _2007 = fma(as_type(cbuf_20.data[_1981]), as_type(cbuf_20.data[_1981]), fma(as_type(cbuf_20.data[_1985]), as_type(cbuf_20.data[_1985]), spvFMul(as_type(cbuf_20.data[_1989]), as_type(cbuf_20.data[_1989])))); bool _2009 = _2007 > 0.0; uint _2024; uint _2025; if (_2009) { float _2017 = rsqrt(fma(as_type(cbuf_20.data[_1981]), as_type(cbuf_20.data[_1981]), spvFMul(as_type(cbuf_20.data[_1989]), as_type(cbuf_20.data[_1989])))); _2024 = as_type(spvFMul(as_type(cbuf_20.data[_1981]), _2017)); _2025 = as_type(spvFMul(as_type(cbuf_20.data[_1989]), _2017)); } else { _2024 = _1849; _2025 = as_type(_2007); } uint _2026; uint _2027; if (!_2009) { _2026 = 0u; _2027 = 0u; } else { _2026 = _2024; _2027 = _2025; } float _2034 = fma(as_type(_2026), as_type(_1978), spvFAdd(0.0, spvFMul(as_type(_1979), as_type(_2027)))); _2039 = 0u; _2040 = _2026; _2041 = _2027; _2042 = as_type(fast::clamp(fma(_2034, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _2043 = as_type(_2034); } else { _2039 = _1847; _2040 = _1849; _2041 = 0u; _2042 = as_type(_1955); _2043 = _1979; } uint _2044; uint _2045; uint _2046; if (!_1997) { _2044 = _1978; _2045 = _2043; _2046 = 1065353216u; } else { _2044 = _2040; _2045 = _2041; _2046 = _2042; } float _2054 = spvFMul(as_type(_2046), spvFSub(1.0, fast::clamp(spvFMul(as_type(_1977), 1.0 / fast::max(0.001000000047497451305389404296875, _1945)), 0.0, 1.0))); bool _2056 = 0.0 < _2054; uint _2057; if (_2056) { _2057 = 1092616192u; } else { _2057 = _2046; } uint _2104; uint _2105; uint _2106; if (_2056) { float _2063 = fma(-as_type(_1977), 2.0, spvFMul(as_type(cbuf_20.data[_1868]), as_type(_2057))); float _2067 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _2063)))); float _2070 = (0.0 > _2063) ? (-_2067) : _2067; float _2080 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_2070)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _2070)))))); float _2089 = spvFMul(_1942, _2054); float _2094 = spvFSub(1.0, _2080); float _2096 = fma(spvFMul(as_type(cbuf_20.data[70u + buf5_dword_off]), _1940), _2094, _2080); float _2097 = fma(_2096, 0.5, 0.5); _2104 = as_type(_2094); _2105 = as_type(fma(spvFMul(as_type(_2044), _2089), _2096, spvFMul(spvFMul(_2054, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1942, _1953)))), _2097))); _2106 = as_type(fma(spvFMul(as_type(_2045), _2089), _2096, spvFMul(spvFMul(_2054, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_1942, _1958)))), _2097))); } else { _2104 = _2043; _2105 = as_type(_2054); _2106 = _1943; } uint _2108; uint _2109; if (!_2056) { _2108 = 0u; _2109 = 0u; } else { _2108 = _2105; _2109 = _2106; } _2110 = _2104; _2111 = _1978; _2112 = _2039; _2113 = _2108; _2114 = _2109; } else { _2110 = _1846; _2111 = _1850; _2112 = _1847; _2113 = as_type(_1945); _2114 = _1943; } uint _2115; uint _2116; if (!_1950) { _2115 = 0u; _2116 = 0u; } else { _2115 = _2114; _2116 = _2113; } uint _2130 = 75u + buf5_dword_off; uint _2134 = 124u + buf5_dword_off; float _2158 = spvFMul(0.00277777784503996372222900390625, fma(as_type(cbuf_20.data[127u + buf5_dword_off]), _530, spvFMul(as_type(cbuf_20.data[126u + buf5_dword_off]), as_type(cbuf_20.data[_2130])))); float _2162 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _2158)))); float _2166 = spvFAdd(-3.1415927410125732421875, (0.0 > _2158) ? (-_2162) : _2162); float _2179 = fast::max(0.0, fast::min(1.0, fma(sin(6.283185482025146484375 * as_type((2147483648u & as_type(_2166)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _2166)))))), 0.5, 0.5))); float _2202 = fma(spvFMul(spvFMul(_2179, spvFMul(_2179, _2179)), fma(_2179, spvFAdd(-15.0, spvFMul(6.0, _2179)), 10.0)), spvFSub(as_type(cbuf_20.data[125u + buf5_dword_off]), as_type(cbuf_20.data[_2134])), as_type(cbuf_20.data[_2134])); float _2204 = spvFMul(as_type(cbuf_20.data[76u + buf5_dword_off]), _2202); uint _2205 = as_type(_2204); float _2207 = spvFMul(as_type(cbuf_20.data[77u + buf5_dword_off]), _2202); bool _2212 = as_type(cbuf_20.data[_2130]) > 0.0; uint _2369; uint _2370; if (_2212) { float _2215 = spvFSub(_494, as_type(cbuf_20.data[72u + buf5_dword_off])); float _2217 = spvFSub(_506, as_type(cbuf_20.data[73u + buf5_dword_off])); float _2220 = spvFSub(_508, as_type(cbuf_20.data[74u + buf5_dword_off])); float _2223 = fma(_2215, _2215, fma(_2217, _2217, spvFMul(_2220, _2220))); bool _2225 = 0.0 < _2223; uint _2228; if (_2225) { _2228 = as_type(sqrt(_2223)); } else { _2228 = _2110; } uint _2236; uint _2237; if (_2225) { float _2231 = rsqrt(fma(_2215, _2215, spvFMul(_2220, _2220))); _2236 = as_type(spvFMul(_2215, _2231)); _2237 = as_type(spvFMul(_2220, _2231)); } else { _2236 = _2112; _2237 = as_type(_2223); } uint _2239; uint _2240; uint _2241; if (!_2225) { _2239 = 0u; _2240 = 0u; _2241 = 0u; } else { _2239 = _2228; _2240 = _2236; _2241 = _2237; } uint _2243 = 140u + buf5_dword_off; uint _2247 = 141u + buf5_dword_off; uint _2251 = 142u + buf5_dword_off; bool _2259 = as_type(cbuf_20.data[143u + buf5_dword_off]) > 0.0; uint _2301; uint _2302; uint _2303; uint _2304; if (_2259) { float _2269 = fma(as_type(cbuf_20.data[_2243]), as_type(cbuf_20.data[_2243]), fma(as_type(cbuf_20.data[_2247]), as_type(cbuf_20.data[_2247]), spvFMul(as_type(cbuf_20.data[_2251]), as_type(cbuf_20.data[_2251])))); bool _2271 = _2269 > 0.0; uint _2286; uint _2287; if (_2271) { float _2279 = rsqrt(fma(as_type(cbuf_20.data[_2243]), as_type(cbuf_20.data[_2243]), spvFMul(as_type(cbuf_20.data[_2251]), as_type(cbuf_20.data[_2251])))); _2286 = as_type(spvFMul(as_type(cbuf_20.data[_2243]), _2279)); _2287 = as_type(spvFMul(as_type(cbuf_20.data[_2251]), _2279)); } else { _2286 = _2111; _2287 = as_type(_2269); } uint _2288; uint _2289; if (!_2271) { _2288 = 0u; _2289 = 0u; } else { _2288 = _2286; _2289 = _2287; } float _2296 = fma(as_type(_2288), as_type(_2240), spvFAdd(0.0, spvFMul(as_type(_2241), as_type(_2289)))); _2301 = _2288; _2302 = _2289; _2303 = as_type(fast::clamp(fma(_2296, 0.800000011920928955078125, 0.20000000298023223876953125), 0.0, 1.0)); _2304 = as_type(_2296); } else { _2301 = _2111; _2302 = 0u; _2303 = as_type(_2217); _2304 = _2241; } uint _2305; uint _2306; uint _2307; if (!_2259) { _2305 = _2240; _2306 = _2304; _2307 = 1065353216u; } else { _2305 = _2301; _2306 = _2302; _2307 = _2303; } float _2315 = spvFMul(as_type(_2307), spvFSub(1.0, fast::clamp(spvFMul(as_type(_2239), 1.0 / fast::max(0.001000000047497451305389404296875, _2207)), 0.0, 1.0))); bool _2317 = 0.0 < _2315; uint _2318; if (_2317) { _2318 = 1092616192u; } else { _2318 = _2307; } uint _2364; uint _2365; if (_2317) { float _2324 = fma(-as_type(_2239), 2.0, spvFMul(as_type(cbuf_20.data[_2130]), as_type(_2318))); float _2328 = spvFMul(6.283185482025146484375, fract(abs(spvFMul(0.15915493667125701904296875, _2324)))); float _2331 = (0.0 > _2324) ? (-_2328) : _2328; float _2341 = sin(6.283185482025146484375 * as_type((2147483648u & as_type(_2331)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _2331)))))); float _2350 = spvFMul(_2204, _2315); float _2356 = fma(spvFMul(as_type(cbuf_20.data[78u + buf5_dword_off]), _2202), spvFSub(1.0, _2341), _2341); float _2357 = fma(_2356, 0.5, 0.5); _2364 = as_type(fma(spvFMul(as_type(_2305), _2350), _2356, spvFMul(spvFMul(_2315, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_2204, _2215)))), _2357))); _2365 = as_type(fma(spvFMul(as_type(_2306), _2350), _2356, spvFMul(spvFMul(_2315, spvFMul(in.vs_in_attr4.y, spvFMul(10.0, spvFMul(_2204, _2220)))), _2357))); } else { _2364 = as_type(_2315); _2365 = _2205; } uint _2367; uint _2368; if (!_2317) { _2367 = 0u; _2368 = 0u; } else { _2367 = _2364; _2368 = _2365; } _2369 = _2367; _2370 = _2368; } else { _2369 = as_type(_2207); _2370 = _2205; } uint _2371; uint _2372; if (!_2212) { _2371 = 0u; _2372 = 0u; } else { _2371 = _2370; _2372 = _2369; } float _2374 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_692), as_type(_899)), as_type(_1111)), as_type(_1320)), as_type(_1589)), as_type(_1854)), as_type(_2116)), as_type(_2372)); float _2376 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_693), as_type(_898)), as_type(_1110)), as_type(_1319)), as_type(_1588)), as_type(_1853)), as_type(_2115)), as_type(_2371)); float _2382 = spvFMul(_2374, 1.0 / sqrt(fma(_2374, _2374, 1.0))); float _2452 = spvFMul(_2376, 1.0 / sqrt(fma(_2376, _2376, 1.0))); float _2472 = spvFSub(fma(_2452, in.vs_in_attr4.y, _508), as_type(cbuf_24.data[191u + buf8_dword_off])); float _2475 = spvFSub(fma(spvFAdd(-1.0, sqrt(fast::clamp(spvFAdd(-fma(_2452, _2452, spvFMul(_2382, _2382)), 1.0), 0.0, 1.0))), in.vs_in_attr4.y, _506), as_type(cbuf_24.data[187u + buf8_dword_off])); float _2489 = spvFSub(fma(_2382, in.vs_in_attr4.y, _494), as_type(cbuf_24.data[183u + buf8_dword_off])); float _2499 = fma(as_type(cbuf_24.data[200u + buf8_dword_off]), _2489, fma(as_type(cbuf_24.data[201u + buf8_dword_off]), _2475, fma(as_type(cbuf_24.data[202u + buf8_dword_off]), _2472, as_type(cbuf_24.data[203u + buf8_dword_off])))); float _2501 = fma(as_type(cbuf_24.data[204u + buf8_dword_off]), _2489, fma(as_type(cbuf_24.data[205u + buf8_dword_off]), _2475, fma(as_type(cbuf_24.data[206u + buf8_dword_off]), _2472, as_type(cbuf_24.data[207u + buf8_dword_off])))); float _2503 = fma(as_type(cbuf_24.data[208u + buf8_dword_off]), _2489, fma(as_type(cbuf_24.data[209u + buf8_dword_off]), _2475, fma(as_type(cbuf_24.data[210u + buf8_dword_off]), _2472, as_type(cbuf_24.data[211u + buf8_dword_off])))); float _2505 = fma(as_type(cbuf_24.data[212u + buf8_dword_off]), _2489, fma(as_type(cbuf_24.data[213u + buf8_dword_off]), _2475, fma(as_type(cbuf_24.data[214u + buf8_dword_off]), _2472, as_type(cbuf_24.data[215u + buf8_dword_off])))); out.gl_Position.x = _2499; out.gl_Position.y = _2501; out.gl_Position.z = _2503; out.gl_Position.w = _2505; out.out_attr0.x = fma(as_type(_442), _394, fma(as_type(_443), _395, spvFMul(as_type(_444), _396))); out.out_attr0.y = fma(as_type(_463), _394, fma(as_type(_464), _395, spvFMul(as_type(_465), _396))); out.out_attr0.z = fma(as_type(_484), _394, fma(as_type(_485), _395, spvFMul(as_type(_486), _396))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = in.vs_in_attr2.x; out.out_attr1.y = in.vs_in_attr2.y; out.out_attr1.z = in.vs_in_attr2.z; out.out_attr1.w = in.vs_in_attr2.w; out.out_attr2.x = _2499; out.out_attr2.y = _2501; out.out_attr2.z = _2503; out.out_attr2.w = _2505; out.out_attr3.x = fma(as_type(cbuf_8.data[0u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.x))))), as_type(cbuf_8.data[2u + buf4_dword_off])); out.out_attr3.y = fma(as_type(cbuf_8.data[1u + buf4_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr3.y))))), as_type(cbuf_8.data[3u + buf4_dword_off])); out.out_attr3.z = 0.0; out.out_attr3.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x4efb29f6 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[24]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; float4 vs_in_attr3 [[attribute(3)]]; int4 vs_in_attr4 [[attribute(4)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(15)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(16)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(18)]], uint gl_InstanceIndex [[instance_id]]) { main0_out out = {}; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u); uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; out.out_attr2.x = in.vs_in_attr3.x; out.out_attr2.y = in.vs_in_attr3.y; out.out_attr2.z = in.vs_in_attr3.z; out.out_attr2.w = in.vs_in_attr3.w; uint _171 = (as_type(as_type(in.vs_in_attr1.w)) + cbuf_12.data[((0u + (((gl_InstanceIndex * 13u) + 5u) * 16u)) + buf6_off) >> 2u]) * 3u; uint _177 = ((0u + ((_171 + 2u) * 16u)) + buf7_off) >> 2u; uint4 _190 = uint4(cbuf_16.data[_177 + 0u], cbuf_16.data[_177 + 1u], cbuf_16.data[_177 + 2u], cbuf_16.data[_177 + 3u]); uint _191 = _190.x; uint _192 = _190.y; uint _193 = _190.z; uint _198 = ((0u + ((_171 + 1u) * 16u)) + buf7_off) >> 2u; uint4 _211 = uint4(cbuf_16.data[_198 + 0u], cbuf_16.data[_198 + 1u], cbuf_16.data[_198 + 2u], cbuf_16.data[_198 + 3u]); uint _212 = _211.x; uint _213 = _211.y; uint _214 = _211.z; uint _219 = ((0u + (_171 * 16u)) + buf7_off) >> 2u; uint4 _232 = uint4(cbuf_16.data[_219 + 0u], cbuf_16.data[_219 + 1u], cbuf_16.data[_219 + 2u], cbuf_16.data[_219 + 3u]); uint _233 = _232.x; uint _234 = _232.y; uint _235 = _232.z; float _334 = spvFSub(fma(as_type(_191), in.vs_in_attr0.x, fma(as_type(_192), in.vs_in_attr0.y, fma(as_type(_193), in.vs_in_attr0.z, as_type(_190.w)))), as_type(cbuf_20.data[191u + buf8_dword_off])); float _338 = spvFSub(fma(as_type(_212), in.vs_in_attr0.x, fma(as_type(_213), in.vs_in_attr0.y, fma(as_type(_214), in.vs_in_attr0.z, as_type(_211.w)))), as_type(cbuf_20.data[187u + buf8_dword_off])); float _352 = spvFSub(fma(as_type(_233), in.vs_in_attr0.x, fma(as_type(_234), in.vs_in_attr0.y, fma(as_type(_235), in.vs_in_attr0.z, as_type(_232.w)))), as_type(cbuf_20.data[183u + buf8_dword_off])); float _362 = fma(as_type(cbuf_20.data[200u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[201u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[202u + buf8_dword_off]), _334, as_type(cbuf_20.data[203u + buf8_dword_off])))); float _364 = fma(as_type(cbuf_20.data[204u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[205u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[206u + buf8_dword_off]), _334, as_type(cbuf_20.data[207u + buf8_dword_off])))); float _366 = fma(as_type(cbuf_20.data[208u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[209u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[210u + buf8_dword_off]), _334, as_type(cbuf_20.data[211u + buf8_dword_off])))); float _368 = fma(as_type(cbuf_20.data[212u + buf8_dword_off]), _352, fma(as_type(cbuf_20.data[213u + buf8_dword_off]), _338, fma(as_type(cbuf_20.data[214u + buf8_dword_off]), _334, as_type(cbuf_20.data[215u + buf8_dword_off])))); out.gl_Position.x = _362; out.gl_Position.y = _364; out.gl_Position.z = _366; out.gl_Position.w = _368; float _395 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _398 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _401 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _403 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _419 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _420 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(as_type(_233), _420, fma(as_type(_234), _403, spvFMul(as_type(_235), _398))); out.out_attr0.y = fma(as_type(_212), _420, fma(as_type(_213), _403, spvFMul(as_type(_214), _398))); out.out_attr0.z = fma(as_type(_191), _420, fma(as_type(_192), _403, spvFMul(as_type(_193), _398))); out.out_attr0.w = float(gl_InstanceIndex); out.out_attr1.x = fma(as_type(_233), _419, fma(as_type(_234), _401, spvFMul(as_type(_235), _395))); out.out_attr1.y = fma(as_type(_212), _419, fma(as_type(_213), _401, spvFMul(as_type(_214), _395))); out.out_attr1.z = fma(as_type(_191), _419, fma(as_type(_192), _401, spvFMul(as_type(_193), _395))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _362; out.out_attr3.y = _364; out.out_attr3.z = _366; out.out_attr3.w = _368; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.x))))), as_type(cbuf_8.data[2u + buf9_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf9_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr4.y))))), as_type(cbuf_8.data[3u + buf9_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x88ae6537 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0xbb88db5f [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x9071184b [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling ls shader 0xc863cbbc [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[100]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_8 [[buffer(12)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(24)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _155 = 19u + buf3_dword_off; uint _171 = 23u + buf3_dword_off; uint _186 = 27u + buf3_dword_off; float _253 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf3_dword_off])))); float _275 = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_155])))); float _277 = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_171])))); float _279 = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_186])))); float _281 = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[31u + buf3_dword_off])))); float _291 = spvFMul(spvFMul(as_type(cbuf_8.data[77u + buf3_dword_off]), in.vs_in_attr0.w), 1.0 / sqrt(fma(_275, _275, fma(_277, _277, fma(_279, _279, spvFMul(_281, _281)))))); ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[0u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[1u])[0u] = spvFSub(as_type(cbuf_8.data[_155]), in.vs_in_attr0.x); ((device float*)&out.out_attrs[1u])[1u] = spvFSub(as_type(cbuf_8.data[_171]), in.vs_in_attr0.y); ((device float*)&out.out_attrs[1u])[2u] = spvFSub(as_type(cbuf_8.data[_186]), in.vs_in_attr0.z); ((device float*)&out.out_attrs[1u])[3u] = 0.0; ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[11u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[3u] = _253; ((device float*)&out.out_attrs[3u])[0u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[78u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[1u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[79u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[2u] = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf3_dword_off]), spvFSub(_253, as_type(cbuf_8.data[72u + buf3_dword_off]))), 0.0, 1.0); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[100]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_8 [[buffer(12)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(24)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _155 = 19u + buf3_dword_off; uint _171 = 23u + buf3_dword_off; uint _186 = 27u + buf3_dword_off; float _253 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf3_dword_off])))); float _275 = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_155])))); float _277 = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_171])))); float _279 = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_186])))); float _281 = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[31u + buf3_dword_off])))); float _291 = spvFMul(spvFMul(as_type(cbuf_8.data[77u + buf3_dword_off]), in.vs_in_attr0.w), 1.0 / sqrt(fma(_275, _275, fma(_277, _277, fma(_279, _279, spvFMul(_281, _281)))))); ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[0u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[1u])[0u] = spvFSub(as_type(cbuf_8.data[_155]), in.vs_in_attr0.x); ((device float*)&out.out_attrs[1u])[1u] = spvFSub(as_type(cbuf_8.data[_171]), in.vs_in_attr0.y); ((device float*)&out.out_attrs[1u])[2u] = spvFSub(as_type(cbuf_8.data[_186]), in.vs_in_attr0.z); ((device float*)&out.out_attrs[1u])[3u] = 0.0; ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[11u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[3u] = _253; ((device float*)&out.out_attrs[3u])[0u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[78u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[1u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[79u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[2u] = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf3_dword_off]), spvFSub(_253, as_type(cbuf_8.data[72u + buf3_dword_off]))), 0.0, 1.0); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[100]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_8 [[buffer(12)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(24)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _155 = 19u + buf3_dword_off; uint _171 = 23u + buf3_dword_off; uint _186 = 27u + buf3_dword_off; float _253 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf3_dword_off])))); float _275 = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_155])))); float _277 = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_171])))); float _279 = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_186])))); float _281 = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[31u + buf3_dword_off])))); float _291 = spvFMul(spvFMul(as_type(cbuf_8.data[77u + buf3_dword_off]), in.vs_in_attr0.w), 1.0 / sqrt(fma(_275, _275, fma(_277, _277, fma(_279, _279, spvFMul(_281, _281)))))); ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[0u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[1u])[0u] = spvFSub(as_type(cbuf_8.data[_155]), in.vs_in_attr0.x); ((device float*)&out.out_attrs[1u])[1u] = spvFSub(as_type(cbuf_8.data[_171]), in.vs_in_attr0.y); ((device float*)&out.out_attrs[1u])[2u] = spvFSub(as_type(cbuf_8.data[_186]), in.vs_in_attr0.z); ((device float*)&out.out_attrs[1u])[3u] = 0.0; ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[11u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[3u] = _253; ((device float*)&out.out_attrs[3u])[0u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[78u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[1u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[79u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[2u] = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf3_dword_off]), spvFSub(_253, as_type(cbuf_8.data[72u + buf3_dword_off]))), 0.0, 1.0); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_patchOut { float4 patch_out0; float4 patch_out1; float4 patch_out2; float4 patch_out3; float4 patch_out4; float4 patch_out5; }; struct main0_in { spvUnsafeArray in_attrs; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device main0_patchOut* spvPatchOut [[buffer(24)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 1]; device main0_patchOut& patchOut = spvPatchOut[gl_GlobalInvocationID.x / 1]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 1; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1); gl_out[gl_InvocationID].out_attrs[0u].x = gl_in[gl_InvocationID].in_attrs[0u].x; gl_out[gl_InvocationID].out_attrs[0u].y = gl_in[gl_InvocationID].in_attrs[0u].y; gl_out[gl_InvocationID].out_attrs[0u].z = gl_in[gl_InvocationID].in_attrs[0u].z; gl_out[gl_InvocationID].out_attrs[0u].w = gl_in[gl_InvocationID].in_attrs[0u].w; gl_out[gl_InvocationID].out_attrs[1u].x = gl_in[gl_InvocationID].in_attrs[1u].x; gl_out[gl_InvocationID].out_attrs[1u].y = gl_in[gl_InvocationID].in_attrs[1u].y; gl_out[gl_InvocationID].out_attrs[1u].z = gl_in[gl_InvocationID].in_attrs[1u].z; gl_out[gl_InvocationID].out_attrs[1u].w = gl_in[gl_InvocationID].in_attrs[1u].w; gl_out[gl_InvocationID].out_attrs[2u].x = gl_in[gl_InvocationID].in_attrs[2u].x; gl_out[gl_InvocationID].out_attrs[2u].y = gl_in[gl_InvocationID].in_attrs[2u].y; gl_out[gl_InvocationID].out_attrs[2u].z = gl_in[gl_InvocationID].in_attrs[2u].z; gl_out[gl_InvocationID].out_attrs[2u].w = gl_in[gl_InvocationID].in_attrs[2u].w; gl_out[gl_InvocationID].out_attrs[3u].x = gl_in[gl_InvocationID].in_attrs[3u].x; gl_out[gl_InvocationID].out_attrs[3u].y = gl_in[gl_InvocationID].in_attrs[3u].y; gl_out[gl_InvocationID].out_attrs[3u].z = gl_in[gl_InvocationID].in_attrs[3u].z; gl_out[gl_InvocationID].out_attrs[3u].w = gl_in[gl_InvocationID].in_attrs[3u].w; spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1u] = half(1.0); ((device float*)&patchOut.patch_out0)[0u] = 1.0; ((device float*)&patchOut.patch_out1)[0u] = 1.0; ((device float*)&patchOut.patch_out2)[0u] = 1.0; ((device float*)&patchOut.patch_out3)[0u] = 1.0; ((device float*)&patchOut.patch_out4)[0u] = 1.0; ((device float*)&patchOut.patch_out5)[0u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); out.gl_Position.x = spvFAdd(gl_in[0u].in_attrs[2u].x, spvFMul(gl_in[0u].in_attrs[3u].x, fma(2.0, gl_TessCoord.x, -1.0))); out.gl_Position.y = spvFAdd(gl_in[0u].in_attrs[2u].y, spvFMul(gl_in[0u].in_attrs[3u].y, fma(2.0, gl_TessCoord.y, -1.0))); out.gl_Position.z = gl_in[0u].in_attrs[2u].z; out.gl_Position.w = gl_in[0u].in_attrs[2u].w; out.out_attr0.x = gl_in[0u].in_attrs[0u].x; out.out_attr0.y = gl_in[0u].in_attrs[0u].y; out.out_attr0.z = gl_in[0u].in_attrs[0u].z; out.out_attr0.w = gl_in[0u].in_attrs[0u].w; out.out_attr1.x = gl_in[0u].in_attrs[1u].x; out.out_attr1.y = gl_in[0u].in_attrs[1u].y; out.out_attr1.z = gl_in[0u].in_attrs[1u].z; out.out_attr1.w = gl_in[0u].in_attrs[1u].w; out.out_attr2.x = gl_TessCoord.x; out.out_attr2.y = spvFSub(1.0, gl_TessCoord.y); out.out_attr2.z = gl_in[0u].in_attrs[3u].z; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct fs_cbuf_block_f32_1 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _93 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y)); float _94 = _93.x; float _95 = _93.y; float _96 = _93.z; float _110 = spvFMul(_93.w, in.fs_in_attr0.w); float _111 = spvFMul(spvFMul(_94, _94), in.fs_in_attr0.x); float _113 = spvFMul(spvFMul(_95, _95), in.fs_in_attr0.y); float _115 = spvFMul(spvFMul(_96, _96), in.fs_in_attr0.z); bool _117 = _110 > 0.0; uint _282; uint _283; uint _284; if (_117) { uint _119 = 47u + buf0_dword_off; uint _123 = 43u + buf0_dword_off; uint _127 = 51u + buf0_dword_off; uint _130 = 8u + buf1_dword_off; uint _138 = 10u + buf1_dword_off; float _158 = spvFMul(as_type(cbuf_16.data[_119]), _113); uint _170 = 14u + buf1_dword_off; float _178 = spvFMul(as_type(cbuf_16.data[_123]), _111); float _187 = spvFMul(as_type(cbuf_16.data[_127]), _115); float _220 = spvFAdd(-1.0, fma(_187, 0.11448000371456146240234375, fma(_178, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _158)))); float _227 = fma(as_type(cbuf_20.data[7u + buf1_dword_off]), _220, 1.0); float _246 = fast::clamp(spvFAdd(as_type(cbuf_20.data[_130]), spvFMul(as_type(cbuf_20.data[_130]), -exp2(-fma(as_type(cbuf_20.data[_138]), sqrt(fma(-in.fs_in_attr1.x, -in.fs_in_attr1.x, spvFMul(-in.fs_in_attr1.z, -in.fs_in_attr1.z))), -spvFMul(as_type(cbuf_20.data[9u + buf1_dword_off]), as_type(cbuf_20.data[_138])))))), 0.0, 1.0); float _260 = fma(as_type(cbuf_20.data[19u + buf1_dword_off]), _220, 1.0); float _261 = fma(_246, fma(-_111, as_type(cbuf_16.data[_123]), spvFMul(as_type(cbuf_20.data[4u + buf1_dword_off]), _227)), _178); float _262 = fma(_246, fma(-_113, as_type(cbuf_16.data[_119]), spvFMul(as_type(cbuf_20.data[5u + buf1_dword_off]), _227)), _158); float _263 = fma(_246, fma(-_115, as_type(cbuf_16.data[_127]), spvFMul(as_type(cbuf_20.data[6u + buf1_dword_off]), _227)), _187); float _266 = fast::clamp(spvFMul(as_type(cbuf_20.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_20.data[_170]), spvFSub(as_type(cbuf_20.data[15u + buf1_dword_off]), in.fs_in_attr1.y)), -spvFMul(as_type(cbuf_20.data[13u + buf1_dword_off]), as_type(cbuf_20.data[_170]))), 0.0, 1.0)), 0.0, 1.0); _282 = as_type(fma(_266, fma(as_type(cbuf_20.data[17u + buf1_dword_off]), _260, -_262), _262)); _283 = as_type(fma(_266, fma(as_type(cbuf_20.data[16u + buf1_dword_off]), _260, -_261), _261)); _284 = as_type(fma(_266, fma(as_type(cbuf_20.data[18u + buf1_dword_off]), _260, -_263), _263)); } else { _282 = as_type(_113); _283 = as_type(_115); _284 = as_type(_111); } uint _286; uint _287; if (!_117) { _286 = _283; _287 = _284; } else { _286 = _284; _287 = _283; } float _305 = fast::max(0.0, as_type(_287)); float _307 = fast::max(0.0, as_type(_282)); float _309 = fast::max(0.0, as_type(_286)); float _310 = fast::max(0.0, _110); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(as_type(cbuf_16.data[88u + buf0_dword_off]), _305); out.frag_color1.y = spvFMul(as_type(cbuf_16.data[89u + buf0_dword_off]), _307); out.frag_color1.z = spvFMul(as_type(cbuf_16.data[90u + buf0_dword_off]), _309); out.frag_color1.w = spvFMul(as_type(cbuf_16.data[91u + buf0_dword_off]), _310); if (false) { discard_fragment(); } out.frag_color0.x = _305; out.frag_color0.y = _307; out.frag_color0.z = _309; out.frag_color0.w = _310; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x5a402dae [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[100]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_8 [[buffer(12)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(24)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _155 = 19u + buf3_dword_off; uint _171 = 23u + buf3_dword_off; uint _186 = 27u + buf3_dword_off; float _253 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf3_dword_off])))); float _275 = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_155])))); float _277 = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_171])))); float _279 = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_186])))); float _281 = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[31u + buf3_dword_off])))); float _291 = spvFMul(spvFMul(as_type(cbuf_8.data[77u + buf3_dword_off]), in.vs_in_attr0.w), 1.0 / sqrt(fma(_275, _275, fma(_277, _277, fma(_279, _279, spvFMul(_281, _281)))))); ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[0u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[1u])[0u] = spvFSub(as_type(cbuf_8.data[_155]), in.vs_in_attr0.x); ((device float*)&out.out_attrs[1u])[1u] = spvFSub(as_type(cbuf_8.data[_171]), in.vs_in_attr0.y); ((device float*)&out.out_attrs[1u])[2u] = spvFSub(as_type(cbuf_8.data[_186]), in.vs_in_attr0.z); ((device float*)&out.out_attrs[1u])[3u] = 0.0; ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[11u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[3u] = _253; ((device float*)&out.out_attrs[3u])[0u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[78u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[1u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[79u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[2u] = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf3_dword_off]), spvFSub(_253, as_type(cbuf_8.data[72u + buf3_dword_off]))), 0.0, 1.0); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[100]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_8 [[buffer(12)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(24)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _155 = 19u + buf3_dword_off; uint _171 = 23u + buf3_dword_off; uint _186 = 27u + buf3_dword_off; float _253 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf3_dword_off])))); float _275 = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_155])))); float _277 = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_171])))); float _279 = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_186])))); float _281 = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[31u + buf3_dword_off])))); float _291 = spvFMul(spvFMul(as_type(cbuf_8.data[77u + buf3_dword_off]), in.vs_in_attr0.w), 1.0 / sqrt(fma(_275, _275, fma(_277, _277, fma(_279, _279, spvFMul(_281, _281)))))); ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[0u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[1u])[0u] = spvFSub(as_type(cbuf_8.data[_155]), in.vs_in_attr0.x); ((device float*)&out.out_attrs[1u])[1u] = spvFSub(as_type(cbuf_8.data[_171]), in.vs_in_attr0.y); ((device float*)&out.out_attrs[1u])[2u] = spvFSub(as_type(cbuf_8.data[_186]), in.vs_in_attr0.z); ((device float*)&out.out_attrs[1u])[3u] = 0.0; ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[11u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[3u] = _253; ((device float*)&out.out_attrs[3u])[0u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[78u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[1u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[79u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[2u] = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf3_dword_off]), spvFSub(_253, as_type(cbuf_8.data[72u + buf3_dword_off]))), 0.0, 1.0); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[100]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_8 [[buffer(12)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(24)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _155 = 19u + buf3_dword_off; uint _171 = 23u + buf3_dword_off; uint _186 = 27u + buf3_dword_off; float _253 = fma(as_type(cbuf_8.data[12u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[13u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[14u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[15u + buf3_dword_off])))); float _275 = fma(as_type(cbuf_8.data[16u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[17u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[18u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_155])))); float _277 = fma(as_type(cbuf_8.data[20u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[21u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[22u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_171])))); float _279 = fma(as_type(cbuf_8.data[24u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[25u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[26u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[_186])))); float _281 = fma(as_type(cbuf_8.data[28u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[29u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[30u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[31u + buf3_dword_off])))); float _291 = spvFMul(spvFMul(as_type(cbuf_8.data[77u + buf3_dword_off]), in.vs_in_attr0.w), 1.0 / sqrt(fma(_275, _275, fma(_277, _277, fma(_279, _279, spvFMul(_281, _281)))))); ((device float*)&out.out_attrs[0u])[0u] = in.vs_in_attr1.z; ((device float*)&out.out_attrs[0u])[1u] = in.vs_in_attr1.y; ((device float*)&out.out_attrs[0u])[2u] = in.vs_in_attr1.x; ((device float*)&out.out_attrs[0u])[3u] = in.vs_in_attr1.w; ((device float*)&out.out_attrs[1u])[0u] = spvFSub(as_type(cbuf_8.data[_155]), in.vs_in_attr0.x); ((device float*)&out.out_attrs[1u])[1u] = spvFSub(as_type(cbuf_8.data[_171]), in.vs_in_attr0.y); ((device float*)&out.out_attrs[1u])[2u] = spvFSub(as_type(cbuf_8.data[_186]), in.vs_in_attr0.z); ((device float*)&out.out_attrs[1u])[3u] = 0.0; ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(cbuf_8.data[0u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[1u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[2u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[3u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(cbuf_8.data[4u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[5u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[6u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[7u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(cbuf_8.data[8u + buf3_dword_off]), in.vs_in_attr0.x, fma(as_type(cbuf_8.data[9u + buf3_dword_off]), in.vs_in_attr0.y, fma(as_type(cbuf_8.data[10u + buf3_dword_off]), in.vs_in_attr0.z, as_type(cbuf_8.data[11u + buf3_dword_off])))); ((device float*)&out.out_attrs[2u])[3u] = _253; ((device float*)&out.out_attrs[3u])[0u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[78u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[1u] = spvFMul(_253, spvFMul(as_type(cbuf_8.data[79u + buf3_dword_off]), _291)); ((device float*)&out.out_attrs[3u])[2u] = fast::clamp(spvFMul(as_type(cbuf_8.data[73u + buf3_dword_off]), spvFSub(_253, as_type(cbuf_8.data[72u + buf3_dword_off]))), 0.0, 1.0); } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_patchOut { float4 patch_out0; float4 patch_out1; float4 patch_out2; float4 patch_out3; float4 patch_out4; float4 patch_out5; }; struct main0_in { spvUnsafeArray in_attrs; }; kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device main0_patchOut* spvPatchOut [[buffer(24)]], device MTLQuadTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 1]; device main0_patchOut& patchOut = spvPatchOut[gl_GlobalInvocationID.x / 1]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 1; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 1, spvIndirectParams[1] - 1); gl_out[gl_InvocationID].out_attrs[0u].x = gl_in[gl_InvocationID].in_attrs[0u].x; gl_out[gl_InvocationID].out_attrs[0u].y = gl_in[gl_InvocationID].in_attrs[0u].y; gl_out[gl_InvocationID].out_attrs[0u].z = gl_in[gl_InvocationID].in_attrs[0u].z; gl_out[gl_InvocationID].out_attrs[0u].w = gl_in[gl_InvocationID].in_attrs[0u].w; gl_out[gl_InvocationID].out_attrs[1u].x = gl_in[gl_InvocationID].in_attrs[1u].x; gl_out[gl_InvocationID].out_attrs[1u].y = gl_in[gl_InvocationID].in_attrs[1u].y; gl_out[gl_InvocationID].out_attrs[1u].z = gl_in[gl_InvocationID].in_attrs[1u].z; gl_out[gl_InvocationID].out_attrs[1u].w = gl_in[gl_InvocationID].in_attrs[1u].w; gl_out[gl_InvocationID].out_attrs[2u].x = gl_in[gl_InvocationID].in_attrs[2u].x; gl_out[gl_InvocationID].out_attrs[2u].y = gl_in[gl_InvocationID].in_attrs[2u].y; gl_out[gl_InvocationID].out_attrs[2u].z = gl_in[gl_InvocationID].in_attrs[2u].z; gl_out[gl_InvocationID].out_attrs[2u].w = gl_in[gl_InvocationID].in_attrs[2u].w; gl_out[gl_InvocationID].out_attrs[3u].x = gl_in[gl_InvocationID].in_attrs[3u].x; gl_out[gl_InvocationID].out_attrs[3u].y = gl_in[gl_InvocationID].in_attrs[3u].y; gl_out[gl_InvocationID].out_attrs[3u].z = gl_in[gl_InvocationID].in_attrs[3u].z; gl_out[gl_InvocationID].out_attrs[3u].w = gl_in[gl_InvocationID].in_attrs[3u].w; spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2u] = half(1.0); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[3u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[0u] = half(1.0); spvTessLevel[gl_PrimitiveID].insideTessellationFactor[1u] = half(1.0); ((device float*)&patchOut.patch_out0)[0u] = 1.0; ((device float*)&patchOut.patch_out1)[0u] = 1.0; ((device float*)&patchOut.patch_out2)[0u] = 1.0; ((device float*)&patchOut.patch_out3)[0u] = 1.0; ((device float*)&patchOut.patch_out4)[0u] = 1.0; ((device float*)&patchOut.patch_out5)[0u] = 1.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(quad, 1) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], float2 gl_TessCoordIn [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 1]; float3 gl_TessCoord = float3(gl_TessCoordIn.x, gl_TessCoordIn.y, 0.0); out.gl_Position.x = spvFAdd(gl_in[0u].in_attrs[2u].x, spvFMul(gl_in[0u].in_attrs[3u].x, fma(2.0, gl_TessCoord.x, -1.0))); out.gl_Position.y = spvFAdd(gl_in[0u].in_attrs[2u].y, spvFMul(gl_in[0u].in_attrs[3u].y, fma(2.0, gl_TessCoord.y, -1.0))); out.gl_Position.z = gl_in[0u].in_attrs[2u].z; out.gl_Position.w = gl_in[0u].in_attrs[2u].w; out.out_attr0.x = gl_in[0u].in_attrs[0u].x; out.out_attr0.y = gl_in[0u].in_attrs[0u].y; out.out_attr0.z = gl_in[0u].in_attrs[0u].z; out.out_attr0.w = gl_in[0u].in_attrs[0u].w; out.out_attr1.x = gl_in[0u].in_attrs[1u].x; out.out_attr1.y = gl_in[0u].in_attrs[1u].y; out.out_attr1.z = gl_in[0u].in_attrs[1u].z; out.out_attr1.w = gl_in[0u].in_attrs[1u].w; out.out_attr2.x = gl_TessCoord.x; out.out_attr2.y = spvFSub(1.0, gl_TessCoord.y); out.out_attr2.z = gl_in[0u].in_attrs[3u].z; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[116]; }; struct fs_cbuf_block_f32_1 { uint data[56]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_20 [[buffer(10)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _92 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr2.x, in.fs_in_attr2.y)); float _93 = _92.x; float _94 = _92.y; float _95 = _92.z; float _109 = spvFMul(_92.w, in.fs_in_attr0.w); float _110 = spvFMul(spvFMul(_93, _93), in.fs_in_attr0.x); float _112 = spvFMul(spvFMul(_94, _94), in.fs_in_attr0.y); float _114 = spvFMul(spvFMul(_95, _95), in.fs_in_attr0.z); bool _116 = 0.0 < _109; uint _281; uint _282; uint _283; if (_116) { uint _118 = 47u + buf0_dword_off; uint _122 = 43u + buf0_dword_off; uint _126 = 51u + buf0_dword_off; uint _129 = 8u + buf1_dword_off; uint _137 = 10u + buf1_dword_off; float _157 = spvFMul(as_type(cbuf_16.data[_118]), _112); uint _169 = 14u + buf1_dword_off; float _177 = spvFMul(as_type(cbuf_16.data[_122]), _110); float _186 = spvFMul(as_type(cbuf_16.data[_126]), _114); float _219 = spvFAdd(-1.0, fma(_186, 0.11448000371456146240234375, fma(_177, 0.2989099919795989990234375, spvFMul(0.586610019207000732421875, _157)))); float _226 = fma(as_type(cbuf_20.data[7u + buf1_dword_off]), _219, 1.0); float _245 = fast::clamp(spvFAdd(as_type(cbuf_20.data[_129]), spvFMul(as_type(cbuf_20.data[_129]), -exp2(-fma(as_type(cbuf_20.data[_137]), sqrt(fma(-in.fs_in_attr1.x, -in.fs_in_attr1.x, spvFMul(-in.fs_in_attr1.z, -in.fs_in_attr1.z))), -spvFMul(as_type(cbuf_20.data[9u + buf1_dword_off]), as_type(cbuf_20.data[_137])))))), 0.0, 1.0); float _259 = fma(as_type(cbuf_20.data[19u + buf1_dword_off]), _219, 1.0); float _260 = fma(_245, fma(-_110, as_type(cbuf_16.data[_122]), spvFMul(as_type(cbuf_20.data[4u + buf1_dword_off]), _226)), _177); float _261 = fma(_245, fma(-_112, as_type(cbuf_16.data[_118]), spvFMul(as_type(cbuf_20.data[5u + buf1_dword_off]), _226)), _157); float _262 = fma(_245, fma(-_114, as_type(cbuf_16.data[_126]), spvFMul(as_type(cbuf_20.data[6u + buf1_dword_off]), _226)), _186); float _265 = fast::clamp(spvFMul(as_type(cbuf_20.data[12u + buf1_dword_off]), fast::clamp(spvFAdd(spvFMul(as_type(cbuf_20.data[_169]), spvFSub(as_type(cbuf_20.data[15u + buf1_dword_off]), in.fs_in_attr1.y)), -spvFMul(as_type(cbuf_20.data[13u + buf1_dword_off]), as_type(cbuf_20.data[_169]))), 0.0, 1.0)), 0.0, 1.0); _281 = as_type(fma(_265, fma(as_type(cbuf_20.data[17u + buf1_dword_off]), _259, -_261), _261)); _282 = as_type(fma(_265, fma(as_type(cbuf_20.data[16u + buf1_dword_off]), _259, -_260), _260)); _283 = as_type(fma(_265, fma(as_type(cbuf_20.data[18u + buf1_dword_off]), _259, -_262), _262)); } else { _281 = as_type(_112); _282 = as_type(_114); _283 = as_type(_110); } uint _285; uint _286; if (!_116) { _285 = _282; _286 = _283; } else { _285 = _283; _286 = _282; } if (false) { discard_fragment(); } out.frag_color0.x = fast::max(0.0, as_type(_286)); out.frag_color0.y = fast::max(0.0, as_type(_281)); out.frag_color0.z = fast::max(0.0, as_type(_285)); out.frag_color0.w = fast::max(0.0, _109); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xbae5454e [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[36]; }; constant uint _104 = {}; constant uint _105 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _125 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _126 = _125.x; float4 _131 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _139 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _141 = _139.y; float4 _147 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _148 = _147.x; float _149 = _147.y; float _150 = _147.z; float _221 = fma(2.0, _131.z, -1.0); float _239 = fma(2.0, _131.y, -1.0); float _260 = fma(2.0, _131.x, -1.0); float _268 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _126, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _271 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _126, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _288 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _126, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _289 = spvFMul(_268, _271); float _291 = rsqrt(fma(_260, _260, fma(_239, _239, spvFMul(_221, _221)))); float _293 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _126, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _295 = spvFMul(_288, _271); float _297 = spvFMul(_221, _291); float _298 = spvFMul(_293, _271); float _356 = spvFMul(_239, _291); float _360 = spvFMul(_260, _291); float _365 = rsqrt(fma(_298, _298, fma(_295, _295, spvFMul(_289, _289)))); float _371 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _360, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _356, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _297))); float _372 = spvFMul(_289, _365); float _376 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _360, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _356, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _297))); float _378 = spvFMul(_295, _365); uint _379 = as_type(_378); float _383 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _360, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _356, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _297))); float _384 = spvFMul(_298, _365); uint _385 = as_type(_384); float _397 = spvFMul(fma(_383, _384, fma(_376, _378, spvFMul(_371, _372))), 2.0); float _411 = spvFMul(10.0, _141); float _418 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_384, _383, fma(-_378, _376, spvFMul(_371, -_372)))))); float4 _431 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _432 = _431.x; float _433 = spvFMul(_148, _148); float _434 = spvFMul(_149, _149); float _435 = spvFMul(_150, _150); float _436 = exp2(spvFMul(13.0, _139.x)); bool _445 = _411 == 0.0; float _446 = fma(2.0, _411, 1.0); float _450 = fma(as_type(cbuf_56.data[16u + buf1_dword_off]), _298, fma(as_type(cbuf_56.data[17u + buf1_dword_off]), _295, fma(as_type(cbuf_56.data[18u + buf1_dword_off]), _289, as_type(cbuf_56.data[19u + buf1_dword_off])))); float _453 = fma(as_type(cbuf_56.data[20u + buf1_dword_off]), _298, fma(as_type(cbuf_56.data[21u + buf1_dword_off]), _295, fma(as_type(cbuf_56.data[22u + buf1_dword_off]), _289, as_type(cbuf_56.data[23u + buf1_dword_off])))); float _456 = fma(as_type(cbuf_56.data[28u + buf1_dword_off]), _298, fma(as_type(cbuf_56.data[29u + buf1_dword_off]), _295, fma(as_type(cbuf_56.data[30u + buf1_dword_off]), _289, as_type(cbuf_56.data[31u + buf1_dword_off])))); bool _458 = 0.0 >= fma(as_type(cbuf_56.data[24u + buf1_dword_off]), _298, fma(as_type(cbuf_56.data[25u + buf1_dword_off]), _295, fma(as_type(cbuf_56.data[26u + buf1_dword_off]), _289, as_type(cbuf_56.data[27u + buf1_dword_off])))); uint _459; if (_458) { _459 = 0u; } else { _459 = as_type(_298); } uint _460; uint _461; uint _462; uint _463; uint _464; if (_458) { _460 = 0u; _461 = 0u; _462 = 0u; _463 = 0u; _464 = 0u; } else { _460 = as_type(spvFMul(_418, _418)); _461 = as_type(_289); _462 = as_type(_293); _463 = as_type(_268); _464 = as_type(_376); } bool _465 = !_458; uint _889; uint _890; uint _891; uint _892; uint _893; uint _894; if (!_458) { uint _476 = 3u + buf1_dword_off; uint _479 = 12u + buf1_dword_off; uint _482 = 13u + buf1_dword_off; uint _485 = 15u + buf1_dword_off; float _491 = fma(-as_type(_462), _271, as_type(cbuf_56.data[0u + buf1_dword_off])); uint _492 = as_type(_491); float _495 = fma(-_288, _271, as_type(cbuf_56.data[1u + buf1_dword_off])); float _499 = fma(-as_type(_463), _271, as_type(cbuf_56.data[2u + buf1_dword_off])); float _503 = rsqrt(fma(_491, _491, fma(_495, _495, spvFMul(_499, _499)))); float _505 = spvFMul(_491, _503); float _506 = spvFMul(_495, _503); float _507 = spvFMul(_499, _503); float _510 = fma(_491, _491, fma(_495, _495, spvFMul(_499, _499))); float _515 = fma(_505, _383, fma(_506, as_type(_464), spvFMul(_371, _507))); float _517 = fast::clamp(fast::max(_515, _515), 0.0, 1.0); bool _519 = as_type(cbuf_56.data[_485]) > 0.0; uint _545; uint _546; uint _547; uint _548; uint _549; uint _550; if (_519) { float _524 = 1.0 / spvFMul(as_type(cbuf_56.data[_476]), as_type(cbuf_56.data[_476])); float _525 = 1.0 / _510; float _530 = 1.0 / _456; float _531 = spvFMul(_450, _530); float _532 = spvFMul(_453, _530); float _534 = fma(_532, _532, spvFMul(_531, _531)); float _541 = fast::clamp(spvFMul(_510, _524), 0.0, 1.0); _545 = as_type(_525); _546 = as_type(fast::max(0.0, spvFSub(_525, _524))); _547 = as_type(spvFSub(1.0, _541)); _548 = as_type(fast::clamp(spvFAdd(-_534, 1.0), 0.0, 1.0)); _549 = as_type(_541); _550 = as_type(_534); } else { _545 = _104; _546 = _105; _547 = as_type(_510); _548 = as_type(_456); _549 = as_type(_453); _550 = as_type(_450); } uint _573; uint _574; uint _575; uint _576; if (!_519) { float _557 = fast::clamp(spvFAdd(-spvFMul(as_type(_548), 1.0 / as_type(cbuf_56.data[_476])), 1.0), 0.0, 1.0); float _559 = 1.0 / as_type(_548); float _561 = spvFMul(as_type(_550), _559); float _563 = spvFMul(as_type(_549), _559); float _568 = fast::clamp(spvFAdd(-fma(_563, _563, spvFMul(_561, _561)), 1.0), 0.0, 1.0); _573 = as_type(spvFMul(_557, _557)); _574 = 1065353216u; _575 = 1065353216u; _576 = as_type(spvFMul(_568, _568)); } else { _573 = _545; _574 = _546; _575 = _547; _576 = _548; } bool _578 = as_type(cbuf_56.data[_485]) > 0.0; uint _751; uint _752; uint _753; uint _754; uint _755; uint _756; uint _757; uint _758; uint _759; bool _760; uint _761; uint _762; if (_578) { float _593 = rsqrt(fma(-as_type(_459), -as_type(_459), fma(-_295, -_295, spvFMul(-as_type(_461), -as_type(_461))))); float _600 = fma(_499, _503, spvFMul(-as_type(_461), _593)); uint _601 = 4u + buf1_dword_off; uint _604 = 5u + buf1_dword_off; uint _607 = 6u + buf1_dword_off; uint _610 = 7u + buf1_dword_off; float _616 = fma(_495, _503, spvFMul(-_295, _593)); float _618 = fma(_491, _503, spvFMul(-as_type(_459), _593)); float _621 = rsqrt(fma(_618, _618, fma(_616, _616, spvFMul(_600, _600)))); float _637 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_610]), _436), 1.0 / fma(_436, 0.01000213623046875, as_type(cbuf_56.data[_610])))); float _644 = spvFMul(as_type(_574), as_type(_576)); float _647 = spvFMul(as_type(_575), as_type(_576)); float _652 = fma(0.125, _637, 0.25); bool _653 = _465 && _445; uint _657; if (_653) { _657 = as_type(spvFMul(as_type(cbuf_56.data[_601]), _517)); } else { _657 = as_type(_637); } uint _671; uint _672; uint _673; uint _674; uint _675; if (_653) { float _659 = spvFMul(as_type(cbuf_56.data[_604]), _517); float _662 = spvFMul(as_type(cbuf_56.data[_607]), _517); _671 = as_type(spvFMul(_644, _662)); _672 = as_type(spvFMul(_644, _659)); _673 = as_type(spvFMul(_644, as_type(_657))); _674 = as_type(_662); _675 = as_type(_659); } else { _671 = _459; _672 = _492; _673 = _460; _674 = _379; _675 = _385; } bool _677 = _465 && (!_653); uint _680; if (_677) { _680 = as_type(fma(_141, 10.0, _515)); } else { _680 = _657; } uint _715; uint _716; uint _717; uint _718; uint _719; if (_677) { float _699 = spvFMul(as_type(cbuf_56.data[_479]), as_type(_673)); float _704 = fma(_644, spvFMul(fast::max(0.0, as_type(_680)), 1.0 / _446), spvFMul(_411, spvFMul(_644, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[_482]), 32.0), log2(fast::clamp(fma(_505, as_type(_675), fma(_506, as_type(_674), spvFMul(_372, _507))), 0.0, 1.0)))), _699)))); _715 = as_type(spvFMul(as_type(cbuf_56.data[_607]), _704)); _716 = as_type(spvFMul(as_type(cbuf_56.data[_604]), _704)); _717 = as_type(spvFMul(as_type(cbuf_56.data[_601]), _704)); _718 = as_type(_699); _719 = as_type(_704); } else { _715 = _671; _716 = _672; _717 = _673; _718 = _674; _719 = _675; } float _729 = exp2(spvFMul(_637, log2(fast::clamp(fma(spvFMul(_618, _621), _383, fma(spvFMul(_616, _621), as_type(_464), spvFMul(_371, spvFMul(_600, _621)))), 0.0, 1.0)))); float _730 = exp2(spvFMul(0.0999755859375, log2(_517))); float _738 = spvFMul(_730, spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _729)); float _742 = spvFMul(_647, _738); _751 = _715; _752 = _716; _753 = as_type(spvFMul(_652, spvFMul(_647, spvFMul(_730, spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _729))))); _754 = as_type(spvFMul(_652, _742)); _755 = as_type(spvFMul(_652, spvFMul(_647, spvFMul(_730, spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _729))))); _756 = _717; _757 = _718; _758 = _719; _759 = as_type(_738); _760 = _465; _761 = as_type(_593); _762 = as_type(_742); } else { _751 = _459; _752 = _492; _753 = as_type(_503); _754 = _464; _755 = _461; _756 = _460; _757 = _379; _758 = _385; _759 = as_type(_141); _760 = _445; _761 = as_type(fma(_289, _365, -spvFMul(_371, _397))); _762 = as_type(_436); } uint _883; uint _884; uint _885; uint _886; uint _887; uint _888; if (!_578) { uint _763 = 4u + buf1_dword_off; uint _766 = 5u + buf1_dword_off; uint _769 = 6u + buf1_dword_off; uint _772 = 7u + buf1_dword_off; float _788 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_772]), as_type(_762)), 1.0 / fma(as_type(_762), 0.01000213623046875, as_type(cbuf_56.data[_772])))); float _793 = fma(0.125, _788, 0.25); float _795 = spvFMul(exp2(spvFMul(spvFMul(0.25, _788), log2(fast::clamp(fma(_505, fma(_298, _365, -spvFMul(_383, _397)), fma(_506, fma(_295, _365, -spvFMul(_376, _397)), spvFMul(as_type(_761), _507))), 0.0, 1.0)))), _793); float _798 = spvFMul(as_type(_576), as_type(_573)); bool _799 = _465 && _760; uint _803; if (_799) { _803 = as_type(spvFMul(as_type(cbuf_56.data[_763]), _517)); } else { _803 = as_type(_793); } uint _817; uint _818; uint _819; uint _820; uint _821; if (_799) { float _805 = spvFMul(as_type(cbuf_56.data[_766]), _517); float _808 = spvFMul(as_type(cbuf_56.data[_769]), _517); _817 = as_type(spvFMul(_798, _808)); _818 = as_type(spvFMul(_798, _805)); _819 = as_type(spvFMul(_798, as_type(_803))); _820 = as_type(_808); _821 = as_type(_805); } else { _817 = _751; _818 = _752; _819 = _756; _820 = _757; _821 = _758; } bool _823 = _465 && (!_799); uint _827; if (_823) { _827 = as_type(fma(as_type(_759), 10.0, _515)); } else { _827 = _803; } uint _859; uint _860; uint _861; if (_823) { float _849 = fma(_798, spvFMul(fast::max(0.0, as_type(_827)), 1.0 / _446), spvFMul(_411, spvFMul(_798, spvFMul(spvFMul(as_type(cbuf_56.data[_479]), as_type(_819)), exp2(spvFMul(spvFMul(as_type(cbuf_56.data[_482]), 32.0), log2(fast::clamp(fma(_505, as_type(_821), fma(_506, as_type(_820), spvFMul(_372, _507))), 0.0, 1.0)))))))); _859 = as_type(spvFMul(as_type(cbuf_56.data[_769]), _849)); _860 = as_type(spvFMul(as_type(cbuf_56.data[_766]), _849)); _861 = as_type(spvFMul(as_type(cbuf_56.data[_763]), _849)); } else { _859 = _817; _860 = _818; _861 = _819; } _883 = _859; _884 = _860; _885 = _861; _886 = as_type(spvFMul(_798, spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _795))); _887 = as_type(spvFMul(_798, spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _795))); _888 = as_type(spvFMul(_798, spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _795))); } else { _883 = _751; _884 = _752; _885 = _756; _886 = _753; _887 = _754; _888 = _755; } _889 = _886; _890 = _887; _891 = _888; _892 = _883; _893 = _884; _894 = _885; } else { _889 = _463; _890 = _464; _891 = _461; _892 = _459; _893 = _462; _894 = _460; } if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_433, spvFMul(_432, as_type(_891))); out.frag_color1.y = spvFMul(_434, spvFMul(_432, as_type(_890))); out.frag_color1.z = spvFMul(_435, spvFMul(_432, as_type(_889))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_432, spvFSub(as_type(_894), spvFMul(spvFMul(_433, as_type(_894)), 0.5))); out.frag_color0.y = spvFMul(_432, spvFSub(as_type(_893), spvFMul(spvFMul(_434, as_type(_893)), 0.5))); out.frag_color0.z = spvFMul(_432, spvFSub(as_type(_892), spvFMul(spvFMul(_435, as_type(_892)), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xd07810e4 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xb0acf50 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[24]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; fragment main0_out main0(constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_24 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], texture2d fs_img16 [[texture(1)]], sampler fs_samp12 [[sampler(0)]], float4 gl_FragCoord [[position]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint _97 = as_type(gl_FragCoord.x); uint _100 = as_type(gl_FragCoord.y); uint _102 = 9u + buf0_dword_off; uint _110 = 11u + buf0_dword_off; uint _114 = uint(int(as_type(cbuf_24.data[10u + buf0_dword_off]))); bool _115 = _114 != 0u; bool _116 = !_115; uint _212; uint _213; uint _214; bool _215; if (_115) { bool _117 = _114 == 1u; uint _209; uint _210; uint _211; if (_117) { uint _128 = 6u + buf0_dword_off; uint _132 = 7u + buf0_dword_off; float _171 = fma(as_type(cbuf_24.data[_128]), spvFMul(gl_FragCoord.x, 1.0 / fast::max(as_type(cbuf_24.data[4u + buf0_dword_off]), 0.001000000047497451305389404296875)), spvFMul(fast::max(-as_type(cbuf_24.data[_128]), -as_type(cbuf_24.data[_128])), 0.5)); float _185 = spvFMul(spvFMul(6.283184051513671875, 1.0 / fast::max(as_type(cbuf_24.data[12u + buf0_dword_off]), 0.001000000047497451305389404296875)), fma(as_type(cbuf_24.data[_102]), as_type(cbuf_24.data[_110]), fma(fma(as_type(cbuf_24.data[_132]), spvFMul(-gl_FragCoord.y, 1.0 / fast::max(as_type(cbuf_24.data[5u + buf0_dword_off]), 0.001000000047497451305389404296875)), spvFMul(fast::max(as_type(cbuf_24.data[_132]), as_type(cbuf_24.data[_132])), 0.5)), 1.0, spvFMul(0.0, _171)))); _209 = as_type(_171); _210 = cbuf_24.data[_110]; _211 = as_type(spvFMul(spvFMul(as_type(cbuf_24.data[13u + buf0_dword_off]), exp2(spvFMul(as_type(cbuf_24.data[19u + buf0_dword_off]), log2(abs(fma(0.5, sin(6.283185482025146484375 * as_type((2147483648u & as_type(_185)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _185)))))), 0.5)))))), 2.0)); } else { _209 = _100; _210 = _97; _211 = _114; } _212 = _209; _213 = _210; _214 = _211; _215 = !_117; } else { _212 = _100; _213 = _97; _214 = _114; _215 = false; } uint _527; if (_116 || _215) { uint _357; uint _358; uint _359; bool _360; if (_115) { bool _217 = _214 == 2u; uint _354; uint _355; uint _356; if (_217) { uint _225 = 6u + buf0_dword_off; uint _228 = 7u + buf0_dword_off; uint _231 = 0u + buf0_dword_off; uint _234 = 2u + buf0_dword_off; uint _239 = 12u + buf0_dword_off; float _273 = fma(as_type(cbuf_24.data[_225]), spvFMul(as_type(_213), 1.0 / fast::max(as_type(cbuf_24.data[4u + buf0_dword_off]), 0.001000000047497451305389404296875)), spvFMul(fast::max(-as_type(cbuf_24.data[_225]), -as_type(cbuf_24.data[_225])), 0.5)); float _275 = fma(as_type(cbuf_24.data[_228]), spvFMul(-as_type(_212), 1.0 / fast::max(as_type(cbuf_24.data[5u + buf0_dword_off]), 0.001000000047497451305389404296875)), spvFMul(fast::max(as_type(cbuf_24.data[_228]), as_type(cbuf_24.data[_228])), 0.5)); float _277 = spvFSub(as_type(cbuf_24.data[_231]), _273); float _279 = spvFSub(as_type(cbuf_24.data[_234]), _275); float _281 = fma(_279, _279, spvFMul(_277, _277)); float _285 = rsqrt(_281); float _286 = spvFMul(6.283184051513671875, 1.0 / fast::max(as_type(cbuf_24.data[_239]), 0.001000000047497451305389404296875)); float _305 = fma(_286, fma(spvFMul(_279, _285), spvFSub(_275, as_type(cbuf_24.data[_234])), spvFMul(spvFMul(_277, _285), spvFSub(_273, as_type(cbuf_24.data[_231])))), spvFMul(as_type(cbuf_24.data[_102]), spvFMul(as_type(cbuf_24.data[_110]), _286))); float _313 = sqrt(_281); float _316 = fma(as_type(cbuf_24.data[_102]), as_type(cbuf_24.data[_110]), fma(as_type(cbuf_24.data[_239]), 0.5, spvFMul(spvFAdd(as_type(cbuf_24.data[15u + buf0_dword_off]), -1.0), -as_type(cbuf_24.data[_239])))); float _345 = ((_316 > _313) || (_313 > fma(as_type(cbuf_24.data[_102]), as_type(cbuf_24.data[_110]), as_type(cbuf_24.data[_239])))) ? 0.0 : 1.0; float _349 = fma(-fast::clamp(spvFMul(as_type(cbuf_24.data[_102]), 1.0 / fast::max(as_type(cbuf_24.data[14u + buf0_dword_off]), 0.001000000047497451305389404296875)), 0.0, 1.0), _345, _345); _354 = as_type(_316); _355 = as_type(_349); _356 = as_type(spvFMul(spvFMul(spvFMul(as_type(cbuf_24.data[13u + buf0_dword_off]), exp2(spvFMul(as_type(cbuf_24.data[19u + buf0_dword_off]), log2(abs(fma(0.5, sin(6.283185482025146484375 * as_type((2147483648u & as_type(_305)) | as_type(fract(abs(spvFMul(0.15915493667125701904296875, _305)))))), 0.5)))))), _349), 2.0)); } else { _354 = _212; _355 = _213; _356 = _214; } _357 = _354; _358 = _355; _359 = _356; _360 = !_217; } else { _357 = _212; _358 = _213; _359 = _214; _360 = false; } uint _526; if (_116 || _360) { uint _520; bool _521; if (_115) { bool _363 = _359 == 3u; uint _519; if (_363) { uint _369 = 16u + buf0_dword_off; uint _373 = 17u + buf0_dword_off; uint _377 = 18u + buf0_dword_off; float _398 = 1.0 / fast::max(as_type(cbuf_24.data[4u + buf0_dword_off]), 0.001000000047497451305389404296875); float _401 = spvFMul(as_type(_357), _398); float _402 = spvFSub(1.0, _398); float _404 = spvFMul(as_type(_358), _398); float _421 = spvFMul(spvFMul(as_type(cbuf_24.data[_373]), spvFMul(as_type(cbuf_24.data[_373]), spvFMul(as_type(cbuf_24.data[_110]), as_type(cbuf_24.data[_110])))), 1.0 / fast::max(0.001000000047497451305389404296875, spvFMul(as_type(cbuf_24.data[_377]), as_type(cbuf_24.data[_377])))); float _427 = spvFAdd(as_type(cbuf_24.data[20u + buf0_dword_off]), as_type(_358)); float _430 = spvFAdd(as_type(cbuf_24.data[21u + buf0_dword_off]), as_type(_357)); float _436 = 1.0 / fma(as_type(cbuf_24.data[_369]), as_type(cbuf_24.data[_373]), 2.0); float _451 = spvFMul(_398, _427); float _452 = spvFMul(_398, _430); bool _455 = (((_401 >= _402) || (_398 >= _401)) || (_404 >= _402)) || (_398 >= _404); uint _456; if (_455) { _456 = 0u; } else { _456 = as_type(_398); } uint _515; if (!_455) { uint _514 = as_type(fma(spvFMul(spvFMul(fast::max(_421, _421), 2.0), _436), spvFAdd(fs_img4.sample(fs_samp12, float2(fma(as_type(_456), _427, -as_type(_456)), _452), level(0.0)).x, spvFAdd(fs_img4.sample(fs_samp12, float2(fma(as_type(_456), _427, as_type(_456)), _452), level(0.0)).x, spvFAdd(fs_img4.sample(fs_samp12, float2(_451, fma(as_type(_456), _430, as_type(_456))), level(0.0)).x, fs_img4.sample(fs_samp12, float2(_451, fma(as_type(_456), _430, -as_type(_456))), level(0.0)).x))), fma(spvFMul(fma(as_type(cbuf_24.data[_369]), as_type(cbuf_24.data[_373]), -2.0), _436), fs_img16.sample(fs_samp12, float2(spvFMul(_398, spvFAdd(as_type(cbuf_24.data[22u + buf0_dword_off]), _427)), spvFMul(_398, spvFAdd(as_type(cbuf_24.data[23u + buf0_dword_off]), _430))), level(0.0)).x, spvFMul(spvFMul(fma(-_421, 8.0, 4.0), _436), fs_img4.sample(fs_samp12, float2(_451, _452), level(0.0)).x)))); _515 = _514; } else { _515 = _456; } _519 = as_type(fast::min(1.0, as_type(_515))); } else { _519 = _359; } _520 = _519; _521 = !_363; } else { _520 = _359; _521 = false; } uint _525; if (_116 || _521) { uint _523; if (_115) { _523 = 0u; } else { _523 = _520; } uint _524; if (_116) { _524 = 0u; } else { _524 = _523; } _525 = _524; } else { _525 = _520; } _526 = _525; } else { _526 = _359; } _527 = _526; } else { _527 = _214; } if (false) { discard_fragment(); } out.frag_color0.x = as_type(_527); out.frag_color0.y = as_type(_527); out.frag_color0.z = as_type(_527); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Tty] logger.cpp:log_flush:60: [stdout] == Stall during rendering at flush 1107 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x1574e65d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[4]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_16 [[buffer(9)]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float _87 = 1.0 / fast::max(as_type(cbuf_16.data[0u + buf0_dword_off]), 0.001000000047497451305389404296875); float _91 = 1.0 / fast::max(as_type(cbuf_16.data[1u + buf0_dword_off]), 0.001000000047497451305389404296875); float _94 = spvFMul(as_type(cbuf_16.data[2u + buf0_dword_off]), _87); bool _99 = _94 != 0.0; uint _161; uint _162; uint _163; if (_99) { float _133 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFMul(fast::max(_94, _94), 2.0)); float _135 = spvFMul(spvFSub(fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, spvFAdd(_91, in.fs_in_attr0.y))).x, fs_img4.sample(fs_samp12, float2(in.fs_in_attr0.x, spvFSub(in.fs_in_attr0.y, _91))).x), _133); float _137 = spvFMul(spvFSub(fs_img4.sample(fs_samp12, float2(spvFAdd(_87, in.fs_in_attr0.x), in.fs_in_attr0.y)).x, fs_img4.sample(fs_samp12, float2(spvFSub(in.fs_in_attr0.x, _87), in.fs_in_attr0.y)).x), _133); float _140 = rsqrt(fma(_135, _135, 1.0)); float _141 = rsqrt(fma(_137, _137, 1.0)); float _142 = spvFMul(_135, _140); float _143 = spvFMul(_137, _141); float _146 = fma(_143, 0.0, -spvFMul(_141, _142)); float _148 = spvFMul(_141, _140); float _151 = fma(0.0, _142, -spvFMul(_143, _140)); float _154 = rsqrt(fma(_151, _151, fma(_148, _148, spvFMul(_146, _146)))); _161 = as_type(spvFMul(_151, _154)); _162 = as_type(spvFMul(_146, _154)); _163 = as_type(spvFMul(_148, _154)); } else { _161 = as_type(_87); _162 = as_type(_91); _163 = 0u; } uint _164; uint _165; uint _166; if (!_99) { _164 = 0u; _165 = 1065353216u; _166 = 0u; } else { _164 = _162; _165 = _163; _166 = _161; } if (false) { discard_fragment(); } out.frag_color0.x = fma(0.5, as_type(_166), 0.5); out.frag_color0.y = fma(0.5, as_type(_165), 0.5); out.frag_color0.z = fma(0.5, as_type(_164), 0.5); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8f142b8 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x7d668276 (permutation) [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; float4 vs_in_attr1 [[attribute(1)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(10)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; out.gl_Position.x = spvFMul(as_type(cbuf_8.data[20u + buf1_dword_off]), in.vs_in_attr0.x); out.gl_Position.y = spvFMul(as_type(cbuf_8.data[21u + buf1_dword_off]), in.vs_in_attr0.y); out.gl_Position.z = 0.100000001490116119384765625; out.gl_Position.w = 1.0; out.out_attr0.x = in.vs_in_attr1.x; out.out_attr0.y = in.vs_in_attr1.y; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[1028]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_36 [[buffer(9)]], texture2d fs_img48 [[texture(0)]], texture2d fs_img40 [[texture(1)]], texture2d fs_img56 [[texture(2)]], texture2d fs_img64 [[texture(3)]], texture2d fs_img72 [[texture(4)]], texture2d fs_img80 [[texture(5)]], texture2d fs_img88 [[texture(6)]], sampler fs_samp8 [[sampler(0)]], sampler fs_samp4 [[sampler(1)]], sampler fs_samp16 [[sampler(2)]], sampler fs_samp20 [[sampler(3)]], sampler fs_samp24 [[sampler(4)]], sampler fs_samp28 [[sampler(5)]], sampler fs_samp32 [[sampler(6)]]) { float gl_FragDepth; main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; float4 _89 = fs_img48.sample(fs_samp8, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _98 = fs_img40.sample(fs_samp4, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _107 = fs_img56.sample(fs_samp16, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _116 = fs_img64.sample(fs_samp20, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _125 = fs_img72.sample(fs_samp24, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _134 = fs_img80.sample(fs_samp28, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); float4 _143 = fs_img88.sample(fs_samp32, float2(in.fs_in_attr0.x, in.fs_in_attr0.y), level(0.0)); out.frag_color0.x = fma(as_type(cbuf_36.data[640u + buf0_dword_off]), _143.x, fma(as_type(cbuf_36.data[636u + buf0_dword_off]), _134.x, fma(as_type(cbuf_36.data[632u + buf0_dword_off]), _125.x, fma(as_type(cbuf_36.data[628u + buf0_dword_off]), _116.x, fma(as_type(cbuf_36.data[624u + buf0_dword_off]), _107.x, fma(as_type(cbuf_36.data[616u + buf0_dword_off]), _98.x, spvFMul(as_type(cbuf_36.data[620u + buf0_dword_off]), _89.x))))))); out.frag_color0.y = fma(as_type(cbuf_36.data[641u + buf0_dword_off]), _143.y, fma(as_type(cbuf_36.data[637u + buf0_dword_off]), _134.y, fma(as_type(cbuf_36.data[633u + buf0_dword_off]), _125.y, fma(as_type(cbuf_36.data[629u + buf0_dword_off]), _116.y, fma(as_type(cbuf_36.data[625u + buf0_dword_off]), _107.y, fma(as_type(cbuf_36.data[617u + buf0_dword_off]), _98.y, spvFMul(as_type(cbuf_36.data[621u + buf0_dword_off]), _89.y))))))); out.frag_color0.z = fma(as_type(cbuf_36.data[642u + buf0_dword_off]), _143.z, fma(as_type(cbuf_36.data[638u + buf0_dword_off]), _134.z, fma(as_type(cbuf_36.data[634u + buf0_dword_off]), _125.z, fma(as_type(cbuf_36.data[630u + buf0_dword_off]), _116.z, fma(as_type(cbuf_36.data[626u + buf0_dword_off]), _107.z, fma(as_type(cbuf_36.data[618u + buf0_dword_off]), _98.z, spvFMul(as_type(cbuf_36.data[622u + buf0_dword_off]), _89.z))))))); out.frag_color0.w = fma(as_type(cbuf_36.data[643u + buf0_dword_off]), _143.w, fma(as_type(cbuf_36.data[639u + buf0_dword_off]), _134.w, fma(as_type(cbuf_36.data[635u + buf0_dword_off]), _125.w, fma(as_type(cbuf_36.data[631u + buf0_dword_off]), _116.w, fma(as_type(cbuf_36.data[627u + buf0_dword_off]), _107.w, fma(as_type(cbuf_36.data[619u + buf0_dword_off]), _98.w, spvFMul(as_type(cbuf_36.data[623u + buf0_dword_off]), _89.w))))))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0000 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0000 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0000 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0000 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x3bf7d476 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; uint4 buf_offsets0; uint4 buf_offsets1; uint4 ud_regs0; uint4 ud_regs1; uint4 ud_regs2; uint4 ud_regs3; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; float4 fs_in_attr2 [[user(locn2)]]; float4 fs_in_attr3 [[user(locn3)]]; }; fragment main0_out main0(main0_in in [[stage_in]], texture2d fs_img4 [[texture(0)]], sampler fs_samp12 [[sampler(0)]]) { main0_out out = {}; float4 _67 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr3.x, in.fs_in_attr3.y)); float _97 = spvFMul(fma(in.fs_in_attr2.w, _67.w, in.fs_in_attr1.w), in.fs_in_attr0.w); out.frag_color0.x = spvFMul(fma(in.fs_in_attr2.x, _67.x, in.fs_in_attr1.x), _97); out.frag_color0.y = spvFMul(fma(in.fs_in_attr2.y, _67.y, in.fs_in_attr1.y), _97); out.frag_color0.z = spvFMul(fma(in.fs_in_attr2.z, _67.z, in.fs_in_attr1.z), _97); out.frag_color0.w = _97; return out; } End MSL [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [mvk-info] Compiling Metal shader with FastMath enabled. [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelUnlink:245: Unlinked /savedata0/backup0010 [Kernel.Fs] file_system.cpp:sceKernelOpen:61: path = /savedata0/userdata0010 flags = 0x201 mode = 511 [Kernel.Fs] file_system.cpp:sceKernelStat:469: (PARTIAL) path = /savedata0/userdata0010 [Kernel.Fs] file_system.cpp:sceKernelClose:188: Closing /savedata0/userdata0010 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x3b352641 [Render.Vulkan] emit_spirv_context_get_set.cpp:EmitSetAttribute:336: Ignoring pos1 export [Render.Vulkan] emit_spirv_context_get_set.cpp:EmitSetAttribute:336: Ignoring pos1 export [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[1248]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; float4 vs_in_attr2 [[attribute(2)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_8 [[buffer(9)]], constant vs_cbuf_block_f32_1& cbuf_12 [[buffer(10)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(11)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u); uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint _122 = 20u + buf0_dword_off; uint _142 = (cbuf_8.data[_122] + as_type(as_type(in.vs_in_attr1.y))) * 3u; uint _143 = (cbuf_8.data[_122] + as_type(as_type(in.vs_in_attr1.x))) * 3u; uint _148 = (cbuf_8.data[_122] + as_type(as_type(in.vs_in_attr1.z))) * 3u; uint _152 = (cbuf_8.data[_122] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _159 = ((0u + ((_142 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _172 = uint4(cbuf_12.data[_159 + 0u], cbuf_12.data[_159 + 1u], cbuf_12.data[_159 + 2u], cbuf_12.data[_159 + 3u]); uint _180 = ((0u + ((_143 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _193 = uint4(cbuf_12.data[_180 + 0u], cbuf_12.data[_180 + 1u], cbuf_12.data[_180 + 2u], cbuf_12.data[_180 + 3u]); uint _201 = ((0u + ((_142 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _214 = uint4(cbuf_12.data[_201 + 0u], cbuf_12.data[_201 + 1u], cbuf_12.data[_201 + 2u], cbuf_12.data[_201 + 3u]); uint _222 = ((0u + ((_143 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _235 = uint4(cbuf_12.data[_222 + 0u], cbuf_12.data[_222 + 1u], cbuf_12.data[_222 + 2u], cbuf_12.data[_222 + 3u]); uint _243 = ((0u + (_142 * 16u)) + buf1_off) >> 2u; uint4 _256 = uint4(cbuf_12.data[_243 + 0u], cbuf_12.data[_243 + 1u], cbuf_12.data[_243 + 2u], cbuf_12.data[_243 + 3u]); uint _264 = ((0u + ((_148 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _277 = uint4(cbuf_12.data[_264 + 0u], cbuf_12.data[_264 + 1u], cbuf_12.data[_264 + 2u], cbuf_12.data[_264 + 3u]); uint _285 = ((0u + (_143 * 16u)) + buf1_off) >> 2u; uint4 _298 = uint4(cbuf_12.data[_285 + 0u], cbuf_12.data[_285 + 1u], cbuf_12.data[_285 + 2u], cbuf_12.data[_285 + 3u]); uint _306 = ((0u + ((_148 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _319 = uint4(cbuf_12.data[_306 + 0u], cbuf_12.data[_306 + 1u], cbuf_12.data[_306 + 2u], cbuf_12.data[_306 + 3u]); uint _327 = ((0u + ((_152 + 2u) * 16u)) + buf1_off) >> 2u; uint4 _340 = uint4(cbuf_12.data[_327 + 0u], cbuf_12.data[_327 + 1u], cbuf_12.data[_327 + 2u], cbuf_12.data[_327 + 3u]); uint _348 = ((0u + (_148 * 16u)) + buf1_off) >> 2u; uint4 _361 = uint4(cbuf_12.data[_348 + 0u], cbuf_12.data[_348 + 1u], cbuf_12.data[_348 + 2u], cbuf_12.data[_348 + 3u]); uint _369 = ((0u + ((_152 + 1u) * 16u)) + buf1_off) >> 2u; uint4 _382 = uint4(cbuf_12.data[_369 + 0u], cbuf_12.data[_369 + 1u], cbuf_12.data[_369 + 2u], cbuf_12.data[_369 + 3u]); uint _390 = ((0u + (_152 * 16u)) + buf1_off) >> 2u; uint4 _403 = uint4(cbuf_12.data[_390 + 0u], cbuf_12.data[_390 + 1u], cbuf_12.data[_390 + 2u], cbuf_12.data[_390 + 3u]); float _415 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr2.w, spvFAdd(in.vs_in_attr2.z, spvFAdd(in.vs_in_attr2.x, in.vs_in_attr2.y)))); float _416 = spvFMul(in.vs_in_attr2.y, _415); float _417 = spvFMul(in.vs_in_attr2.x, _415); float _422 = spvFMul(in.vs_in_attr2.z, _415); float _453 = spvFMul(in.vs_in_attr2.w, _415); float _617 = spvFSub(fma(fma(as_type(_340.x), _453, fma(as_type(_277.x), _422, fma(as_type(_193.x), _417, spvFMul(_416, as_type(_172.x))))), in.vs_in_attr0.x, fma(fma(as_type(_340.y), _453, fma(as_type(_277.y), _422, fma(as_type(_193.y), _417, spvFMul(_416, as_type(_172.y))))), in.vs_in_attr0.y, fma(fma(as_type(_340.z), _453, fma(as_type(_277.z), _422, fma(as_type(_193.z), _417, spvFMul(_416, as_type(_172.z))))), in.vs_in_attr0.z, fma(as_type(_340.w), _453, fma(as_type(_277.w), _422, fma(as_type(_193.w), _417, spvFMul(_416, as_type(_172.w)))))))), as_type(cbuf_16.data[191u + buf2_dword_off])); float _620 = spvFSub(fma(fma(as_type(_382.x), _453, fma(as_type(_319.x), _422, fma(as_type(_235.x), _417, spvFMul(_416, as_type(_214.x))))), in.vs_in_attr0.x, fma(fma(as_type(_382.y), _453, fma(as_type(_319.y), _422, fma(as_type(_235.y), _417, spvFMul(_416, as_type(_214.y))))), in.vs_in_attr0.y, fma(fma(as_type(_382.z), _453, fma(as_type(_319.z), _422, fma(as_type(_235.z), _417, spvFMul(_416, as_type(_214.z))))), in.vs_in_attr0.z, fma(as_type(_382.w), _453, fma(as_type(_319.w), _422, fma(as_type(_235.w), _417, spvFMul(_416, as_type(_214.w)))))))), as_type(cbuf_16.data[187u + buf2_dword_off])); float _625 = spvFSub(fma(fma(as_type(_403.x), _453, fma(as_type(_361.x), _422, fma(as_type(_298.x), _417, spvFMul(_416, as_type(_256.x))))), in.vs_in_attr0.x, fma(fma(as_type(_403.y), _453, fma(as_type(_361.y), _422, fma(as_type(_298.y), _417, spvFMul(_416, as_type(_256.y))))), in.vs_in_attr0.y, fma(fma(as_type(_403.z), _453, fma(as_type(_361.z), _422, fma(as_type(_298.z), _417, spvFMul(_416, as_type(_256.z))))), in.vs_in_attr0.z, fma(as_type(_403.w), _453, fma(as_type(_361.w), _422, fma(as_type(_298.w), _417, spvFMul(_416, as_type(_256.w)))))))), as_type(cbuf_16.data[183u + buf2_dword_off])); float _637 = fma(as_type(cbuf_16.data[212u + buf2_dword_off]), _625, fma(as_type(cbuf_16.data[213u + buf2_dword_off]), _620, fma(as_type(cbuf_16.data[214u + buf2_dword_off]), _617, as_type(cbuf_16.data[215u + buf2_dword_off])))); float _644 = fma(as_type(cbuf_16.data[208u + buf2_dword_off]), _625, fma(as_type(cbuf_16.data[209u + buf2_dword_off]), _620, fma(as_type(cbuf_16.data[210u + buf2_dword_off]), _617, as_type(cbuf_16.data[211u + buf2_dword_off])))); float _652 = fma(as_type(cbuf_16.data[204u + buf2_dword_off]), _625, fma(as_type(cbuf_16.data[205u + buf2_dword_off]), _620, fma(as_type(cbuf_16.data[206u + buf2_dword_off]), _617, as_type(cbuf_16.data[207u + buf2_dword_off])))); float _658 = fma(as_type(cbuf_16.data[200u + buf2_dword_off]), _625, fma(as_type(cbuf_16.data[201u + buf2_dword_off]), _620, fma(as_type(cbuf_16.data[202u + buf2_dword_off]), _617, as_type(cbuf_16.data[203u + buf2_dword_off])))); out.gl_Position.x = _658; out.gl_Position.y = _652; out.gl_Position.z = _644; out.gl_Position.w = _637; out.out_attr0.x = 0.0; out.out_attr0.y = 0.0; out.out_attr0.z = 0.0; out.out_attr0.w = 1.0; out.out_attr1.x = _644; out.out_attr1.y = _637; out.out_attr1.z = 0.0; out.out_attr1.w = 1.0; out.out_attr2.x = fma(as_type(cbuf_16.data[196u + buf2_dword_off]), _658, fma(as_type(cbuf_16.data[197u + buf2_dword_off]), _652, fma(as_type(cbuf_16.data[198u + buf2_dword_off]), _644, spvFMul(as_type(cbuf_16.data[199u + buf2_dword_off]), _637)))); out.out_attr2.y = fma(as_type(cbuf_8.data[16u + buf0_dword_off]), _658, fma(as_type(cbuf_8.data[17u + buf0_dword_off]), _652, fma(as_type(cbuf_8.data[18u + buf0_dword_off]), _644, spvFMul(as_type(cbuf_8.data[19u + buf0_dword_off]), _637)))); out.out_attr2.z = 0.0; out.out_attr2.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0x8754d348 [Render.Vulkan] emit_spirv_context_get_set.cpp:EmitSetAttribute:336: Ignoring pos1 export [Render.Vulkan] emit_spirv_context_get_set.cpp:EmitSetAttribute:336: Ignoring pos1 export [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[104]; }; struct vs_cbuf_block_f32_1 { uint data[1248]; }; struct vs_cbuf_block_f32_2 { uint data[216]; }; struct vs_cbuf_block_f32_3 { uint data[16]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 gl_Position [[position]]; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; float4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; }; vertex main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32& cbuf_12 [[buffer(14)]], constant vs_cbuf_block_f32_1& cbuf_16 [[buffer(15)]], constant vs_cbuf_block_f32_2& cbuf_20 [[buffer(16)]], constant vs_cbuf_block_f32_3& cbuf_8 [[buffer(17)]]) { main0_out out = {}; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint buf6_off = extract_bits(push_data.buf_offsets0[1u], 16u, 8u); uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint _183 = 20u + buf5_dword_off; out.out_attr2.x = in.vs_in_attr5.x; out.out_attr2.y = in.vs_in_attr5.y; out.out_attr2.z = in.vs_in_attr5.z; out.out_attr2.w = in.vs_in_attr5.w; uint _207 = (cbuf_12.data[_183] + as_type(as_type(in.vs_in_attr3.y))) * 3u; uint _208 = (cbuf_12.data[_183] + as_type(as_type(in.vs_in_attr3.x))) * 3u; uint _213 = (cbuf_12.data[_183] + as_type(as_type(in.vs_in_attr3.z))) * 3u; uint _217 = (cbuf_12.data[_183] + as_type(as_type(in.vs_in_attr3.w))) * 3u; uint _224 = ((0u + ((_207 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _237 = uint4(cbuf_16.data[_224 + 0u], cbuf_16.data[_224 + 1u], cbuf_16.data[_224 + 2u], cbuf_16.data[_224 + 3u]); uint _245 = ((0u + ((_208 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _258 = uint4(cbuf_16.data[_245 + 0u], cbuf_16.data[_245 + 1u], cbuf_16.data[_245 + 2u], cbuf_16.data[_245 + 3u]); uint _266 = ((0u + ((_207 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _279 = uint4(cbuf_16.data[_266 + 0u], cbuf_16.data[_266 + 1u], cbuf_16.data[_266 + 2u], cbuf_16.data[_266 + 3u]); uint _287 = ((0u + ((_208 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _300 = uint4(cbuf_16.data[_287 + 0u], cbuf_16.data[_287 + 1u], cbuf_16.data[_287 + 2u], cbuf_16.data[_287 + 3u]); uint _308 = ((0u + (_207 * 16u)) + buf6_off) >> 2u; uint4 _321 = uint4(cbuf_16.data[_308 + 0u], cbuf_16.data[_308 + 1u], cbuf_16.data[_308 + 2u], cbuf_16.data[_308 + 3u]); uint _329 = ((0u + ((_213 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _342 = uint4(cbuf_16.data[_329 + 0u], cbuf_16.data[_329 + 1u], cbuf_16.data[_329 + 2u], cbuf_16.data[_329 + 3u]); uint _350 = ((0u + (_208 * 16u)) + buf6_off) >> 2u; uint4 _363 = uint4(cbuf_16.data[_350 + 0u], cbuf_16.data[_350 + 1u], cbuf_16.data[_350 + 2u], cbuf_16.data[_350 + 3u]); uint _371 = ((0u + ((_213 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _384 = uint4(cbuf_16.data[_371 + 0u], cbuf_16.data[_371 + 1u], cbuf_16.data[_371 + 2u], cbuf_16.data[_371 + 3u]); uint _392 = ((0u + ((_217 + 2u) * 16u)) + buf6_off) >> 2u; uint4 _405 = uint4(cbuf_16.data[_392 + 0u], cbuf_16.data[_392 + 1u], cbuf_16.data[_392 + 2u], cbuf_16.data[_392 + 3u]); uint _413 = ((0u + (_213 * 16u)) + buf6_off) >> 2u; uint4 _426 = uint4(cbuf_16.data[_413 + 0u], cbuf_16.data[_413 + 1u], cbuf_16.data[_413 + 2u], cbuf_16.data[_413 + 3u]); uint _434 = ((0u + ((_217 + 1u) * 16u)) + buf6_off) >> 2u; uint4 _447 = uint4(cbuf_16.data[_434 + 0u], cbuf_16.data[_434 + 1u], cbuf_16.data[_434 + 2u], cbuf_16.data[_434 + 3u]); uint _455 = ((0u + (_217 * 16u)) + buf6_off) >> 2u; uint4 _468 = uint4(cbuf_16.data[_455 + 0u], cbuf_16.data[_455 + 1u], cbuf_16.data[_455 + 2u], cbuf_16.data[_455 + 3u]); float _480 = 1.0 / fast::max(0.001000000047497451305389404296875, spvFAdd(in.vs_in_attr4.w, spvFAdd(in.vs_in_attr4.z, spvFAdd(in.vs_in_attr4.x, in.vs_in_attr4.y)))); float _481 = spvFMul(in.vs_in_attr4.y, _480); float _482 = spvFMul(in.vs_in_attr4.x, _480); float _487 = spvFMul(in.vs_in_attr4.z, _480); float _518 = spvFMul(in.vs_in_attr4.w, _480); float _624 = fma(as_type(_405.z), _518, fma(as_type(_342.z), _487, fma(as_type(_258.z), _482, spvFMul(_481, as_type(_237.z))))); float _646 = fma(as_type(_447.z), _518, fma(as_type(_384.z), _487, fma(as_type(_300.z), _482, spvFMul(_481, as_type(_279.z))))); float _650 = fma(as_type(_405.y), _518, fma(as_type(_342.y), _487, fma(as_type(_258.y), _482, spvFMul(_481, as_type(_237.y))))); float _659 = fma(as_type(_468.z), _518, fma(as_type(_426.z), _487, fma(as_type(_363.z), _482, spvFMul(_481, as_type(_321.z))))); float _663 = fma(as_type(_447.y), _518, fma(as_type(_384.y), _487, fma(as_type(_300.y), _482, spvFMul(_481, as_type(_279.y))))); float _665 = fma(as_type(_405.x), _518, fma(as_type(_342.x), _487, fma(as_type(_258.x), _482, spvFMul(_481, as_type(_237.x))))); float _671 = fma(as_type(_468.y), _518, fma(as_type(_426.y), _487, fma(as_type(_363.y), _482, spvFMul(_481, as_type(_321.y))))); float _673 = fma(as_type(_447.x), _518, fma(as_type(_384.x), _487, fma(as_type(_300.x), _482, spvFMul(_481, as_type(_279.x))))); float _678 = fma(as_type(_468.x), _518, fma(as_type(_426.x), _487, fma(as_type(_363.x), _482, spvFMul(_481, as_type(_321.x))))); float _682 = spvFSub(fma(_665, in.vs_in_attr0.x, fma(_650, in.vs_in_attr0.y, fma(_624, in.vs_in_attr0.z, fma(as_type(_405.w), _518, fma(as_type(_342.w), _487, fma(as_type(_258.w), _482, spvFMul(_481, as_type(_237.w)))))))), as_type(cbuf_20.data[191u + buf7_dword_off])); float _685 = spvFSub(fma(_673, in.vs_in_attr0.x, fma(_663, in.vs_in_attr0.y, fma(_646, in.vs_in_attr0.z, fma(as_type(_447.w), _518, fma(as_type(_384.w), _487, fma(as_type(_300.w), _482, spvFMul(_481, as_type(_279.w)))))))), as_type(cbuf_20.data[187u + buf7_dword_off])); float _690 = spvFSub(fma(_678, in.vs_in_attr0.x, fma(_671, in.vs_in_attr0.y, fma(_659, in.vs_in_attr0.z, fma(as_type(_468.w), _518, fma(as_type(_426.w), _487, fma(as_type(_363.w), _482, spvFMul(_481, as_type(_321.w)))))))), as_type(cbuf_20.data[183u + buf7_dword_off])); float _702 = fma(as_type(cbuf_20.data[212u + buf7_dword_off]), _690, fma(as_type(cbuf_20.data[213u + buf7_dword_off]), _685, fma(as_type(cbuf_20.data[214u + buf7_dword_off]), _682, as_type(cbuf_20.data[215u + buf7_dword_off])))); float _709 = fma(as_type(cbuf_20.data[208u + buf7_dword_off]), _690, fma(as_type(cbuf_20.data[209u + buf7_dword_off]), _685, fma(as_type(cbuf_20.data[210u + buf7_dword_off]), _682, as_type(cbuf_20.data[211u + buf7_dword_off])))); float _717 = fma(as_type(cbuf_20.data[204u + buf7_dword_off]), _690, fma(as_type(cbuf_20.data[205u + buf7_dword_off]), _685, fma(as_type(cbuf_20.data[206u + buf7_dword_off]), _682, as_type(cbuf_20.data[207u + buf7_dword_off])))); float _723 = fma(as_type(cbuf_20.data[200u + buf7_dword_off]), _690, fma(as_type(cbuf_20.data[201u + buf7_dword_off]), _685, fma(as_type(cbuf_20.data[202u + buf7_dword_off]), _682, as_type(cbuf_20.data[203u + buf7_dword_off])))); out.gl_Position.x = _723; out.gl_Position.y = _717; out.gl_Position.z = _709; out.gl_Position.w = _702; float _758 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _761 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _764 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _766 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _776 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _777 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); out.out_attr0.x = fma(_678, _777, fma(_671, _766, spvFMul(_659, _761))); out.out_attr0.y = fma(_673, _777, fma(_663, _766, spvFMul(_646, _761))); out.out_attr0.z = fma(_665, _777, fma(_650, _766, spvFMul(_624, _761))); out.out_attr0.w = 0.0; out.out_attr1.x = fma(_678, _776, fma(_671, _764, spvFMul(_659, _758))); out.out_attr1.y = fma(_673, _776, fma(_663, _764, spvFMul(_646, _758))); out.out_attr1.z = fma(_665, _776, fma(_650, _764, spvFMul(_624, _758))); out.out_attr1.w = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); out.out_attr3.x = _723; out.out_attr3.y = _717; out.out_attr3.z = _709; out.out_attr3.w = _702; out.out_attr4.x = fma(as_type(cbuf_8.data[0u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf8_dword_off])); out.out_attr4.y = fma(as_type(cbuf_8.data[1u + buf8_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf8_dword_off])); out.out_attr4.z = 0.0; out.out_attr4.w = 1.0; out.out_attr5.x = fma(as_type(cbuf_20.data[196u + buf7_dword_off]), _723, fma(as_type(cbuf_20.data[197u + buf7_dword_off]), _717, fma(as_type(cbuf_20.data[198u + buf7_dword_off]), _709, spvFMul(as_type(cbuf_20.data[199u + buf7_dword_off]), _702)))); out.out_attr5.y = fma(as_type(cbuf_12.data[16u + buf5_dword_off]), _723, fma(as_type(cbuf_12.data[17u + buf5_dword_off]), _717, fma(as_type(cbuf_12.data[18u + buf5_dword_off]), _709, spvFMul(as_type(cbuf_12.data[19u + buf5_dword_off]), _702)))); out.out_attr5.z = 0.0; out.out_attr5.w = 1.0; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x8d5387d9 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[252]; }; constant uint _130 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _150 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _151 = _150.x; float4 _156 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _164 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _166 = _164.y; float4 _172 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _173 = _172.x; float _174 = _172.y; float _175 = _172.z; uint _245 = 3u + buf1_dword_off; float _274 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _151, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _276 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _151, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _280 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _151, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _283 = fma(-_274, _276, as_type(cbuf_56.data[2u + buf1_dword_off])); float _286 = fma(2.0, _156.z, -1.0); float _288 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _151, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _289 = spvFMul(_274, _276); float _292 = fma(-_280, _276, as_type(cbuf_56.data[1u + buf1_dword_off])); float _306 = fma(2.0, _156.y, -1.0); float _308 = spvFMul(_280, _276); float _314 = fma(-_288, _276, as_type(cbuf_56.data[0u + buf1_dword_off])); float _328 = fma(2.0, _156.x, -1.0); float _330 = spvFMul(_288, _276); float _351 = rsqrt(fma(_314, _314, fma(_292, _292, spvFMul(_283, _283)))); float _352 = rsqrt(fma(_328, _328, fma(_306, _306, spvFMul(_286, _286)))); float _354 = rsqrt(fma(-_330, -_330, fma(-_308, -_308, spvFMul(-_289, -_289)))); float _355 = spvFMul(_283, _351); float _357 = spvFMul(_286, _352); float _359 = spvFMul(_292, _351); float _362 = fma(-_289, _354, _355); uint _363 = 4u + buf1_dword_off; uint _366 = 5u + buf1_dword_off; uint _369 = 6u + buf1_dword_off; uint _372 = 7u + buf1_dword_off; float _375 = spvFMul(_306, _352); float _379 = spvFMul(_314, _351); float _382 = fma(-_308, _354, _359); float _384 = spvFMul(_328, _352); float _389 = rsqrt(fma(_330, _330, fma(_308, _308, spvFMul(_289, _289)))); float _391 = fma(-_330, _354, _379); float _399 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _384, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _375, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _357))); float _400 = spvFMul(_289, _389); float _405 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _384, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _375, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _357))); float _408 = spvFMul(_308, _389); float _412 = rsqrt(fma(_391, _391, fma(_382, _382, spvFMul(_362, _362)))); float _414 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _384, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _375, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _357))); float _415 = exp2(spvFMul(13.0, _164.x)); float _416 = spvFMul(_330, _389); float _432 = fma(_314, _314, fma(_292, _292, spvFMul(_283, _283))); float _445 = spvFMul(10.0, _166); float _447 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_416, _414, fma(-_408, _405, spvFMul(_399, -_400)))))); float _448 = fma(_414, _379, fma(_405, _359, spvFMul(_399, _355))); float _454 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_372]), _415), 1.0 / fma(_415, 0.01000213623046875, as_type(cbuf_56.data[_372])))); float4 _460 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _461 = _460.x; float _462 = spvFMul(_173, _173); float _463 = spvFMul(_174, _174); float _464 = spvFMul(_175, _175); bool _465 = _445 == 0.0; float _466 = fma(2.0, _445, 1.0); float _467 = spvFMul(_447, _447); float _469 = fast::clamp(fast::max(_448, _448), 0.0, 1.0); float _470 = fast::max(0.0, spvFSub(1.0 / _432, as_type(cbuf_56.data[_245]))); float _471 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_245]), _432), 0.0, 1.0)); uint _476; if (_465) { _476 = as_type(spvFMul(as_type(cbuf_56.data[_363]), _469)); } else { _476 = as_type(_379); } uint _488; uint _489; uint _490; if (_465) { _488 = as_type(spvFMul(_470, as_type(_476))); _489 = as_type(spvFMul(_470, spvFMul(as_type(cbuf_56.data[_369]), _469))); _490 = as_type(spvFMul(_470, spvFMul(as_type(cbuf_56.data[_366]), _469))); } else { _488 = _130; _489 = as_type(_359); _490 = as_type(_355); } uint _494; if (!_465) { _494 = as_type(fma(_166, 10.0, _448)); } else { _494 = as_type(_391); } uint _535; uint _536; uint _537; uint _538; if (!_465) { float _524 = fma(_470, spvFMul(fast::max(0.0, as_type(_494)), 1.0 / _466), spvFMul(_445, spvFMul(_470, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_476), _416, fma(as_type(_489), _408, spvFMul(_400, as_type(_490)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _467))))); _535 = as_type(spvFMul(as_type(cbuf_56.data[_363]), _524)); _536 = as_type(spvFMul(as_type(cbuf_56.data[_369]), _524)); _537 = as_type(spvFMul(as_type(cbuf_56.data[_366]), _524)); _538 = as_type(_524); } else { _535 = _488; _536 = _489; _537 = _490; _538 = _476; } uint _549 = 19u + buf1_dword_off; float _553 = exp2(spvFMul(_454, log2(fast::clamp(fma(spvFMul(_391, _412), _414, fma(spvFMul(_382, _412), _405, spvFMul(_399, spvFMul(_362, _412)))), 0.0, 1.0)))); float _556 = exp2(spvFMul(0.0999755859375, log2(_469))); float _559 = fma(-_274, _276, as_type(cbuf_56.data[18u + buf1_dword_off])); float _562 = fma(-_280, _276, as_type(cbuf_56.data[17u + buf1_dword_off])); float _566 = fma(-_288, _276, as_type(cbuf_56.data[16u + buf1_dword_off])); float _569 = rsqrt(fma(_566, _566, fma(_562, _562, spvFMul(_559, _559)))); float _570 = spvFMul(_559, _569); float _572 = spvFMul(_562, _569); float _575 = fma(-_289, _354, _570); uint _576 = 20u + buf1_dword_off; uint _579 = 21u + buf1_dword_off; uint _582 = 22u + buf1_dword_off; uint _586 = 23u + buf1_dword_off; float _589 = spvFMul(_566, _569); float _592 = fma(-_308, _354, _572); float _595 = fma(-_330, _354, _589); float _607 = rsqrt(fma(_595, _595, fma(_592, _592, spvFMul(_575, _575)))); float _617 = fma(_414, _589, fma(_405, _572, spvFMul(_399, _570))); float _618 = fma(_566, _566, fma(_562, _562, spvFMul(_559, _559))); float _631 = fast::clamp(fast::max(_617, _617), 0.0, 1.0); float _644 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_586]), _415), 1.0 / fma(_415, 0.01000213623046875, as_type(cbuf_56.data[_586])))); float _650 = fma(_454, 0.125, 0.25); float _654 = fast::max(0.0, spvFSub(1.0 / _618, as_type(cbuf_56.data[_549]))); float _655 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_549]), _618), 0.0, 1.0)); float _658 = fma(0.125, _644, 0.25); uint _662; if (_465) { _662 = as_type(spvFMul(as_type(cbuf_56.data[_576]), _631)); } else { _662 = as_type(_589); } uint _675; uint _676; uint _677; uint _678; if (_465) { float _666 = spvFMul(as_type(cbuf_56.data[_582]), _631); _675 = as_type(spvFMul(_654, as_type(_662))); _676 = as_type(spvFMul(_654, spvFMul(as_type(cbuf_56.data[_579]), _631))); _677 = as_type(_666); _678 = as_type(spvFMul(_654, _666)); } else { _675 = _538; _676 = as_type(_644); _677 = as_type(_572); _678 = as_type(_570); } uint _682; if (!_465) { _682 = as_type(fma(_166, 10.0, _617)); } else { _682 = _676; } uint _723; uint _724; uint _725; if (!_465) { float _713 = fma(_654, spvFMul(fast::max(0.0, as_type(_682)), 1.0 / _466), spvFMul(_445, spvFMul(_654, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_662), _416, fma(as_type(_677), _408, spvFMul(_400, as_type(_678)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _467))))); _723 = as_type(spvFMul(as_type(cbuf_56.data[_582]), _713)); _724 = as_type(spvFMul(as_type(cbuf_56.data[_579]), _713)); _725 = as_type(spvFMul(as_type(cbuf_56.data[_576]), _713)); } else { _723 = _678; _724 = _682; _725 = _675; } uint _748 = 35u + buf1_dword_off; uint _752 = 36u + buf1_dword_off; uint _756 = 37u + buf1_dword_off; uint _760 = 38u + buf1_dword_off; uint _764 = 39u + buf1_dword_off; float _767 = exp2(spvFMul(_644, log2(fast::clamp(fma(spvFMul(_595, _607), _414, fma(spvFMul(_592, _607), _405, spvFMul(_399, spvFMul(_575, _607)))), 0.0, 1.0)))); float _768 = exp2(spvFMul(0.0999755859375, log2(_631))); float _798 = fma(-_288, _276, as_type(cbuf_56.data[32u + buf1_dword_off])); float _801 = fma(-_280, _276, as_type(cbuf_56.data[33u + buf1_dword_off])); float _804 = fma(-_274, _276, as_type(cbuf_56.data[34u + buf1_dword_off])); float _808 = rsqrt(fma(_798, _798, fma(_801, _801, spvFMul(_804, _804)))); float _809 = spvFMul(_798, _808); float _811 = spvFMul(_801, _808); float _813 = spvFMul(_804, _808); float _817 = fma(_414, _809, fma(_405, _811, spvFMul(_399, _813))); float _820 = fast::clamp(fast::max(_817, _817), 0.0, 1.0); float _824 = fma(_798, _798, fma(_801, _801, spvFMul(_804, _804))); float _828 = fast::max(0.0, spvFSub(1.0 / _824, as_type(cbuf_56.data[_748]))); float _832 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_748]), _824), 0.0, 1.0)); float _834 = fma(-_330, _354, _809); float _836 = fma(-_308, _354, _811); float _838 = fma(-_289, _354, _813); float _842 = rsqrt(fma(_834, _834, fma(_836, _836, spvFMul(_838, _838)))); float _852 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_764]), _415), 1.0 / fma(_415, 0.01000213623046875, as_type(cbuf_56.data[_764])))); float _861 = fma(0.125, _852, 0.25); uint _865; if (_465) { _865 = as_type(spvFMul(as_type(cbuf_56.data[_752]), _820)); } else { _865 = as_type(_813); } uint _878; uint _879; uint _880; uint _881; if (_465) { float _869 = spvFMul(as_type(cbuf_56.data[_760]), _820); _878 = as_type(spvFMul(_828, spvFMul(as_type(cbuf_56.data[_756]), _820))); _879 = as_type(_869); _880 = as_type(spvFMul(_828, _869)); _881 = as_type(spvFMul(_828, as_type(_865))); } else { _878 = as_type(_820); _879 = as_type(_811); _880 = as_type(_809); _881 = as_type(_817); } uint _886; if (!_465) { _886 = as_type(fma(_166, 10.0, as_type(_881))); } else { _886 = _881; } uint _927; uint _928; uint _929; if (!_465) { float _917 = fma(_828, spvFMul(fast::max(0.0, as_type(_886)), 1.0 / _466), spvFMul(_445, spvFMul(_828, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_880), _416, fma(as_type(_879), _408, spvFMul(_400, as_type(_865)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _467))))); _927 = as_type(spvFMul(as_type(cbuf_56.data[_760]), _917)); _928 = as_type(spvFMul(as_type(cbuf_56.data[_756]), _917)); _929 = as_type(spvFMul(as_type(cbuf_56.data[_752]), _917)); } else { _927 = _880; _928 = _878; _929 = _886; } uint _943 = 51u + buf1_dword_off; float _946 = exp2(spvFMul(_852, log2(fast::clamp(fma(spvFMul(_834, _842), _414, fma(spvFMul(_836, _842), _405, spvFMul(_399, spvFMul(_838, _842)))), 0.0, 1.0)))); float _947 = exp2(spvFMul(0.0999755859375, log2(_820))); float _954 = fma(-_274, _276, as_type(cbuf_56.data[50u + buf1_dword_off])); float _957 = fma(-_280, _276, as_type(cbuf_56.data[49u + buf1_dword_off])); float _961 = fma(-_288, _276, as_type(cbuf_56.data[48u + buf1_dword_off])); float _964 = rsqrt(fma(_961, _961, fma(_957, _957, spvFMul(_954, _954)))); float _965 = spvFMul(_954, _964); float _966 = spvFMul(_957, _964); float _968 = fma(-_289, _354, _965); uint _969 = 52u + buf1_dword_off; uint _973 = 53u + buf1_dword_off; uint _977 = 54u + buf1_dword_off; uint _981 = 55u + buf1_dword_off; float _984 = spvFMul(_961, _964); float _987 = fma(-_308, _354, _966); float _1002 = fma(-_330, _354, _984); float _1005 = rsqrt(fma(_1002, _1002, fma(_987, _987, spvFMul(_968, _968)))); float _1021 = fma(_414, _984, fma(_405, _966, spvFMul(_399, _965))); float _1022 = fma(_961, _961, fma(_957, _957, spvFMul(_954, _954))); float _1032 = fast::clamp(fast::max(_1021, _1021), 0.0, 1.0); float _1039 = spvFMul(_832, spvFMul(_947, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _946))); float _1047 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_981]), _415), 1.0 / fma(_415, 0.01000213623046875, as_type(cbuf_56.data[_981])))); float _1055 = fast::max(0.0, spvFSub(1.0 / _1022, as_type(cbuf_56.data[_943]))); float _1056 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_943]), _1022), 0.0, 1.0)); float _1059 = fma(0.125, _1047, 0.25); uint _1063; if (_465) { _1063 = as_type(spvFMul(as_type(cbuf_56.data[_969]), _1032)); } else { _1063 = _927; } uint _1076; uint _1077; uint _1078; uint _1079; if (_465) { float _1065 = spvFMul(as_type(cbuf_56.data[_973]), _1032); _1076 = as_type(spvFMul(_1055, as_type(_1063))); _1077 = as_type(spvFMul(_1055, spvFMul(as_type(cbuf_56.data[_977]), _1032))); _1078 = as_type(_1065); _1079 = as_type(spvFMul(_1055, _1065)); } else { _1076 = as_type(_1039); _1077 = as_type(_1032); _1078 = as_type(_984); _1079 = _1063; } uint _1083; if (!_465) { _1083 = as_type(fma(_166, 10.0, _1021)); } else { _1083 = _1079; } uint _1122; uint _1123; uint _1124; if (!_465) { float _1112 = fma(_1055, spvFMul(fast::max(0.0, as_type(_1083)), 1.0 / _466), spvFMul(_445, spvFMul(_1055, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1078), _416, fma(_966, _408, spvFMul(_400, _965))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _467))))); _1122 = as_type(spvFMul(as_type(cbuf_56.data[_977]), _1112)); _1123 = as_type(spvFMul(as_type(cbuf_56.data[_973]), _1112)); _1124 = as_type(spvFMul(as_type(cbuf_56.data[_969]), _1112)); } else { _1122 = _1077; _1123 = _1083; _1124 = _1076; } uint _1138 = 67u + buf1_dword_off; float _1141 = exp2(spvFMul(_1047, log2(fast::clamp(fma(spvFMul(_1002, _1005), _414, fma(spvFMul(_987, _1005), _405, spvFMul(_399, spvFMul(_968, _1005)))), 0.0, 1.0)))); float _1142 = exp2(spvFMul(0.0999755859375, log2(_1032))); float _1149 = fma(-_274, _276, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1152 = fma(-_280, _276, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1156 = fma(-_288, _276, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1159 = rsqrt(fma(_1156, _1156, fma(_1152, _1152, spvFMul(_1149, _1149)))); float _1160 = spvFMul(_1149, _1159); float _1161 = spvFMul(_1152, _1159); float _1163 = fma(-_289, _354, _1160); uint _1165 = 68u + buf1_dword_off; uint _1169 = 69u + buf1_dword_off; uint _1173 = 70u + buf1_dword_off; uint _1177 = 71u + buf1_dword_off; float _1180 = spvFMul(_1156, _1159); float _1183 = fma(-_308, _354, _1161); float _1198 = fma(-_330, _354, _1180); float _1201 = rsqrt(fma(_1198, _1198, fma(_1183, _1183, spvFMul(_1163, _1163)))); float _1217 = fma(_414, _1180, fma(_405, _1161, spvFMul(_399, _1160))); float _1218 = fma(_1156, _1156, fma(_1152, _1152, spvFMul(_1149, _1149))); float _1228 = fast::clamp(fast::max(_1217, _1217), 0.0, 1.0); float _1235 = spvFMul(_1056, spvFMul(_1142, spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1141))); float _1243 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1177]), _415), 1.0 / fma(_415, 0.01000213623046875, as_type(cbuf_56.data[_1177])))); float _1251 = fast::max(0.0, spvFSub(1.0 / _1218, as_type(cbuf_56.data[_1138]))); float _1252 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1138]), _1218), 0.0, 1.0)); float _1255 = fma(0.125, _1243, 0.25); uint _1259; if (_465) { _1259 = as_type(spvFMul(as_type(cbuf_56.data[_1165]), _1228)); } else { _1259 = _1122; } uint _1272; uint _1273; uint _1274; uint _1275; if (_465) { float _1263 = spvFMul(as_type(cbuf_56.data[_1173]), _1228); _1272 = as_type(spvFMul(_1251, as_type(_1259))); _1273 = as_type(spvFMul(_1251, _1263)); _1274 = as_type(spvFMul(_1251, spvFMul(as_type(cbuf_56.data[_1169]), _1228))); _1275 = as_type(_1263); } else { _1272 = as_type(_1235); _1273 = _1259; _1274 = as_type(_1180); _1275 = as_type(_1228); } uint _1279; if (!_465) { _1279 = as_type(fma(_166, 10.0, _1217)); } else { _1279 = _1275; } uint _1318; uint _1319; uint _1320; if (!_465) { float _1308 = fma(_1251, spvFMul(fast::max(0.0, as_type(_1279)), 1.0 / _466), spvFMul(_445, spvFMul(_1251, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1274), _416, fma(_1161, _408, spvFMul(_400, _1160))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _467))))); _1318 = as_type(spvFMul(as_type(cbuf_56.data[_1173]), _1308)); _1319 = as_type(spvFMul(as_type(cbuf_56.data[_1169]), _1308)); _1320 = as_type(spvFMul(as_type(cbuf_56.data[_1165]), _1308)); } else { _1318 = _1273; _1319 = _1274; _1320 = _1272; } uint _1334 = 83u + buf1_dword_off; float _1337 = exp2(spvFMul(_1243, log2(fast::clamp(fma(spvFMul(_1198, _1201), _414, fma(spvFMul(_1183, _1201), _405, spvFMul(_399, spvFMul(_1163, _1201)))), 0.0, 1.0)))); float _1338 = exp2(spvFMul(0.0999755859375, log2(_1228))); float _1345 = fma(-_274, _276, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1348 = fma(-_280, _276, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1352 = fma(-_288, _276, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1355 = rsqrt(fma(_1352, _1352, fma(_1348, _1348, spvFMul(_1345, _1345)))); float _1356 = spvFMul(_1345, _1355); float _1357 = spvFMul(_1348, _1355); float _1359 = fma(-_289, _354, _1356); uint _1361 = 84u + buf1_dword_off; uint _1365 = 85u + buf1_dword_off; uint _1369 = 86u + buf1_dword_off; uint _1373 = 87u + buf1_dword_off; float _1376 = spvFMul(_1352, _1355); float _1379 = fma(-_308, _354, _1357); float _1394 = fma(-_330, _354, _1376); float _1397 = rsqrt(fma(_1394, _1394, fma(_1379, _1379, spvFMul(_1359, _1359)))); float _1413 = fma(_414, _1376, fma(_405, _1357, spvFMul(_399, _1356))); float _1414 = fma(_1352, _1352, fma(_1348, _1348, spvFMul(_1345, _1345))); float _1424 = fast::clamp(fast::max(_1413, _1413), 0.0, 1.0); float _1431 = spvFMul(_1252, spvFMul(_1338, spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1337))); float _1439 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1373]), _415), 1.0 / fma(_415, 0.01000213623046875, as_type(cbuf_56.data[_1373])))); float _1447 = fast::max(0.0, spvFSub(1.0 / _1414, as_type(cbuf_56.data[_1334]))); float _1448 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1334]), _1414), 0.0, 1.0)); float _1451 = fma(0.125, _1439, 0.25); uint _1455; if (_465) { _1455 = as_type(spvFMul(as_type(cbuf_56.data[_1361]), _1424)); } else { _1455 = _1318; } uint _1468; uint _1469; uint _1470; uint _1471; if (_465) { float _1459 = spvFMul(as_type(cbuf_56.data[_1369]), _1424); _1468 = as_type(spvFMul(_1447, as_type(_1455))); _1469 = as_type(spvFMul(_1447, _1459)); _1470 = as_type(spvFMul(_1447, spvFMul(as_type(cbuf_56.data[_1365]), _1424))); _1471 = as_type(_1459); } else { _1468 = as_type(_1431); _1469 = _1455; _1470 = as_type(_1376); _1471 = as_type(_1424); } uint _1475; if (!_465) { _1475 = as_type(fma(_166, 10.0, _1413)); } else { _1475 = _1471; } uint _1514; uint _1515; uint _1516; if (!_465) { float _1504 = fma(_1447, spvFMul(fast::max(0.0, as_type(_1475)), 1.0 / _466), spvFMul(_445, spvFMul(_1447, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1470), _416, fma(_1357, _408, spvFMul(_400, _1356))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _467))))); _1514 = as_type(spvFMul(as_type(cbuf_56.data[_1369]), _1504)); _1515 = as_type(spvFMul(as_type(cbuf_56.data[_1365]), _1504)); _1516 = as_type(spvFMul(as_type(cbuf_56.data[_1361]), _1504)); } else { _1514 = _1469; _1515 = _1470; _1516 = _1468; } uint _1530 = 99u + buf1_dword_off; float _1533 = exp2(spvFMul(_1439, log2(fast::clamp(fma(spvFMul(_1394, _1397), _414, fma(spvFMul(_1379, _1397), _405, spvFMul(_399, spvFMul(_1359, _1397)))), 0.0, 1.0)))); float _1534 = exp2(spvFMul(0.0999755859375, log2(_1424))); float _1541 = fma(-_274, _276, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1544 = fma(-_280, _276, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1548 = fma(-_288, _276, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1551 = rsqrt(fma(_1548, _1548, fma(_1544, _1544, spvFMul(_1541, _1541)))); float _1552 = spvFMul(_1541, _1551); float _1553 = spvFMul(_1544, _1551); float _1555 = fma(-_289, _354, _1552); uint _1557 = 100u + buf1_dword_off; uint _1561 = 101u + buf1_dword_off; uint _1565 = 102u + buf1_dword_off; uint _1569 = 103u + buf1_dword_off; float _1572 = spvFMul(_1548, _1551); float _1574 = fma(-_308, _354, _1553); float _1589 = fma(-_330, _354, _1572); float _1592 = rsqrt(fma(_1589, _1589, fma(_1574, _1574, spvFMul(_1555, _1555)))); float _1608 = fma(_414, _1572, fma(_405, _1553, spvFMul(_399, _1552))); float _1609 = fma(_1548, _1548, fma(_1544, _1544, spvFMul(_1541, _1541))); float _1619 = fast::clamp(fast::max(_1608, _1608), 0.0, 1.0); float _1632 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1569]), _415), 1.0 / fma(_415, 0.01000213623046875, as_type(cbuf_56.data[_1569])))); float _1641 = fast::max(0.0, spvFSub(1.0 / _1609, as_type(cbuf_56.data[_1530]))); float _1642 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1530]), _1609), 0.0, 1.0)); float _1645 = fma(0.125, _1632, 0.25); uint _1649; if (_465) { _1649 = as_type(spvFMul(as_type(cbuf_56.data[_1557]), _1619)); } else { _1649 = as_type(_1632); } uint _1662; uint _1663; uint _1664; uint _1665; if (_465) { float _1653 = spvFMul(as_type(cbuf_56.data[_1565]), _1619); _1662 = as_type(_1653); _1663 = as_type(spvFMul(_1641, _1653)); _1664 = as_type(spvFMul(_1641, spvFMul(as_type(cbuf_56.data[_1561]), _1619))); _1665 = as_type(spvFMul(_1641, as_type(_1649))); } else { _1662 = as_type(_408); _1663 = as_type(_416); _1664 = _1649; _1665 = as_type(_166); } uint _1670; if (!_465) { _1670 = as_type(fma(as_type(_1665), 10.0, _1608)); } else { _1670 = _1664; } uint _1710; uint _1711; uint _1712; if (!_465) { float _1700 = fma(_1641, spvFMul(fast::max(0.0, as_type(_1670)), 1.0 / _466), spvFMul(_445, spvFMul(_1641, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1572, as_type(_1663), fma(_1553, as_type(_1662), spvFMul(_400, _1552))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _467))))); _1710 = as_type(spvFMul(as_type(cbuf_56.data[_1565]), _1700)); _1711 = as_type(spvFMul(as_type(cbuf_56.data[_1561]), _1700)); _1712 = as_type(spvFMul(as_type(cbuf_56.data[_1557]), _1700)); } else { _1710 = _1663; _1711 = _1670; _1712 = _1665; } float _1725 = exp2(spvFMul(_1632, log2(fast::clamp(fma(spvFMul(_1589, _1592), _414, fma(spvFMul(_1574, _1592), _405, spvFMul(_399, spvFMul(_1555, _1592)))), 0.0, 1.0)))); float _1726 = exp2(spvFMul(0.0999755859375, log2(_1619))); float _1728 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_535), as_type(_725)), as_type(_929)), as_type(_1124)), as_type(_1320)), as_type(_1516)), as_type(_1712)); float _1730 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_537), as_type(_724)), as_type(_928)), as_type(_1123)), as_type(_1319)), as_type(_1515)), as_type(_1711)); float _1741 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_536), as_type(_723)), as_type(_927)), as_type(_1122)), as_type(_1318)), as_type(_1514)), as_type(_1710)); float _1745 = fma(spvFMul(_1642, spvFMul(_1726, spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1725))), _1645, fma(spvFMul(_1448, spvFMul(_1534, spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1533))), _1451, fma(spvFMul(_1252, spvFMul(_1338, spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1337))), _1255, fma(spvFMul(_1056, spvFMul(_1142, spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1141))), _1059, fma(spvFMul(_832, spvFMul(_947, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _946))), _861, fma(spvFMul(_471, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _553), _556)), _650, spvFMul(_658, spvFMul(_655, spvFMul(_768, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _767)))))))))); float _1747 = fma(spvFMul(_1642, spvFMul(_1726, spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1725))), _1645, fma(spvFMul(_1448, spvFMul(_1534, spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1533))), _1451, fma(spvFMul(_1252, spvFMul(_1338, spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1337))), _1255, fma(spvFMul(_1056, spvFMul(_1142, spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1141))), _1059, fma(spvFMul(_832, spvFMul(_947, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _946))), _861, fma(spvFMul(_471, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _553), _556)), _650, spvFMul(_658, spvFMul(_655, spvFMul(_768, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _767)))))))))); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_462, spvFMul(_461, _1745)); out.frag_color1.y = spvFMul(_463, spvFMul(_461, fma(spvFMul(_1642, spvFMul(_1726, spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1725))), _1645, fma(spvFMul(_1448, spvFMul(_1534, spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1533))), _1451, fma(_1431, _1255, fma(_1235, _1059, fma(_1039, _861, fma(spvFMul(_471, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _553), _556)), _650, spvFMul(_658, spvFMul(_655, spvFMul(_768, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _767)))))))))))); out.frag_color1.z = spvFMul(_464, spvFMul(_461, _1747)); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_461, spvFSub(_1728, spvFMul(spvFMul(_462, _1728), 0.5))); out.frag_color0.y = spvFMul(_461, spvFSub(_1730, spvFMul(spvFMul(_463, _1730), 0.5))); out.frag_color0.z = spvFMul(_461, spvFSub(_1741, spvFMul(spvFMul(_464, _1741), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xf81596cd [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[288]; }; constant uint _138 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _158 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _159 = _158.x; float4 _164 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _172 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _174 = _172.y; float4 _180 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _181 = _180.x; float _182 = _180.y; float _183 = _180.z; uint _253 = 3u + buf1_dword_off; float _282 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _159, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _284 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _159, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _288 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _159, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _291 = fma(-_282, _284, as_type(cbuf_56.data[2u + buf1_dword_off])); float _294 = fma(2.0, _164.z, -1.0); float _296 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _159, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _297 = spvFMul(_282, _284); float _300 = fma(-_288, _284, as_type(cbuf_56.data[1u + buf1_dword_off])); float _314 = fma(2.0, _164.y, -1.0); float _316 = spvFMul(_288, _284); float _322 = fma(-_296, _284, as_type(cbuf_56.data[0u + buf1_dword_off])); float _336 = fma(2.0, _164.x, -1.0); float _338 = spvFMul(_296, _284); float _359 = rsqrt(fma(_322, _322, fma(_300, _300, spvFMul(_291, _291)))); float _360 = rsqrt(fma(_336, _336, fma(_314, _314, spvFMul(_294, _294)))); float _362 = rsqrt(fma(-_338, -_338, fma(-_316, -_316, spvFMul(-_297, -_297)))); float _363 = spvFMul(_291, _359); float _365 = spvFMul(_294, _360); float _367 = spvFMul(_300, _359); float _370 = fma(-_297, _362, _363); uint _371 = 4u + buf1_dword_off; uint _374 = 5u + buf1_dword_off; uint _377 = 6u + buf1_dword_off; uint _380 = 7u + buf1_dword_off; float _383 = spvFMul(_314, _360); float _387 = spvFMul(_322, _359); float _390 = fma(-_316, _362, _367); float _392 = spvFMul(_336, _360); float _397 = rsqrt(fma(_338, _338, fma(_316, _316, spvFMul(_297, _297)))); float _399 = fma(-_338, _362, _387); float _407 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _392, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _383, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _365))); float _408 = spvFMul(_297, _397); float _413 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _392, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _383, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _365))); float _416 = spvFMul(_316, _397); float _420 = rsqrt(fma(_399, _399, fma(_390, _390, spvFMul(_370, _370)))); float _422 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _392, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _383, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _365))); float _423 = exp2(spvFMul(13.0, _172.x)); float _424 = spvFMul(_338, _397); float _440 = fma(_322, _322, fma(_300, _300, spvFMul(_291, _291))); float _453 = spvFMul(10.0, _174); float _455 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_424, _422, fma(-_416, _413, spvFMul(_407, -_408)))))); float _456 = fma(_422, _387, fma(_413, _367, spvFMul(_407, _363))); float _462 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_380]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_380])))); float4 _468 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _469 = _468.x; float _470 = spvFMul(_181, _181); float _471 = spvFMul(_182, _182); float _472 = spvFMul(_183, _183); bool _473 = _453 == 0.0; float _474 = fma(2.0, _453, 1.0); float _475 = spvFMul(_455, _455); float _477 = fast::clamp(fast::max(_456, _456), 0.0, 1.0); float _478 = fast::max(0.0, spvFSub(1.0 / _440, as_type(cbuf_56.data[_253]))); float _479 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_253]), _440), 0.0, 1.0)); uint _484; if (_473) { _484 = as_type(spvFMul(as_type(cbuf_56.data[_371]), _477)); } else { _484 = as_type(_387); } uint _496; uint _497; uint _498; if (_473) { _496 = as_type(spvFMul(_478, as_type(_484))); _497 = as_type(spvFMul(_478, spvFMul(as_type(cbuf_56.data[_377]), _477))); _498 = as_type(spvFMul(_478, spvFMul(as_type(cbuf_56.data[_374]), _477))); } else { _496 = _138; _497 = as_type(_367); _498 = as_type(_363); } uint _502; if (!_473) { _502 = as_type(fma(_174, 10.0, _456)); } else { _502 = as_type(_399); } uint _543; uint _544; uint _545; uint _546; if (!_473) { float _532 = fma(_478, spvFMul(fast::max(0.0, as_type(_502)), 1.0 / _474), spvFMul(_453, spvFMul(_478, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_484), _424, fma(as_type(_497), _416, spvFMul(_408, as_type(_498)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _475))))); _543 = as_type(spvFMul(as_type(cbuf_56.data[_371]), _532)); _544 = as_type(spvFMul(as_type(cbuf_56.data[_377]), _532)); _545 = as_type(spvFMul(as_type(cbuf_56.data[_374]), _532)); _546 = as_type(_532); } else { _543 = _496; _544 = _497; _545 = _498; _546 = _484; } uint _557 = 19u + buf1_dword_off; float _561 = exp2(spvFMul(_462, log2(fast::clamp(fma(spvFMul(_399, _420), _422, fma(spvFMul(_390, _420), _413, spvFMul(_407, spvFMul(_370, _420)))), 0.0, 1.0)))); float _564 = exp2(spvFMul(0.0999755859375, log2(_477))); float _567 = fma(-_282, _284, as_type(cbuf_56.data[18u + buf1_dword_off])); float _570 = fma(-_288, _284, as_type(cbuf_56.data[17u + buf1_dword_off])); float _574 = fma(-_296, _284, as_type(cbuf_56.data[16u + buf1_dword_off])); float _577 = rsqrt(fma(_574, _574, fma(_570, _570, spvFMul(_567, _567)))); float _578 = spvFMul(_567, _577); float _580 = spvFMul(_570, _577); float _583 = fma(-_297, _362, _578); uint _584 = 20u + buf1_dword_off; uint _587 = 21u + buf1_dword_off; uint _590 = 22u + buf1_dword_off; uint _594 = 23u + buf1_dword_off; float _597 = spvFMul(_574, _577); float _600 = fma(-_316, _362, _580); float _603 = fma(-_338, _362, _597); float _615 = rsqrt(fma(_603, _603, fma(_600, _600, spvFMul(_583, _583)))); float _625 = fma(_422, _597, fma(_413, _580, spvFMul(_407, _578))); float _626 = fma(_574, _574, fma(_570, _570, spvFMul(_567, _567))); float _639 = fast::clamp(fast::max(_625, _625), 0.0, 1.0); float _652 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_594]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_594])))); float _658 = fma(_462, 0.125, 0.25); float _662 = fast::max(0.0, spvFSub(1.0 / _626, as_type(cbuf_56.data[_557]))); float _663 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_557]), _626), 0.0, 1.0)); float _666 = fma(0.125, _652, 0.25); uint _670; if (_473) { _670 = as_type(spvFMul(as_type(cbuf_56.data[_584]), _639)); } else { _670 = as_type(_597); } uint _683; uint _684; uint _685; uint _686; if (_473) { float _674 = spvFMul(as_type(cbuf_56.data[_590]), _639); _683 = as_type(spvFMul(_662, as_type(_670))); _684 = as_type(spvFMul(_662, spvFMul(as_type(cbuf_56.data[_587]), _639))); _685 = as_type(_674); _686 = as_type(spvFMul(_662, _674)); } else { _683 = _546; _684 = as_type(_652); _685 = as_type(_580); _686 = as_type(_578); } uint _690; if (!_473) { _690 = as_type(fma(_174, 10.0, _625)); } else { _690 = _684; } uint _731; uint _732; uint _733; if (!_473) { float _721 = fma(_662, spvFMul(fast::max(0.0, as_type(_690)), 1.0 / _474), spvFMul(_453, spvFMul(_662, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_670), _424, fma(as_type(_685), _416, spvFMul(_408, as_type(_686)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _475))))); _731 = as_type(spvFMul(as_type(cbuf_56.data[_590]), _721)); _732 = as_type(spvFMul(as_type(cbuf_56.data[_587]), _721)); _733 = as_type(spvFMul(as_type(cbuf_56.data[_584]), _721)); } else { _731 = _686; _732 = _690; _733 = _683; } uint _756 = 35u + buf1_dword_off; uint _760 = 36u + buf1_dword_off; uint _764 = 37u + buf1_dword_off; uint _768 = 38u + buf1_dword_off; uint _772 = 39u + buf1_dword_off; float _775 = exp2(spvFMul(_652, log2(fast::clamp(fma(spvFMul(_603, _615), _422, fma(spvFMul(_600, _615), _413, spvFMul(_407, spvFMul(_583, _615)))), 0.0, 1.0)))); float _776 = exp2(spvFMul(0.0999755859375, log2(_639))); float _806 = fma(-_296, _284, as_type(cbuf_56.data[32u + buf1_dword_off])); float _809 = fma(-_288, _284, as_type(cbuf_56.data[33u + buf1_dword_off])); float _812 = fma(-_282, _284, as_type(cbuf_56.data[34u + buf1_dword_off])); float _816 = rsqrt(fma(_806, _806, fma(_809, _809, spvFMul(_812, _812)))); float _817 = spvFMul(_806, _816); float _819 = spvFMul(_809, _816); float _821 = spvFMul(_812, _816); float _825 = fma(_422, _817, fma(_413, _819, spvFMul(_407, _821))); float _828 = fast::clamp(fast::max(_825, _825), 0.0, 1.0); float _832 = fma(_806, _806, fma(_809, _809, spvFMul(_812, _812))); float _836 = fast::max(0.0, spvFSub(1.0 / _832, as_type(cbuf_56.data[_756]))); float _840 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_756]), _832), 0.0, 1.0)); float _842 = fma(-_338, _362, _817); float _844 = fma(-_316, _362, _819); float _846 = fma(-_297, _362, _821); float _850 = rsqrt(fma(_842, _842, fma(_844, _844, spvFMul(_846, _846)))); float _860 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_772]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_772])))); float _869 = fma(0.125, _860, 0.25); uint _873; if (_473) { _873 = as_type(spvFMul(as_type(cbuf_56.data[_760]), _828)); } else { _873 = as_type(_821); } uint _886; uint _887; uint _888; uint _889; if (_473) { float _877 = spvFMul(as_type(cbuf_56.data[_768]), _828); _886 = as_type(spvFMul(_836, spvFMul(as_type(cbuf_56.data[_764]), _828))); _887 = as_type(_877); _888 = as_type(spvFMul(_836, _877)); _889 = as_type(spvFMul(_836, as_type(_873))); } else { _886 = as_type(_828); _887 = as_type(_819); _888 = as_type(_817); _889 = as_type(_825); } uint _894; if (!_473) { _894 = as_type(fma(_174, 10.0, as_type(_889))); } else { _894 = _889; } uint _935; uint _936; uint _937; if (!_473) { float _925 = fma(_836, spvFMul(fast::max(0.0, as_type(_894)), 1.0 / _474), spvFMul(_453, spvFMul(_836, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_888), _424, fma(as_type(_887), _416, spvFMul(_408, as_type(_873)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _475))))); _935 = as_type(spvFMul(as_type(cbuf_56.data[_768]), _925)); _936 = as_type(spvFMul(as_type(cbuf_56.data[_764]), _925)); _937 = as_type(spvFMul(as_type(cbuf_56.data[_760]), _925)); } else { _935 = _888; _936 = _886; _937 = _894; } uint _951 = 51u + buf1_dword_off; float _954 = exp2(spvFMul(_860, log2(fast::clamp(fma(spvFMul(_842, _850), _422, fma(spvFMul(_844, _850), _413, spvFMul(_407, spvFMul(_846, _850)))), 0.0, 1.0)))); float _955 = exp2(spvFMul(0.0999755859375, log2(_828))); float _962 = fma(-_282, _284, as_type(cbuf_56.data[50u + buf1_dword_off])); float _965 = fma(-_288, _284, as_type(cbuf_56.data[49u + buf1_dword_off])); float _969 = fma(-_296, _284, as_type(cbuf_56.data[48u + buf1_dword_off])); float _972 = rsqrt(fma(_969, _969, fma(_965, _965, spvFMul(_962, _962)))); float _973 = spvFMul(_962, _972); float _974 = spvFMul(_965, _972); float _976 = fma(-_297, _362, _973); uint _977 = 52u + buf1_dword_off; uint _981 = 53u + buf1_dword_off; uint _985 = 54u + buf1_dword_off; uint _989 = 55u + buf1_dword_off; float _992 = spvFMul(_969, _972); float _995 = fma(-_316, _362, _974); float _1010 = fma(-_338, _362, _992); float _1013 = rsqrt(fma(_1010, _1010, fma(_995, _995, spvFMul(_976, _976)))); float _1029 = fma(_422, _992, fma(_413, _974, spvFMul(_407, _973))); float _1030 = fma(_969, _969, fma(_965, _965, spvFMul(_962, _962))); float _1040 = fast::clamp(fast::max(_1029, _1029), 0.0, 1.0); float _1047 = spvFMul(_840, spvFMul(_955, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _954))); float _1055 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_989]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_989])))); float _1063 = fast::max(0.0, spvFSub(1.0 / _1030, as_type(cbuf_56.data[_951]))); float _1064 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_951]), _1030), 0.0, 1.0)); float _1067 = fma(0.125, _1055, 0.25); uint _1071; if (_473) { _1071 = as_type(spvFMul(as_type(cbuf_56.data[_977]), _1040)); } else { _1071 = _935; } uint _1084; uint _1085; uint _1086; uint _1087; if (_473) { float _1073 = spvFMul(as_type(cbuf_56.data[_981]), _1040); _1084 = as_type(spvFMul(_1063, as_type(_1071))); _1085 = as_type(spvFMul(_1063, spvFMul(as_type(cbuf_56.data[_985]), _1040))); _1086 = as_type(_1073); _1087 = as_type(spvFMul(_1063, _1073)); } else { _1084 = as_type(_1047); _1085 = as_type(_1040); _1086 = as_type(_992); _1087 = _1071; } uint _1091; if (!_473) { _1091 = as_type(fma(_174, 10.0, _1029)); } else { _1091 = _1087; } uint _1130; uint _1131; uint _1132; if (!_473) { float _1120 = fma(_1063, spvFMul(fast::max(0.0, as_type(_1091)), 1.0 / _474), spvFMul(_453, spvFMul(_1063, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1086), _424, fma(_974, _416, spvFMul(_408, _973))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _475))))); _1130 = as_type(spvFMul(as_type(cbuf_56.data[_985]), _1120)); _1131 = as_type(spvFMul(as_type(cbuf_56.data[_981]), _1120)); _1132 = as_type(spvFMul(as_type(cbuf_56.data[_977]), _1120)); } else { _1130 = _1085; _1131 = _1091; _1132 = _1084; } uint _1146 = 67u + buf1_dword_off; float _1149 = exp2(spvFMul(_1055, log2(fast::clamp(fma(spvFMul(_1010, _1013), _422, fma(spvFMul(_995, _1013), _413, spvFMul(_407, spvFMul(_976, _1013)))), 0.0, 1.0)))); float _1150 = exp2(spvFMul(0.0999755859375, log2(_1040))); float _1157 = fma(-_282, _284, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1160 = fma(-_288, _284, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1164 = fma(-_296, _284, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1167 = rsqrt(fma(_1164, _1164, fma(_1160, _1160, spvFMul(_1157, _1157)))); float _1168 = spvFMul(_1157, _1167); float _1169 = spvFMul(_1160, _1167); float _1171 = fma(-_297, _362, _1168); uint _1173 = 68u + buf1_dword_off; uint _1177 = 69u + buf1_dword_off; uint _1181 = 70u + buf1_dword_off; uint _1185 = 71u + buf1_dword_off; float _1188 = spvFMul(_1164, _1167); float _1191 = fma(-_316, _362, _1169); float _1206 = fma(-_338, _362, _1188); float _1209 = rsqrt(fma(_1206, _1206, fma(_1191, _1191, spvFMul(_1171, _1171)))); float _1225 = fma(_422, _1188, fma(_413, _1169, spvFMul(_407, _1168))); float _1226 = fma(_1164, _1164, fma(_1160, _1160, spvFMul(_1157, _1157))); float _1236 = fast::clamp(fast::max(_1225, _1225), 0.0, 1.0); float _1243 = spvFMul(_1064, spvFMul(_1150, spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1149))); float _1251 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1185]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_1185])))); float _1259 = fast::max(0.0, spvFSub(1.0 / _1226, as_type(cbuf_56.data[_1146]))); float _1260 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1146]), _1226), 0.0, 1.0)); float _1263 = fma(0.125, _1251, 0.25); uint _1267; if (_473) { _1267 = as_type(spvFMul(as_type(cbuf_56.data[_1173]), _1236)); } else { _1267 = _1130; } uint _1280; uint _1281; uint _1282; uint _1283; if (_473) { float _1271 = spvFMul(as_type(cbuf_56.data[_1181]), _1236); _1280 = as_type(spvFMul(_1259, as_type(_1267))); _1281 = as_type(spvFMul(_1259, _1271)); _1282 = as_type(spvFMul(_1259, spvFMul(as_type(cbuf_56.data[_1177]), _1236))); _1283 = as_type(_1271); } else { _1280 = as_type(_1243); _1281 = _1267; _1282 = as_type(_1188); _1283 = as_type(_1236); } uint _1287; if (!_473) { _1287 = as_type(fma(_174, 10.0, _1225)); } else { _1287 = _1283; } uint _1326; uint _1327; uint _1328; if (!_473) { float _1316 = fma(_1259, spvFMul(fast::max(0.0, as_type(_1287)), 1.0 / _474), spvFMul(_453, spvFMul(_1259, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1282), _424, fma(_1169, _416, spvFMul(_408, _1168))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _475))))); _1326 = as_type(spvFMul(as_type(cbuf_56.data[_1181]), _1316)); _1327 = as_type(spvFMul(as_type(cbuf_56.data[_1177]), _1316)); _1328 = as_type(spvFMul(as_type(cbuf_56.data[_1173]), _1316)); } else { _1326 = _1281; _1327 = _1282; _1328 = _1280; } uint _1342 = 83u + buf1_dword_off; float _1345 = exp2(spvFMul(_1251, log2(fast::clamp(fma(spvFMul(_1206, _1209), _422, fma(spvFMul(_1191, _1209), _413, spvFMul(_407, spvFMul(_1171, _1209)))), 0.0, 1.0)))); float _1346 = exp2(spvFMul(0.0999755859375, log2(_1236))); float _1353 = fma(-_282, _284, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1356 = fma(-_288, _284, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1360 = fma(-_296, _284, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1363 = rsqrt(fma(_1360, _1360, fma(_1356, _1356, spvFMul(_1353, _1353)))); float _1364 = spvFMul(_1353, _1363); float _1365 = spvFMul(_1356, _1363); float _1367 = fma(-_297, _362, _1364); uint _1369 = 84u + buf1_dword_off; uint _1373 = 85u + buf1_dword_off; uint _1377 = 86u + buf1_dword_off; uint _1381 = 87u + buf1_dword_off; float _1384 = spvFMul(_1360, _1363); float _1387 = fma(-_316, _362, _1365); float _1402 = fma(-_338, _362, _1384); float _1405 = rsqrt(fma(_1402, _1402, fma(_1387, _1387, spvFMul(_1367, _1367)))); float _1421 = fma(_422, _1384, fma(_413, _1365, spvFMul(_407, _1364))); float _1422 = fma(_1360, _1360, fma(_1356, _1356, spvFMul(_1353, _1353))); float _1432 = fast::clamp(fast::max(_1421, _1421), 0.0, 1.0); float _1439 = spvFMul(_1260, spvFMul(_1346, spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1345))); float _1447 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1381]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_1381])))); float _1455 = fast::max(0.0, spvFSub(1.0 / _1422, as_type(cbuf_56.data[_1342]))); float _1456 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1342]), _1422), 0.0, 1.0)); float _1459 = fma(0.125, _1447, 0.25); uint _1463; if (_473) { _1463 = as_type(spvFMul(as_type(cbuf_56.data[_1369]), _1432)); } else { _1463 = _1326; } uint _1476; uint _1477; uint _1478; uint _1479; if (_473) { float _1467 = spvFMul(as_type(cbuf_56.data[_1377]), _1432); _1476 = as_type(spvFMul(_1455, as_type(_1463))); _1477 = as_type(spvFMul(_1455, _1467)); _1478 = as_type(spvFMul(_1455, spvFMul(as_type(cbuf_56.data[_1373]), _1432))); _1479 = as_type(_1467); } else { _1476 = as_type(_1439); _1477 = _1463; _1478 = as_type(_1384); _1479 = as_type(_1432); } uint _1483; if (!_473) { _1483 = as_type(fma(_174, 10.0, _1421)); } else { _1483 = _1479; } uint _1522; uint _1523; uint _1524; if (!_473) { float _1512 = fma(_1455, spvFMul(fast::max(0.0, as_type(_1483)), 1.0 / _474), spvFMul(_453, spvFMul(_1455, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1478), _424, fma(_1365, _416, spvFMul(_408, _1364))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _475))))); _1522 = as_type(spvFMul(as_type(cbuf_56.data[_1377]), _1512)); _1523 = as_type(spvFMul(as_type(cbuf_56.data[_1373]), _1512)); _1524 = as_type(spvFMul(as_type(cbuf_56.data[_1369]), _1512)); } else { _1522 = _1477; _1523 = _1478; _1524 = _1476; } uint _1538 = 99u + buf1_dword_off; float _1541 = exp2(spvFMul(_1447, log2(fast::clamp(fma(spvFMul(_1402, _1405), _422, fma(spvFMul(_1387, _1405), _413, spvFMul(_407, spvFMul(_1367, _1405)))), 0.0, 1.0)))); float _1542 = exp2(spvFMul(0.0999755859375, log2(_1432))); float _1549 = fma(-_282, _284, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1552 = fma(-_288, _284, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1556 = fma(-_296, _284, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1559 = rsqrt(fma(_1556, _1556, fma(_1552, _1552, spvFMul(_1549, _1549)))); float _1560 = spvFMul(_1549, _1559); float _1561 = spvFMul(_1552, _1559); float _1563 = fma(-_297, _362, _1560); uint _1565 = 100u + buf1_dword_off; uint _1569 = 101u + buf1_dword_off; uint _1573 = 102u + buf1_dword_off; uint _1577 = 103u + buf1_dword_off; float _1580 = spvFMul(_1556, _1559); float _1583 = fma(-_316, _362, _1561); float _1598 = fma(-_338, _362, _1580); float _1601 = rsqrt(fma(_1598, _1598, fma(_1583, _1583, spvFMul(_1563, _1563)))); float _1617 = fma(_422, _1580, fma(_413, _1561, spvFMul(_407, _1560))); float _1618 = fma(_1556, _1556, fma(_1552, _1552, spvFMul(_1549, _1549))); float _1628 = fast::clamp(fast::max(_1617, _1617), 0.0, 1.0); float _1635 = spvFMul(_1456, spvFMul(_1542, spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1541))); float _1643 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1577]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_1577])))); float _1651 = fast::max(0.0, spvFSub(1.0 / _1618, as_type(cbuf_56.data[_1538]))); float _1652 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1538]), _1618), 0.0, 1.0)); float _1655 = fma(0.125, _1643, 0.25); uint _1659; if (_473) { _1659 = as_type(spvFMul(as_type(cbuf_56.data[_1565]), _1628)); } else { _1659 = _1522; } uint _1672; uint _1673; uint _1674; uint _1675; if (_473) { float _1663 = spvFMul(as_type(cbuf_56.data[_1573]), _1628); _1672 = as_type(spvFMul(_1651, as_type(_1659))); _1673 = as_type(spvFMul(_1651, _1663)); _1674 = as_type(spvFMul(_1651, spvFMul(as_type(cbuf_56.data[_1569]), _1628))); _1675 = as_type(_1663); } else { _1672 = as_type(_1635); _1673 = _1659; _1674 = as_type(_1580); _1675 = as_type(_1628); } uint _1679; if (!_473) { _1679 = as_type(fma(_174, 10.0, _1617)); } else { _1679 = _1675; } uint _1718; uint _1719; uint _1720; if (!_473) { float _1708 = fma(_1651, spvFMul(fast::max(0.0, as_type(_1679)), 1.0 / _474), spvFMul(_453, spvFMul(_1651, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1674), _424, fma(_1561, _416, spvFMul(_408, _1560))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _475))))); _1718 = as_type(spvFMul(as_type(cbuf_56.data[_1573]), _1708)); _1719 = as_type(spvFMul(as_type(cbuf_56.data[_1569]), _1708)); _1720 = as_type(spvFMul(as_type(cbuf_56.data[_1565]), _1708)); } else { _1718 = _1673; _1719 = _1674; _1720 = _1672; } uint _1734 = 115u + buf1_dword_off; float _1737 = exp2(spvFMul(_1643, log2(fast::clamp(fma(spvFMul(_1598, _1601), _422, fma(spvFMul(_1583, _1601), _413, spvFMul(_407, spvFMul(_1563, _1601)))), 0.0, 1.0)))); float _1738 = exp2(spvFMul(0.0999755859375, log2(_1628))); float _1745 = fma(-_282, _284, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1748 = fma(-_288, _284, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1752 = fma(-_296, _284, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1755 = rsqrt(fma(_1752, _1752, fma(_1748, _1748, spvFMul(_1745, _1745)))); float _1756 = spvFMul(_1745, _1755); float _1757 = spvFMul(_1748, _1755); float _1759 = fma(-_297, _362, _1756); uint _1761 = 116u + buf1_dword_off; uint _1765 = 117u + buf1_dword_off; uint _1769 = 118u + buf1_dword_off; uint _1773 = 119u + buf1_dword_off; float _1776 = spvFMul(_1752, _1755); float _1778 = fma(-_316, _362, _1757); float _1793 = fma(-_338, _362, _1776); float _1796 = rsqrt(fma(_1793, _1793, fma(_1778, _1778, spvFMul(_1759, _1759)))); float _1812 = fma(_422, _1776, fma(_413, _1757, spvFMul(_407, _1756))); float _1813 = fma(_1752, _1752, fma(_1748, _1748, spvFMul(_1745, _1745))); float _1823 = fast::clamp(fast::max(_1812, _1812), 0.0, 1.0); float _1836 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1773]), _423), 1.0 / fma(_423, 0.01000213623046875, as_type(cbuf_56.data[_1773])))); float _1842 = fma(spvFMul(_1652, spvFMul(_1738, spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1737))), _1655, fma(spvFMul(_1456, spvFMul(_1542, spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1541))), _1459, fma(spvFMul(_1260, spvFMul(_1346, spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1345))), _1263, fma(spvFMul(_1064, spvFMul(_1150, spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1149))), _1067, fma(spvFMul(_840, spvFMul(_955, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _954))), _869, fma(spvFMul(_479, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _561), _564)), _658, spvFMul(_666, spvFMul(_663, spvFMul(_776, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _775)))))))))); float _1844 = fma(spvFMul(_1652, spvFMul(_1738, spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1737))), _1655, fma(spvFMul(_1456, spvFMul(_1542, spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1541))), _1459, fma(spvFMul(_1260, spvFMul(_1346, spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1345))), _1263, fma(spvFMul(_1064, spvFMul(_1150, spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1149))), _1067, fma(spvFMul(_840, spvFMul(_955, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _954))), _869, fma(spvFMul(_479, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _561), _564)), _658, spvFMul(_666, spvFMul(_663, spvFMul(_776, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _775)))))))))); float _1845 = fast::max(0.0, spvFSub(1.0 / _1813, as_type(cbuf_56.data[_1734]))); float _1846 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1734]), _1813), 0.0, 1.0)); float _1849 = fma(0.125, _1836, 0.25); uint _1853; if (_473) { _1853 = as_type(spvFMul(as_type(cbuf_56.data[_1761]), _1823)); } else { _1853 = as_type(_1836); } uint _1866; uint _1867; uint _1868; uint _1869; if (_473) { float _1857 = spvFMul(as_type(cbuf_56.data[_1769]), _1823); _1866 = as_type(_1857); _1867 = as_type(spvFMul(_1845, _1857)); _1868 = as_type(spvFMul(_1845, spvFMul(as_type(cbuf_56.data[_1765]), _1823))); _1869 = as_type(spvFMul(_1845, as_type(_1853))); } else { _1866 = as_type(_416); _1867 = as_type(_424); _1868 = _1853; _1869 = as_type(_174); } uint _1874; if (!_473) { _1874 = as_type(fma(as_type(_1869), 10.0, _1812)); } else { _1874 = _1868; } uint _1914; uint _1915; uint _1916; if (!_473) { float _1904 = fma(_1845, spvFMul(fast::max(0.0, as_type(_1874)), 1.0 / _474), spvFMul(_453, spvFMul(_1845, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1776, as_type(_1867), fma(_1757, as_type(_1866), spvFMul(_408, _1756))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), _475))))); _1914 = as_type(spvFMul(as_type(cbuf_56.data[_1769]), _1904)); _1915 = as_type(spvFMul(as_type(cbuf_56.data[_1765]), _1904)); _1916 = as_type(spvFMul(as_type(cbuf_56.data[_1761]), _1904)); } else { _1914 = _1867; _1915 = _1874; _1916 = _1869; } float _1929 = exp2(spvFMul(_1836, log2(fast::clamp(fma(spvFMul(_1793, _1796), _422, fma(spvFMul(_1778, _1796), _413, spvFMul(_407, spvFMul(_1759, _1796)))), 0.0, 1.0)))); float _1930 = exp2(spvFMul(0.0999755859375, log2(_1823))); float _1932 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_543), as_type(_733)), as_type(_937)), as_type(_1132)), as_type(_1328)), as_type(_1524)), as_type(_1720)), as_type(_1916)); float _1934 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_545), as_type(_732)), as_type(_936)), as_type(_1131)), as_type(_1327)), as_type(_1523)), as_type(_1719)), as_type(_1915)); float _1945 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_544), as_type(_731)), as_type(_935)), as_type(_1130)), as_type(_1326)), as_type(_1522)), as_type(_1718)), as_type(_1914)); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_470, spvFMul(_469, fma(spvFMul(_1846, spvFMul(_1930, spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1929))), _1849, _1842))); out.frag_color1.y = spvFMul(_471, spvFMul(_469, fma(spvFMul(_1846, spvFMul(_1930, spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1929))), _1849, fma(spvFMul(_1652, spvFMul(_1738, spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1737))), _1655, fma(_1635, _1459, fma(_1439, _1263, fma(_1243, _1067, fma(_1047, _869, fma(spvFMul(_479, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _561), _564)), _658, spvFMul(_666, spvFMul(_663, spvFMul(_776, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _775))))))))))))); out.frag_color1.z = spvFMul(_472, spvFMul(_469, fma(spvFMul(_1846, spvFMul(_1930, spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1929))), _1849, _1844))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_469, spvFSub(_1932, spvFMul(spvFMul(_470, _1932), 0.5))); out.frag_color0.y = spvFMul(_469, spvFSub(_1934, spvFMul(spvFMul(_471, _1934), 0.5))); out.frag_color0.z = spvFMul(_469, spvFSub(_1945, spvFMul(spvFMul(_472, _1945), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xb2ace4c [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[324]; }; constant uint _146 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _166 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _167 = _166.x; float4 _172 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _180 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _182 = _180.y; float4 _188 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _189 = _188.x; float _190 = _188.y; float _191 = _188.z; uint _261 = 3u + buf1_dword_off; float _290 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _167, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _292 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _167, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _296 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _167, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _299 = fma(-_290, _292, as_type(cbuf_56.data[2u + buf1_dword_off])); float _302 = fma(2.0, _172.z, -1.0); float _304 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _167, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _305 = spvFMul(_290, _292); float _308 = fma(-_296, _292, as_type(cbuf_56.data[1u + buf1_dword_off])); float _322 = fma(2.0, _172.y, -1.0); float _324 = spvFMul(_296, _292); float _330 = fma(-_304, _292, as_type(cbuf_56.data[0u + buf1_dword_off])); float _344 = fma(2.0, _172.x, -1.0); float _346 = spvFMul(_304, _292); float _367 = rsqrt(fma(_330, _330, fma(_308, _308, spvFMul(_299, _299)))); float _368 = rsqrt(fma(_344, _344, fma(_322, _322, spvFMul(_302, _302)))); float _370 = rsqrt(fma(-_346, -_346, fma(-_324, -_324, spvFMul(-_305, -_305)))); float _371 = spvFMul(_299, _367); float _373 = spvFMul(_302, _368); float _375 = spvFMul(_308, _367); float _378 = fma(-_305, _370, _371); uint _379 = 4u + buf1_dword_off; uint _382 = 5u + buf1_dword_off; uint _385 = 6u + buf1_dword_off; uint _388 = 7u + buf1_dword_off; float _391 = spvFMul(_322, _368); float _395 = spvFMul(_330, _367); float _398 = fma(-_324, _370, _375); float _400 = spvFMul(_344, _368); float _405 = rsqrt(fma(_346, _346, fma(_324, _324, spvFMul(_305, _305)))); float _407 = fma(-_346, _370, _395); float _415 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _400, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _391, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _373))); float _416 = spvFMul(_305, _405); float _421 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _400, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _391, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _373))); float _424 = spvFMul(_324, _405); float _428 = rsqrt(fma(_407, _407, fma(_398, _398, spvFMul(_378, _378)))); float _430 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _400, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _391, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _373))); float _431 = exp2(spvFMul(13.0, _180.x)); float _432 = spvFMul(_346, _405); float _448 = fma(_330, _330, fma(_308, _308, spvFMul(_299, _299))); float _461 = spvFMul(10.0, _182); float _463 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_432, _430, fma(-_424, _421, spvFMul(_415, -_416)))))); float _464 = fma(_430, _395, fma(_421, _375, spvFMul(_415, _371))); float _470 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_388]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_388])))); float4 _476 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _477 = _476.x; float _478 = spvFMul(_189, _189); float _479 = spvFMul(_190, _190); float _480 = spvFMul(_191, _191); bool _481 = _461 == 0.0; float _482 = fma(2.0, _461, 1.0); float _483 = spvFMul(_463, _463); float _485 = fast::clamp(fast::max(_464, _464), 0.0, 1.0); float _486 = fast::max(0.0, spvFSub(1.0 / _448, as_type(cbuf_56.data[_261]))); float _487 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_261]), _448), 0.0, 1.0)); uint _492; if (_481) { _492 = as_type(spvFMul(as_type(cbuf_56.data[_379]), _485)); } else { _492 = as_type(_395); } uint _504; uint _505; uint _506; if (_481) { _504 = as_type(spvFMul(_486, as_type(_492))); _505 = as_type(spvFMul(_486, spvFMul(as_type(cbuf_56.data[_385]), _485))); _506 = as_type(spvFMul(_486, spvFMul(as_type(cbuf_56.data[_382]), _485))); } else { _504 = _146; _505 = as_type(_375); _506 = as_type(_371); } uint _510; if (!_481) { _510 = as_type(fma(_182, 10.0, _464)); } else { _510 = as_type(_407); } uint _551; uint _552; uint _553; uint _554; if (!_481) { float _540 = fma(_486, spvFMul(fast::max(0.0, as_type(_510)), 1.0 / _482), spvFMul(_461, spvFMul(_486, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_492), _432, fma(as_type(_505), _424, spvFMul(_416, as_type(_506)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _483))))); _551 = as_type(spvFMul(as_type(cbuf_56.data[_379]), _540)); _552 = as_type(spvFMul(as_type(cbuf_56.data[_385]), _540)); _553 = as_type(spvFMul(as_type(cbuf_56.data[_382]), _540)); _554 = as_type(_540); } else { _551 = _504; _552 = _505; _553 = _506; _554 = _492; } uint _565 = 19u + buf1_dword_off; float _569 = exp2(spvFMul(_470, log2(fast::clamp(fma(spvFMul(_407, _428), _430, fma(spvFMul(_398, _428), _421, spvFMul(_415, spvFMul(_378, _428)))), 0.0, 1.0)))); float _572 = exp2(spvFMul(0.0999755859375, log2(_485))); float _575 = fma(-_290, _292, as_type(cbuf_56.data[18u + buf1_dword_off])); float _578 = fma(-_296, _292, as_type(cbuf_56.data[17u + buf1_dword_off])); float _582 = fma(-_304, _292, as_type(cbuf_56.data[16u + buf1_dword_off])); float _585 = rsqrt(fma(_582, _582, fma(_578, _578, spvFMul(_575, _575)))); float _586 = spvFMul(_575, _585); float _588 = spvFMul(_578, _585); float _591 = fma(-_305, _370, _586); uint _592 = 20u + buf1_dword_off; uint _595 = 21u + buf1_dword_off; uint _598 = 22u + buf1_dword_off; uint _602 = 23u + buf1_dword_off; float _605 = spvFMul(_582, _585); float _608 = fma(-_324, _370, _588); float _611 = fma(-_346, _370, _605); float _623 = rsqrt(fma(_611, _611, fma(_608, _608, spvFMul(_591, _591)))); float _633 = fma(_430, _605, fma(_421, _588, spvFMul(_415, _586))); float _634 = fma(_582, _582, fma(_578, _578, spvFMul(_575, _575))); float _647 = fast::clamp(fast::max(_633, _633), 0.0, 1.0); float _660 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_602]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_602])))); float _666 = fma(_470, 0.125, 0.25); float _670 = fast::max(0.0, spvFSub(1.0 / _634, as_type(cbuf_56.data[_565]))); float _671 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_565]), _634), 0.0, 1.0)); float _674 = fma(0.125, _660, 0.25); uint _678; if (_481) { _678 = as_type(spvFMul(as_type(cbuf_56.data[_592]), _647)); } else { _678 = as_type(_605); } uint _691; uint _692; uint _693; uint _694; if (_481) { float _682 = spvFMul(as_type(cbuf_56.data[_598]), _647); _691 = as_type(spvFMul(_670, as_type(_678))); _692 = as_type(spvFMul(_670, spvFMul(as_type(cbuf_56.data[_595]), _647))); _693 = as_type(_682); _694 = as_type(spvFMul(_670, _682)); } else { _691 = _554; _692 = as_type(_660); _693 = as_type(_588); _694 = as_type(_586); } uint _698; if (!_481) { _698 = as_type(fma(_182, 10.0, _633)); } else { _698 = _692; } uint _739; uint _740; uint _741; if (!_481) { float _729 = fma(_670, spvFMul(fast::max(0.0, as_type(_698)), 1.0 / _482), spvFMul(_461, spvFMul(_670, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_678), _432, fma(as_type(_693), _424, spvFMul(_416, as_type(_694)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _483))))); _739 = as_type(spvFMul(as_type(cbuf_56.data[_598]), _729)); _740 = as_type(spvFMul(as_type(cbuf_56.data[_595]), _729)); _741 = as_type(spvFMul(as_type(cbuf_56.data[_592]), _729)); } else { _739 = _694; _740 = _698; _741 = _691; } uint _764 = 35u + buf1_dword_off; uint _768 = 36u + buf1_dword_off; uint _772 = 37u + buf1_dword_off; uint _776 = 38u + buf1_dword_off; uint _780 = 39u + buf1_dword_off; float _783 = exp2(spvFMul(_660, log2(fast::clamp(fma(spvFMul(_611, _623), _430, fma(spvFMul(_608, _623), _421, spvFMul(_415, spvFMul(_591, _623)))), 0.0, 1.0)))); float _784 = exp2(spvFMul(0.0999755859375, log2(_647))); float _814 = fma(-_304, _292, as_type(cbuf_56.data[32u + buf1_dword_off])); float _817 = fma(-_296, _292, as_type(cbuf_56.data[33u + buf1_dword_off])); float _820 = fma(-_290, _292, as_type(cbuf_56.data[34u + buf1_dword_off])); float _824 = rsqrt(fma(_814, _814, fma(_817, _817, spvFMul(_820, _820)))); float _825 = spvFMul(_814, _824); float _827 = spvFMul(_817, _824); float _829 = spvFMul(_820, _824); float _833 = fma(_430, _825, fma(_421, _827, spvFMul(_415, _829))); float _836 = fast::clamp(fast::max(_833, _833), 0.0, 1.0); float _840 = fma(_814, _814, fma(_817, _817, spvFMul(_820, _820))); float _844 = fast::max(0.0, spvFSub(1.0 / _840, as_type(cbuf_56.data[_764]))); float _848 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_764]), _840), 0.0, 1.0)); float _850 = fma(-_346, _370, _825); float _852 = fma(-_324, _370, _827); float _854 = fma(-_305, _370, _829); float _858 = rsqrt(fma(_850, _850, fma(_852, _852, spvFMul(_854, _854)))); float _868 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_780]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_780])))); float _877 = fma(0.125, _868, 0.25); uint _881; if (_481) { _881 = as_type(spvFMul(as_type(cbuf_56.data[_768]), _836)); } else { _881 = as_type(_829); } uint _894; uint _895; uint _896; uint _897; if (_481) { float _885 = spvFMul(as_type(cbuf_56.data[_776]), _836); _894 = as_type(spvFMul(_844, spvFMul(as_type(cbuf_56.data[_772]), _836))); _895 = as_type(_885); _896 = as_type(spvFMul(_844, _885)); _897 = as_type(spvFMul(_844, as_type(_881))); } else { _894 = as_type(_836); _895 = as_type(_827); _896 = as_type(_825); _897 = as_type(_833); } uint _902; if (!_481) { _902 = as_type(fma(_182, 10.0, as_type(_897))); } else { _902 = _897; } uint _943; uint _944; uint _945; if (!_481) { float _933 = fma(_844, spvFMul(fast::max(0.0, as_type(_902)), 1.0 / _482), spvFMul(_461, spvFMul(_844, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_896), _432, fma(as_type(_895), _424, spvFMul(_416, as_type(_881)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _483))))); _943 = as_type(spvFMul(as_type(cbuf_56.data[_776]), _933)); _944 = as_type(spvFMul(as_type(cbuf_56.data[_772]), _933)); _945 = as_type(spvFMul(as_type(cbuf_56.data[_768]), _933)); } else { _943 = _896; _944 = _894; _945 = _902; } uint _959 = 51u + buf1_dword_off; float _962 = exp2(spvFMul(_868, log2(fast::clamp(fma(spvFMul(_850, _858), _430, fma(spvFMul(_852, _858), _421, spvFMul(_415, spvFMul(_854, _858)))), 0.0, 1.0)))); float _963 = exp2(spvFMul(0.0999755859375, log2(_836))); float _970 = fma(-_290, _292, as_type(cbuf_56.data[50u + buf1_dword_off])); float _973 = fma(-_296, _292, as_type(cbuf_56.data[49u + buf1_dword_off])); float _977 = fma(-_304, _292, as_type(cbuf_56.data[48u + buf1_dword_off])); float _980 = rsqrt(fma(_977, _977, fma(_973, _973, spvFMul(_970, _970)))); float _981 = spvFMul(_970, _980); float _982 = spvFMul(_973, _980); float _984 = fma(-_305, _370, _981); uint _985 = 52u + buf1_dword_off; uint _989 = 53u + buf1_dword_off; uint _993 = 54u + buf1_dword_off; uint _997 = 55u + buf1_dword_off; float _1000 = spvFMul(_977, _980); float _1003 = fma(-_324, _370, _982); float _1018 = fma(-_346, _370, _1000); float _1021 = rsqrt(fma(_1018, _1018, fma(_1003, _1003, spvFMul(_984, _984)))); float _1037 = fma(_430, _1000, fma(_421, _982, spvFMul(_415, _981))); float _1038 = fma(_977, _977, fma(_973, _973, spvFMul(_970, _970))); float _1048 = fast::clamp(fast::max(_1037, _1037), 0.0, 1.0); float _1055 = spvFMul(_848, spvFMul(_963, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _962))); float _1063 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_997]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_997])))); float _1071 = fast::max(0.0, spvFSub(1.0 / _1038, as_type(cbuf_56.data[_959]))); float _1072 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_959]), _1038), 0.0, 1.0)); float _1075 = fma(0.125, _1063, 0.25); uint _1079; if (_481) { _1079 = as_type(spvFMul(as_type(cbuf_56.data[_985]), _1048)); } else { _1079 = _943; } uint _1092; uint _1093; uint _1094; uint _1095; if (_481) { float _1081 = spvFMul(as_type(cbuf_56.data[_989]), _1048); _1092 = as_type(spvFMul(_1071, as_type(_1079))); _1093 = as_type(spvFMul(_1071, spvFMul(as_type(cbuf_56.data[_993]), _1048))); _1094 = as_type(_1081); _1095 = as_type(spvFMul(_1071, _1081)); } else { _1092 = as_type(_1055); _1093 = as_type(_1048); _1094 = as_type(_1000); _1095 = _1079; } uint _1099; if (!_481) { _1099 = as_type(fma(_182, 10.0, _1037)); } else { _1099 = _1095; } uint _1138; uint _1139; uint _1140; if (!_481) { float _1128 = fma(_1071, spvFMul(fast::max(0.0, as_type(_1099)), 1.0 / _482), spvFMul(_461, spvFMul(_1071, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1094), _432, fma(_982, _424, spvFMul(_416, _981))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _483))))); _1138 = as_type(spvFMul(as_type(cbuf_56.data[_993]), _1128)); _1139 = as_type(spvFMul(as_type(cbuf_56.data[_989]), _1128)); _1140 = as_type(spvFMul(as_type(cbuf_56.data[_985]), _1128)); } else { _1138 = _1093; _1139 = _1099; _1140 = _1092; } uint _1154 = 67u + buf1_dword_off; float _1157 = exp2(spvFMul(_1063, log2(fast::clamp(fma(spvFMul(_1018, _1021), _430, fma(spvFMul(_1003, _1021), _421, spvFMul(_415, spvFMul(_984, _1021)))), 0.0, 1.0)))); float _1158 = exp2(spvFMul(0.0999755859375, log2(_1048))); float _1165 = fma(-_290, _292, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1168 = fma(-_296, _292, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1172 = fma(-_304, _292, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1175 = rsqrt(fma(_1172, _1172, fma(_1168, _1168, spvFMul(_1165, _1165)))); float _1176 = spvFMul(_1165, _1175); float _1177 = spvFMul(_1168, _1175); float _1179 = fma(-_305, _370, _1176); uint _1181 = 68u + buf1_dword_off; uint _1185 = 69u + buf1_dword_off; uint _1189 = 70u + buf1_dword_off; uint _1193 = 71u + buf1_dword_off; float _1196 = spvFMul(_1172, _1175); float _1199 = fma(-_324, _370, _1177); float _1214 = fma(-_346, _370, _1196); float _1217 = rsqrt(fma(_1214, _1214, fma(_1199, _1199, spvFMul(_1179, _1179)))); float _1233 = fma(_430, _1196, fma(_421, _1177, spvFMul(_415, _1176))); float _1234 = fma(_1172, _1172, fma(_1168, _1168, spvFMul(_1165, _1165))); float _1244 = fast::clamp(fast::max(_1233, _1233), 0.0, 1.0); float _1251 = spvFMul(_1072, spvFMul(_1158, spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1157))); float _1259 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1193]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_1193])))); float _1267 = fast::max(0.0, spvFSub(1.0 / _1234, as_type(cbuf_56.data[_1154]))); float _1268 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1154]), _1234), 0.0, 1.0)); float _1271 = fma(0.125, _1259, 0.25); uint _1275; if (_481) { _1275 = as_type(spvFMul(as_type(cbuf_56.data[_1181]), _1244)); } else { _1275 = _1138; } uint _1288; uint _1289; uint _1290; uint _1291; if (_481) { float _1279 = spvFMul(as_type(cbuf_56.data[_1189]), _1244); _1288 = as_type(spvFMul(_1267, as_type(_1275))); _1289 = as_type(spvFMul(_1267, _1279)); _1290 = as_type(spvFMul(_1267, spvFMul(as_type(cbuf_56.data[_1185]), _1244))); _1291 = as_type(_1279); } else { _1288 = as_type(_1251); _1289 = _1275; _1290 = as_type(_1196); _1291 = as_type(_1244); } uint _1295; if (!_481) { _1295 = as_type(fma(_182, 10.0, _1233)); } else { _1295 = _1291; } uint _1334; uint _1335; uint _1336; if (!_481) { float _1324 = fma(_1267, spvFMul(fast::max(0.0, as_type(_1295)), 1.0 / _482), spvFMul(_461, spvFMul(_1267, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1290), _432, fma(_1177, _424, spvFMul(_416, _1176))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _483))))); _1334 = as_type(spvFMul(as_type(cbuf_56.data[_1189]), _1324)); _1335 = as_type(spvFMul(as_type(cbuf_56.data[_1185]), _1324)); _1336 = as_type(spvFMul(as_type(cbuf_56.data[_1181]), _1324)); } else { _1334 = _1289; _1335 = _1290; _1336 = _1288; } uint _1350 = 83u + buf1_dword_off; float _1353 = exp2(spvFMul(_1259, log2(fast::clamp(fma(spvFMul(_1214, _1217), _430, fma(spvFMul(_1199, _1217), _421, spvFMul(_415, spvFMul(_1179, _1217)))), 0.0, 1.0)))); float _1354 = exp2(spvFMul(0.0999755859375, log2(_1244))); float _1361 = fma(-_290, _292, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1364 = fma(-_296, _292, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1368 = fma(-_304, _292, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1371 = rsqrt(fma(_1368, _1368, fma(_1364, _1364, spvFMul(_1361, _1361)))); float _1372 = spvFMul(_1361, _1371); float _1373 = spvFMul(_1364, _1371); float _1375 = fma(-_305, _370, _1372); uint _1377 = 84u + buf1_dword_off; uint _1381 = 85u + buf1_dword_off; uint _1385 = 86u + buf1_dword_off; uint _1389 = 87u + buf1_dword_off; float _1392 = spvFMul(_1368, _1371); float _1395 = fma(-_324, _370, _1373); float _1410 = fma(-_346, _370, _1392); float _1413 = rsqrt(fma(_1410, _1410, fma(_1395, _1395, spvFMul(_1375, _1375)))); float _1429 = fma(_430, _1392, fma(_421, _1373, spvFMul(_415, _1372))); float _1430 = fma(_1368, _1368, fma(_1364, _1364, spvFMul(_1361, _1361))); float _1440 = fast::clamp(fast::max(_1429, _1429), 0.0, 1.0); float _1447 = spvFMul(_1268, spvFMul(_1354, spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1353))); float _1455 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1389]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_1389])))); float _1463 = fast::max(0.0, spvFSub(1.0 / _1430, as_type(cbuf_56.data[_1350]))); float _1464 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1350]), _1430), 0.0, 1.0)); float _1467 = fma(0.125, _1455, 0.25); uint _1471; if (_481) { _1471 = as_type(spvFMul(as_type(cbuf_56.data[_1377]), _1440)); } else { _1471 = _1334; } uint _1484; uint _1485; uint _1486; uint _1487; if (_481) { float _1475 = spvFMul(as_type(cbuf_56.data[_1385]), _1440); _1484 = as_type(spvFMul(_1463, as_type(_1471))); _1485 = as_type(spvFMul(_1463, _1475)); _1486 = as_type(spvFMul(_1463, spvFMul(as_type(cbuf_56.data[_1381]), _1440))); _1487 = as_type(_1475); } else { _1484 = as_type(_1447); _1485 = _1471; _1486 = as_type(_1392); _1487 = as_type(_1440); } uint _1491; if (!_481) { _1491 = as_type(fma(_182, 10.0, _1429)); } else { _1491 = _1487; } uint _1530; uint _1531; uint _1532; if (!_481) { float _1520 = fma(_1463, spvFMul(fast::max(0.0, as_type(_1491)), 1.0 / _482), spvFMul(_461, spvFMul(_1463, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1486), _432, fma(_1373, _424, spvFMul(_416, _1372))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _483))))); _1530 = as_type(spvFMul(as_type(cbuf_56.data[_1385]), _1520)); _1531 = as_type(spvFMul(as_type(cbuf_56.data[_1381]), _1520)); _1532 = as_type(spvFMul(as_type(cbuf_56.data[_1377]), _1520)); } else { _1530 = _1485; _1531 = _1486; _1532 = _1484; } uint _1546 = 99u + buf1_dword_off; float _1549 = exp2(spvFMul(_1455, log2(fast::clamp(fma(spvFMul(_1410, _1413), _430, fma(spvFMul(_1395, _1413), _421, spvFMul(_415, spvFMul(_1375, _1413)))), 0.0, 1.0)))); float _1550 = exp2(spvFMul(0.0999755859375, log2(_1440))); float _1557 = fma(-_290, _292, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1560 = fma(-_296, _292, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1564 = fma(-_304, _292, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1567 = rsqrt(fma(_1564, _1564, fma(_1560, _1560, spvFMul(_1557, _1557)))); float _1568 = spvFMul(_1557, _1567); float _1569 = spvFMul(_1560, _1567); float _1571 = fma(-_305, _370, _1568); uint _1573 = 100u + buf1_dword_off; uint _1577 = 101u + buf1_dword_off; uint _1581 = 102u + buf1_dword_off; uint _1585 = 103u + buf1_dword_off; float _1588 = spvFMul(_1564, _1567); float _1591 = fma(-_324, _370, _1569); float _1606 = fma(-_346, _370, _1588); float _1609 = rsqrt(fma(_1606, _1606, fma(_1591, _1591, spvFMul(_1571, _1571)))); float _1625 = fma(_430, _1588, fma(_421, _1569, spvFMul(_415, _1568))); float _1626 = fma(_1564, _1564, fma(_1560, _1560, spvFMul(_1557, _1557))); float _1636 = fast::clamp(fast::max(_1625, _1625), 0.0, 1.0); float _1643 = spvFMul(_1464, spvFMul(_1550, spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1549))); float _1651 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1585]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_1585])))); float _1659 = fast::max(0.0, spvFSub(1.0 / _1626, as_type(cbuf_56.data[_1546]))); float _1660 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1546]), _1626), 0.0, 1.0)); float _1663 = fma(0.125, _1651, 0.25); uint _1667; if (_481) { _1667 = as_type(spvFMul(as_type(cbuf_56.data[_1573]), _1636)); } else { _1667 = _1530; } uint _1680; uint _1681; uint _1682; uint _1683; if (_481) { float _1671 = spvFMul(as_type(cbuf_56.data[_1581]), _1636); _1680 = as_type(spvFMul(_1659, as_type(_1667))); _1681 = as_type(spvFMul(_1659, _1671)); _1682 = as_type(spvFMul(_1659, spvFMul(as_type(cbuf_56.data[_1577]), _1636))); _1683 = as_type(_1671); } else { _1680 = as_type(_1643); _1681 = _1667; _1682 = as_type(_1588); _1683 = as_type(_1636); } uint _1687; if (!_481) { _1687 = as_type(fma(_182, 10.0, _1625)); } else { _1687 = _1683; } uint _1726; uint _1727; uint _1728; if (!_481) { float _1716 = fma(_1659, spvFMul(fast::max(0.0, as_type(_1687)), 1.0 / _482), spvFMul(_461, spvFMul(_1659, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1682), _432, fma(_1569, _424, spvFMul(_416, _1568))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _483))))); _1726 = as_type(spvFMul(as_type(cbuf_56.data[_1581]), _1716)); _1727 = as_type(spvFMul(as_type(cbuf_56.data[_1577]), _1716)); _1728 = as_type(spvFMul(as_type(cbuf_56.data[_1573]), _1716)); } else { _1726 = _1681; _1727 = _1682; _1728 = _1680; } uint _1742 = 115u + buf1_dword_off; float _1745 = exp2(spvFMul(_1651, log2(fast::clamp(fma(spvFMul(_1606, _1609), _430, fma(spvFMul(_1591, _1609), _421, spvFMul(_415, spvFMul(_1571, _1609)))), 0.0, 1.0)))); float _1746 = exp2(spvFMul(0.0999755859375, log2(_1636))); float _1753 = fma(-_290, _292, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1756 = fma(-_296, _292, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1760 = fma(-_304, _292, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1763 = rsqrt(fma(_1760, _1760, fma(_1756, _1756, spvFMul(_1753, _1753)))); float _1764 = spvFMul(_1753, _1763); float _1765 = spvFMul(_1756, _1763); float _1767 = fma(-_305, _370, _1764); uint _1769 = 116u + buf1_dword_off; uint _1773 = 117u + buf1_dword_off; uint _1777 = 118u + buf1_dword_off; uint _1781 = 119u + buf1_dword_off; float _1784 = spvFMul(_1760, _1763); float _1787 = fma(-_324, _370, _1765); float _1802 = fma(-_346, _370, _1784); float _1805 = rsqrt(fma(_1802, _1802, fma(_1787, _1787, spvFMul(_1767, _1767)))); float _1821 = fma(_430, _1784, fma(_421, _1765, spvFMul(_415, _1764))); float _1822 = fma(_1760, _1760, fma(_1756, _1756, spvFMul(_1753, _1753))); float _1832 = fast::clamp(fast::max(_1821, _1821), 0.0, 1.0); float _1839 = spvFMul(_1660, spvFMul(_1746, spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1745))); float _1847 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1781]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_1781])))); float _1852 = fma(spvFMul(_1660, spvFMul(_1746, spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1745))), _1663, fma(spvFMul(_1464, spvFMul(_1550, spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1549))), _1467, fma(spvFMul(_1268, spvFMul(_1354, spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1353))), _1271, fma(spvFMul(_1072, spvFMul(_1158, spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1157))), _1075, fma(spvFMul(_848, spvFMul(_963, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _962))), _877, fma(spvFMul(_487, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _569), _572)), _666, spvFMul(_674, spvFMul(_671, spvFMul(_784, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _783)))))))))); float _1854 = fma(spvFMul(_1660, spvFMul(_1746, spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1745))), _1663, fma(spvFMul(_1464, spvFMul(_1550, spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1549))), _1467, fma(spvFMul(_1268, spvFMul(_1354, spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1353))), _1271, fma(spvFMul(_1072, spvFMul(_1158, spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1157))), _1075, fma(spvFMul(_848, spvFMul(_963, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _962))), _877, fma(spvFMul(_487, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _569), _572)), _666, spvFMul(_674, spvFMul(_671, spvFMul(_784, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _783)))))))))); float _1855 = fast::max(0.0, spvFSub(1.0 / _1822, as_type(cbuf_56.data[_1742]))); float _1856 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1742]), _1822), 0.0, 1.0)); float _1859 = fma(0.125, _1847, 0.25); uint _1863; if (_481) { _1863 = as_type(spvFMul(as_type(cbuf_56.data[_1769]), _1832)); } else { _1863 = _1726; } uint _1876; uint _1877; uint _1878; uint _1879; if (_481) { float _1867 = spvFMul(as_type(cbuf_56.data[_1777]), _1832); _1876 = as_type(spvFMul(_1855, as_type(_1863))); _1877 = as_type(spvFMul(_1855, _1867)); _1878 = as_type(spvFMul(_1855, spvFMul(as_type(cbuf_56.data[_1773]), _1832))); _1879 = as_type(_1867); } else { _1876 = as_type(_1839); _1877 = _1863; _1878 = as_type(_1784); _1879 = as_type(_1832); } uint _1883; if (!_481) { _1883 = as_type(fma(_182, 10.0, _1821)); } else { _1883 = _1879; } uint _1922; uint _1923; uint _1924; if (!_481) { float _1912 = fma(_1855, spvFMul(fast::max(0.0, as_type(_1883)), 1.0 / _482), spvFMul(_461, spvFMul(_1855, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1878), _432, fma(_1765, _424, spvFMul(_416, _1764))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), _483))))); _1922 = as_type(spvFMul(as_type(cbuf_56.data[_1777]), _1912)); _1923 = as_type(spvFMul(as_type(cbuf_56.data[_1773]), _1912)); _1924 = as_type(spvFMul(as_type(cbuf_56.data[_1769]), _1912)); } else { _1922 = _1877; _1923 = _1878; _1924 = _1876; } uint _1938 = 131u + buf1_dword_off; float _1941 = exp2(spvFMul(_1847, log2(fast::clamp(fma(spvFMul(_1802, _1805), _430, fma(spvFMul(_1787, _1805), _421, spvFMul(_415, spvFMul(_1767, _1805)))), 0.0, 1.0)))); float _1942 = exp2(spvFMul(0.0999755859375, log2(_1832))); float _1949 = fma(-_290, _292, as_type(cbuf_56.data[130u + buf1_dword_off])); float _1952 = fma(-_296, _292, as_type(cbuf_56.data[129u + buf1_dword_off])); float _1956 = fma(-_304, _292, as_type(cbuf_56.data[128u + buf1_dword_off])); float _1959 = rsqrt(fma(_1956, _1956, fma(_1952, _1952, spvFMul(_1949, _1949)))); float _1960 = spvFMul(_1949, _1959); float _1961 = spvFMul(_1952, _1959); float _1963 = fma(-_305, _370, _1960); uint _1965 = 132u + buf1_dword_off; uint _1969 = 133u + buf1_dword_off; uint _1973 = 134u + buf1_dword_off; uint _1977 = 135u + buf1_dword_off; float _1980 = spvFMul(_1956, _1959); float _1982 = fma(-_324, _370, _1961); float _1997 = fma(-_346, _370, _1980); float _2000 = rsqrt(fma(_1997, _1997, fma(_1982, _1982, spvFMul(_1963, _1963)))); float _2016 = fma(_430, _1980, fma(_421, _1961, spvFMul(_415, _1960))); float _2017 = fma(_1956, _1956, fma(_1952, _1952, spvFMul(_1949, _1949))); float _2027 = fast::clamp(fast::max(_2016, _2016), 0.0, 1.0); float _2040 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1977]), _431), 1.0 / fma(_431, 0.01000213623046875, as_type(cbuf_56.data[_1977])))); float _2049 = fast::max(0.0, spvFSub(1.0 / _2017, as_type(cbuf_56.data[_1938]))); float _2050 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1938]), _2017), 0.0, 1.0)); float _2053 = fma(0.125, _2040, 0.25); uint _2057; if (_481) { _2057 = as_type(spvFMul(as_type(cbuf_56.data[_1965]), _2027)); } else { _2057 = as_type(_2040); } uint _2070; uint _2071; uint _2072; uint _2073; if (_481) { float _2061 = spvFMul(as_type(cbuf_56.data[_1973]), _2027); _2070 = as_type(_2061); _2071 = as_type(spvFMul(_2049, _2061)); _2072 = as_type(spvFMul(_2049, spvFMul(as_type(cbuf_56.data[_1969]), _2027))); _2073 = as_type(spvFMul(_2049, as_type(_2057))); } else { _2070 = as_type(_424); _2071 = as_type(_432); _2072 = _2057; _2073 = as_type(_182); } uint _2078; if (!_481) { _2078 = as_type(fma(as_type(_2073), 10.0, _2016)); } else { _2078 = _2072; } uint _2118; uint _2119; uint _2120; if (!_481) { float _2108 = fma(_2049, spvFMul(fast::max(0.0, as_type(_2078)), 1.0 / _482), spvFMul(_461, spvFMul(_2049, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[141u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_1980, as_type(_2071), fma(_1961, as_type(_2070), spvFMul(_416, _1960))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[140u + buf1_dword_off]), _483))))); _2118 = as_type(spvFMul(as_type(cbuf_56.data[_1973]), _2108)); _2119 = as_type(spvFMul(as_type(cbuf_56.data[_1969]), _2108)); _2120 = as_type(spvFMul(as_type(cbuf_56.data[_1965]), _2108)); } else { _2118 = _2071; _2119 = _2078; _2120 = _2073; } float _2133 = exp2(spvFMul(_2040, log2(fast::clamp(fma(spvFMul(_1997, _2000), _430, fma(spvFMul(_1982, _2000), _421, spvFMul(_415, spvFMul(_1963, _2000)))), 0.0, 1.0)))); float _2134 = exp2(spvFMul(0.0999755859375, log2(_2027))); float _2136 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_551), as_type(_741)), as_type(_945)), as_type(_1140)), as_type(_1336)), as_type(_1532)), as_type(_1728)), as_type(_1924)), as_type(_2120)); float _2138 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_553), as_type(_740)), as_type(_944)), as_type(_1139)), as_type(_1335)), as_type(_1531)), as_type(_1727)), as_type(_1923)), as_type(_2119)); float _2149 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_552), as_type(_739)), as_type(_943)), as_type(_1138)), as_type(_1334)), as_type(_1530)), as_type(_1726)), as_type(_1922)), as_type(_2118)); float _2172 = spvFMul(_479, spvFMul(_477, fma(spvFMul(_2050, spvFMul(_2134, spvFMul(as_type(cbuf_56.data[137u + buf1_dword_off]), _2133))), _2053, fma(spvFMul(_1856, spvFMul(_1942, spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1941))), _1859, fma(_1839, _1663, fma(_1643, _1467, fma(_1447, _1271, fma(_1251, _1075, fma(_1055, _877, fma(spvFMul(_487, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _569), _572)), _666, spvFMul(_674, spvFMul(_671, spvFMul(_784, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _783)))))))))))))); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_478, spvFMul(_477, fma(spvFMul(_2050, spvFMul(_2134, spvFMul(as_type(cbuf_56.data[136u + buf1_dword_off]), _2133))), _2053, fma(spvFMul(_1856, spvFMul(_1942, spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1941))), _1859, _1852)))); out.frag_color1.y = _2172; out.frag_color1.z = spvFMul(_480, spvFMul(_477, fma(spvFMul(_2050, spvFMul(_2134, spvFMul(as_type(cbuf_56.data[138u + buf1_dword_off]), _2133))), _2053, fma(spvFMul(_1856, spvFMul(_1942, spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1941))), _1859, _1854)))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_477, spvFSub(_2136, spvFMul(spvFMul(_478, _2136), 0.5))); out.frag_color0.y = spvFMul(_477, spvFSub(_2138, spvFMul(spvFMul(_479, _2138), 0.5))); out.frag_color0.z = spvFMul(_477, spvFSub(_2149, spvFMul(spvFMul(_480, _2149), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0x201cb43d [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[52]; }; struct fs_cbuf_block_f32_1 { uint data[360]; }; constant uint _154 = {}; struct main0_out { float4 frag_color0 [[color(0)]]; float4 frag_color1 [[color(1)]]; }; struct main0_in { float4 fs_in_attr0 [[user(locn0)]]; float4 fs_in_attr1 [[user(locn1)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_52 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_56 [[buffer(10)]], texture2d fs_img16 [[texture(0)]], texture2d fs_img4 [[texture(1)]], texture2d fs_img24 [[texture(2)]], texture2d fs_img32 [[texture(3)]], texture2d fs_img40 [[texture(4)]], sampler fs_samp12 [[sampler(0)]], sampler fs_samp48 [[sampler(1)]]) { main0_out out = {}; uint buf0_dword_off = extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; float4 _174 = fs_img16.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _175 = _174.x; float4 _180 = fs_img4.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float4 _188 = fs_img24.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _190 = _188.y; float4 _196 = fs_img32.sample(fs_samp12, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _197 = _196.x; float _198 = _196.y; float _199 = _196.z; uint _269 = 3u + buf1_dword_off; float _298 = fma(as_type(cbuf_52.data[8u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[9u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[10u + buf0_dword_off]), _175, as_type(cbuf_52.data[11u + buf0_dword_off])))); float _300 = 1.0 / fma(as_type(cbuf_52.data[12u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[13u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[14u + buf0_dword_off]), _175, as_type(cbuf_52.data[15u + buf0_dword_off])))); float _304 = fma(as_type(cbuf_52.data[4u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[5u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[6u + buf0_dword_off]), _175, as_type(cbuf_52.data[7u + buf0_dword_off])))); float _307 = fma(-_298, _300, as_type(cbuf_56.data[2u + buf1_dword_off])); float _310 = fma(2.0, _180.z, -1.0); float _312 = fma(as_type(cbuf_52.data[0u + buf0_dword_off]), in.fs_in_attr0.x, fma(as_type(cbuf_52.data[1u + buf0_dword_off]), in.fs_in_attr0.y, fma(as_type(cbuf_52.data[2u + buf0_dword_off]), _175, as_type(cbuf_52.data[3u + buf0_dword_off])))); float _313 = spvFMul(_298, _300); float _316 = fma(-_304, _300, as_type(cbuf_56.data[1u + buf1_dword_off])); float _330 = fma(2.0, _180.y, -1.0); float _332 = spvFMul(_304, _300); float _338 = fma(-_312, _300, as_type(cbuf_56.data[0u + buf1_dword_off])); float _352 = fma(2.0, _180.x, -1.0); float _354 = spvFMul(_312, _300); float _375 = rsqrt(fma(_338, _338, fma(_316, _316, spvFMul(_307, _307)))); float _376 = rsqrt(fma(_352, _352, fma(_330, _330, spvFMul(_310, _310)))); float _378 = rsqrt(fma(-_354, -_354, fma(-_332, -_332, spvFMul(-_313, -_313)))); float _379 = spvFMul(_307, _375); float _381 = spvFMul(_310, _376); float _383 = spvFMul(_316, _375); float _386 = fma(-_313, _378, _379); uint _387 = 4u + buf1_dword_off; uint _390 = 5u + buf1_dword_off; uint _393 = 6u + buf1_dword_off; uint _396 = 7u + buf1_dword_off; float _399 = spvFMul(_330, _376); float _403 = spvFMul(_338, _375); float _406 = fma(-_332, _378, _383); float _408 = spvFMul(_352, _376); float _413 = rsqrt(fma(_354, _354, fma(_332, _332, spvFMul(_313, _313)))); float _415 = fma(-_354, _378, _403); float _423 = fma(as_type(cbuf_52.data[24u + buf0_dword_off]), _408, fma(as_type(cbuf_52.data[25u + buf0_dword_off]), _399, spvFMul(as_type(cbuf_52.data[26u + buf0_dword_off]), _381))); float _424 = spvFMul(_313, _413); float _429 = fma(as_type(cbuf_52.data[20u + buf0_dword_off]), _408, fma(as_type(cbuf_52.data[21u + buf0_dword_off]), _399, spvFMul(as_type(cbuf_52.data[22u + buf0_dword_off]), _381))); float _432 = spvFMul(_332, _413); float _436 = rsqrt(fma(_415, _415, fma(_406, _406, spvFMul(_386, _386)))); float _438 = fma(as_type(cbuf_52.data[16u + buf0_dword_off]), _408, fma(as_type(cbuf_52.data[17u + buf0_dword_off]), _399, spvFMul(as_type(cbuf_52.data[18u + buf0_dword_off]), _381))); float _439 = exp2(spvFMul(13.0, _188.x)); float _440 = spvFMul(_354, _413); float _456 = fma(_338, _338, fma(_316, _316, spvFMul(_307, _307))); float _469 = spvFMul(10.0, _190); float _471 = spvFMul(0.5, fast::max(0.0, spvFAdd(1.0, fma(-_440, _438, fma(-_432, _429, spvFMul(_423, -_424)))))); float _472 = fma(_438, _403, fma(_429, _383, spvFMul(_423, _379))); float _478 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_396]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_396])))); float4 _484 = fs_img40.sample(fs_samp48, float2(in.fs_in_attr1.x, in.fs_in_attr1.y)); float _485 = _484.x; float _486 = spvFMul(_197, _197); float _487 = spvFMul(_198, _198); float _488 = spvFMul(_199, _199); bool _489 = _469 == 0.0; float _490 = fma(2.0, _469, 1.0); float _491 = spvFMul(_471, _471); float _493 = fast::clamp(fast::max(_472, _472), 0.0, 1.0); float _494 = fast::max(0.0, spvFSub(1.0 / _456, as_type(cbuf_56.data[_269]))); float _495 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_269]), _456), 0.0, 1.0)); uint _500; if (_489) { _500 = as_type(spvFMul(as_type(cbuf_56.data[_387]), _493)); } else { _500 = as_type(_403); } uint _512; uint _513; uint _514; if (_489) { _512 = as_type(spvFMul(_494, as_type(_500))); _513 = as_type(spvFMul(_494, spvFMul(as_type(cbuf_56.data[_393]), _493))); _514 = as_type(spvFMul(_494, spvFMul(as_type(cbuf_56.data[_390]), _493))); } else { _512 = _154; _513 = as_type(_383); _514 = as_type(_379); } uint _518; if (!_489) { _518 = as_type(fma(_190, 10.0, _472)); } else { _518 = as_type(_415); } uint _559; uint _560; uint _561; uint _562; if (!_489) { float _548 = fma(_494, spvFMul(fast::max(0.0, as_type(_518)), 1.0 / _490), spvFMul(_469, spvFMul(_494, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[13u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_500), _440, fma(as_type(_513), _432, spvFMul(_424, as_type(_514)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[12u + buf1_dword_off]), _491))))); _559 = as_type(spvFMul(as_type(cbuf_56.data[_387]), _548)); _560 = as_type(spvFMul(as_type(cbuf_56.data[_393]), _548)); _561 = as_type(spvFMul(as_type(cbuf_56.data[_390]), _548)); _562 = as_type(_548); } else { _559 = _512; _560 = _513; _561 = _514; _562 = _500; } uint _573 = 19u + buf1_dword_off; float _577 = exp2(spvFMul(_478, log2(fast::clamp(fma(spvFMul(_415, _436), _438, fma(spvFMul(_406, _436), _429, spvFMul(_423, spvFMul(_386, _436)))), 0.0, 1.0)))); float _580 = exp2(spvFMul(0.0999755859375, log2(_493))); float _583 = fma(-_298, _300, as_type(cbuf_56.data[18u + buf1_dword_off])); float _586 = fma(-_304, _300, as_type(cbuf_56.data[17u + buf1_dword_off])); float _590 = fma(-_312, _300, as_type(cbuf_56.data[16u + buf1_dword_off])); float _593 = rsqrt(fma(_590, _590, fma(_586, _586, spvFMul(_583, _583)))); float _594 = spvFMul(_583, _593); float _596 = spvFMul(_586, _593); float _599 = fma(-_313, _378, _594); uint _600 = 20u + buf1_dword_off; uint _603 = 21u + buf1_dword_off; uint _606 = 22u + buf1_dword_off; uint _610 = 23u + buf1_dword_off; float _613 = spvFMul(_590, _593); float _616 = fma(-_332, _378, _596); float _619 = fma(-_354, _378, _613); float _631 = rsqrt(fma(_619, _619, fma(_616, _616, spvFMul(_599, _599)))); float _641 = fma(_438, _613, fma(_429, _596, spvFMul(_423, _594))); float _642 = fma(_590, _590, fma(_586, _586, spvFMul(_583, _583))); float _655 = fast::clamp(fast::max(_641, _641), 0.0, 1.0); float _668 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_610]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_610])))); float _674 = fma(_478, 0.125, 0.25); float _678 = fast::max(0.0, spvFSub(1.0 / _642, as_type(cbuf_56.data[_573]))); float _679 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_573]), _642), 0.0, 1.0)); float _682 = fma(0.125, _668, 0.25); uint _686; if (_489) { _686 = as_type(spvFMul(as_type(cbuf_56.data[_600]), _655)); } else { _686 = as_type(_613); } uint _699; uint _700; uint _701; uint _702; if (_489) { float _690 = spvFMul(as_type(cbuf_56.data[_606]), _655); _699 = as_type(spvFMul(_678, as_type(_686))); _700 = as_type(spvFMul(_678, spvFMul(as_type(cbuf_56.data[_603]), _655))); _701 = as_type(_690); _702 = as_type(spvFMul(_678, _690)); } else { _699 = _562; _700 = as_type(_668); _701 = as_type(_596); _702 = as_type(_594); } uint _706; if (!_489) { _706 = as_type(fma(_190, 10.0, _641)); } else { _706 = _700; } uint _747; uint _748; uint _749; if (!_489) { float _737 = fma(_678, spvFMul(fast::max(0.0, as_type(_706)), 1.0 / _490), spvFMul(_469, spvFMul(_678, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[29u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_686), _440, fma(as_type(_701), _432, spvFMul(_424, as_type(_702)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[28u + buf1_dword_off]), _491))))); _747 = as_type(spvFMul(as_type(cbuf_56.data[_606]), _737)); _748 = as_type(spvFMul(as_type(cbuf_56.data[_603]), _737)); _749 = as_type(spvFMul(as_type(cbuf_56.data[_600]), _737)); } else { _747 = _702; _748 = _706; _749 = _699; } uint _772 = 35u + buf1_dword_off; uint _776 = 36u + buf1_dword_off; uint _780 = 37u + buf1_dword_off; uint _784 = 38u + buf1_dword_off; uint _788 = 39u + buf1_dword_off; float _791 = exp2(spvFMul(_668, log2(fast::clamp(fma(spvFMul(_619, _631), _438, fma(spvFMul(_616, _631), _429, spvFMul(_423, spvFMul(_599, _631)))), 0.0, 1.0)))); float _792 = exp2(spvFMul(0.0999755859375, log2(_655))); float _822 = fma(-_312, _300, as_type(cbuf_56.data[32u + buf1_dword_off])); float _825 = fma(-_304, _300, as_type(cbuf_56.data[33u + buf1_dword_off])); float _828 = fma(-_298, _300, as_type(cbuf_56.data[34u + buf1_dword_off])); float _832 = rsqrt(fma(_822, _822, fma(_825, _825, spvFMul(_828, _828)))); float _833 = spvFMul(_822, _832); float _835 = spvFMul(_825, _832); float _837 = spvFMul(_828, _832); float _841 = fma(_438, _833, fma(_429, _835, spvFMul(_423, _837))); float _844 = fast::clamp(fast::max(_841, _841), 0.0, 1.0); float _848 = fma(_822, _822, fma(_825, _825, spvFMul(_828, _828))); float _852 = fast::max(0.0, spvFSub(1.0 / _848, as_type(cbuf_56.data[_772]))); float _856 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_772]), _848), 0.0, 1.0)); float _858 = fma(-_354, _378, _833); float _860 = fma(-_332, _378, _835); float _862 = fma(-_313, _378, _837); float _866 = rsqrt(fma(_858, _858, fma(_860, _860, spvFMul(_862, _862)))); float _876 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_788]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_788])))); float _885 = fma(0.125, _876, 0.25); uint _889; if (_489) { _889 = as_type(spvFMul(as_type(cbuf_56.data[_776]), _844)); } else { _889 = as_type(_837); } uint _902; uint _903; uint _904; uint _905; if (_489) { float _893 = spvFMul(as_type(cbuf_56.data[_784]), _844); _902 = as_type(spvFMul(_852, spvFMul(as_type(cbuf_56.data[_780]), _844))); _903 = as_type(_893); _904 = as_type(spvFMul(_852, _893)); _905 = as_type(spvFMul(_852, as_type(_889))); } else { _902 = as_type(_844); _903 = as_type(_835); _904 = as_type(_833); _905 = as_type(_841); } uint _910; if (!_489) { _910 = as_type(fma(_190, 10.0, as_type(_905))); } else { _910 = _905; } uint _951; uint _952; uint _953; if (!_489) { float _941 = fma(_852, spvFMul(fast::max(0.0, as_type(_910)), 1.0 / _490), spvFMul(_469, spvFMul(_852, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[45u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_904), _440, fma(as_type(_903), _432, spvFMul(_424, as_type(_889)))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[44u + buf1_dword_off]), _491))))); _951 = as_type(spvFMul(as_type(cbuf_56.data[_784]), _941)); _952 = as_type(spvFMul(as_type(cbuf_56.data[_780]), _941)); _953 = as_type(spvFMul(as_type(cbuf_56.data[_776]), _941)); } else { _951 = _904; _952 = _902; _953 = _910; } uint _967 = 51u + buf1_dword_off; float _970 = exp2(spvFMul(_876, log2(fast::clamp(fma(spvFMul(_858, _866), _438, fma(spvFMul(_860, _866), _429, spvFMul(_423, spvFMul(_862, _866)))), 0.0, 1.0)))); float _971 = exp2(spvFMul(0.0999755859375, log2(_844))); float _978 = fma(-_298, _300, as_type(cbuf_56.data[50u + buf1_dword_off])); float _981 = fma(-_304, _300, as_type(cbuf_56.data[49u + buf1_dword_off])); float _985 = fma(-_312, _300, as_type(cbuf_56.data[48u + buf1_dword_off])); float _988 = rsqrt(fma(_985, _985, fma(_981, _981, spvFMul(_978, _978)))); float _989 = spvFMul(_978, _988); float _990 = spvFMul(_981, _988); float _992 = fma(-_313, _378, _989); uint _993 = 52u + buf1_dword_off; uint _997 = 53u + buf1_dword_off; uint _1001 = 54u + buf1_dword_off; uint _1005 = 55u + buf1_dword_off; float _1008 = spvFMul(_985, _988); float _1011 = fma(-_332, _378, _990); float _1026 = fma(-_354, _378, _1008); float _1029 = rsqrt(fma(_1026, _1026, fma(_1011, _1011, spvFMul(_992, _992)))); float _1045 = fma(_438, _1008, fma(_429, _990, spvFMul(_423, _989))); float _1046 = fma(_985, _985, fma(_981, _981, spvFMul(_978, _978))); float _1056 = fast::clamp(fast::max(_1045, _1045), 0.0, 1.0); float _1063 = spvFMul(_856, spvFMul(_971, spvFMul(as_type(cbuf_56.data[41u + buf1_dword_off]), _970))); float _1071 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1005]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_1005])))); float _1079 = fast::max(0.0, spvFSub(1.0 / _1046, as_type(cbuf_56.data[_967]))); float _1080 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_967]), _1046), 0.0, 1.0)); float _1083 = fma(0.125, _1071, 0.25); uint _1087; if (_489) { _1087 = as_type(spvFMul(as_type(cbuf_56.data[_993]), _1056)); } else { _1087 = _951; } uint _1100; uint _1101; uint _1102; uint _1103; if (_489) { float _1089 = spvFMul(as_type(cbuf_56.data[_997]), _1056); _1100 = as_type(spvFMul(_1079, as_type(_1087))); _1101 = as_type(spvFMul(_1079, spvFMul(as_type(cbuf_56.data[_1001]), _1056))); _1102 = as_type(_1089); _1103 = as_type(spvFMul(_1079, _1089)); } else { _1100 = as_type(_1063); _1101 = as_type(_1056); _1102 = as_type(_1008); _1103 = _1087; } uint _1107; if (!_489) { _1107 = as_type(fma(_190, 10.0, _1045)); } else { _1107 = _1103; } uint _1146; uint _1147; uint _1148; if (!_489) { float _1136 = fma(_1079, spvFMul(fast::max(0.0, as_type(_1107)), 1.0 / _490), spvFMul(_469, spvFMul(_1079, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[61u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1102), _440, fma(_990, _432, spvFMul(_424, _989))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[60u + buf1_dword_off]), _491))))); _1146 = as_type(spvFMul(as_type(cbuf_56.data[_1001]), _1136)); _1147 = as_type(spvFMul(as_type(cbuf_56.data[_997]), _1136)); _1148 = as_type(spvFMul(as_type(cbuf_56.data[_993]), _1136)); } else { _1146 = _1101; _1147 = _1107; _1148 = _1100; } uint _1162 = 67u + buf1_dword_off; float _1165 = exp2(spvFMul(_1071, log2(fast::clamp(fma(spvFMul(_1026, _1029), _438, fma(spvFMul(_1011, _1029), _429, spvFMul(_423, spvFMul(_992, _1029)))), 0.0, 1.0)))); float _1166 = exp2(spvFMul(0.0999755859375, log2(_1056))); float _1173 = fma(-_298, _300, as_type(cbuf_56.data[66u + buf1_dword_off])); float _1176 = fma(-_304, _300, as_type(cbuf_56.data[65u + buf1_dword_off])); float _1180 = fma(-_312, _300, as_type(cbuf_56.data[64u + buf1_dword_off])); float _1183 = rsqrt(fma(_1180, _1180, fma(_1176, _1176, spvFMul(_1173, _1173)))); float _1184 = spvFMul(_1173, _1183); float _1185 = spvFMul(_1176, _1183); float _1187 = fma(-_313, _378, _1184); uint _1189 = 68u + buf1_dword_off; uint _1193 = 69u + buf1_dword_off; uint _1197 = 70u + buf1_dword_off; uint _1201 = 71u + buf1_dword_off; float _1204 = spvFMul(_1180, _1183); float _1207 = fma(-_332, _378, _1185); float _1222 = fma(-_354, _378, _1204); float _1225 = rsqrt(fma(_1222, _1222, fma(_1207, _1207, spvFMul(_1187, _1187)))); float _1241 = fma(_438, _1204, fma(_429, _1185, spvFMul(_423, _1184))); float _1242 = fma(_1180, _1180, fma(_1176, _1176, spvFMul(_1173, _1173))); float _1252 = fast::clamp(fast::max(_1241, _1241), 0.0, 1.0); float _1259 = spvFMul(_1080, spvFMul(_1166, spvFMul(as_type(cbuf_56.data[57u + buf1_dword_off]), _1165))); float _1267 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1201]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_1201])))); float _1275 = fast::max(0.0, spvFSub(1.0 / _1242, as_type(cbuf_56.data[_1162]))); float _1276 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1162]), _1242), 0.0, 1.0)); float _1279 = fma(0.125, _1267, 0.25); uint _1283; if (_489) { _1283 = as_type(spvFMul(as_type(cbuf_56.data[_1189]), _1252)); } else { _1283 = _1146; } uint _1296; uint _1297; uint _1298; uint _1299; if (_489) { float _1287 = spvFMul(as_type(cbuf_56.data[_1197]), _1252); _1296 = as_type(spvFMul(_1275, as_type(_1283))); _1297 = as_type(spvFMul(_1275, _1287)); _1298 = as_type(spvFMul(_1275, spvFMul(as_type(cbuf_56.data[_1193]), _1252))); _1299 = as_type(_1287); } else { _1296 = as_type(_1259); _1297 = _1283; _1298 = as_type(_1204); _1299 = as_type(_1252); } uint _1303; if (!_489) { _1303 = as_type(fma(_190, 10.0, _1241)); } else { _1303 = _1299; } uint _1342; uint _1343; uint _1344; if (!_489) { float _1332 = fma(_1275, spvFMul(fast::max(0.0, as_type(_1303)), 1.0 / _490), spvFMul(_469, spvFMul(_1275, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[77u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1298), _440, fma(_1185, _432, spvFMul(_424, _1184))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[76u + buf1_dword_off]), _491))))); _1342 = as_type(spvFMul(as_type(cbuf_56.data[_1197]), _1332)); _1343 = as_type(spvFMul(as_type(cbuf_56.data[_1193]), _1332)); _1344 = as_type(spvFMul(as_type(cbuf_56.data[_1189]), _1332)); } else { _1342 = _1297; _1343 = _1298; _1344 = _1296; } uint _1358 = 83u + buf1_dword_off; float _1361 = exp2(spvFMul(_1267, log2(fast::clamp(fma(spvFMul(_1222, _1225), _438, fma(spvFMul(_1207, _1225), _429, spvFMul(_423, spvFMul(_1187, _1225)))), 0.0, 1.0)))); float _1362 = exp2(spvFMul(0.0999755859375, log2(_1252))); float _1369 = fma(-_298, _300, as_type(cbuf_56.data[82u + buf1_dword_off])); float _1372 = fma(-_304, _300, as_type(cbuf_56.data[81u + buf1_dword_off])); float _1376 = fma(-_312, _300, as_type(cbuf_56.data[80u + buf1_dword_off])); float _1379 = rsqrt(fma(_1376, _1376, fma(_1372, _1372, spvFMul(_1369, _1369)))); float _1380 = spvFMul(_1369, _1379); float _1381 = spvFMul(_1372, _1379); float _1383 = fma(-_313, _378, _1380); uint _1385 = 84u + buf1_dword_off; uint _1389 = 85u + buf1_dword_off; uint _1393 = 86u + buf1_dword_off; uint _1397 = 87u + buf1_dword_off; float _1400 = spvFMul(_1376, _1379); float _1403 = fma(-_332, _378, _1381); float _1418 = fma(-_354, _378, _1400); float _1421 = rsqrt(fma(_1418, _1418, fma(_1403, _1403, spvFMul(_1383, _1383)))); float _1437 = fma(_438, _1400, fma(_429, _1381, spvFMul(_423, _1380))); float _1438 = fma(_1376, _1376, fma(_1372, _1372, spvFMul(_1369, _1369))); float _1448 = fast::clamp(fast::max(_1437, _1437), 0.0, 1.0); float _1455 = spvFMul(_1276, spvFMul(_1362, spvFMul(as_type(cbuf_56.data[73u + buf1_dword_off]), _1361))); float _1463 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1397]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_1397])))); float _1471 = fast::max(0.0, spvFSub(1.0 / _1438, as_type(cbuf_56.data[_1358]))); float _1472 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1358]), _1438), 0.0, 1.0)); float _1475 = fma(0.125, _1463, 0.25); uint _1479; if (_489) { _1479 = as_type(spvFMul(as_type(cbuf_56.data[_1385]), _1448)); } else { _1479 = _1342; } uint _1492; uint _1493; uint _1494; uint _1495; if (_489) { float _1483 = spvFMul(as_type(cbuf_56.data[_1393]), _1448); _1492 = as_type(spvFMul(_1471, as_type(_1479))); _1493 = as_type(spvFMul(_1471, _1483)); _1494 = as_type(spvFMul(_1471, spvFMul(as_type(cbuf_56.data[_1389]), _1448))); _1495 = as_type(_1483); } else { _1492 = as_type(_1455); _1493 = _1479; _1494 = as_type(_1400); _1495 = as_type(_1448); } uint _1499; if (!_489) { _1499 = as_type(fma(_190, 10.0, _1437)); } else { _1499 = _1495; } uint _1538; uint _1539; uint _1540; if (!_489) { float _1528 = fma(_1471, spvFMul(fast::max(0.0, as_type(_1499)), 1.0 / _490), spvFMul(_469, spvFMul(_1471, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[93u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1494), _440, fma(_1381, _432, spvFMul(_424, _1380))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[92u + buf1_dword_off]), _491))))); _1538 = as_type(spvFMul(as_type(cbuf_56.data[_1393]), _1528)); _1539 = as_type(spvFMul(as_type(cbuf_56.data[_1389]), _1528)); _1540 = as_type(spvFMul(as_type(cbuf_56.data[_1385]), _1528)); } else { _1538 = _1493; _1539 = _1494; _1540 = _1492; } uint _1554 = 99u + buf1_dword_off; float _1557 = exp2(spvFMul(_1463, log2(fast::clamp(fma(spvFMul(_1418, _1421), _438, fma(spvFMul(_1403, _1421), _429, spvFMul(_423, spvFMul(_1383, _1421)))), 0.0, 1.0)))); float _1558 = exp2(spvFMul(0.0999755859375, log2(_1448))); float _1565 = fma(-_298, _300, as_type(cbuf_56.data[98u + buf1_dword_off])); float _1568 = fma(-_304, _300, as_type(cbuf_56.data[97u + buf1_dword_off])); float _1572 = fma(-_312, _300, as_type(cbuf_56.data[96u + buf1_dword_off])); float _1575 = rsqrt(fma(_1572, _1572, fma(_1568, _1568, spvFMul(_1565, _1565)))); float _1576 = spvFMul(_1565, _1575); float _1577 = spvFMul(_1568, _1575); float _1579 = fma(-_313, _378, _1576); uint _1581 = 100u + buf1_dword_off; uint _1585 = 101u + buf1_dword_off; uint _1589 = 102u + buf1_dword_off; uint _1593 = 103u + buf1_dword_off; float _1596 = spvFMul(_1572, _1575); float _1599 = fma(-_332, _378, _1577); float _1614 = fma(-_354, _378, _1596); float _1617 = rsqrt(fma(_1614, _1614, fma(_1599, _1599, spvFMul(_1579, _1579)))); float _1633 = fma(_438, _1596, fma(_429, _1577, spvFMul(_423, _1576))); float _1634 = fma(_1572, _1572, fma(_1568, _1568, spvFMul(_1565, _1565))); float _1644 = fast::clamp(fast::max(_1633, _1633), 0.0, 1.0); float _1651 = spvFMul(_1472, spvFMul(_1558, spvFMul(as_type(cbuf_56.data[89u + buf1_dword_off]), _1557))); float _1659 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1593]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_1593])))); float _1667 = fast::max(0.0, spvFSub(1.0 / _1634, as_type(cbuf_56.data[_1554]))); float _1668 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1554]), _1634), 0.0, 1.0)); float _1671 = fma(0.125, _1659, 0.25); uint _1675; if (_489) { _1675 = as_type(spvFMul(as_type(cbuf_56.data[_1581]), _1644)); } else { _1675 = _1538; } uint _1688; uint _1689; uint _1690; uint _1691; if (_489) { float _1679 = spvFMul(as_type(cbuf_56.data[_1589]), _1644); _1688 = as_type(spvFMul(_1667, as_type(_1675))); _1689 = as_type(spvFMul(_1667, _1679)); _1690 = as_type(spvFMul(_1667, spvFMul(as_type(cbuf_56.data[_1585]), _1644))); _1691 = as_type(_1679); } else { _1688 = as_type(_1651); _1689 = _1675; _1690 = as_type(_1596); _1691 = as_type(_1644); } uint _1695; if (!_489) { _1695 = as_type(fma(_190, 10.0, _1633)); } else { _1695 = _1691; } uint _1734; uint _1735; uint _1736; if (!_489) { float _1724 = fma(_1667, spvFMul(fast::max(0.0, as_type(_1695)), 1.0 / _490), spvFMul(_469, spvFMul(_1667, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[109u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1690), _440, fma(_1577, _432, spvFMul(_424, _1576))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[108u + buf1_dword_off]), _491))))); _1734 = as_type(spvFMul(as_type(cbuf_56.data[_1589]), _1724)); _1735 = as_type(spvFMul(as_type(cbuf_56.data[_1585]), _1724)); _1736 = as_type(spvFMul(as_type(cbuf_56.data[_1581]), _1724)); } else { _1734 = _1689; _1735 = _1690; _1736 = _1688; } uint _1750 = 115u + buf1_dword_off; float _1753 = exp2(spvFMul(_1659, log2(fast::clamp(fma(spvFMul(_1614, _1617), _438, fma(spvFMul(_1599, _1617), _429, spvFMul(_423, spvFMul(_1579, _1617)))), 0.0, 1.0)))); float _1754 = exp2(spvFMul(0.0999755859375, log2(_1644))); float _1761 = fma(-_298, _300, as_type(cbuf_56.data[114u + buf1_dword_off])); float _1764 = fma(-_304, _300, as_type(cbuf_56.data[113u + buf1_dword_off])); float _1768 = fma(-_312, _300, as_type(cbuf_56.data[112u + buf1_dword_off])); float _1771 = rsqrt(fma(_1768, _1768, fma(_1764, _1764, spvFMul(_1761, _1761)))); float _1772 = spvFMul(_1761, _1771); float _1773 = spvFMul(_1764, _1771); float _1775 = fma(-_313, _378, _1772); uint _1777 = 116u + buf1_dword_off; uint _1781 = 117u + buf1_dword_off; uint _1785 = 118u + buf1_dword_off; uint _1789 = 119u + buf1_dword_off; float _1792 = spvFMul(_1768, _1771); float _1795 = fma(-_332, _378, _1773); float _1810 = fma(-_354, _378, _1792); float _1813 = rsqrt(fma(_1810, _1810, fma(_1795, _1795, spvFMul(_1775, _1775)))); float _1829 = fma(_438, _1792, fma(_429, _1773, spvFMul(_423, _1772))); float _1830 = fma(_1768, _1768, fma(_1764, _1764, spvFMul(_1761, _1761))); float _1840 = fast::clamp(fast::max(_1829, _1829), 0.0, 1.0); float _1847 = spvFMul(_1668, spvFMul(_1754, spvFMul(as_type(cbuf_56.data[105u + buf1_dword_off]), _1753))); float _1855 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1789]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_1789])))); float _1860 = fma(spvFMul(_1668, spvFMul(_1754, spvFMul(as_type(cbuf_56.data[104u + buf1_dword_off]), _1753))), _1671, fma(spvFMul(_1472, spvFMul(_1558, spvFMul(as_type(cbuf_56.data[88u + buf1_dword_off]), _1557))), _1475, fma(spvFMul(_1276, spvFMul(_1362, spvFMul(as_type(cbuf_56.data[72u + buf1_dword_off]), _1361))), _1279, fma(spvFMul(_1080, spvFMul(_1166, spvFMul(as_type(cbuf_56.data[56u + buf1_dword_off]), _1165))), _1083, fma(spvFMul(_856, spvFMul(_971, spvFMul(as_type(cbuf_56.data[40u + buf1_dword_off]), _970))), _885, fma(spvFMul(_495, spvFMul(spvFMul(as_type(cbuf_56.data[8u + buf1_dword_off]), _577), _580)), _674, spvFMul(_682, spvFMul(_679, spvFMul(_792, spvFMul(as_type(cbuf_56.data[24u + buf1_dword_off]), _791)))))))))); float _1862 = fma(spvFMul(_1668, spvFMul(_1754, spvFMul(as_type(cbuf_56.data[106u + buf1_dword_off]), _1753))), _1671, fma(spvFMul(_1472, spvFMul(_1558, spvFMul(as_type(cbuf_56.data[90u + buf1_dword_off]), _1557))), _1475, fma(spvFMul(_1276, spvFMul(_1362, spvFMul(as_type(cbuf_56.data[74u + buf1_dword_off]), _1361))), _1279, fma(spvFMul(_1080, spvFMul(_1166, spvFMul(as_type(cbuf_56.data[58u + buf1_dword_off]), _1165))), _1083, fma(spvFMul(_856, spvFMul(_971, spvFMul(as_type(cbuf_56.data[42u + buf1_dword_off]), _970))), _885, fma(spvFMul(_495, spvFMul(spvFMul(as_type(cbuf_56.data[10u + buf1_dword_off]), _577), _580)), _674, spvFMul(_682, spvFMul(_679, spvFMul(_792, spvFMul(as_type(cbuf_56.data[26u + buf1_dword_off]), _791)))))))))); float _1863 = fast::max(0.0, spvFSub(1.0 / _1830, as_type(cbuf_56.data[_1750]))); float _1864 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1750]), _1830), 0.0, 1.0)); float _1867 = fma(0.125, _1855, 0.25); uint _1871; if (_489) { _1871 = as_type(spvFMul(as_type(cbuf_56.data[_1777]), _1840)); } else { _1871 = _1734; } uint _1884; uint _1885; uint _1886; uint _1887; if (_489) { float _1875 = spvFMul(as_type(cbuf_56.data[_1785]), _1840); _1884 = as_type(spvFMul(_1863, as_type(_1871))); _1885 = as_type(spvFMul(_1863, _1875)); _1886 = as_type(spvFMul(_1863, spvFMul(as_type(cbuf_56.data[_1781]), _1840))); _1887 = as_type(_1875); } else { _1884 = as_type(_1847); _1885 = _1871; _1886 = as_type(_1792); _1887 = as_type(_1840); } uint _1891; if (!_489) { _1891 = as_type(fma(_190, 10.0, _1829)); } else { _1891 = _1887; } uint _1930; uint _1931; uint _1932; if (!_489) { float _1920 = fma(_1863, spvFMul(fast::max(0.0, as_type(_1891)), 1.0 / _490), spvFMul(_469, spvFMul(_1863, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[125u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_1886), _440, fma(_1773, _432, spvFMul(_424, _1772))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[124u + buf1_dword_off]), _491))))); _1930 = as_type(spvFMul(as_type(cbuf_56.data[_1785]), _1920)); _1931 = as_type(spvFMul(as_type(cbuf_56.data[_1781]), _1920)); _1932 = as_type(spvFMul(as_type(cbuf_56.data[_1777]), _1920)); } else { _1930 = _1885; _1931 = _1886; _1932 = _1884; } uint _1946 = 131u + buf1_dword_off; float _1949 = exp2(spvFMul(_1855, log2(fast::clamp(fma(spvFMul(_1810, _1813), _438, fma(spvFMul(_1795, _1813), _429, spvFMul(_423, spvFMul(_1775, _1813)))), 0.0, 1.0)))); float _1950 = exp2(spvFMul(0.0999755859375, log2(_1840))); float _1957 = fma(-_298, _300, as_type(cbuf_56.data[130u + buf1_dword_off])); float _1960 = fma(-_304, _300, as_type(cbuf_56.data[129u + buf1_dword_off])); float _1964 = fma(-_312, _300, as_type(cbuf_56.data[128u + buf1_dword_off])); float _1967 = rsqrt(fma(_1964, _1964, fma(_1960, _1960, spvFMul(_1957, _1957)))); float _1968 = spvFMul(_1957, _1967); float _1969 = spvFMul(_1960, _1967); float _1971 = fma(-_313, _378, _1968); uint _1973 = 132u + buf1_dword_off; uint _1977 = 133u + buf1_dword_off; uint _1981 = 134u + buf1_dword_off; uint _1985 = 135u + buf1_dword_off; float _1988 = spvFMul(_1964, _1967); float _1991 = fma(-_332, _378, _1969); float _2006 = fma(-_354, _378, _1988); float _2009 = rsqrt(fma(_2006, _2006, fma(_1991, _1991, spvFMul(_1971, _1971)))); float _2025 = fma(_438, _1988, fma(_429, _1969, spvFMul(_423, _1968))); float _2026 = fma(_1964, _1964, fma(_1960, _1960, spvFMul(_1957, _1957))); float _2036 = fast::clamp(fast::max(_2025, _2025), 0.0, 1.0); float _2043 = spvFMul(_1864, spvFMul(_1950, spvFMul(as_type(cbuf_56.data[121u + buf1_dword_off]), _1949))); float _2051 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_1985]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_1985])))); float _2059 = fast::max(0.0, spvFSub(1.0 / _2026, as_type(cbuf_56.data[_1946]))); float _2060 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_1946]), _2026), 0.0, 1.0)); float _2063 = fma(0.125, _2051, 0.25); uint _2067; if (_489) { _2067 = as_type(spvFMul(as_type(cbuf_56.data[_1973]), _2036)); } else { _2067 = _1930; } uint _2080; uint _2081; uint _2082; uint _2083; if (_489) { float _2071 = spvFMul(as_type(cbuf_56.data[_1981]), _2036); _2080 = as_type(spvFMul(_2059, as_type(_2067))); _2081 = as_type(spvFMul(_2059, _2071)); _2082 = as_type(spvFMul(_2059, spvFMul(as_type(cbuf_56.data[_1977]), _2036))); _2083 = as_type(_2071); } else { _2080 = as_type(_2043); _2081 = _2067; _2082 = as_type(_1988); _2083 = as_type(_2036); } uint _2087; if (!_489) { _2087 = as_type(fma(_190, 10.0, _2025)); } else { _2087 = _2083; } uint _2126; uint _2127; uint _2128; if (!_489) { float _2116 = fma(_2059, spvFMul(fast::max(0.0, as_type(_2087)), 1.0 / _490), spvFMul(_469, spvFMul(_2059, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[141u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(as_type(_2082), _440, fma(_1969, _432, spvFMul(_424, _1968))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[140u + buf1_dword_off]), _491))))); _2126 = as_type(spvFMul(as_type(cbuf_56.data[_1981]), _2116)); _2127 = as_type(spvFMul(as_type(cbuf_56.data[_1977]), _2116)); _2128 = as_type(spvFMul(as_type(cbuf_56.data[_1973]), _2116)); } else { _2126 = _2081; _2127 = _2082; _2128 = _2080; } uint _2142 = 147u + buf1_dword_off; float _2145 = exp2(spvFMul(_2051, log2(fast::clamp(fma(spvFMul(_2006, _2009), _438, fma(spvFMul(_1991, _2009), _429, spvFMul(_423, spvFMul(_1971, _2009)))), 0.0, 1.0)))); float _2146 = exp2(spvFMul(0.0999755859375, log2(_2036))); float _2153 = fma(-_298, _300, as_type(cbuf_56.data[146u + buf1_dword_off])); float _2156 = fma(-_304, _300, as_type(cbuf_56.data[145u + buf1_dword_off])); float _2160 = fma(-_312, _300, as_type(cbuf_56.data[144u + buf1_dword_off])); float _2163 = rsqrt(fma(_2160, _2160, fma(_2156, _2156, spvFMul(_2153, _2153)))); float _2164 = spvFMul(_2153, _2163); float _2165 = spvFMul(_2156, _2163); float _2167 = fma(-_313, _378, _2164); uint _2169 = 148u + buf1_dword_off; uint _2173 = 149u + buf1_dword_off; uint _2177 = 150u + buf1_dword_off; uint _2181 = 151u + buf1_dword_off; float _2184 = spvFMul(_2160, _2163); float _2186 = fma(-_332, _378, _2165); float _2201 = fma(-_354, _378, _2184); float _2204 = rsqrt(fma(_2201, _2201, fma(_2186, _2186, spvFMul(_2167, _2167)))); float _2220 = fma(_438, _2184, fma(_429, _2165, spvFMul(_423, _2164))); float _2221 = fma(_2160, _2160, fma(_2156, _2156, spvFMul(_2153, _2153))); float _2231 = fast::clamp(fast::max(_2220, _2220), 0.0, 1.0); float _2244 = fast::max(1.0, spvFMul(spvFMul(as_type(cbuf_56.data[_2181]), _439), 1.0 / fma(_439, 0.01000213623046875, as_type(cbuf_56.data[_2181])))); float _2253 = fast::max(0.0, spvFSub(1.0 / _2221, as_type(cbuf_56.data[_2142]))); float _2254 = spvFSub(1.0, fast::clamp(spvFMul(as_type(cbuf_56.data[_2142]), _2221), 0.0, 1.0)); float _2257 = fma(0.125, _2244, 0.25); uint _2261; if (_489) { _2261 = as_type(spvFMul(as_type(cbuf_56.data[_2169]), _2231)); } else { _2261 = as_type(_2244); } uint _2274; uint _2275; uint _2276; uint _2277; if (_489) { float _2265 = spvFMul(as_type(cbuf_56.data[_2177]), _2231); _2274 = as_type(_2265); _2275 = as_type(spvFMul(_2253, _2265)); _2276 = as_type(spvFMul(_2253, spvFMul(as_type(cbuf_56.data[_2173]), _2231))); _2277 = as_type(spvFMul(_2253, as_type(_2261))); } else { _2274 = as_type(_432); _2275 = as_type(_440); _2276 = _2261; _2277 = as_type(_190); } uint _2282; if (!_489) { _2282 = as_type(fma(as_type(_2277), 10.0, _2220)); } else { _2282 = _2276; } uint _2322; uint _2323; uint _2324; if (!_489) { float _2312 = fma(_2253, spvFMul(fast::max(0.0, as_type(_2282)), 1.0 / _490), spvFMul(_469, spvFMul(_2253, spvFMul(exp2(spvFMul(spvFMul(as_type(cbuf_56.data[157u + buf1_dword_off]), 32.0), log2(fast::clamp(fma(_2184, as_type(_2275), fma(_2165, as_type(_2274), spvFMul(_424, _2164))), 0.0, 1.0)))), spvFMul(as_type(cbuf_56.data[156u + buf1_dword_off]), _491))))); _2322 = as_type(spvFMul(as_type(cbuf_56.data[_2177]), _2312)); _2323 = as_type(spvFMul(as_type(cbuf_56.data[_2173]), _2312)); _2324 = as_type(spvFMul(as_type(cbuf_56.data[_2169]), _2312)); } else { _2322 = _2275; _2323 = _2282; _2324 = _2277; } float _2337 = exp2(spvFMul(_2244, log2(fast::clamp(fma(spvFMul(_2201, _2204), _438, fma(spvFMul(_2186, _2204), _429, spvFMul(_423, spvFMul(_2167, _2204)))), 0.0, 1.0)))); float _2338 = exp2(spvFMul(0.0999755859375, log2(_2231))); float _2340 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_559), as_type(_749)), as_type(_953)), as_type(_1148)), as_type(_1344)), as_type(_1540)), as_type(_1736)), as_type(_1932)), as_type(_2128)), as_type(_2324)); float _2342 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_561), as_type(_748)), as_type(_952)), as_type(_1147)), as_type(_1343)), as_type(_1539)), as_type(_1735)), as_type(_1931)), as_type(_2127)), as_type(_2323)); float _2353 = spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(spvFAdd(as_type(_560), as_type(_747)), as_type(_951)), as_type(_1146)), as_type(_1342)), as_type(_1538)), as_type(_1734)), as_type(_1930)), as_type(_2126)), as_type(_2322)); float _2370 = spvFMul(_485, fma(spvFMul(_2254, spvFMul(_2338, spvFMul(as_type(cbuf_56.data[153u + buf1_dword_off]), _2337))), _2257, fma(spvFMul(_2060, spvFMul(_2146, spvFMul(as_type(cbuf_56.data[137u + buf1_dword_off]), _2145))), _2063, fma(_2043, _1867, fma(_1847, _1671, fma(_1651, _1475, fma(_1455, _1279, fma(_1259, _1083, fma(_1063, _885, fma(spvFMul(_495, spvFMul(spvFMul(as_type(cbuf_56.data[9u + buf1_dword_off]), _577), _580)), _674, spvFMul(_682, spvFMul(_679, spvFMul(_792, spvFMul(as_type(cbuf_56.data[25u + buf1_dword_off]), _791)))))))))))))); if (false) { discard_fragment(); } out.frag_color1.x = spvFMul(_486, spvFMul(_485, fma(spvFMul(_2254, spvFMul(_2338, spvFMul(as_type(cbuf_56.data[152u + buf1_dword_off]), _2337))), _2257, fma(spvFMul(_2060, spvFMul(_2146, spvFMul(as_type(cbuf_56.data[136u + buf1_dword_off]), _2145))), _2063, fma(spvFMul(_1864, spvFMul(_1950, spvFMul(as_type(cbuf_56.data[120u + buf1_dword_off]), _1949))), _1867, _1860))))); out.frag_color1.y = spvFMul(_487, _2370); out.frag_color1.z = spvFMul(_488, spvFMul(_485, fma(spvFMul(_2254, spvFMul(_2338, spvFMul(as_type(cbuf_56.data[154u + buf1_dword_off]), _2337))), _2257, fma(spvFMul(_2060, spvFMul(_2146, spvFMul(as_type(cbuf_56.data[138u + buf1_dword_off]), _2145))), _2063, fma(spvFMul(_1864, spvFMul(_1950, spvFMul(as_type(cbuf_56.data[122u + buf1_dword_off]), _1949))), _1867, _1862))))); out.frag_color1.w = 1.0; if (false) { discard_fragment(); } out.frag_color0.x = spvFMul(_485, spvFSub(_2340, spvFMul(spvFMul(_486, _2340), 0.5))); out.frag_color0.y = spvFMul(_485, spvFSub(_2342, spvFMul(spvFMul(_487, _2342), 0.5))); out.frag_color0.z = spvFMul(_485, spvFSub(_2353, spvFMul(spvFMul(_488, _2353), 0.5))); out.frag_color0.w = 1.0; return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-warn] VK_ERROR_FEATURE_NOT_PRESENT: Metal does not support disabling primitive restart. [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling fs shader 0xa28d2a7a [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling hs shader 0x7d00b492 [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling vs shader 0xcce8a738 [Render.Vulkan] emit_spirv_context_get_set.cpp:EmitSetAttribute:336: Ignoring pos1 export [Render.Vulkan] emit_spirv_context_get_set.cpp:EmitSetAttribute:336: Ignoring pos1 export [Render.Vulkan] vk_pipeline_cache.cpp:CompileModule:482: Compiling ls shader 0xbc14d639 [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[104]; }; struct ls_cbuf_block_f32_1 { uint data[24]; }; struct ls_cbuf_block_f32_2 { uint data[16]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; int4 vs_in_attr8 [[attribute(8)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_12 [[buffer(20)]], constant ls_cbuf_block_f32_1& cbuf_16 [[buffer(21)]], constant ls_cbuf_block_f32_2& cbuf_8 [[buffer(22)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(17)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf12_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u); uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _213 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _217 = ((0u + (_213 * 16u)) + buf12_off) >> 2u; uint4 _230 = uint4(cbuf_16.data[_217 + 0u], cbuf_16.data[_217 + 1u], cbuf_16.data[_217 + 2u], cbuf_16.data[_217 + 3u]); uint _231 = _230.x; uint _232 = _230.y; uint _233 = _230.z; uint _239 = ((0u + ((_213 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _252 = uint4(cbuf_16.data[_239 + 0u], cbuf_16.data[_239 + 1u], cbuf_16.data[_239 + 2u], cbuf_16.data[_239 + 3u]); uint _253 = _252.x; uint _254 = _252.y; uint _255 = _252.z; uint _261 = ((0u + ((_213 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _274 = uint4(cbuf_16.data[_261 + 0u], cbuf_16.data[_261 + 1u], cbuf_16.data[_261 + 2u], cbuf_16.data[_261 + 3u]); uint _275 = _274.x; uint _276 = _274.y; uint _277 = _274.z; float _289 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _290 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _291 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _301 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _302 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _303 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _313 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr4.x))))); float _314 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.y))), -127.0), 0.0078740157186985015869140625); float _315 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.z))), -127.0), 0.0078740157186985015869140625); float _345 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _346 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _347 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _423 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.x))))); float _424 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.y))))); float _425 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.z))))); ((device float*)&out.out_attrs[0u])[0u] = fma(as_type(_231), _345, fma(as_type(_232), _346, spvFMul(as_type(_233), _347))); ((device float*)&out.out_attrs[0u])[1u] = fma(as_type(_253), _345, fma(as_type(_254), _346, spvFMul(as_type(_255), _347))); ((device float*)&out.out_attrs[0u])[2u] = fma(as_type(_275), _345, fma(as_type(_276), _346, spvFMul(as_type(_277), _347))); ((device float*)&out.out_attrs[0u])[3u] = 0.0; ((device float*)&out.out_attrs[1u])[0u] = fma(as_type(_231), _289, fma(as_type(_232), _290, spvFMul(as_type(_233), _291))); ((device float*)&out.out_attrs[1u])[1u] = fma(as_type(_253), _289, fma(as_type(_254), _290, spvFMul(as_type(_255), _291))); ((device float*)&out.out_attrs[1u])[2u] = fma(as_type(_275), _289, fma(as_type(_276), _290, spvFMul(as_type(_277), _291))); ((device float*)&out.out_attrs[1u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(_231), _301, fma(as_type(_232), _302, spvFMul(as_type(_233), _303))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(_253), _301, fma(as_type(_254), _302, spvFMul(as_type(_255), _303))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(_275), _301, fma(as_type(_276), _302, spvFMul(as_type(_277), _303))); ((device float*)&out.out_attrs[2u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[3u])[0u] = fma(as_type(_231), _313, fma(as_type(_232), _314, spvFMul(as_type(_233), _315))); ((device float*)&out.out_attrs[3u])[1u] = fma(as_type(_253), _313, fma(as_type(_254), _314, spvFMul(as_type(_255), _315))); ((device float*)&out.out_attrs[3u])[2u] = fma(as_type(_275), _313, fma(as_type(_276), _314, spvFMul(as_type(_277), _315))); ((device float*)&out.out_attrs[3u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[5u])[0u] = fma(as_type(_231), in.vs_in_attr0.x, fma(as_type(_232), in.vs_in_attr0.y, fma(as_type(_233), in.vs_in_attr0.z, as_type(_230.w)))); ((device float*)&out.out_attrs[5u])[1u] = fma(as_type(_253), in.vs_in_attr0.x, fma(as_type(_254), in.vs_in_attr0.y, fma(as_type(_255), in.vs_in_attr0.z, as_type(_252.w)))); ((device float*)&out.out_attrs[6u])[0u] = fma(as_type(_231), _423, fma(as_type(_232), _424, spvFMul(as_type(_233), _425))); ((device float*)&out.out_attrs[6u])[1u] = fma(as_type(_253), _423, fma(as_type(_254), _424, spvFMul(as_type(_255), _425))); ((device float*)&out.out_attrs[5u])[2u] = fma(as_type(_275), in.vs_in_attr0.x, fma(as_type(_276), in.vs_in_attr0.y, fma(as_type(_277), in.vs_in_attr0.z, as_type(_274.w)))); ((device float*)&out.out_attrs[6u])[2u] = fma(as_type(_275), _423, fma(as_type(_276), _424, spvFMul(as_type(_277), _425))); ((device float*)&out.out_attrs[7u])[0u] = fma(as_type(cbuf_8.data[0u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[1u] = fma(as_type(cbuf_8.data[1u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[2u] = fma(as_type(cbuf_8.data[4u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[3u] = fma(as_type(cbuf_8.data[5u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf13_dword_off])); ((device float*)&out.out_attrs[8u])[0u] = fma(as_type(cbuf_8.data[8u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[10u + buf13_dword_off])); ((device float*)&out.out_attrs[8u])[1u] = fma(as_type(cbuf_8.data[9u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[11u + buf13_dword_off])); ((device float*)&out.out_attrs[9u])[0u] = 0.0; ((device float*)&out.out_attrs[9u])[1u] = 0.0; ((device float*)&out.out_attrs[9u])[2u] = 0.0; ((device float*)&out.out_attrs[9u])[3u] = 0.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[104]; }; struct ls_cbuf_block_f32_1 { uint data[24]; }; struct ls_cbuf_block_f32_2 { uint data[16]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; int4 vs_in_attr8 [[attribute(8)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_12 [[buffer(20)]], constant ls_cbuf_block_f32_1& cbuf_16 [[buffer(21)]], constant ls_cbuf_block_f32_2& cbuf_8 [[buffer(22)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(17)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf12_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u); uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _213 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _217 = ((0u + (_213 * 16u)) + buf12_off) >> 2u; uint4 _230 = uint4(cbuf_16.data[_217 + 0u], cbuf_16.data[_217 + 1u], cbuf_16.data[_217 + 2u], cbuf_16.data[_217 + 3u]); uint _231 = _230.x; uint _232 = _230.y; uint _233 = _230.z; uint _239 = ((0u + ((_213 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _252 = uint4(cbuf_16.data[_239 + 0u], cbuf_16.data[_239 + 1u], cbuf_16.data[_239 + 2u], cbuf_16.data[_239 + 3u]); uint _253 = _252.x; uint _254 = _252.y; uint _255 = _252.z; uint _261 = ((0u + ((_213 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _274 = uint4(cbuf_16.data[_261 + 0u], cbuf_16.data[_261 + 1u], cbuf_16.data[_261 + 2u], cbuf_16.data[_261 + 3u]); uint _275 = _274.x; uint _276 = _274.y; uint _277 = _274.z; float _289 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _290 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _291 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _301 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _302 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _303 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _313 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr4.x))))); float _314 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.y))), -127.0), 0.0078740157186985015869140625); float _315 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.z))), -127.0), 0.0078740157186985015869140625); float _345 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _346 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _347 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _423 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.x))))); float _424 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.y))))); float _425 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.z))))); ((device float*)&out.out_attrs[0u])[0u] = fma(as_type(_231), _345, fma(as_type(_232), _346, spvFMul(as_type(_233), _347))); ((device float*)&out.out_attrs[0u])[1u] = fma(as_type(_253), _345, fma(as_type(_254), _346, spvFMul(as_type(_255), _347))); ((device float*)&out.out_attrs[0u])[2u] = fma(as_type(_275), _345, fma(as_type(_276), _346, spvFMul(as_type(_277), _347))); ((device float*)&out.out_attrs[0u])[3u] = 0.0; ((device float*)&out.out_attrs[1u])[0u] = fma(as_type(_231), _289, fma(as_type(_232), _290, spvFMul(as_type(_233), _291))); ((device float*)&out.out_attrs[1u])[1u] = fma(as_type(_253), _289, fma(as_type(_254), _290, spvFMul(as_type(_255), _291))); ((device float*)&out.out_attrs[1u])[2u] = fma(as_type(_275), _289, fma(as_type(_276), _290, spvFMul(as_type(_277), _291))); ((device float*)&out.out_attrs[1u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(_231), _301, fma(as_type(_232), _302, spvFMul(as_type(_233), _303))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(_253), _301, fma(as_type(_254), _302, spvFMul(as_type(_255), _303))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(_275), _301, fma(as_type(_276), _302, spvFMul(as_type(_277), _303))); ((device float*)&out.out_attrs[2u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[3u])[0u] = fma(as_type(_231), _313, fma(as_type(_232), _314, spvFMul(as_type(_233), _315))); ((device float*)&out.out_attrs[3u])[1u] = fma(as_type(_253), _313, fma(as_type(_254), _314, spvFMul(as_type(_255), _315))); ((device float*)&out.out_attrs[3u])[2u] = fma(as_type(_275), _313, fma(as_type(_276), _314, spvFMul(as_type(_277), _315))); ((device float*)&out.out_attrs[3u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[5u])[0u] = fma(as_type(_231), in.vs_in_attr0.x, fma(as_type(_232), in.vs_in_attr0.y, fma(as_type(_233), in.vs_in_attr0.z, as_type(_230.w)))); ((device float*)&out.out_attrs[5u])[1u] = fma(as_type(_253), in.vs_in_attr0.x, fma(as_type(_254), in.vs_in_attr0.y, fma(as_type(_255), in.vs_in_attr0.z, as_type(_252.w)))); ((device float*)&out.out_attrs[6u])[0u] = fma(as_type(_231), _423, fma(as_type(_232), _424, spvFMul(as_type(_233), _425))); ((device float*)&out.out_attrs[6u])[1u] = fma(as_type(_253), _423, fma(as_type(_254), _424, spvFMul(as_type(_255), _425))); ((device float*)&out.out_attrs[5u])[2u] = fma(as_type(_275), in.vs_in_attr0.x, fma(as_type(_276), in.vs_in_attr0.y, fma(as_type(_277), in.vs_in_attr0.z, as_type(_274.w)))); ((device float*)&out.out_attrs[6u])[2u] = fma(as_type(_275), _423, fma(as_type(_276), _424, spvFMul(as_type(_277), _425))); ((device float*)&out.out_attrs[7u])[0u] = fma(as_type(cbuf_8.data[0u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[1u] = fma(as_type(cbuf_8.data[1u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[2u] = fma(as_type(cbuf_8.data[4u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[3u] = fma(as_type(cbuf_8.data[5u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf13_dword_off])); ((device float*)&out.out_attrs[8u])[0u] = fma(as_type(cbuf_8.data[8u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[10u + buf13_dword_off])); ((device float*)&out.out_attrs[8u])[1u] = fma(as_type(cbuf_8.data[9u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[11u + buf13_dword_off])); ((device float*)&out.out_attrs[9u])[0u] = 0.0; ((device float*)&out.out_attrs[9u])[1u] = 0.0; ((device float*)&out.out_attrs[9u])[2u] = 0.0; ((device float*)&out.out_attrs[9u])[3u] = 0.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct ls_cbuf_block_f32 { uint data[104]; }; struct ls_cbuf_block_f32_1 { uint data[24]; }; struct ls_cbuf_block_f32_2 { uint data[16]; }; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_in { float4 vs_in_attr0 [[attribute(0)]]; uint4 vs_in_attr1 [[attribute(1)]]; uint4 vs_in_attr2 [[attribute(2)]]; uint4 vs_in_attr3 [[attribute(3)]]; uint4 vs_in_attr4 [[attribute(4)]]; float4 vs_in_attr5 [[attribute(5)]]; int4 vs_in_attr6 [[attribute(6)]]; int4 vs_in_attr7 [[attribute(7)]]; int4 vs_in_attr8 [[attribute(8)]]; }; kernel void main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant ls_cbuf_block_f32& cbuf_12 [[buffer(20)]], constant ls_cbuf_block_f32_1& cbuf_16 [[buffer(21)]], constant ls_cbuf_block_f32_2& cbuf_8 [[buffer(22)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(17)]]) { device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; uint buf12_off = extract_bits(push_data.buf_offsets0[3u], 0u, 8u); uint buf13_dword_off = extract_bits(push_data.buf_offsets0[3u], 8u, 8u) >> 2u; uint _213 = (cbuf_12.data[20u + (extract_bits(push_data.buf_offsets0[2u], 24u, 8u) >> 2u)] + as_type(as_type(in.vs_in_attr1.w))) * 3u; uint _217 = ((0u + (_213 * 16u)) + buf12_off) >> 2u; uint4 _230 = uint4(cbuf_16.data[_217 + 0u], cbuf_16.data[_217 + 1u], cbuf_16.data[_217 + 2u], cbuf_16.data[_217 + 3u]); uint _231 = _230.x; uint _232 = _230.y; uint _233 = _230.z; uint _239 = ((0u + ((_213 + 1u) * 16u)) + buf12_off) >> 2u; uint4 _252 = uint4(cbuf_16.data[_239 + 0u], cbuf_16.data[_239 + 1u], cbuf_16.data[_239 + 2u], cbuf_16.data[_239 + 3u]); uint _253 = _252.x; uint _254 = _252.y; uint _255 = _252.z; uint _261 = ((0u + ((_213 + 2u) * 16u)) + buf12_off) >> 2u; uint4 _274 = uint4(cbuf_16.data[_261 + 0u], cbuf_16.data[_261 + 1u], cbuf_16.data[_261 + 2u], cbuf_16.data[_261 + 3u]); uint _275 = _274.x; uint _276 = _274.y; uint _277 = _274.z; float _289 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr2.x))))); float _290 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.y))), -127.0), 0.0078740157186985015869140625); float _291 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.z))), -127.0), 0.0078740157186985015869140625); float _301 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr3.x))))); float _302 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.y))), -127.0), 0.0078740157186985015869140625); float _303 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.z))), -127.0), 0.0078740157186985015869140625); float _313 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr4.x))))); float _314 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.y))), -127.0), 0.0078740157186985015869140625); float _315 = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.z))), -127.0), 0.0078740157186985015869140625); float _345 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.x))))); float _346 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.y))))); float _347 = spvFMul(0.0078740157186985015869140625, spvFAdd(-127.0, float(as_type(as_type(in.vs_in_attr1.z))))); float _423 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.x))))); float _424 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.y))))); float _425 = spvFMul(0.0078740157186985015869140625, float(int(as_type(as_type(in.vs_in_attr8.z))))); ((device float*)&out.out_attrs[0u])[0u] = fma(as_type(_231), _345, fma(as_type(_232), _346, spvFMul(as_type(_233), _347))); ((device float*)&out.out_attrs[0u])[1u] = fma(as_type(_253), _345, fma(as_type(_254), _346, spvFMul(as_type(_255), _347))); ((device float*)&out.out_attrs[0u])[2u] = fma(as_type(_275), _345, fma(as_type(_276), _346, spvFMul(as_type(_277), _347))); ((device float*)&out.out_attrs[0u])[3u] = 0.0; ((device float*)&out.out_attrs[1u])[0u] = fma(as_type(_231), _289, fma(as_type(_232), _290, spvFMul(as_type(_233), _291))); ((device float*)&out.out_attrs[1u])[1u] = fma(as_type(_253), _289, fma(as_type(_254), _290, spvFMul(as_type(_255), _291))); ((device float*)&out.out_attrs[1u])[2u] = fma(as_type(_275), _289, fma(as_type(_276), _290, spvFMul(as_type(_277), _291))); ((device float*)&out.out_attrs[1u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr2.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[2u])[0u] = fma(as_type(_231), _301, fma(as_type(_232), _302, spvFMul(as_type(_233), _303))); ((device float*)&out.out_attrs[2u])[1u] = fma(as_type(_253), _301, fma(as_type(_254), _302, spvFMul(as_type(_255), _303))); ((device float*)&out.out_attrs[2u])[2u] = fma(as_type(_275), _301, fma(as_type(_276), _302, spvFMul(as_type(_277), _303))); ((device float*)&out.out_attrs[2u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr3.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[3u])[0u] = fma(as_type(_231), _313, fma(as_type(_232), _314, spvFMul(as_type(_233), _315))); ((device float*)&out.out_attrs[3u])[1u] = fma(as_type(_253), _313, fma(as_type(_254), _314, spvFMul(as_type(_255), _315))); ((device float*)&out.out_attrs[3u])[2u] = fma(as_type(_275), _313, fma(as_type(_276), _314, spvFMul(as_type(_277), _315))); ((device float*)&out.out_attrs[3u])[3u] = spvFMul(spvFAdd(float(as_type(as_type(in.vs_in_attr4.w))), -127.0), 0.0078740157186985015869140625); ((device float*)&out.out_attrs[4u])[0u] = in.vs_in_attr5.x; ((device float*)&out.out_attrs[4u])[1u] = in.vs_in_attr5.y; ((device float*)&out.out_attrs[4u])[2u] = in.vs_in_attr5.z; ((device float*)&out.out_attrs[4u])[3u] = in.vs_in_attr5.w; ((device float*)&out.out_attrs[5u])[0u] = fma(as_type(_231), in.vs_in_attr0.x, fma(as_type(_232), in.vs_in_attr0.y, fma(as_type(_233), in.vs_in_attr0.z, as_type(_230.w)))); ((device float*)&out.out_attrs[5u])[1u] = fma(as_type(_253), in.vs_in_attr0.x, fma(as_type(_254), in.vs_in_attr0.y, fma(as_type(_255), in.vs_in_attr0.z, as_type(_252.w)))); ((device float*)&out.out_attrs[6u])[0u] = fma(as_type(_231), _423, fma(as_type(_232), _424, spvFMul(as_type(_233), _425))); ((device float*)&out.out_attrs[6u])[1u] = fma(as_type(_253), _423, fma(as_type(_254), _424, spvFMul(as_type(_255), _425))); ((device float*)&out.out_attrs[5u])[2u] = fma(as_type(_275), in.vs_in_attr0.x, fma(as_type(_276), in.vs_in_attr0.y, fma(as_type(_277), in.vs_in_attr0.z, as_type(_274.w)))); ((device float*)&out.out_attrs[6u])[2u] = fma(as_type(_275), _423, fma(as_type(_276), _424, spvFMul(as_type(_277), _425))); ((device float*)&out.out_attrs[7u])[0u] = fma(as_type(cbuf_8.data[0u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.x))))), as_type(cbuf_8.data[2u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[1u] = fma(as_type(cbuf_8.data[1u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.y))))), as_type(cbuf_8.data[3u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[2u] = fma(as_type(cbuf_8.data[4u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.z))))), as_type(cbuf_8.data[6u + buf13_dword_off])); ((device float*)&out.out_attrs[7u])[3u] = fma(as_type(cbuf_8.data[5u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr6.w))))), as_type(cbuf_8.data[7u + buf13_dword_off])); ((device float*)&out.out_attrs[8u])[0u] = fma(as_type(cbuf_8.data[8u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.x))))), as_type(cbuf_8.data[10u + buf13_dword_off])); ((device float*)&out.out_attrs[8u])[1u] = fma(as_type(cbuf_8.data[9u + buf13_dword_off]), spvFMul(0.00048828125, float(int(as_type(as_type(in.vs_in_attr7.y))))), as_type(cbuf_8.data[11u + buf13_dword_off])); ((device float*)&out.out_attrs[9u])[0u] = 0.0; ((device float*)&out.out_attrs[9u])[1u] = 0.0; ((device float*)&out.out_attrs[9u])[2u] = 0.0; ((device float*)&out.out_attrs[9u])[3u] = 0.0; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-error] VK_ERROR_INITIALIZATION_FAILED: Vertex shader requires output buffer, but there is no free slot to pass it. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } template [[clang::optnone]] T spvMulExtended(V l, V r) { return T{U(l * r), U(mulhi(l, r))}; } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct hs_cbuf_block_f32 { uint data[48]; }; struct hs_cbuf_block_f32_1 { uint data[12]; }; constant uint _106 = {}; constant uint _107 = {}; constant uint _108 = {}; constant uint _109 = {}; constant uint _110 = {}; constant uint _111 = {}; constant uint _112 = {}; constant uint _113 = {}; constant uint _114 = {}; constant uint _115 = {}; struct main0_out { spvUnsafeArray out_attrs; }; struct main0_patchOut { float4 patch_out0; float4 patch_out1; float4 patch_out2; float4 patch_out3; float4 patch_out4; float4 patch_out5; float4 patch_out6; float4 patch_out7; float4 patch_out8; float4 patch_out9; float4 patch_out10; float4 patch_out11; float4 patch_out12; float4 patch_out13; }; struct main0_in { spvUnsafeArray in_attrs; }; kernel void main0(constant AuxData& push_data [[buffer(8)]], constant hs_cbuf_block_f32& cbuf_4 [[buffer(13)]], constant hs_cbuf_block_f32_1& cbuf_8 [[buffer(14)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], device main0_out* spvOut [[buffer(25)]], constant uint* spvIndirectParams [[buffer(26)]], device main0_patchOut* spvPatchOut [[buffer(24)]], device MTLTriangleTessellationFactorsHalf* spvTessLevel [[buffer(23)]], device main0_in* spvIn [[buffer(30)]]) { device main0_out* gl_out = &spvOut[gl_GlobalInvocationID.x - gl_GlobalInvocationID.x % 3]; device main0_patchOut& patchOut = spvPatchOut[gl_GlobalInvocationID.x / 3]; device main0_in* gl_in = &spvIn[min(gl_GlobalInvocationID.x / 3, spvIndirectParams[1] - 1) * spvIndirectParams[0]]; uint gl_InvocationID = gl_GlobalInvocationID.x % 3; uint gl_PrimitiveID = min(gl_GlobalInvocationID.x / 3, spvIndirectParams[1] - 1); uint buf4_dword_off = extract_bits(push_data.buf_offsets0[1u], 0u, 8u) >> 2u; uint buf5_dword_off = extract_bits(push_data.buf_offsets0[1u], 8u, 8u) >> 2u; uint _127 = gl_InvocationID + 1u; uint _144 = uint(extract_bits(int(gl_InvocationID), 0u, 24u)) * 160u; uint _156 = as_type(gl_in[(_144 + 144u) / 160u].in_attrs[9u].x); uint _166 = _144 / 160u; uint _171 = (_144 + 4u) / 160u; uint _176 = (_144 + 8u) / 160u; bool _187 = ((_156 & as_type(gl_in[((uint(extract_bits(int(as_type(((gl_InvocationID + 4294967295u) >= 0u) ? as_type(gl_InvocationID) : 2.8025969286496341418474591665798e-45)), 0u, 24u)) * 160u) + 144u) / 160u].in_attrs[9u].x)) != 0u) || (0u != (_156 & as_type(gl_in[((uint(extract_bits(int(_127 - (((spvMulExtended(_127, 2863311531u))._m1 >> 1u) * 3u)), 0u, 24u)) * 160u) + 144u) / 160u].in_attrs[9u].x))); uint _190; if (_187) { _190 = _144 + 96u; } else { _190 = _115; } uint _218; uint _219; uint _220; if (_187) { uint _200 = _190 + 4u; uint _209 = _190 + 8u; _218 = as_type(gl_in[_200 / 160u].in_attrs[(_200 % 160u) >> 4u][(_200 & 15u) >> 2u]); _219 = as_type(gl_in[_190 / 160u].in_attrs[(_190 % 160u) >> 4u][(_190 & 15u) >> 2u]); _220 = as_type(gl_in[_209 / 160u].in_attrs[(_209 % 160u) >> 4u][(_209 & 15u) >> 2u]); } else { _218 = _112; _219 = _113; _220 = _114; } uint _222; uint _223; uint _224; if (!_187) { _222 = as_type(gl_in[_176].in_attrs[0u].z); _223 = as_type(gl_in[_171].in_attrs[0u].y); _224 = as_type(gl_in[_166].in_attrs[0u].x); } else { _222 = _220; _223 = _218; _224 = _219; } gl_out[gl_InvocationID].out_attrs[5u].x = gl_in[(_144 + 80u) / 160u].in_attrs[5u].x; gl_out[gl_InvocationID].out_attrs[5u].y = gl_in[(_144 + 84u) / 160u].in_attrs[5u].y; gl_out[gl_InvocationID].out_attrs[5u].z = gl_in[(_144 + 88u) / 160u].in_attrs[5u].z; gl_out[gl_InvocationID].out_attrs[0u].x = gl_in[_166].in_attrs[0u].x; gl_out[gl_InvocationID].out_attrs[0u].y = gl_in[_171].in_attrs[0u].y; gl_out[gl_InvocationID].out_attrs[0u].z = gl_in[_176].in_attrs[0u].z; gl_out[gl_InvocationID].out_attrs[0u].w = gl_in[(_144 + 12u) / 160u].in_attrs[0u].w; gl_out[gl_InvocationID].out_attrs[1u].x = gl_in[(_144 + 16u) / 160u].in_attrs[1u].x; gl_out[gl_InvocationID].out_attrs[1u].y = gl_in[(_144 + 20u) / 160u].in_attrs[1u].y; gl_out[gl_InvocationID].out_attrs[1u].z = gl_in[(_144 + 24u) / 160u].in_attrs[1u].z; gl_out[gl_InvocationID].out_attrs[1u].w = gl_in[(_144 + 28u) / 160u].in_attrs[1u].w; gl_out[gl_InvocationID].out_attrs[2u].x = gl_in[(_144 + 32u) / 160u].in_attrs[2u].x; gl_out[gl_InvocationID].out_attrs[2u].y = gl_in[(_144 + 36u) / 160u].in_attrs[2u].y; gl_out[gl_InvocationID].out_attrs[2u].z = gl_in[(_144 + 40u) / 160u].in_attrs[2u].z; gl_out[gl_InvocationID].out_attrs[2u].w = gl_in[(_144 + 44u) / 160u].in_attrs[2u].w; gl_out[gl_InvocationID].out_attrs[3u].x = gl_in[(_144 + 48u) / 160u].in_attrs[3u].x; gl_out[gl_InvocationID].out_attrs[3u].y = gl_in[(_144 + 52u) / 160u].in_attrs[3u].y; gl_out[gl_InvocationID].out_attrs[3u].z = gl_in[(_144 + 56u) / 160u].in_attrs[3u].z; gl_out[gl_InvocationID].out_attrs[3u].w = gl_in[(_144 + 60u) / 160u].in_attrs[3u].w; gl_out[gl_InvocationID].out_attrs[7u].x = gl_in[(_144 + 112u) / 160u].in_attrs[7u].x; gl_out[gl_InvocationID].out_attrs[7u].y = gl_in[(_144 + 116u) / 160u].in_attrs[7u].y; gl_out[gl_InvocationID].out_attrs[7u].z = gl_in[(_144 + 120u) / 160u].in_attrs[7u].z; gl_out[gl_InvocationID].out_attrs[7u].w = gl_in[(_144 + 124u) / 160u].in_attrs[7u].w; gl_out[gl_InvocationID].out_attrs[8u].x = gl_in[(_144 + 128u) / 160u].in_attrs[8u].x; gl_out[gl_InvocationID].out_attrs[8u].y = gl_in[(_144 + 132u) / 160u].in_attrs[8u].y; gl_out[gl_InvocationID].out_attrs[6u].x = as_type(_224); gl_out[gl_InvocationID].out_attrs[6u].y = as_type(_223); gl_out[gl_InvocationID].out_attrs[6u].z = as_type(_222); gl_out[gl_InvocationID].out_attrs[4u].x = gl_in[(_144 + 64u) / 160u].in_attrs[4u].x; gl_out[gl_InvocationID].out_attrs[4u].y = gl_in[(_144 + 68u) / 160u].in_attrs[4u].y; gl_out[gl_InvocationID].out_attrs[4u].z = gl_in[(_144 + 72u) / 160u].in_attrs[4u].z; gl_out[gl_InvocationID].out_attrs[4u].w = gl_in[(_144 + 76u) / 160u].in_attrs[4u].w; threadgroup_barrier(mem_flags::mem_device | mem_flags::mem_threadgroup); bool _417 = int(1u) > int(gl_InvocationID); if (_417) { uint _454 = 28u + buf4_dword_off; uint _458 = 29u + buf4_dword_off; uint _462 = 30u + buf4_dword_off; uint _466 = 31u + buf4_dword_off; uint _469 = 32u + buf4_dword_off; uint _473 = 33u + buf4_dword_off; uint _477 = 34u + buf4_dword_off; uint _481 = 35u + buf4_dword_off; uint _484 = 36u + buf4_dword_off; uint _488 = 37u + buf4_dword_off; uint _492 = 38u + buf4_dword_off; uint _496 = 39u + buf4_dword_off; uint _501 = 40u + buf4_dword_off; uint _505 = 41u + buf4_dword_off; uint _509 = 42u + buf4_dword_off; uint _513 = 43u + buf4_dword_off; uint _516 = 8u + buf5_dword_off; float _519 = spvFAdd(gl_in[2u].in_attrs[0u].z, gl_in[0u].in_attrs[0u].z); float _520 = spvFAdd(gl_in[0u].in_attrs[0u].z, gl_in[1u].in_attrs[0u].z); float _537 = spvFAdd(gl_in[2u].in_attrs[0u].y, gl_in[0u].in_attrs[0u].y); float _541 = spvFMul(fast::max(_519, _519), 0.5); float _542 = spvFAdd(gl_in[0u].in_attrs[0u].y, gl_in[1u].in_attrs[0u].y); float _544 = spvFMul(fast::max(_520, _520), 0.5); float _545 = spvFAdd(gl_in[2u].in_attrs[0u].z, gl_in[1u].in_attrs[0u].z); uint _546 = 20u + buf4_dword_off; uint _550 = 21u + buf4_dword_off; uint _554 = 22u + buf4_dword_off; float _585 = spvFAdd(gl_in[2u].in_attrs[0u].x, gl_in[0u].in_attrs[0u].x); float _587 = spvFMul(fast::max(_537, _537), 0.5); float _590 = spvFAdd(gl_in[0u].in_attrs[0u].x, gl_in[1u].in_attrs[0u].x); float _593 = spvFMul(fast::max(_542, _542), 0.5); float _596 = spvFAdd(gl_in[2u].in_attrs[0u].y, gl_in[1u].in_attrs[0u].y); float _598 = spvFMul(fast::max(_545, _545), 0.5); float _627 = spvFMul(as_type(cbuf_4.data[_505]), gl_in[1u].in_attrs[5u].y); float _630 = spvFMul(fast::max(_585, _585), 0.5); float _634 = spvFMul(fast::max(_590, _590), 0.5); float _637 = spvFAdd(gl_in[2u].in_attrs[0u].x, gl_in[1u].in_attrs[0u].x); float _639 = spvFMul(fast::max(_596, _596), 0.5); float _664 = spvFMul(as_type(cbuf_4.data[_501]), gl_in[2u].in_attrs[5u].x); float _667 = spvFMul(as_type(cbuf_4.data[_505]), gl_in[2u].in_attrs[5u].y); float _669 = fma(_630, _630, fma(_587, _587, spvFMul(_541, _541))); float _671 = fma(_634, _634, fma(_593, _593, spvFMul(_544, _544))); float _674 = spvFMul(fast::max(_637, _637), 0.5); uint _677 = 4u + buf5_dword_off; uint _680 = 5u + buf5_dword_off; float _712 = rsqrt(_669); float _713 = rsqrt(_671); float _715 = fma(_674, _674, fma(_639, _639, spvFMul(_598, _598))); float _724 = float(spvFAdd(as_type(cbuf_4.data[_481]), spvFAdd(spvFMul(as_type(cbuf_4.data[_477]), gl_in[1u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_469]), gl_in[1u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_473]), gl_in[1u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516]))); float _744 = rsqrt(_715); float _770 = spvFAdd(spvFAdd(float(spvFAdd(as_type(cbuf_4.data[_466]), spvFAdd(spvFMul(as_type(cbuf_4.data[_462]), gl_in[0u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_454]), gl_in[0u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_458]), gl_in[0u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516]))), float(spvFAdd(as_type(cbuf_4.data[_466]), spvFAdd(spvFMul(as_type(cbuf_4.data[_462]), gl_in[1u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_454]), gl_in[1u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_458]), gl_in[1u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516])))), float(spvFAdd(as_type(cbuf_4.data[_466]), spvFAdd(spvFMul(as_type(cbuf_4.data[_462]), gl_in[2u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_454]), gl_in[2u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_458]), gl_in[2u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516])))); float _775 = float(spvFAdd(as_type(cbuf_4.data[_513]), spvFAdd(spvFMul(as_type(cbuf_4.data[_509]), gl_in[0u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_501]), gl_in[0u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_505]), gl_in[0u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516]))); float _777 = float(spvFAdd(as_type(cbuf_4.data[_513]), spvFAdd(spvFMul(as_type(cbuf_4.data[_509]), gl_in[1u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_501]), gl_in[1u].in_attrs[5u].x), _627))) > (-as_type(cbuf_8.data[_516]))); float _791 = spvFAdd(spvFAdd(float(spvFAdd(as_type(cbuf_4.data[_496]), spvFAdd(spvFMul(as_type(cbuf_4.data[_492]), gl_in[0u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_484]), gl_in[0u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_488]), gl_in[0u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516]))), float(spvFAdd(as_type(cbuf_4.data[_496]), spvFAdd(spvFMul(as_type(cbuf_4.data[_492]), gl_in[1u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_484]), gl_in[1u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_488]), gl_in[1u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516])))), float(spvFAdd(as_type(cbuf_4.data[_496]), spvFAdd(spvFMul(as_type(cbuf_4.data[_492]), gl_in[2u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_484]), gl_in[2u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_488]), gl_in[2u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516])))); float _794 = float(spvFAdd(as_type(cbuf_4.data[_513]), spvFAdd(spvFMul(as_type(cbuf_4.data[_509]), gl_in[2u].in_attrs[5u].z), spvFAdd(_664, _667))) > (-as_type(cbuf_8.data[_516]))); float _799 = fma(as_type(cbuf_4.data[_546]), spvFMul(_630, _712), fma(as_type(cbuf_4.data[_550]), spvFMul(_587, _712), spvFMul(as_type(cbuf_4.data[_554]), spvFMul(_541, _712)))); float _802 = fma(as_type(cbuf_4.data[_546]), spvFMul(_634, _713), fma(as_type(cbuf_4.data[_550]), spvFMul(_593, _713), spvFMul(as_type(cbuf_4.data[_554]), spvFMul(_544, _713)))); float _803 = spvFMul(_674, _744); float _807 = spvFAdd(spvFAdd(_775, _777), _794); float _811 = fma(as_type(cbuf_4.data[_546]), _803, fma(as_type(cbuf_4.data[_550]), spvFMul(_639, _744), spvFMul(as_type(cbuf_4.data[_554]), spvFMul(_598, _744)))); bool _825 = (_807 > 0.0) && ((_791 > 0.0) && ((_770 > 0.0) && (spvFAdd(spvFAdd(float(spvFAdd(as_type(cbuf_4.data[_481]), spvFAdd(spvFMul(as_type(cbuf_4.data[_477]), gl_in[0u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_469]), gl_in[0u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_473]), gl_in[0u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516]))), _724), float(spvFAdd(as_type(cbuf_4.data[_481]), spvFAdd(spvFMul(as_type(cbuf_4.data[_477]), gl_in[2u].in_attrs[5u].z), spvFAdd(spvFMul(as_type(cbuf_4.data[_469]), gl_in[2u].in_attrs[5u].x), spvFMul(as_type(cbuf_4.data[_473]), gl_in[2u].in_attrs[5u].y)))) > (-as_type(cbuf_8.data[_516])))) > 0.0))); bool _828 = _417 && (((_811 > (-as_type(cbuf_8.data[_677]))) || ((_799 > (-as_type(cbuf_8.data[_677]))) || (_802 > (-as_type(cbuf_8.data[_677]))))) && _825); uint _1214; uint _1215; uint _1216; uint _1217; uint _1218; uint _1219; uint _1220; uint _1221; uint _1222; uint _1223; uint _1224; uint _1225; uint _1226; uint _1227; uint _1228; uint _1229; uint _1230; uint _1231; uint _1232; uint _1233; uint _1234; uint _1235; uint _1236; uint _1237; uint _1238; uint _1239; uint _1240; uint _1241; uint _1242; uint _1243; uint _1244; uint _1245; uint _1246; if (_828) { uint _829 = 16u + buf4_dword_off; uint _833 = 17u + buf4_dword_off; uint _837 = 18u + buf4_dword_off; float _841 = spvFSub(gl_in[1u].in_attrs[5u].z, gl_in[0u].in_attrs[5u].z); uint _847 = 1u + buf5_dword_off; uint _850 = 2u + buf5_dword_off; float _856 = spvFAdd(gl_in[1u].in_attrs[5u].z, gl_in[2u].in_attrs[5u].z); float _857 = spvFSub(gl_in[1u].in_attrs[5u].y, gl_in[0u].in_attrs[5u].y); float _861 = spvFSub(gl_in[2u].in_attrs[5u].z, gl_in[1u].in_attrs[5u].z); float _862 = spvFSub(gl_in[0u].in_attrs[5u].z, gl_in[2u].in_attrs[5u].z); float _867 = spvFAdd(gl_in[1u].in_attrs[5u].y, gl_in[2u].in_attrs[5u].y); float _870 = spvFSub(gl_in[1u].in_attrs[5u].x, gl_in[0u].in_attrs[5u].x); float _876 = fma(spvFSub(gl_in[0u].in_attrs[5u].x, gl_in[1u].in_attrs[5u].x), gl_in[1u].in_attrs[0u].x, fma(spvFSub(gl_in[0u].in_attrs[5u].y, gl_in[1u].in_attrs[5u].y), gl_in[1u].in_attrs[0u].y, spvFMul(gl_in[1u].in_attrs[0u].z, spvFSub(gl_in[0u].in_attrs[5u].z, gl_in[1u].in_attrs[5u].z)))); float _877 = spvFSub(gl_in[2u].in_attrs[5u].y, gl_in[1u].in_attrs[5u].y); float _880 = spvFSub(gl_in[0u].in_attrs[5u].y, gl_in[2u].in_attrs[5u].y); float _887 = spvFSub(as_type(cbuf_4.data[_837]), spvFMul(spvFAdd(gl_in[0u].in_attrs[5u].z, gl_in[2u].in_attrs[5u].z), 0.5)); float _891 = spvFSub(as_type(cbuf_4.data[_837]), spvFMul(spvFAdd(gl_in[0u].in_attrs[5u].z, gl_in[1u].in_attrs[5u].z), 0.5)); float _892 = spvFAdd(gl_in[1u].in_attrs[5u].x, gl_in[2u].in_attrs[5u].x); float _896 = spvFSub(as_type(cbuf_4.data[_837]), spvFMul(fast::max(_856, _856), 0.5)); float _900 = fma(_870, gl_in[0u].in_attrs[0u].x, fma(_857, gl_in[0u].in_attrs[0u].y, spvFMul(gl_in[0u].in_attrs[0u].z, _841))); float _907 = spvFSub(gl_in[2u].in_attrs[5u].x, gl_in[1u].in_attrs[5u].x); float _911 = spvFSub(gl_in[0u].in_attrs[5u].x, gl_in[2u].in_attrs[5u].x); float _921 = spvFSub(as_type(cbuf_4.data[_833]), spvFMul(spvFAdd(gl_in[0u].in_attrs[5u].y, gl_in[2u].in_attrs[5u].y), 0.5)); float _926 = spvFSub(as_type(cbuf_4.data[_833]), spvFMul(spvFAdd(gl_in[0u].in_attrs[5u].y, gl_in[1u].in_attrs[5u].y), 0.5)); float _931 = spvFSub(as_type(cbuf_4.data[_833]), spvFMul(fast::max(_867, _867), 0.5)); float _934 = fma(-gl_in[0u].in_attrs[0u].x, _900, fma(gl_in[0u].in_attrs[5u].x, 2.0, gl_in[1u].in_attrs[5u].x)); float _936 = fma(-gl_in[0u].in_attrs[0u].y, _900, fma(gl_in[0u].in_attrs[5u].y, 2.0, gl_in[1u].in_attrs[5u].y)); float _938 = fma(-gl_in[0u].in_attrs[0u].z, _900, fma(gl_in[0u].in_attrs[5u].z, 2.0, gl_in[1u].in_attrs[5u].z)); float _940 = spvFMul(0.3333333432674407958984375, fma(-gl_in[1u].in_attrs[0u].x, _876, fma(gl_in[1u].in_attrs[5u].x, 2.0, gl_in[0u].in_attrs[5u].x))); float _942 = spvFMul(0.3333333432674407958984375, fma(-gl_in[1u].in_attrs[0u].y, _876, fma(gl_in[1u].in_attrs[5u].y, 2.0, gl_in[0u].in_attrs[5u].y))); float _944 = spvFMul(0.3333333432674407958984375, fma(-gl_in[1u].in_attrs[0u].z, _876, fma(gl_in[1u].in_attrs[5u].z, 2.0, gl_in[0u].in_attrs[5u].z))); float _949 = fma(_907, gl_in[1u].in_attrs[0u].x, fma(_877, gl_in[1u].in_attrs[0u].y, spvFMul(gl_in[1u].in_attrs[0u].z, _861))); float _961 = spvFSub(as_type(cbuf_4.data[_829]), spvFMul(spvFAdd(gl_in[0u].in_attrs[5u].x, gl_in[2u].in_attrs[5u].x), 0.5)); float _964 = spvFSub(as_type(cbuf_4.data[_829]), spvFMul(spvFAdd(gl_in[0u].in_attrs[5u].x, gl_in[1u].in_attrs[5u].x), 0.5)); float _967 = spvFSub(as_type(cbuf_4.data[_829]), spvFMul(fast::max(_892, _892), 0.5)); float _970 = fma(-gl_in[1u].in_attrs[0u].x, _949, fma(gl_in[1u].in_attrs[5u].x, 2.0, gl_in[2u].in_attrs[5u].x)); float _972 = fma(-gl_in[1u].in_attrs[0u].y, _949, fma(gl_in[1u].in_attrs[5u].y, 2.0, gl_in[2u].in_attrs[5u].y)); float _974 = fma(-gl_in[1u].in_attrs[0u].z, _949, fma(gl_in[1u].in_attrs[5u].z, 2.0, gl_in[2u].in_attrs[5u].z)); float _978 = fma(spvFSub(gl_in[1u].in_attrs[5u].x, gl_in[2u].in_attrs[5u].x), gl_in[2u].in_attrs[0u].x, fma(spvFSub(gl_in[1u].in_attrs[5u].y, gl_in[2u].in_attrs[5u].y), gl_in[2u].in_attrs[0u].y, spvFMul(gl_in[2u].in_attrs[0u].z, spvFSub(gl_in[1u].in_attrs[5u].z, gl_in[2u].in_attrs[5u].z)))); uint _994 = 24u + buf4_dword_off; float _1001 = fma(-gl_in[2u].in_attrs[0u].x, _978, fma(gl_in[2u].in_attrs[5u].x, 2.0, gl_in[1u].in_attrs[5u].x)); float _1003 = fma(-gl_in[2u].in_attrs[0u].y, _978, fma(gl_in[2u].in_attrs[5u].y, 2.0, gl_in[1u].in_attrs[5u].y)); float _1005 = fma(-gl_in[2u].in_attrs[0u].z, _978, fma(gl_in[2u].in_attrs[5u].z, 2.0, gl_in[1u].in_attrs[5u].z)); float _1009 = fma(_911, gl_in[2u].in_attrs[0u].x, fma(_880, gl_in[2u].in_attrs[0u].y, spvFMul(gl_in[2u].in_attrs[0u].z, _862))); float _1015 = spvFMul(spvFMul(fma(_870, _590, fma(_857, _542, spvFMul(_520, _841))), 2.0), 1.0 / fma(_870, _870, fma(_857, _857, spvFMul(_841, _841)))); float _1016 = spvFMul(spvFMul(fma(_907, _637, fma(_877, _596, spvFMul(_545, _861))), 2.0), 1.0 / fma(_907, _907, fma(_877, _877, spvFMul(_861, _861)))); float _1017 = spvFMul(spvFMul(fma(_911, _585, fma(_880, _537, spvFMul(_519, _862))), 2.0), 1.0 / fma(_911, _911, fma(_880, _880, spvFMul(_862, _862)))); float _1036 = fma(-gl_in[2u].in_attrs[0u].x, _1009, fma(gl_in[2u].in_attrs[5u].x, 2.0, gl_in[0u].in_attrs[5u].x)); float _1038 = fma(-gl_in[2u].in_attrs[0u].y, _1009, fma(gl_in[2u].in_attrs[5u].y, 2.0, gl_in[0u].in_attrs[5u].y)); float _1040 = fma(-gl_in[2u].in_attrs[0u].z, _1009, fma(gl_in[2u].in_attrs[5u].z, 2.0, gl_in[0u].in_attrs[5u].z)); float _1044 = fma(spvFSub(gl_in[2u].in_attrs[5u].x, gl_in[0u].in_attrs[5u].x), gl_in[0u].in_attrs[0u].x, fma(spvFSub(gl_in[2u].in_attrs[5u].y, gl_in[0u].in_attrs[5u].y), gl_in[0u].in_attrs[0u].y, spvFMul(gl_in[0u].in_attrs[0u].z, spvFSub(gl_in[2u].in_attrs[5u].z, gl_in[0u].in_attrs[5u].z)))); float _1049 = fma(-_1015, _841, _520); float _1051 = fma(-_1016, _861, _545); float _1053 = fma(-_1017, _862, _519); float _1056 = 1.0 / spvFMul(as_type(cbuf_8.data[6u + buf5_dword_off]), as_type(cbuf_8.data[3u + buf5_dword_off])); float _1063 = 1.0 / spvFSub(1.0, as_type(cbuf_8.data[_680])); float _1069 = fma(-gl_in[0u].in_attrs[0u].x, _1044, fma(gl_in[0u].in_attrs[5u].x, 2.0, gl_in[2u].in_attrs[5u].x)); float _1071 = fma(-gl_in[0u].in_attrs[0u].y, _1044, fma(gl_in[0u].in_attrs[5u].y, 2.0, gl_in[2u].in_attrs[5u].y)); float _1073 = fma(-gl_in[0u].in_attrs[0u].z, _1044, fma(gl_in[0u].in_attrs[5u].z, 2.0, gl_in[2u].in_attrs[5u].z)); float _1081 = fma(-_1015, _857, _542); float _1084 = fma(-_1016, _877, _596); float _1087 = fma(-_1017, _880, _537); float _1099 = spvFSub(as_type(cbuf_8.data[0u + buf5_dword_off]), as_type(cbuf_8.data[_847])); float _1104 = fma(_1069, 0.3333333432674407958984375, fma(_1036, 0.3333333432674407958984375, fma(_1001, 0.3333333432674407958984375, fma(_970, 0.3333333432674407958984375, fma(_934, 0.3333333432674407958984375, _940))))); float _1105 = fma(_1071, 0.3333333432674407958984375, fma(_1038, 0.3333333432674407958984375, fma(_1003, 0.3333333432674407958984375, fma(_972, 0.3333333432674407958984375, fma(_936, 0.3333333432674407958984375, _942))))); float _1106 = fma(_1073, 0.3333333432674407958984375, fma(_1040, 0.3333333432674407958984375, fma(_1005, 0.3333333432674407958984375, fma(_974, 0.3333333432674407958984375, fma(_938, 0.3333333432674407958984375, _944))))); float _1111 = fma(-_1015, _870, _590); float _1114 = fma(-_1016, _907, _637); float _1117 = fma(-_1017, _911, _585); float _1151 = rsqrt(fma(_1111, _1111, fma(_1081, _1081, spvFMul(_1049, _1049)))); float _1152 = rsqrt(fma(_1114, _1114, fma(_1084, _1084, spvFMul(_1051, _1051)))); float _1153 = rsqrt(fma(_1117, _1117, fma(_1087, _1087, spvFMul(_1053, _1053)))); _1214 = as_type(spvFMul(0.3333333432674407958984375, _972)); _1215 = as_type(spvFMul(0.3333333432674407958984375, _970)); _1216 = as_type(spvFMul(0.3333333432674407958984375, _1005)); _1217 = as_type(spvFMul(0.3333333432674407958984375, _1003)); _1218 = as_type(spvFMul(0.3333333432674407958984375, _1001)); _1219 = as_type(spvFMul(0.3333333432674407958984375, _1040)); _1220 = as_type(spvFMul(0.3333333432674407958984375, _1038)); _1221 = as_type(spvFMul(0.3333333432674407958984375, _1036)); _1222 = as_type(spvFMul(0.3333333432674407958984375, _1073)); _1223 = as_type(spvFMul(0.3333333432674407958984375, _1071)); _1224 = as_type(spvFMul(0.3333333432674407958984375, _1069)); _1225 = as_type(fma(_1106, 0.16666667163372039794921875, spvFMul(0.5, fma(_1106, 0.16666667163372039794921875, -spvFMul(0.3333333432674407958984375, spvFAdd(gl_in[0u].in_attrs[5u].z, _856)))))); _1226 = as_type(fma(_1105, 0.16666667163372039794921875, spvFMul(0.5, fma(_1105, 0.16666667163372039794921875, -spvFMul(0.3333333432674407958984375, spvFAdd(gl_in[0u].in_attrs[5u].y, _867)))))); _1227 = as_type(fma(_1104, 0.16666667163372039794921875, spvFMul(0.5, fma(_1104, 0.16666667163372039794921875, -spvFMul(0.3333333432674407958984375, spvFAdd(gl_in[0u].in_attrs[5u].x, _892)))))); _1228 = as_type(spvFMul(_1049, _1151)); _1229 = as_type(spvFMul(_1081, _1151)); _1230 = as_type(spvFMul(_1111, _1151)); _1231 = as_type(spvFMul(_1051, _1152)); _1232 = as_type(_944); _1233 = as_type(_942); _1234 = as_type(spvFMul(_1084, _1152)); _1235 = as_type(spvFMul(_1114, _1152)); _1236 = as_type(spvFMul(_1053, _1153)); _1237 = as_type(spvFMul(_1087, _1153)); _1238 = as_type(spvFMul(_1117, _1153)); _1239 = as_type(fma(spvFMul(as_type(cbuf_4.data[_994]), spvFSub(1.0, fast::clamp(spvFMul(spvFSub(sqrt(fma(_964, _964, fma(_926, _926, spvFMul(_891, _891)))), as_type(cbuf_8.data[_850])), _1056), 0.0, 1.0))), spvFAdd(-1.0, fma(fast::clamp(spvFMul(spvFSub(spvFAdd(-abs(_802), 1.0), as_type(cbuf_8.data[_680])), _1063), 0.0, 1.0), _1099, as_type(cbuf_8.data[_847]))), 1.0)); _1240 = as_type(_940); _1241 = as_type(spvFMul(0.3333333432674407958984375, _934)); _1242 = as_type(spvFMul(0.3333333432674407958984375, _974)); _1243 = as_type(spvFMul(0.3333333432674407958984375, _938)); _1244 = as_type(spvFMul(0.3333333432674407958984375, _936)); _1245 = as_type(fma(spvFMul(as_type(cbuf_4.data[_994]), spvFSub(1.0, fast::clamp(spvFMul(spvFSub(sqrt(fma(_967, _967, fma(_931, _931, spvFMul(_896, _896)))), as_type(cbuf_8.data[_850])), _1056), 0.0, 1.0))), spvFAdd(-1.0, fma(fast::clamp(spvFMul(spvFSub(spvFAdd(-abs(_811), 1.0), as_type(cbuf_8.data[_680])), _1063), 0.0, 1.0), _1099, as_type(cbuf_8.data[_847]))), 1.0)); _1246 = as_type(fma(spvFMul(as_type(cbuf_4.data[_994]), spvFSub(1.0, fast::clamp(spvFMul(spvFSub(sqrt(fma(_961, _961, fma(_921, _921, spvFMul(_887, _887)))), as_type(cbuf_8.data[_850])), _1056), 0.0, 1.0))), spvFAdd(-1.0, fma(fast::clamp(spvFMul(spvFSub(spvFAdd(-abs(_799), 1.0), as_type(cbuf_8.data[_680])), _1063), 0.0, 1.0), _1099, as_type(cbuf_8.data[_847]))), 1.0)); } else { _1214 = _106; _1215 = _107; _1216 = _108; _1217 = _109; _1218 = _110; _1219 = _111; _1220 = as_type(_715); _1221 = as_type(_639); _1222 = as_type(_634); _1223 = as_type(_630); _1224 = as_type(_627); _1225 = as_type(_674); _1226 = as_type(_598); _1227 = as_type(_671); _1228 = as_type(_593); _1229 = as_type(_590); _1230 = as_type(_669); _1231 = as_type(_587); _1232 = as_type(_667); _1233 = as_type(_664); _1234 = as_type(_724); _1235 = as_type(_777); _1236 = as_type(_775); _1237 = as_type(_713); _1238 = as_type(_794); _1239 = as_type(_791); _1240 = as_type(_770); _1241 = as_type(_744); _1242 = as_type(_799); _1243 = as_type(_807); _1244 = as_type(_803); _1245 = as_type(gl_in[2u].in_attrs[5u].y); _1246 = as_type(gl_in[1u].in_attrs[0u].x); } bool _1248 = _417 && (!_828); uint _1249; if (_1248) { _1249 = 0u; } else { _1249 = _1246; } uint _1250; uint _1251; uint _1252; uint _1253; uint _1254; uint _1255; uint _1256; uint _1257; uint _1258; uint _1259; uint _1260; uint _1261; uint _1262; uint _1263; uint _1264; uint _1265; uint _1266; uint _1267; uint _1268; uint _1269; uint _1270; uint _1271; uint _1272; uint _1273; uint _1274; uint _1275; uint _1276; uint _1277; uint _1278; uint _1279; uint _1280; uint _1281; if (_1248) { _1250 = 0u; _1251 = 0u; _1252 = 0u; _1253 = 0u; _1254 = 0u; _1255 = 0u; _1256 = 0u; _1257 = 0u; _1258 = 0u; _1259 = 0u; _1260 = 0u; _1261 = 0u; _1262 = 0u; _1263 = 0u; _1264 = 0u; _1265 = 0u; _1266 = 0u; _1267 = 0u; _1268 = 0u; _1269 = 0u; _1270 = 0u; _1271 = 0u; _1272 = 0u; _1273 = 0u; _1274 = 0u; _1275 = 0u; _1276 = 0u; _1277 = 0u; _1278 = 0u; _1279 = 0u; _1280 = 0u; _1281 = 0u; } else { _1250 = _1236; _1251 = _1231; _1252 = _1237; _1253 = _1238; _1254 = _1234; _1255 = _1235; _1256 = _1228; _1257 = _1225; _1258 = _1229; _1259 = _1230; _1260 = _1226; _1261 = _1227; _1262 = _1222; _1263 = _1219; _1264 = _1223; _1265 = _1224; _1266 = _1220; _1267 = _1221; _1268 = _1216; _1269 = _1242; _1270 = _1217; _1271 = _1218; _1272 = _1214; _1273 = _1215; _1274 = _1232; _1275 = _1243; _1276 = _1233; _1277 = _1240; _1278 = _1244; _1279 = _1241; _1280 = _1239; _1281 = _1245; } float _1289 = fast::min(16.0, as_type(_1249)); float _1291 = fast::min(16.0, as_type(_1280)); float _1294 = fast::min(16.0, as_type(_1281)); ((device float*)&patchOut.patch_out0)[0u] = _1289; ((device float*)&patchOut.patch_out1)[0u] = _1291; float _1297 = fast::min(16.0, spvFMul(0.3333333432674407958984375, spvFAdd(as_type(_1249), spvFAdd(as_type(_1281), as_type(_1280))))); ((device float*)&patchOut.patch_out2)[0u] = _1294; ((device float*)&patchOut.patch_out3)[0u] = _1297; ((device float*)&patchOut.patch_out4)[0u] = as_type(_1279); ((device float*)&patchOut.patch_out4)[1u] = as_type(_1278); ((device float*)&patchOut.patch_out5)[0u] = as_type(_1277); ((device float*)&patchOut.patch_out5)[1u] = as_type(_1276); ((device float*)&patchOut.patch_out4)[2u] = as_type(_1275); ((device float*)&patchOut.patch_out5)[2u] = as_type(_1274); ((device float*)&patchOut.patch_out6)[0u] = as_type(_1273); ((device float*)&patchOut.patch_out6)[1u] = as_type(_1272); ((device float*)&patchOut.patch_out7)[0u] = as_type(_1271); ((device float*)&patchOut.patch_out7)[1u] = as_type(_1270); ((device float*)&patchOut.patch_out6)[2u] = as_type(_1269); ((device float*)&patchOut.patch_out7)[2u] = as_type(_1268); ((device float*)&patchOut.patch_out8)[0u] = as_type(_1267); ((device float*)&patchOut.patch_out8)[1u] = as_type(_1266); ((device float*)&patchOut.patch_out9)[0u] = as_type(_1265); ((device float*)&patchOut.patch_out9)[1u] = as_type(_1264); ((device float*)&patchOut.patch_out8)[2u] = as_type(_1263); ((device float*)&patchOut.patch_out9)[2u] = as_type(_1262); ((device float*)&patchOut.patch_out10)[0u] = as_type(_1261); ((device float*)&patchOut.patch_out10)[1u] = as_type(_1260); ((device float*)&patchOut.patch_out11)[0u] = as_type(_1259); ((device float*)&patchOut.patch_out11)[1u] = as_type(_1258); ((device float*)&patchOut.patch_out10)[2u] = as_type(_1257); ((device float*)&patchOut.patch_out11)[2u] = as_type(_1256); ((device float*)&patchOut.patch_out12)[0u] = as_type(_1255); ((device float*)&patchOut.patch_out12)[1u] = as_type(_1254); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[0u] = half(_1289); ((device float*)&patchOut.patch_out13)[0u] = as_type(_1253); ((device float*)&patchOut.patch_out13)[1u] = as_type(_1252); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[1u] = half(_1291); ((device float*)&patchOut.patch_out12)[2u] = as_type(_1251); ((device float*)&patchOut.patch_out13)[2u] = as_type(_1250); spvTessLevel[gl_PrimitiveID].edgeTessellationFactor[2u] = half(_1294); spvTessLevel[gl_PrimitiveID].insideTessellationFactor = half(_1297); } if (!_417) { } } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #pragma clang diagnostic ignored "-Wmissing-braces" #include #include using namespace metal; template struct spvUnsafeArray { T elements[Num ? Num : 1]; thread T& operator [] (size_t pos) thread { return elements[pos]; } constexpr const thread T& operator [] (size_t pos) const thread { return elements[pos]; } device T& operator [] (size_t pos) device { return elements[pos]; } constexpr const device T& operator [] (size_t pos) const device { return elements[pos]; } constexpr const constant T& operator [] (size_t pos) const constant { return elements[pos]; } threadgroup T& operator [] (size_t pos) threadgroup { return elements[pos]; } constexpr const threadgroup T& operator [] (size_t pos) const threadgroup { return elements[pos]; } }; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct vs_cbuf_block_f32 { uint data[12]; }; struct vs_cbuf_block_f32_1 { uint data[164]; }; struct vs_cbuf_block_f32_2 { uint data[48]; }; struct vs_cbuf_block_f32_3 { uint data[216]; }; struct main0_out { float4 out_attr0 [[user(locn0)]]; float4 out_attr1 [[user(locn1)]]; float4 out_attr2 [[user(locn2)]]; float4 out_attr3 [[user(locn3)]]; float4 out_attr4 [[user(locn4)]]; float4 out_attr5 [[user(locn5)]]; float4 out_attr6 [[user(locn6)]]; float4 out_attr7 [[user(locn7)]]; float4 out_attr8 [[user(locn8)]]; float4 out_attr9 [[user(locn9)]]; float4 gl_Position [[position]]; }; struct main0_in { spvUnsafeArray in_attrs; }; [[ patch(triangle, 3) ]] vertex main0_out main0(constant AuxData& push_data [[buffer(8)]], constant vs_cbuf_block_f32_1& cbuf_24 [[buffer(16)]], constant vs_cbuf_block_f32& cbuf_20 [[buffer(17)]], constant vs_cbuf_block_f32_2& cbuf_16 [[buffer(18)]], constant vs_cbuf_block_f32_3& cbuf_28 [[buffer(19)]], texture2d vs_img4 [[texture(6)]], sampler vs_samp12 [[sampler(3)]], float3 gl_TessCoord [[position_in_patch]], uint gl_PrimitiveID [[patch_id]], const device main0_in* spvIn [[buffer(30)]]) { main0_out out = {}; const device main0_in* gl_in = &spvIn[gl_PrimitiveID * 3]; uint buf7_dword_off = extract_bits(push_data.buf_offsets0[1u], 24u, 8u) >> 2u; uint buf8_dword_off = extract_bits(push_data.buf_offsets0[2u], 0u, 8u) >> 2u; uint buf9_dword_off = extract_bits(push_data.buf_offsets0[2u], 8u, 8u) >> 2u; uint buf10_dword_off = extract_bits(push_data.buf_offsets0[2u], 16u, 8u) >> 2u; float _126 = spvFSub(1.0, spvFAdd(gl_TessCoord.x, gl_TessCoord.y)); uint _128 = 152u + buf7_dword_off; uint _132 = 153u + buf7_dword_off; uint _136 = 154u + buf7_dword_off; uint _163 = 8u + buf8_dword_off; float _248 = spvFSub(0.0, as_type(cbuf_24.data[_132])); float _251 = spvFSub(as_type(cbuf_24.data[156u + buf7_dword_off]), as_type(cbuf_24.data[_128])); float _254 = spvFSub(as_type(cbuf_24.data[157u + buf7_dword_off]), as_type(cbuf_24.data[_132])); float _273 = spvFSub(as_type(cbuf_24.data[158u + buf7_dword_off]), as_type(cbuf_24.data[_136])); float _278 = sqrt(fma(_251, _251, fma(_254, _254, spvFMul(_273, _273)))); float _283 = spvFSub(as_type(cbuf_24.data[160u + buf7_dword_off]), as_type(cbuf_24.data[_128])); float _286 = spvFSub(as_type(cbuf_24.data[161u + buf7_dword_off]), as_type(cbuf_24.data[_132])); float _289 = spvFSub(as_type(cbuf_24.data[162u + buf7_dword_off]), as_type(cbuf_24.data[_136])); float _293 = sqrt(fma(_283, _283, fma(_286, _286, spvFMul(_289, _289)))); float _321 = fma(gl_TessCoord.y, gl_in[2u].in_attrs[5u].x, fma(_126, gl_in[0u].in_attrs[5u].x, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[5u].x))); float _323 = fma(gl_TessCoord.y, gl_in[2u].in_attrs[5u].z, fma(_126, gl_in[0u].in_attrs[5u].z, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[5u].z))); float _325 = spvFSub(_321, as_type(cbuf_24.data[_128])); float _327 = spvFSub(_323, as_type(cbuf_24.data[_136])); float _332 = fast::clamp(spvFMul(fma(_325, _251, fma(_248, _254, spvFMul(_327, _273))), 1.0 / spvFMul(_278, _278)), 0.0, 1.0); float _337 = fast::clamp(spvFMul(fma(_325, _283, fma(_248, _286, spvFMul(_327, _289))), 1.0 / spvFMul(_293, _293)), 0.0, 1.0); float _362 = fma(gl_in[2u].in_attrs[0u].x, gl_TessCoord.y, fma(gl_in[0u].in_attrs[0u].x, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[0u].x))); float _363 = fma(gl_in[2u].in_attrs[0u].y, gl_TessCoord.y, fma(gl_in[0u].in_attrs[0u].y, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[0u].y))); float _364 = fma(gl_in[2u].in_attrs[0u].z, gl_TessCoord.y, fma(gl_in[0u].in_attrs[0u].z, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[0u].z))); float _368 = rsqrt(fma(_362, _362, fma(_363, _363, spvFMul(_364, _364)))); float _404 = fma(gl_in[2u].in_attrs[1u].x, gl_TessCoord.y, fma(gl_in[0u].in_attrs[1u].x, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[1u].x))); float _405 = fma(gl_in[2u].in_attrs[1u].y, gl_TessCoord.y, fma(gl_in[0u].in_attrs[1u].y, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[1u].y))); float _406 = fma(gl_in[2u].in_attrs[1u].z, gl_TessCoord.y, fma(gl_in[0u].in_attrs[1u].z, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[1u].z))); float _407 = fma(gl_in[2u].in_attrs[1u].w, gl_TessCoord.y, fma(gl_in[0u].in_attrs[1u].w, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[1u].w))); float4 _413 = vs_img4.sample(vs_samp12, float2(_332, _337), level(0.0)); float _414 = _413.x; float _418 = rsqrt(fma(_404, _404, fma(_405, _405, fma(_406, _406, spvFMul(_407, _407))))); out.out_attr1.x = spvFMul(_404, _418); out.out_attr1.y = spvFMul(_405, _418); out.out_attr1.z = spvFMul(_406, _418); out.out_attr1.w = spvFMul(_407, _418); float _429 = spvFSub(spvFMul(as_type(cbuf_20.data[_163]), _414), spvFMul(as_type(cbuf_20.data[_163]), as_type(cbuf_20.data[9u + buf8_dword_off]))); float _430 = spvFAdd(fma(gl_TessCoord.y, gl_in[2u].in_attrs[5u].y, fma(_126, gl_in[0u].in_attrs[5u].y, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[5u].y))), _429); float _431 = fma(0.0, _429, _321); float _432 = fma(0.0, _429, _323); float _454 = fma(as_type(cbuf_16.data[0u + buf9_dword_off]), _431, fma(as_type(cbuf_16.data[1u + buf9_dword_off]), _430, fma(as_type(cbuf_16.data[2u + buf9_dword_off]), _432, as_type(cbuf_16.data[3u + buf9_dword_off])))); float _456 = fma(as_type(cbuf_16.data[4u + buf9_dword_off]), _431, fma(as_type(cbuf_16.data[5u + buf9_dword_off]), _430, fma(as_type(cbuf_16.data[6u + buf9_dword_off]), _432, as_type(cbuf_16.data[7u + buf9_dword_off])))); float _458 = fma(as_type(cbuf_16.data[8u + buf9_dword_off]), _431, fma(as_type(cbuf_16.data[9u + buf9_dword_off]), _430, fma(as_type(cbuf_16.data[10u + buf9_dword_off]), _432, as_type(cbuf_16.data[11u + buf9_dword_off])))); float _460 = fma(as_type(cbuf_16.data[12u + buf9_dword_off]), _431, fma(as_type(cbuf_16.data[13u + buf9_dword_off]), _430, fma(as_type(cbuf_16.data[14u + buf9_dword_off]), _432, as_type(cbuf_16.data[15u + buf9_dword_off])))); out.gl_Position.x = _454; out.gl_Position.y = _456; out.gl_Position.z = _458; out.gl_Position.w = _460; out.out_attr6.x = _454; out.out_attr6.y = _456; out.out_attr6.z = _458; out.out_attr6.w = _460; float _520 = fma(gl_in[2u].in_attrs[2u].x, gl_TessCoord.y, fma(gl_in[0u].in_attrs[2u].x, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[2u].x))); float _521 = fma(gl_in[2u].in_attrs[2u].y, gl_TessCoord.y, fma(gl_in[0u].in_attrs[2u].y, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[2u].y))); float _522 = fma(gl_in[2u].in_attrs[2u].z, gl_TessCoord.y, fma(gl_in[0u].in_attrs[2u].z, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[2u].z))); float _523 = fma(gl_in[2u].in_attrs[2u].w, gl_TessCoord.y, fma(gl_in[0u].in_attrs[2u].w, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[2u].w))); float _528 = rsqrt(fma(_520, _520, fma(_521, _521, fma(_522, _522, spvFMul(_523, _523))))); out.out_attr2.x = spvFMul(_520, _528); out.out_attr2.y = spvFMul(_521, _528); out.out_attr2.z = spvFMul(_522, _528); out.out_attr2.w = spvFMul(_523, _528); out.out_attr5.x = fma(gl_in[2u].in_attrs[7u].x, gl_TessCoord.y, fma(gl_in[0u].in_attrs[7u].x, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[7u].x))); out.out_attr5.y = fma(gl_in[2u].in_attrs[7u].y, gl_TessCoord.y, fma(gl_in[0u].in_attrs[7u].y, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[7u].y))); out.out_attr5.z = fma(gl_in[2u].in_attrs[7u].z, gl_TessCoord.y, fma(gl_in[0u].in_attrs[7u].z, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[7u].z))); out.out_attr5.w = fma(gl_in[2u].in_attrs[7u].w, gl_TessCoord.y, fma(gl_in[0u].in_attrs[7u].w, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[7u].w))); out.out_attr7.x = spvFSub(as_type(cbuf_16.data[16u + buf9_dword_off]), _431); out.out_attr7.y = spvFSub(as_type(cbuf_16.data[17u + buf9_dword_off]), _430); out.out_attr7.z = spvFSub(as_type(cbuf_16.data[18u + buf9_dword_off]), _432); out.out_attr7.w = fast::clamp(spvFMul(_414, 10.0), 0.0, 1.0); out.out_attr0.x = spvFMul(_362, _368); out.out_attr0.y = spvFMul(_363, _368); out.out_attr0.z = spvFMul(_364, _368); out.out_attr0.w = 0.0; out.out_attr3.x = 0.0; out.out_attr3.y = 0.0; out.out_attr3.z = 0.0; out.out_attr3.w = 0.0; out.out_attr9.x = fma(as_type(cbuf_28.data[196u + buf10_dword_off]), _454, fma(as_type(cbuf_28.data[197u + buf10_dword_off]), _456, fma(as_type(cbuf_28.data[198u + buf10_dword_off]), _458, spvFMul(as_type(cbuf_28.data[199u + buf10_dword_off]), _460)))); out.out_attr9.y = 0.0; out.out_attr9.z = 0.0; out.out_attr9.w = 1.0; out.out_attr4.x = fma(gl_in[2u].in_attrs[4u].x, gl_TessCoord.y, fma(gl_in[0u].in_attrs[4u].x, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[4u].x))); out.out_attr4.y = fma(gl_in[2u].in_attrs[4u].y, gl_TessCoord.y, fma(gl_in[0u].in_attrs[4u].y, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[4u].y))); out.out_attr4.z = fma(gl_in[2u].in_attrs[4u].z, gl_TessCoord.y, fma(gl_in[0u].in_attrs[4u].z, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[4u].z))); out.out_attr4.w = fma(gl_in[2u].in_attrs[4u].w, gl_TessCoord.y, fma(gl_in[0u].in_attrs[4u].w, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[4u].w))); out.out_attr8.x = fma(gl_in[2u].in_attrs[8u].x, gl_TessCoord.y, fma(gl_in[0u].in_attrs[8u].x, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[8u].x))); out.out_attr8.y = fma(gl_in[2u].in_attrs[8u].y, gl_TessCoord.y, fma(gl_in[0u].in_attrs[8u].y, _126, spvFMul(gl_TessCoord.x, gl_in[1u].in_attrs[8u].y))); out.out_attr8.z = _332; out.out_attr8.w = _337; out.gl_Position.y = -(out.gl_Position.y); // Invert Y-axis for Metal return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [mvk-info] Converting SPIR-V: Decompiled SPIR-V is unavailable. To log decompiled SPIR-V code, build MoltenVK without the MVK_EXCLUDE_SPIRV_TOOLS build setting. End SPIR-V Converted MSL: #pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; template [[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template [[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) { vec tmp(0); for (uint j = 0; j < Cols; ++j) { tmp[j] = m[j][i - 1]; } res = fma(tmp, vec(v[i - 1]), res); } return res; } template [[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) { res = fma(m[i - 1], vec(v[i - 1]), res); } return res; } template [[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) { vec tmp(0); for (uint j = 0; j < LCols; j++) { tmp = fma(vec(r[i][j]), l[j], tmp); } res[i] = tmp; } return res; } template [[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } struct full_result_i32x2 { int _m0; int _m1; }; struct full_result_u32x2 { uint _m0; uint _m1; }; struct frexp_result_f32 { float _m0; uint _m1; }; struct AuxData { uint sr0; uint sr1; packed_uint4 buf_offsets0; packed_uint4 buf_offsets1; packed_uint4 ud_regs0; packed_uint4 ud_regs1; packed_uint4 ud_regs2; packed_uint4 ud_regs3; }; struct fs_cbuf_block_f32 { uint data[44]; }; struct fs_cbuf_block_f32_1 { uint data[96]; }; struct fs_cbuf_block_f32_2 { uint data[100]; }; struct fs_cbuf_block_f32_3 { uint data[216]; }; struct main0_out { float4 frag_color0 [[color(0)]]; }; struct main0_in { float4 fs_in_attr4 [[user(locn4)]]; float4 fs_in_attr5 [[user(locn5)]]; float4 fs_in_attr6 [[user(locn6)]]; float4 fs_in_attr8 [[user(locn8)]]; }; fragment main0_out main0(main0_in in [[stage_in]], constant AuxData& push_data [[buffer(8)]], constant fs_cbuf_block_f32& cbuf_32 [[buffer(9)]], constant fs_cbuf_block_f32_1& cbuf_24 [[buffer(10)]], constant fs_cbuf_block_f32_2& cbuf_20 [[buffer(11)]], constant fs_cbuf_block_f32_3& cbuf_28 [[buffer(12)]], texture2d fs_img60 [[texture(0)]], texture2d fs_img44 [[texture(1)]], texture2d fs_img68 [[texture(2)]], texture2d fs_img76 [[texture(3)]], texture2d fs_img36 [[texture(4)]], texture2d fs_img52 [[texture(5)]], sampler fs_samp8 [[sampler(0)]], sampler fs_samp16 [[sampler(1)]], sampler fs_samp4 [[sampler(2)]]) { main0_out out = {}; uint buf1_dword_off = extract_bits(push_data.buf_offsets0[0u], 8u, 8u) >> 2u; uint buf2_dword_off = extract_bits(push_data.buf_offsets0[0u], 16u, 8u) >> 2u; uint buf3_dword_off = extract_bits(push_data.buf_offsets0[0u], 24u, 8u) >> 2u; uint _109 = 36u + (extract_bits(push_data.buf_offsets0[0u], 0u, 8u) >> 2u); float _277 = 1.0 / in.fs_in_attr6.w; float4 _312 = fs_img36.sample(fs_samp4, float2(fma(in.fs_in_attr5.x, as_type(cbuf_20.data[0u + buf2_dword_off]), as_type(cbuf_20.data[2u + buf2_dword_off])), fma(in.fs_in_attr5.y, as_type(cbuf_20.data[1u + buf2_dword_off]), as_type(cbuf_20.data[3u + buf2_dword_off])))); float _313 = _312.w; float _344 = spvFSub(1.0, fs_img60.sample(fs_samp8, float2(fma(as_type(cbuf_20.data[40u + buf2_dword_off]), fma(as_type(cbuf_24.data[66u + buf1_dword_off]), as_type(cbuf_32.data[_109]), in.fs_in_attr5.z), as_type(cbuf_20.data[42u + buf2_dword_off])), fma(as_type(cbuf_20.data[41u + buf2_dword_off]), fma(as_type(cbuf_24.data[67u + buf1_dword_off]), as_type(cbuf_32.data[_109]), in.fs_in_attr5.w), as_type(cbuf_20.data[43u + buf2_dword_off])))).z); float _348 = spvFSub(1.0, fs_img68.sample(fs_samp8, float2(fma(as_type(cbuf_20.data[64u + buf2_dword_off]), fma(as_type(cbuf_24.data[72u + buf1_dword_off]), as_type(cbuf_32.data[_109]), in.fs_in_attr8.x), as_type(cbuf_20.data[66u + buf2_dword_off])), fma(as_type(cbuf_20.data[65u + buf2_dword_off]), fma(as_type(cbuf_24.data[73u + buf1_dword_off]), as_type(cbuf_32.data[_109]), in.fs_in_attr8.y), as_type(cbuf_20.data[67u + buf2_dword_off])))).z); float _351 = spvFSub(1.0, fma(-spvFSub(1.0, fma(-fs_img44.sample(fs_samp8, float2(fma(as_type(cbuf_20.data[12u + buf2_dword_off]), fma(as_type(cbuf_24.data[64u + buf1_dword_off]), as_type(cbuf_32.data[_109]), in.fs_in_attr5.x), as_type(cbuf_20.data[14u + buf2_dword_off])), fma(as_type(cbuf_20.data[13u + buf2_dword_off]), fma(as_type(cbuf_24.data[65u + buf1_dword_off]), as_type(cbuf_32.data[_109]), in.fs_in_attr5.y), as_type(cbuf_20.data[15u + buf2_dword_off])))).z, _344, _344)), _348, _348)); float _355 = spvFSub(1.0, in.fs_in_attr4.z); float _374 = spvFMul(fma(spvFSub(1.0, fma(-spvFMul(_351, _351), _355, _355)), spvFSub(fs_img52.sample(fs_samp4, float2(fma(in.fs_in_attr5.z, as_type(cbuf_20.data[28u + buf2_dword_off]), as_type(cbuf_20.data[30u + buf2_dword_off])), fma(in.fs_in_attr5.w, as_type(cbuf_20.data[29u + buf2_dword_off]), as_type(cbuf_20.data[31u + buf2_dword_off])))).w, _313), _313), in.fs_in_attr4.w); out.frag_color0.x = as_type(cbuf_24.data[80u + buf1_dword_off]); out.frag_color0.y = as_type(cbuf_24.data[81u + buf1_dword_off]); out.frag_color0.z = as_type(cbuf_24.data[82u + buf1_dword_off]); out.frag_color0.w = fma(in.fs_in_attr4.w, _374, -spvFMul(spvFMul(in.fs_in_attr4.w, _374), 1.0 / fma(as_type(cbuf_24.data[83u + buf1_dword_off]), fast::max(0.0, fma(-as_type(cbuf_28.data[70u + buf3_dword_off]), 1.0 / spvFSub(as_type(cbuf_28.data[68u + buf3_dword_off]), fs_img76.sample(fs_samp16, float2(fma(0.5, spvFMul(in.fs_in_attr6.x, _277), 0.5), fma(-0.5, spvFMul(in.fs_in_attr6.y, _277), 0.5))).x), -in.fs_in_attr6.w)), 1.0))); return out; } End MSL [mvk-info] Compiling Metal shader with FastMath enabled. [Debug] vk_graphics_pipeline.cpp:operator():323: Assertion Failed! Failed to create graphics pipeline: ErrorInitializationFailed [1] 68165 trace trap ➜ Downloads