-
-
Save seanbaxter/624c236a809f692116ff3f67a6b68038 to your computer and use it in GitHub Desktop.
segfault in NVIDIA driver loading spv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdio> | |
#include <cstdlib> | |
#include <vector> | |
#include <gl3w/GL/gl3w.h> | |
#include <GLFW/glfw3.h> | |
void debug_callback(GLenum source, GLenum type, GLuint id, GLenum severity, | |
GLsizei length, const GLchar* message, const void* user_param) { | |
printf("GOT DEBUG CALLBACK: %s\n", message); | |
exit(1); | |
} | |
std::vector<char> load_file(const char* name) { | |
FILE* f = fopen(name, "r"); | |
if(!f) { | |
printf("CANNOT LOAD %s\n", name); | |
return { }; | |
} | |
fseek(f, 0, SEEK_END); | |
size_t len = ftell(f); | |
fseek(f, 0, SEEK_SET); | |
printf("%s: %zu bytes\n", name, len); | |
std::vector<char> data(len); | |
fread(data.data(), 1, len, f); | |
fclose(f); | |
return data; | |
} | |
int main() { | |
glfwInit(); | |
glfwWindowHint(GLFW_DOUBLEBUFFER, 1); | |
glfwWindowHint(GLFW_DEPTH_BITS, 24); | |
glfwWindowHint(GLFW_STENCIL_BITS, 8); | |
glfwWindowHint(GLFW_SAMPLES, 8); // HQ 4x multisample. | |
// glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); | |
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); | |
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6); | |
GLFWwindow* window = glfwCreateWindow(800, 600, "crashola", nullptr, nullptr); | |
glfwMakeContextCurrent(window); | |
glfwSwapInterval(1); | |
gl3wInit(); | |
int width, height; | |
glfwGetWindowSize(window, &width, &height); | |
glViewport(0, 0, width, height); | |
printf("%d\n", gl3wIsSupported(4, 6)); | |
// Load the binary. | |
GLuint ts = glCreateShader(GL_TASK_SHADER_NV); | |
GLuint ms = glCreateShader(GL_MESH_SHADER_NV); | |
GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); | |
GLuint shaders[] { ts, ms, fs }; | |
std::vector<char> spv_data = load_file("shader.spv"); | |
glShaderBinary(3, shaders, GL_SHADER_BINARY_FORMAT_SPIR_V_ARB, | |
spv_data.data(), spv_data.size()); | |
if(int error = glGetError()) { | |
printf("glGetError = %d\n", error); | |
char text[1024]; | |
glGetShaderInfoLog(ts, 1024, nullptr, text); | |
puts(text); | |
} | |
glSpecializeShader(ts, "_Z9task_mainv", 0, nullptr, nullptr); | |
printf("ts specialized\n"); | |
glSpecializeShader(ms, "_Z9mesh_mainv", 0, nullptr, nullptr); | |
printf("ms specialized\n"); | |
glSpecializeShader(fs, "_Z9frag_mainv", 0, nullptr, nullptr); | |
printf("fs specialized\n"); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; SPIR-V | |
; Version: 1.5 | |
; Generator: Khronos; 0 | |
; Bound: 967 | |
; Schema: 0 | |
OpCapability MeshShadingNV | |
OpCapability Shader | |
OpCapability Int8 | |
OpCapability Int64 | |
OpCapability GroupNonUniformBallot | |
OpCapability GroupNonUniformShuffleRelative | |
OpExtension "GL_EXT_scalar_block_layout" | |
OpExtension "SPV_NV_mesh_shader" | |
%245 = OpExtInstImport "GLSL.std.450" | |
OpMemoryModel Logical GLSL450 | |
OpEntryPoint TaskNV %_Z9task_mainv "_Z9task_mainv" %_ZZ9task_mainvE6values %glcomp_LocalInvocationID %glcomp_WorkGroupID %meshlets %glmesh_TaskCount %uniforms | |
OpEntryPoint MeshNV %_Z9mesh_mainv "_Z9mesh_mainv" %glcomp_LocalInvocationID %glcomp_WorkGroupID %meshlets %uniforms %_ZZ9mesh_mainvE7corners %marching_cubes_lookup %glmesh_PrimitiveCount %glmesh_Output %_Z16shader_out_arrayILj0EDv3_fE %_Z16shader_out_arrayILj1EDv3_fE | |
OpEntryPoint Fragment %_Z9frag_mainv "_Z9frag_mainv" %uniforms %_Z9shader_inILj0EDv3_fE %_Z9shader_inILj1EDv3_fE %sky_box %_Z10shader_outILi0EDv4_fE | |
OpExecutionMode %_Z9task_mainv LocalSize 32 1 1 | |
OpExecutionMode %_Z9mesh_mainv OutputTrianglesNV | |
OpExecutionMode %_Z9mesh_mainv OutputVertices 12 | |
OpExecutionMode %_Z9mesh_mainv OutputPrimitivesNV 5 | |
OpExecutionMode %_Z9mesh_mainv LocalSize 32 1 1 | |
OpExecutionMode %_Z9frag_mainv OriginUpperLeft | |
OpName %_ZZ9task_mainvE6values "_ZZ9task_mainvE6values" | |
OpName %glcomp_LocalInvocationID "glcomp_LocalInvocationID" | |
OpName %glcomp_WorkGroupID "glcomp_WorkGroupID" | |
OpName %MeshletData "MeshletData" | |
OpMemberName %MeshletData 0 "id" | |
OpName %meshlets "meshlets" | |
OpName %glmesh_TaskCount "glmesh_TaskCount" | |
OpName %uniforms_t "uniforms_t" | |
OpMemberName %uniforms_t 0 "view_proj" | |
OpMemberName %uniforms_t 1 "camera_pos" | |
OpMemberName %uniforms_t 2 "balls" | |
OpName %uniforms "uniforms" | |
OpName %_ZZ9mesh_mainvE7corners "_ZZ9mesh_mainvE7corners" | |
OpName %marching_cubes_lookup_t "marching_cubes_lookup_t" | |
OpMemberName %marching_cubes_lookup_t 0 "indices" | |
OpMemberName %marching_cubes_lookup_t 1 "vertices" | |
OpMemberName %marching_cubes_lookup_t 2 "triangle_count" | |
OpMemberName %marching_cubes_lookup_t 3 "vertex_count" | |
OpName %marching_cubes_lookup "marching_cubes_lookup" | |
OpName %glmesh_PrimitiveCount "glmesh_PrimitiveCount" | |
OpName %gl_PerVertex "gl_PerVertex" | |
OpMemberName %gl_PerVertex 0 "Position" | |
OpMemberName %gl_PerVertex 1 "PointSize" | |
OpMemberName %gl_PerVertex 2 "ClipDistance" | |
OpMemberName %gl_PerVertex 3 "CullDistance" | |
OpName %glmesh_Output "glmesh_Output" | |
OpName %_Z16shader_out_arrayILj0EDv3_fE "_Z16shader_out_arrayILj0EDv3_fE" | |
OpName %_Z16shader_out_arrayILj1EDv3_fE "_Z16shader_out_arrayILj1EDv3_fE" | |
OpName %_Z9shader_inILj0EDv3_fE "_Z9shader_inILj0EDv3_fE" | |
OpName %_Z9shader_inILj1EDv3_fE "_Z9shader_inILj1EDv3_fE" | |
OpName %samplerCube "samplerCube" | |
OpName %sky_box "sky_box" | |
OpName %_Z10shader_outILi0EDv4_fE "_Z10shader_outILi0EDv4_fE" | |
OpName %constants_t "constants_t" | |
OpMemberName %constants_t 0 "num_balls" | |
OpMemberName %constants_t 1 "log_grid_size" | |
OpName %constants_num_balls "constants.num_balls" | |
OpName %constants_log_grid_size "constants.log_grid_size" | |
OpName %_Z9task_mainv "_Z9task_mainv" | |
OpName %marching_cubes_lookup_t_0 "marching_cubes_lookup_t" | |
OpMemberName %marching_cubes_lookup_t_0 0 "indices" | |
OpMemberName %marching_cubes_lookup_t_0 1 "vertices" | |
OpMemberName %marching_cubes_lookup_t_0 2 "triangle_count" | |
OpMemberName %marching_cubes_lookup_t_0 3 "vertex_count" | |
OpName %_Z9mesh_mainv "_Z9mesh_mainv" | |
OpName %_Z9frag_mainv "_Z9frag_mainv" | |
OpDecorate %glcomp_LocalInvocationID BuiltIn LocalInvocationId | |
OpDecorate %glcomp_WorkGroupID BuiltIn WorkgroupId | |
OpMemberDecorate %MeshletData 0 Offset 0 | |
OpDecorate %meshlets PerTaskNV | |
OpDecorate %glmesh_TaskCount BuiltIn TaskCountNV | |
OpDecorate %_arr_v4float_uint_128 ArrayStride 16 | |
OpDecorate %uniforms_t Block | |
OpMemberDecorate %uniforms_t 0 Offset 0 | |
OpMemberDecorate %uniforms_t 0 ColMajor | |
OpMemberDecorate %uniforms_t 0 MatrixStride 16 | |
OpMemberDecorate %uniforms_t 1 Offset 64 | |
OpMemberDecorate %uniforms_t 2 Offset 80 | |
OpDecorate %uniforms Binding 0 | |
OpDecorate %uniforms DescriptorSet 0 | |
OpDecorate %_arr_uint_uint_4 ArrayStride 4 | |
OpDecorate %_arr_uchar_uint_12 ArrayStride 1 | |
OpDecorate %marching_cubes_lookup_t Block | |
OpMemberDecorate %marching_cubes_lookup_t 0 Offset 0 | |
OpMemberDecorate %marching_cubes_lookup_t 1 Offset 16 | |
OpMemberDecorate %marching_cubes_lookup_t 2 Offset 28 | |
OpMemberDecorate %marching_cubes_lookup_t 3 Offset 29 | |
OpDecorate %marching_cubes_lookup Binding 0 | |
OpDecorate %marching_cubes_lookup DescriptorSet 0 | |
OpDecorate %glmesh_PrimitiveCount BuiltIn PrimitiveCountNV | |
OpDecorate %gl_PerVertex Block | |
OpMemberDecorate %gl_PerVertex 0 BuiltIn Position | |
OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize | |
OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance | |
OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance | |
OpDecorate %_Z16shader_out_arrayILj0EDv3_fE Location 0 | |
OpDecorate %_Z16shader_out_arrayILj1EDv3_fE Location 1 | |
OpDecorate %_Z9shader_inILj0EDv3_fE Location 0 | |
OpDecorate %_Z9shader_inILj1EDv3_fE Location 1 | |
OpDecorate %sky_box Binding 0 | |
OpDecorate %sky_box DescriptorSet 0 | |
OpDecorate %_Z10shader_outILi0EDv4_fE Location 0 | |
OpMemberDecorate %constants_t 0 Offset 0 | |
OpMemberDecorate %constants_t 1 Offset 4 | |
OpDecorate %constants_num_balls SpecId 0 | |
OpDecorate %constants_log_grid_size SpecId 1 | |
OpMemberDecorate %marching_cubes_lookup_t_0 0 Offset 0 | |
OpMemberDecorate %marching_cubes_lookup_t_0 1 Offset 16 | |
OpMemberDecorate %marching_cubes_lookup_t_0 2 Offset 28 | |
OpMemberDecorate %marching_cubes_lookup_t_0 3 Offset 29 | |
%uint = OpTypeInt 32 0 | |
%uint_5 = OpConstant %uint 5 | |
%_arr_uint_uint_5 = OpTypeArray %uint %uint_5 | |
%_arr__arr_uint_uint_5_uint_5 = OpTypeArray %_arr_uint_uint_5 %uint_5 | |
%_arr__arr__arr_uint_uint_5_uint_5_uint_5 = OpTypeArray %_arr__arr_uint_uint_5_uint_5 %uint_5 | |
%_ptr_Workgroup__arr__arr__arr_uint_uint_5_uint_5_uint_5 = OpTypePointer Workgroup %_arr__arr__arr_uint_uint_5_uint_5_uint_5 | |
%_ZZ9task_mainvE6values = OpVariable %_ptr_Workgroup__arr__arr__arr_uint_uint_5_uint_5_uint_5 Workgroup | |
%v3uint = OpTypeVector %uint 3 | |
%_ptr_Input_v3uint = OpTypePointer Input %v3uint | |
%glcomp_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input | |
%glcomp_WorkGroupID = OpVariable %_ptr_Input_v3uint Input | |
%MeshletData = OpTypeStruct %uint | |
%_runtimearr_MeshletData = OpTypeRuntimeArray %MeshletData | |
%_ptr_Output__runtimearr_MeshletData = OpTypePointer Output %_runtimearr_MeshletData | |
%meshlets = OpVariable %_ptr_Output__runtimearr_MeshletData Output | |
%_ptr_Output_uint = OpTypePointer Output %uint | |
%glmesh_TaskCount = OpVariable %_ptr_Output_uint Output | |
%float = OpTypeFloat 32 | |
%v4float = OpTypeVector %float 4 | |
%mat4v4float = OpTypeMatrix %v4float 4 | |
%v3float = OpTypeVector %float 3 | |
%uint_128 = OpConstant %uint 128 | |
%_arr_v4float_uint_128 = OpTypeArray %v4float %uint_128 | |
%uniforms_t = OpTypeStruct %mat4v4float %v3float %_arr_v4float_uint_128 | |
%_ptr_Uniform_uniforms_t = OpTypePointer Uniform %uniforms_t | |
%uniforms = OpVariable %_ptr_Uniform_uniforms_t Uniform | |
%uint_8 = OpConstant %uint 8 | |
%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8 | |
%_ptr_Workgroup__arr_v4float_uint_8 = OpTypePointer Workgroup %_arr_v4float_uint_8 | |
%_ZZ9mesh_mainvE7corners = OpVariable %_ptr_Workgroup__arr_v4float_uint_8 Workgroup | |
%uint_4 = OpConstant %uint 4 | |
%_arr_uint_uint_4 = OpTypeArray %uint %uint_4 | |
%uchar = OpTypeInt 8 0 | |
%uint_12 = OpConstant %uint 12 | |
%_arr_uchar_uint_12 = OpTypeArray %uchar %uint_12 | |
%marching_cubes_lookup_t = OpTypeStruct %_arr_uint_uint_4 %_arr_uchar_uint_12 %uchar %uchar | |
%uint_256 = OpConstant %uint 256 | |
%_arr_marching_cubes_lookup_t_uint_256 = OpTypeArray %marching_cubes_lookup_t %uint_256 | |
%_ptr_StorageBuffer__arr_marching_cubes_lookup_t_uint_256 = OpTypePointer StorageBuffer %_arr_marching_cubes_lookup_t_uint_256 | |
%marching_cubes_lookup = OpVariable %_ptr_StorageBuffer__arr_marching_cubes_lookup_t_uint_256 StorageBuffer | |
%glmesh_PrimitiveCount = OpVariable %_ptr_Output_uint Output | |
%uint_1 = OpConstant %uint 1 | |
%_arr_float_uint_1 = OpTypeArray %float %uint_1 | |
%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1 | |
%_runtimearr_gl_PerVertex = OpTypeRuntimeArray %gl_PerVertex | |
%_ptr_Output__runtimearr_gl_PerVertex = OpTypePointer Output %_runtimearr_gl_PerVertex | |
%glmesh_Output = OpVariable %_ptr_Output__runtimearr_gl_PerVertex Output | |
%_runtimearr_v3float = OpTypeRuntimeArray %v3float | |
%_ptr_Output__runtimearr_v3float = OpTypePointer Output %_runtimearr_v3float | |
%_Z16shader_out_arrayILj0EDv3_fE = OpVariable %_ptr_Output__runtimearr_v3float Output | |
%_Z16shader_out_arrayILj1EDv3_fE = OpVariable %_ptr_Output__runtimearr_v3float Output | |
%_ptr_Input_v3float = OpTypePointer Input %v3float | |
%_Z9shader_inILj0EDv3_fE = OpVariable %_ptr_Input_v3float Input | |
%_Z9shader_inILj1EDv3_fE = OpVariable %_ptr_Input_v3float Input | |
%58 = OpTypeImage %float Cube 0 0 0 1 Unknown | |
%samplerCube = OpTypeSampledImage %58 | |
%_ptr_UniformConstant_samplerCube = OpTypePointer UniformConstant %samplerCube | |
%sky_box = OpVariable %_ptr_UniformConstant_samplerCube UniformConstant | |
%_ptr_Output_v4float = OpTypePointer Output %v4float | |
%_Z10shader_outILi0EDv4_fE = OpVariable %_ptr_Output_v4float Output | |
%void = OpTypeVoid | |
%65 = OpTypeFunction %void | |
%int = OpTypeInt 32 1 | |
%_ptr_Function_int = OpTypePointer Function %int | |
%_ptr_Function_uint = OpTypePointer Function %uint | |
%_ptr_Function_v3uint = OpTypePointer Function %v3uint | |
%_ptr_Function_float = OpTypePointer Function %float | |
%_ptr_Function_v3float = OpTypePointer Function %v3float | |
%constants_t = OpTypeStruct %int %int | |
%_ptr_Function_constants_t = OpTypePointer Function %constants_t | |
%bool = OpTypeBool | |
%_ptr_Function_bool = OpTypePointer Function %bool | |
%v4uint = OpTypeVector %uint 4 | |
%_ptr_Function_v4uint = OpTypePointer Function %v4uint | |
%_ptr_Input_uint = OpTypePointer Input %uint | |
%int_0 = OpConstant %int 0 | |
%constants_num_balls = OpSpecConstant %int 16 | |
%constants_log_grid_size = OpSpecConstant %int 7 | |
%125 = OpSpecConstantComposite %constants_t %constants_num_balls %constants_log_grid_size | |
%int_1 = OpConstant %int 1 | |
%int_4 = OpConstant %int 4 | |
%int_2 = OpConstant %int 2 | |
%uint_0 = OpConstant %uint 0 | |
%uint_2 = OpConstant %uint 2 | |
%146 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_2 | |
%152 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 | |
%uint_125 = OpConstant %uint 125 | |
%uint_205 = OpConstant %uint 205 | |
%uint_10 = OpConstant %uint 10 | |
%float_1 = OpConstant %float 1 | |
%float_n1 = OpConstant %float -1 | |
%_ptr_Uniform__arr_v4float_uint_128 = OpTypePointer Uniform %_arr_v4float_uint_128 | |
%long = OpTypeInt 64 1 | |
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float | |
%_ptr_Uniform_float = OpTypePointer Uniform %float | |
%int_3 = OpConstant %int 3 | |
%float_0_5 = OpConstant %float 0.5 | |
%243 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5 | |
%float_0_00100000005 = OpConstant %float 0.00100000005 | |
%float_0 = OpConstant %float 0 | |
%_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 = OpTypePointer Workgroup %_arr__arr_uint_uint_5_uint_5 | |
%_ptr_Workgroup__arr_uint_uint_5 = OpTypePointer Workgroup %_arr_uint_uint_5 | |
%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint | |
%uint_32 = OpConstant %uint 32 | |
%uint_64 = OpConstant %uint 64 | |
%uint_3 = OpConstant %uint 3 | |
%uint_6 = OpConstant %uint 6 | |
%uint_7 = OpConstant %uint 7 | |
%uint_255 = OpConstant %uint 255 | |
%false = OpConstantFalse %bool | |
%_ptr_Output_MeshletData = OpTypePointer Output %MeshletData | |
%marching_cubes_lookup_t_0 = OpTypeStruct %_arr_uint_uint_4 %_arr_uchar_uint_12 %uchar %uchar | |
%_ptr_Function_marching_cubes_lookup_t_0 = OpTypePointer Function %marching_cubes_lookup_t_0 | |
%v3int = OpTypeVector %int 3 | |
%626 = OpConstantComposite %v3int %int_1 %int_2 %int_4 | |
%v3bool = OpTypeVector %bool 3 | |
%629 = OpConstantComposite %v3int %int_0 %int_0 %int_0 | |
%float_0_0625 = OpConstant %float 0.0625 | |
%int_8 = OpConstant %int 8 | |
%uint_16 = OpConstant %uint 16 | |
%uint_24 = OpConstant %uint 24 | |
%_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float | |
%int_264 = OpConstant %int 264 | |
%_ptr_StorageBuffer_marching_cubes_lookup_t = OpTypePointer StorageBuffer %marching_cubes_lookup_t | |
%_ptr_Function_uchar = OpTypePointer Function %uchar | |
%_ptr_Function__arr_uchar_uint_12 = OpTypePointer Function %_arr_uchar_uint_12 | |
%_ptr_Workgroup_float = OpTypePointer Workgroup %float | |
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float | |
%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex | |
%_ptr_Output_v3float = OpTypePointer Output %v3float | |
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float | |
%float_1_12 = OpConstant %float 1.12 | |
%float_2 = OpConstant %float 2 | |
%float_5 = OpConstant %float 5 | |
%float_0_25 = OpConstant %float 0.25 | |
%_Z9task_mainv = OpFunction %void None %65 | |
%66 = OpLabel | |
%69 = OpVariable %_ptr_Function_int Function | |
%70 = OpVariable %_ptr_Function_int Function | |
%72 = OpVariable %_ptr_Function_uint Function | |
%74 = OpVariable %_ptr_Function_v3uint Function | |
%76 = OpVariable %_ptr_Function_float Function | |
%77 = OpVariable %_ptr_Function_float Function | |
%79 = OpVariable %_ptr_Function_v3float Function | |
%80 = OpVariable %_ptr_Function_v3float Function | |
%83 = OpVariable %_ptr_Function_constants_t Function | |
%84 = OpVariable %_ptr_Function_int Function | |
%85 = OpVariable %_ptr_Function_float Function | |
%86 = OpVariable %_ptr_Function_v3float Function | |
%87 = OpVariable %_ptr_Function_float Function | |
%88 = OpVariable %_ptr_Function_v3uint Function | |
%89 = OpVariable %_ptr_Function_uint Function | |
%90 = OpVariable %_ptr_Function_uint Function | |
%91 = OpVariable %_ptr_Function_uint Function | |
%92 = OpVariable %_ptr_Function_uint Function | |
%93 = OpVariable %_ptr_Function_v3uint Function | |
%94 = OpVariable %_ptr_Function_constants_t Function | |
%95 = OpVariable %_ptr_Function_uint Function | |
%96 = OpVariable %_ptr_Function_uint Function | |
%97 = OpVariable %_ptr_Function_uint Function | |
%98 = OpVariable %_ptr_Function_uint Function | |
%99 = OpVariable %_ptr_Function_uint Function | |
%100 = OpVariable %_ptr_Function_v3float Function | |
%101 = OpVariable %_ptr_Function_constants_t Function | |
%102 = OpVariable %_ptr_Function_uint Function | |
%103 = OpVariable %_ptr_Function_uint Function | |
%104 = OpVariable %_ptr_Function_uint Function | |
%105 = OpVariable %_ptr_Function_uint Function | |
%106 = OpVariable %_ptr_Function_uint Function | |
%107 = OpVariable %_ptr_Function_uint Function | |
%110 = OpVariable %_ptr_Function_bool Function | |
%113 = OpVariable %_ptr_Function_v4uint Function | |
%114 = OpVariable %_ptr_Function_uint Function | |
%115 = OpVariable %_ptr_Function_uint Function | |
%116 = OpVariable %_ptr_Function_constants_t Function | |
%119 = OpAccessChain %_ptr_Input_uint %glcomp_LocalInvocationID %int_0 | |
%120 = OpLoad %uint %119 | |
OpStore %91 %120 | |
%121 = OpAccessChain %_ptr_Input_uint %glcomp_WorkGroupID %int_0 | |
%122 = OpLoad %uint %121 | |
OpStore %92 %122 | |
OpStore %94 %125 | |
%126 = OpLoad %uint %92 | |
OpStore %90 %126 | |
%128 = OpAccessChain %_ptr_Function_int %94 %int_1 | |
%129 = OpLoad %int %128 | |
%130 = OpShiftLeftLogical %int %int_1 %129 | |
OpStore %70 %130 | |
%131 = OpLoad %int %70 | |
%133 = OpSDiv %int %131 %int_4 | |
%134 = OpISub %int %133 %int_1 | |
%135 = OpBitcast %uint %134 | |
OpStore %89 %135 | |
%136 = OpLoad %uint %90 | |
%137 = OpCompositeConstruct %v3uint %136 %136 %136 | |
%138 = OpAccessChain %_ptr_Function_int %94 %int_1 | |
%139 = OpLoad %int %138 | |
%141 = OpISub %int %139 %int_2 | |
%142 = OpBitcast %uint %141 | |
%143 = OpCompositeConstruct %v3uint %142 %142 %142 | |
%147 = OpIMul %v3uint %146 %143 | |
%148 = OpShiftRightLogical %v3uint %137 %147 | |
%149 = OpLoad %uint %89 | |
%150 = OpCompositeConstruct %v3uint %149 %149 %149 | |
%151 = OpBitwiseAnd %v3uint %148 %150 | |
%153 = OpIMul %v3uint %151 %152 | |
OpStore %88 %153 | |
%154 = OpLoad %v3uint %88 | |
OpStore %93 %154 | |
%155 = OpLoad %uint %91 | |
OpStore %95 %155 | |
OpBranch %156 | |
%156 = OpLabel | |
%157 = OpLoad %uint %95 | |
%159 = OpULessThan %bool %157 %uint_125 | |
OpLoopMerge %160 %161 None | |
OpBranchConditional %159 %161 %160 | |
%161 = OpLabel | |
%162 = OpLoad %uint %95 | |
%164 = OpIMul %uint %uint_205 %162 | |
%166 = OpShiftRightLogical %uint %164 %uint_10 | |
OpStore %96 %166 | |
%167 = OpLoad %uint %95 | |
%168 = OpLoad %uint %96 | |
%169 = OpIMul %uint %uint_5 %168 | |
%170 = OpISub %uint %167 %169 | |
OpStore %97 %170 | |
%171 = OpLoad %uint %96 | |
%172 = OpIMul %uint %uint_205 %171 | |
%173 = OpShiftRightLogical %uint %172 %uint_10 | |
OpStore %98 %173 | |
%174 = OpLoad %uint %96 | |
%175 = OpLoad %uint %98 | |
%176 = OpIMul %uint %uint_5 %175 | |
%177 = OpISub %uint %174 %176 | |
OpStore %99 %177 | |
%178 = OpAccessChain %_ptr_Function_uint %93 %int_0 | |
%179 = OpLoad %uint %178 | |
%180 = OpLoad %uint %97 | |
%181 = OpIAdd %uint %179 %180 | |
%182 = OpConvertUToF %float %181 | |
%183 = OpAccessChain %_ptr_Function_uint %93 %int_1 | |
%184 = OpLoad %uint %183 | |
%185 = OpLoad %uint %99 | |
%186 = OpIAdd %uint %184 %185 | |
%187 = OpConvertUToF %float %186 | |
%188 = OpAccessChain %_ptr_Function_uint %93 %int_2 | |
%189 = OpLoad %uint %188 | |
%190 = OpLoad %uint %98 | |
%191 = OpIAdd %uint %189 %190 | |
%192 = OpConvertUToF %float %191 | |
%193 = OpCompositeConstruct %v3float %182 %187 %192 | |
OpStore %101 %125 | |
%194 = OpAccessChain %_ptr_Function_int %101 %int_1 | |
%195 = OpLoad %int %194 | |
%196 = OpShiftLeftLogical %int %int_1 %195 | |
OpStore %69 %196 | |
%197 = OpLoad %int %69 | |
%198 = OpConvertSToF %float %197 | |
%200 = OpFDiv %float %float_1 %198 | |
OpStore %87 %200 | |
%201 = OpLoad %float %87 | |
%202 = OpVectorTimesScalar %v3float %193 %201 | |
OpStore %100 %202 | |
%203 = OpLoad %v3float %100 | |
OpStore %86 %203 | |
OpStore %85 %float_n1 | |
OpStore %84 %int_0 | |
OpBranch %205 | |
%205 = OpLabel | |
%206 = OpLoad %int %84 | |
OpStore %83 %125 | |
%207 = OpAccessChain %_ptr_Function_int %83 %int_0 | |
%208 = OpLoad %int %207 | |
%209 = OpSLessThan %bool %206 %208 | |
OpLoopMerge %210 %211 None | |
OpBranchConditional %209 %211 %210 | |
%211 = OpLabel | |
%213 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2 | |
%214 = OpLoad %int %84 | |
%216 = OpSConvert %long %214 | |
%217 = OpSConvert %int %216 | |
%219 = OpAccessChain %_ptr_Uniform_v4float %213 %217 | |
%220 = OpLoad %v4float %219 | |
%221 = OpVectorShuffle %v3float %220 %220 0 1 2 | |
%222 = OpLoad %v3float %86 | |
%223 = OpFSub %v3float %221 %222 | |
OpStore %80 %223 | |
%224 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2 | |
%225 = OpLoad %int %84 | |
%226 = OpSConvert %long %225 | |
%227 = OpSConvert %int %226 | |
%228 = OpAccessChain %_ptr_Uniform_v4float %224 %227 | |
%231 = OpAccessChain %_ptr_Uniform_float %228 %int_3 | |
%232 = OpLoad %float %231 | |
%233 = OpLoad %v3float %80 | |
%234 = OpLoad %v3float %80 | |
%235 = OpDot %float %233 %234 | |
%236 = OpFDiv %float %232 %235 | |
%237 = OpLoad %float %85 | |
%238 = OpFAdd %float %237 %236 | |
OpStore %85 %238 | |
%239 = OpLoad %int %84 | |
%240 = OpIAdd %int %239 %int_1 | |
OpStore %84 %240 | |
OpBranch %205 | |
%210 = OpLabel | |
%241 = OpLoad %v3float %86 | |
%244 = OpFSub %v3float %241 %243 | |
%246 = OpExtInst %v3float %245 FAbs %244 | |
OpStore %79 %246 | |
%247 = OpAccessChain %_ptr_Function_float %79 %int_0 | |
%248 = OpLoad %float %247 | |
%249 = OpAccessChain %_ptr_Function_float %79 %int_1 | |
%250 = OpLoad %float %249 | |
%251 = OpAccessChain %_ptr_Function_float %79 %int_2 | |
%252 = OpLoad %float %251 | |
%253 = OpExtInst %float %245 FMax %250 %252 | |
%254 = OpExtInst %float %245 FMax %248 %253 | |
OpStore %77 %254 | |
%255 = OpLoad %float %85 | |
%256 = OpLoad %float %77 | |
%257 = OpFSub %float %float_0_5 %256 | |
%258 = OpFMul %float %float_0_5 %257 | |
%259 = OpExtInst %float %245 FMin %258 %float_1 | |
%260 = OpFMul %float %255 %259 | |
%262 = OpFSub %float %260 %float_0_00100000005 | |
OpStore %85 %262 | |
%263 = OpLoad %float %85 | |
OpStore %76 %263 | |
%264 = OpLoad %float %76 | |
%266 = OpFOrdGreaterThan %bool %264 %float_0 | |
%267 = OpSelect %uint %266 %uint_1 %uint_0 | |
%268 = OpLoad %uint %98 | |
%269 = OpSConvert %long %268 | |
%270 = OpSConvert %int %269 | |
%272 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %270 | |
%273 = OpLoad %uint %99 | |
%274 = OpSConvert %long %273 | |
%275 = OpSConvert %int %274 | |
%277 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %272 %275 | |
%278 = OpLoad %uint %97 | |
%279 = OpSConvert %long %278 | |
%280 = OpSConvert %int %279 | |
%282 = OpAccessChain %_ptr_Workgroup_uint %277 %280 | |
OpStore %282 %267 | |
%283 = OpLoad %uint %95 | |
%285 = OpIAdd %uint %283 %uint_32 | |
OpStore %95 %285 | |
OpBranch %156 | |
%160 = OpLabel | |
OpStore %102 %uint_0 | |
%286 = OpLoad %uint %91 | |
OpStore %103 %286 | |
OpBranch %287 | |
%287 = OpLabel | |
%288 = OpLoad %uint %103 | |
%290 = OpULessThan %bool %288 %uint_64 | |
OpLoopMerge %291 %292 None | |
OpBranchConditional %290 %293 %291 | |
%293 = OpLabel | |
%294 = OpLoad %uint %103 | |
%296 = OpBitwiseAnd %uint %294 %uint_3 | |
OpStore %104 %296 | |
%297 = OpLoad %uint %103 | |
%298 = OpShiftRightLogical %uint %297 %uint_2 | |
%299 = OpBitwiseAnd %uint %298 %uint_3 | |
OpStore %105 %299 | |
%300 = OpLoad %uint %103 | |
%301 = OpShiftRightLogical %uint %300 %uint_4 | |
OpStore %106 %301 | |
%302 = OpLoad %uint %106 | |
%303 = OpIAdd %uint %302 %uint_0 | |
%304 = OpSConvert %long %303 | |
%305 = OpSConvert %int %304 | |
%306 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %305 | |
%307 = OpLoad %uint %105 | |
%308 = OpIAdd %uint %307 %uint_0 | |
%309 = OpSConvert %long %308 | |
%310 = OpSConvert %int %309 | |
%311 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %306 %310 | |
%312 = OpLoad %uint %104 | |
%313 = OpIAdd %uint %312 %uint_0 | |
%314 = OpSConvert %long %313 | |
%315 = OpSConvert %int %314 | |
%316 = OpAccessChain %_ptr_Workgroup_uint %311 %315 | |
%317 = OpLoad %uint %316 | |
%318 = OpShiftLeftLogical %uint %317 %uint_0 | |
OpStore %107 %318 | |
%319 = OpLoad %uint %106 | |
%320 = OpIAdd %uint %319 %uint_0 | |
%321 = OpSConvert %long %320 | |
%322 = OpSConvert %int %321 | |
%323 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %322 | |
%324 = OpLoad %uint %105 | |
%325 = OpIAdd %uint %324 %uint_0 | |
%326 = OpSConvert %long %325 | |
%327 = OpSConvert %int %326 | |
%328 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %323 %327 | |
%329 = OpLoad %uint %104 | |
%330 = OpIAdd %uint %329 %uint_1 | |
%331 = OpSConvert %long %330 | |
%332 = OpSConvert %int %331 | |
%333 = OpAccessChain %_ptr_Workgroup_uint %328 %332 | |
%334 = OpLoad %uint %333 | |
%335 = OpShiftLeftLogical %uint %334 %uint_1 | |
%336 = OpLoad %uint %107 | |
%337 = OpBitwiseOr %uint %336 %335 | |
OpStore %107 %337 | |
%338 = OpLoad %uint %106 | |
%339 = OpIAdd %uint %338 %uint_0 | |
%340 = OpSConvert %long %339 | |
%341 = OpSConvert %int %340 | |
%342 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %341 | |
%343 = OpLoad %uint %105 | |
%344 = OpIAdd %uint %343 %uint_1 | |
%345 = OpSConvert %long %344 | |
%346 = OpSConvert %int %345 | |
%347 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %342 %346 | |
%348 = OpLoad %uint %104 | |
%349 = OpIAdd %uint %348 %uint_0 | |
%350 = OpSConvert %long %349 | |
%351 = OpSConvert %int %350 | |
%352 = OpAccessChain %_ptr_Workgroup_uint %347 %351 | |
%353 = OpLoad %uint %352 | |
%354 = OpShiftLeftLogical %uint %353 %uint_2 | |
%355 = OpLoad %uint %107 | |
%356 = OpBitwiseOr %uint %355 %354 | |
OpStore %107 %356 | |
%357 = OpLoad %uint %106 | |
%358 = OpIAdd %uint %357 %uint_0 | |
%359 = OpSConvert %long %358 | |
%360 = OpSConvert %int %359 | |
%361 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %360 | |
%362 = OpLoad %uint %105 | |
%363 = OpIAdd %uint %362 %uint_1 | |
%364 = OpSConvert %long %363 | |
%365 = OpSConvert %int %364 | |
%366 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %361 %365 | |
%367 = OpLoad %uint %104 | |
%368 = OpIAdd %uint %367 %uint_1 | |
%369 = OpSConvert %long %368 | |
%370 = OpSConvert %int %369 | |
%371 = OpAccessChain %_ptr_Workgroup_uint %366 %370 | |
%372 = OpLoad %uint %371 | |
%373 = OpShiftLeftLogical %uint %372 %uint_3 | |
%374 = OpLoad %uint %107 | |
%375 = OpBitwiseOr %uint %374 %373 | |
OpStore %107 %375 | |
%376 = OpLoad %uint %106 | |
%377 = OpIAdd %uint %376 %uint_1 | |
%378 = OpSConvert %long %377 | |
%379 = OpSConvert %int %378 | |
%380 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %379 | |
%381 = OpLoad %uint %105 | |
%382 = OpIAdd %uint %381 %uint_0 | |
%383 = OpSConvert %long %382 | |
%384 = OpSConvert %int %383 | |
%385 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %380 %384 | |
%386 = OpLoad %uint %104 | |
%387 = OpIAdd %uint %386 %uint_0 | |
%388 = OpSConvert %long %387 | |
%389 = OpSConvert %int %388 | |
%390 = OpAccessChain %_ptr_Workgroup_uint %385 %389 | |
%391 = OpLoad %uint %390 | |
%392 = OpShiftLeftLogical %uint %391 %uint_4 | |
%393 = OpLoad %uint %107 | |
%394 = OpBitwiseOr %uint %393 %392 | |
OpStore %107 %394 | |
%395 = OpLoad %uint %106 | |
%396 = OpIAdd %uint %395 %uint_1 | |
%397 = OpSConvert %long %396 | |
%398 = OpSConvert %int %397 | |
%399 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %398 | |
%400 = OpLoad %uint %105 | |
%401 = OpIAdd %uint %400 %uint_0 | |
%402 = OpSConvert %long %401 | |
%403 = OpSConvert %int %402 | |
%404 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %399 %403 | |
%405 = OpLoad %uint %104 | |
%406 = OpIAdd %uint %405 %uint_1 | |
%407 = OpSConvert %long %406 | |
%408 = OpSConvert %int %407 | |
%409 = OpAccessChain %_ptr_Workgroup_uint %404 %408 | |
%410 = OpLoad %uint %409 | |
%411 = OpShiftLeftLogical %uint %410 %uint_5 | |
%412 = OpLoad %uint %107 | |
%413 = OpBitwiseOr %uint %412 %411 | |
OpStore %107 %413 | |
%414 = OpLoad %uint %106 | |
%415 = OpIAdd %uint %414 %uint_1 | |
%416 = OpSConvert %long %415 | |
%417 = OpSConvert %int %416 | |
%418 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %417 | |
%419 = OpLoad %uint %105 | |
%420 = OpIAdd %uint %419 %uint_1 | |
%421 = OpSConvert %long %420 | |
%422 = OpSConvert %int %421 | |
%423 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %418 %422 | |
%424 = OpLoad %uint %104 | |
%425 = OpIAdd %uint %424 %uint_0 | |
%426 = OpSConvert %long %425 | |
%427 = OpSConvert %int %426 | |
%428 = OpAccessChain %_ptr_Workgroup_uint %423 %427 | |
%429 = OpLoad %uint %428 | |
%431 = OpShiftLeftLogical %uint %429 %uint_6 | |
%432 = OpLoad %uint %107 | |
%433 = OpBitwiseOr %uint %432 %431 | |
OpStore %107 %433 | |
%434 = OpLoad %uint %106 | |
%435 = OpIAdd %uint %434 %uint_1 | |
%436 = OpSConvert %long %435 | |
%437 = OpSConvert %int %436 | |
%438 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %437 | |
%439 = OpLoad %uint %105 | |
%440 = OpIAdd %uint %439 %uint_1 | |
%441 = OpSConvert %long %440 | |
%442 = OpSConvert %int %441 | |
%443 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %438 %442 | |
%444 = OpLoad %uint %104 | |
%445 = OpIAdd %uint %444 %uint_1 | |
%446 = OpSConvert %long %445 | |
%447 = OpSConvert %int %446 | |
%448 = OpAccessChain %_ptr_Workgroup_uint %443 %447 | |
%449 = OpLoad %uint %448 | |
%451 = OpShiftLeftLogical %uint %449 %uint_7 | |
%452 = OpLoad %uint %107 | |
%453 = OpBitwiseOr %uint %452 %451 | |
OpStore %107 %453 | |
%454 = OpLoad %uint %107 | |
%455 = OpINotEqual %bool %454 %uint_0 | |
OpSelectionMerge %456 None | |
OpBranchConditional %455 %457 %456 | |
%291 = OpLabel | |
%458 = OpLoad %uint %91 | |
%459 = OpINotEqual %bool %458 %uint_0 | |
%460 = OpLogicalNot %bool %459 | |
OpSelectionMerge %461 None | |
OpBranchConditional %460 %462 %463 | |
%457 = OpLabel | |
%464 = OpLoad %uint %107 | |
%466 = OpINotEqual %bool %464 %uint_255 | |
OpBranch %456 | |
%456 = OpLabel | |
%468 = OpPhi %bool %false %293 %466 %457 | |
OpStore %110 %468 | |
%469 = OpLoad %bool %110 | |
%470 = OpGroupNonUniformBallot %v4uint %uint_3 %469 | |
OpStore %113 %470 | |
%471 = OpLoad %bool %110 | |
OpSelectionMerge %472 None | |
OpBranchConditional %471 %473 %474 | |
%473 = OpLabel | |
%475 = OpAccessChain %_ptr_Function_uint %113 %int_0 | |
%476 = OpLoad %uint %475 | |
%477 = OpLoad %uint %91 | |
%478 = OpBitcast %int %477 | |
%479 = OpShiftLeftLogical %int %int_1 %478 | |
%480 = OpISub %int %479 %int_1 | |
%481 = OpBitcast %uint %480 | |
%482 = OpBitwiseAnd %uint %476 %481 | |
%483 = OpBitCount %int %482 | |
%484 = OpBitcast %uint %483 | |
OpStore %114 %484 | |
OpStore %116 %125 | |
%485 = OpLoad %v3uint %93 | |
%486 = OpLoad %uint %104 | |
%487 = OpLoad %uint %105 | |
%488 = OpLoad %uint %106 | |
%489 = OpCompositeConstruct %v3uint %486 %487 %488 | |
%490 = OpIAdd %v3uint %485 %489 | |
OpStore %74 %490 | |
%491 = OpAccessChain %_ptr_Function_uint %74 %int_2 | |
%492 = OpLoad %uint %491 | |
%493 = OpAccessChain %_ptr_Function_int %116 %int_1 | |
%494 = OpLoad %int %493 | |
%495 = OpBitcast %uint %494 | |
%496 = OpShiftLeftLogical %uint %492 %495 | |
%497 = OpAccessChain %_ptr_Function_uint %74 %int_1 | |
%498 = OpLoad %uint %497 | |
%499 = OpIAdd %uint %496 %498 | |
%500 = OpAccessChain %_ptr_Function_int %116 %int_1 | |
%501 = OpLoad %int %500 | |
%502 = OpBitcast %uint %501 | |
%503 = OpShiftLeftLogical %uint %499 %502 | |
%504 = OpAccessChain %_ptr_Function_uint %74 %int_0 | |
%505 = OpLoad %uint %504 | |
%506 = OpIAdd %uint %503 %505 | |
OpStore %72 %506 | |
%507 = OpLoad %uint %72 | |
OpStore %115 %507 | |
%508 = OpLoad %uint %115 | |
%509 = OpLoad %uint %102 | |
%510 = OpLoad %uint %114 | |
%511 = OpIAdd %uint %509 %510 | |
%512 = OpSConvert %long %511 | |
%513 = OpSConvert %int %512 | |
%515 = OpAccessChain %_ptr_Output_MeshletData %meshlets %513 | |
%516 = OpAccessChain %_ptr_Output_uint %515 %int_0 | |
OpStore %516 %508 | |
OpBranch %472 | |
%474 = OpLabel | |
OpBranch %472 | |
%472 = OpLabel | |
%517 = OpAccessChain %_ptr_Function_uint %113 %int_0 | |
%518 = OpLoad %uint %517 | |
%519 = OpBitCount %int %518 | |
%520 = OpBitcast %uint %519 | |
%521 = OpLoad %uint %102 | |
%522 = OpIAdd %uint %521 %520 | |
OpStore %102 %522 | |
OpBranch %292 | |
%292 = OpLabel | |
%523 = OpLoad %uint %103 | |
%524 = OpIAdd %uint %523 %uint_32 | |
OpStore %103 %524 | |
OpBranch %287 | |
%462 = OpLabel | |
%525 = OpLoad %uint %102 | |
OpStore %glmesh_TaskCount %525 | |
OpBranch %461 | |
%463 = OpLabel | |
OpBranch %461 | |
%461 = OpLabel | |
OpReturn | |
OpFunctionEnd | |
%_Z9mesh_mainv = OpFunction %void None %65 | |
%526 = OpLabel | |
%527 = OpVariable %_ptr_Function_int Function | |
%528 = OpVariable %_ptr_Function_int Function | |
%529 = OpVariable %_ptr_Function_int Function | |
%530 = OpVariable %_ptr_Function_int Function | |
%531 = OpVariable %_ptr_Function_float Function | |
%532 = OpVariable %_ptr_Function_float Function | |
%533 = OpVariable %_ptr_Function_v3float Function | |
%534 = OpVariable %_ptr_Function_v3float Function | |
%535 = OpVariable %_ptr_Function_constants_t Function | |
%536 = OpVariable %_ptr_Function_int Function | |
%537 = OpVariable %_ptr_Function_float Function | |
%538 = OpVariable %_ptr_Function_v3float Function | |
%539 = OpVariable %_ptr_Function_float Function | |
%540 = OpVariable %_ptr_Function_float Function | |
%541 = OpVariable %_ptr_Function_float Function | |
%542 = OpVariable %_ptr_Function_v3uint Function | |
%543 = OpVariable %_ptr_Function_uint Function | |
%544 = OpVariable %_ptr_Function_uint Function | |
%545 = OpVariable %_ptr_Function_int Function | |
%546 = OpVariable %_ptr_Function_int Function | |
%547 = OpVariable %_ptr_Function_v3uint Function | |
%548 = OpVariable %_ptr_Function_constants_t Function | |
%549 = OpVariable %_ptr_Function_v3float Function | |
%550 = OpVariable %_ptr_Function_constants_t Function | |
%551 = OpVariable %_ptr_Function_v3float Function | |
%552 = OpVariable %_ptr_Function_constants_t Function | |
%553 = OpVariable %_ptr_Function_v3float Function | |
%554 = OpVariable %_ptr_Function_float Function | |
%555 = OpVariable %_ptr_Function_constants_t Function | |
%556 = OpVariable %_ptr_Function_int Function | |
%557 = OpVariable %_ptr_Function_float Function | |
%558 = OpVariable %_ptr_Function_v3float Function | |
%559 = OpVariable %_ptr_Function_uint Function | |
%562 = OpVariable %_ptr_Function_marching_cubes_lookup_t_0 Function | |
%563 = OpVariable %_ptr_Function_uint Function | |
%564 = OpVariable %_ptr_Function_uint Function | |
%565 = OpVariable %_ptr_Function_uint Function | |
%566 = OpVariable %_ptr_Function_v3float Function | |
%567 = OpVariable %_ptr_Function_v3float Function | |
%568 = OpVariable %_ptr_Function_float Function | |
%569 = OpVariable %_ptr_Function_v3float Function | |
%570 = OpVariable %_ptr_Function_v3float Function | |
%571 = OpVariable %_ptr_Function_int Function | |
%572 = OpAccessChain %_ptr_Input_uint %glcomp_LocalInvocationID %int_0 | |
%573 = OpLoad %uint %572 | |
%574 = OpBitcast %int %573 | |
OpStore %545 %574 | |
%575 = OpAccessChain %_ptr_Input_uint %glcomp_WorkGroupID %int_0 | |
%576 = OpLoad %uint %575 | |
%577 = OpSConvert %long %576 | |
%578 = OpSConvert %int %577 | |
%579 = OpAccessChain %_ptr_Output_MeshletData %meshlets %578 | |
%580 = OpAccessChain %_ptr_Output_uint %579 %int_0 | |
%581 = OpLoad %uint %580 | |
%582 = OpBitcast %int %581 | |
OpStore %546 %582 | |
OpStore %548 %125 | |
%583 = OpLoad %int %546 | |
%584 = OpBitcast %uint %583 | |
OpStore %544 %584 | |
%585 = OpAccessChain %_ptr_Function_int %548 %int_1 | |
%586 = OpLoad %int %585 | |
%587 = OpShiftLeftLogical %int %int_1 %586 | |
OpStore %530 %587 | |
%588 = OpLoad %int %530 | |
%589 = OpISub %int %588 %int_1 | |
%590 = OpBitcast %uint %589 | |
OpStore %543 %590 | |
%591 = OpLoad %uint %544 | |
%592 = OpCompositeConstruct %v3uint %591 %591 %591 | |
%593 = OpAccessChain %_ptr_Function_int %548 %int_1 | |
%594 = OpLoad %int %593 | |
%595 = OpBitcast %uint %594 | |
%596 = OpCompositeConstruct %v3uint %595 %595 %595 | |
%597 = OpIMul %v3uint %146 %596 | |
%598 = OpLoad %uint %543 | |
%599 = OpCompositeConstruct %v3uint %598 %598 %598 | |
%600 = OpBitwiseAnd %v3uint %597 %599 | |
%601 = OpShiftRightLogical %v3uint %592 %600 | |
OpStore %542 %601 | |
%602 = OpLoad %v3uint %542 | |
OpStore %547 %602 | |
%603 = OpLoad %v3uint %547 | |
%604 = OpConvertUToF %v3float %603 | |
OpStore %550 %125 | |
%605 = OpAccessChain %_ptr_Function_int %550 %int_1 | |
%606 = OpLoad %int %605 | |
%607 = OpShiftLeftLogical %int %int_1 %606 | |
OpStore %529 %607 | |
%608 = OpLoad %int %529 | |
%609 = OpConvertSToF %float %608 | |
%610 = OpFDiv %float %float_1 %609 | |
OpStore %541 %610 | |
%611 = OpLoad %float %541 | |
%612 = OpVectorTimesScalar %v3float %604 %611 | |
OpStore %549 %612 | |
%613 = OpLoad %v3float %549 | |
OpStore %552 %125 | |
%614 = OpAccessChain %_ptr_Function_int %552 %int_1 | |
%615 = OpLoad %int %614 | |
%616 = OpShiftLeftLogical %int %int_1 %615 | |
OpStore %528 %616 | |
%617 = OpLoad %int %528 | |
%618 = OpConvertSToF %float %617 | |
%619 = OpFDiv %float %float_1 %618 | |
OpStore %540 %619 | |
%620 = OpLoad %float %540 | |
%621 = OpCompositeConstruct %v3float %620 %620 %620 | |
%622 = OpFAdd %v3float %613 %621 | |
OpStore %551 %622 | |
%623 = OpLoad %int %545 | |
%625 = OpCompositeConstruct %v3int %623 %623 %623 | |
%627 = OpBitwiseAnd %v3int %625 %626 | |
%630 = OpIEqual %v3bool %627 %629 | |
%631 = OpLoad %v3float %551 | |
%632 = OpLoad %v3float %549 | |
%633 = OpSelect %v3float %630 %631 %632 | |
OpStore %553 %633 | |
OpStore %555 %125 | |
%634 = OpAccessChain %_ptr_Function_int %555 %int_1 | |
%635 = OpLoad %int %634 | |
%636 = OpShiftLeftLogical %int %int_1 %635 | |
OpStore %527 %636 | |
%637 = OpLoad %int %527 | |
%638 = OpConvertSToF %float %637 | |
%639 = OpFDiv %float %float_1 %638 | |
OpStore %539 %639 | |
%640 = OpLoad %float %539 | |
%642 = OpFMul %float %float_0_0625 %640 | |
OpStore %554 %642 | |
%643 = OpLoad %int %545 | |
%645 = OpSDiv %int %643 %int_8 | |
OpStore %556 %645 | |
%646 = OpLoad %int %556 | |
%647 = OpIEqual %bool %int_1 %646 | |
OpSelectionMerge %648 None | |
OpBranchConditional %647 %649 %650 | |
%649 = OpLabel | |
%651 = OpLoad %float %554 | |
OpBranch %648 | |
%650 = OpLabel | |
OpBranch %648 | |
%648 = OpLabel | |
%652 = OpPhi %float %651 %649 %float_0 %650 | |
%653 = OpAccessChain %_ptr_Function_float %553 %int_0 | |
%654 = OpLoad %float %653 | |
%655 = OpFAdd %float %654 %652 | |
OpStore %653 %655 | |
%656 = OpLoad %int %556 | |
%657 = OpIEqual %bool %int_2 %656 | |
OpSelectionMerge %658 None | |
OpBranchConditional %657 %659 %660 | |
%659 = OpLabel | |
%661 = OpLoad %float %554 | |
OpBranch %658 | |
%660 = OpLabel | |
OpBranch %658 | |
%658 = OpLabel | |
%662 = OpPhi %float %661 %659 %float_0 %660 | |
%663 = OpAccessChain %_ptr_Function_float %553 %int_1 | |
%664 = OpLoad %float %663 | |
%665 = OpFAdd %float %664 %662 | |
OpStore %663 %665 | |
%666 = OpLoad %int %556 | |
%667 = OpIEqual %bool %int_3 %666 | |
OpSelectionMerge %668 None | |
OpBranchConditional %667 %669 %670 | |
%669 = OpLabel | |
%671 = OpLoad %float %554 | |
OpBranch %668 | |
%670 = OpLabel | |
OpBranch %668 | |
%668 = OpLabel | |
%672 = OpPhi %float %671 %669 %float_0 %670 | |
%673 = OpAccessChain %_ptr_Function_float %553 %int_2 | |
%674 = OpLoad %float %673 | |
%675 = OpFAdd %float %674 %672 | |
OpStore %673 %675 | |
%676 = OpLoad %v3float %553 | |
OpStore %538 %676 | |
OpStore %537 %float_n1 | |
OpStore %536 %int_0 | |
OpBranch %677 | |
%677 = OpLabel | |
%678 = OpLoad %int %536 | |
OpStore %535 %125 | |
%679 = OpAccessChain %_ptr_Function_int %535 %int_0 | |
%680 = OpLoad %int %679 | |
%681 = OpSLessThan %bool %678 %680 | |
OpLoopMerge %682 %683 None | |
OpBranchConditional %681 %683 %682 | |
%683 = OpLabel | |
%684 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2 | |
%685 = OpLoad %int %536 | |
%686 = OpSConvert %long %685 | |
%687 = OpSConvert %int %686 | |
%688 = OpAccessChain %_ptr_Uniform_v4float %684 %687 | |
%689 = OpLoad %v4float %688 | |
%690 = OpVectorShuffle %v3float %689 %689 0 1 2 | |
%691 = OpLoad %v3float %538 | |
%692 = OpFSub %v3float %690 %691 | |
OpStore %534 %692 | |
%693 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2 | |
%694 = OpLoad %int %536 | |
%695 = OpSConvert %long %694 | |
%696 = OpSConvert %int %695 | |
%697 = OpAccessChain %_ptr_Uniform_v4float %693 %696 | |
%698 = OpAccessChain %_ptr_Uniform_float %697 %int_3 | |
%699 = OpLoad %float %698 | |
%700 = OpLoad %v3float %534 | |
%701 = OpLoad %v3float %534 | |
%702 = OpDot %float %700 %701 | |
%703 = OpFDiv %float %699 %702 | |
%704 = OpLoad %float %537 | |
%705 = OpFAdd %float %704 %703 | |
OpStore %537 %705 | |
%706 = OpLoad %int %536 | |
%707 = OpIAdd %int %706 %int_1 | |
OpStore %536 %707 | |
OpBranch %677 | |
%682 = OpLabel | |
%708 = OpLoad %v3float %538 | |
%709 = OpFSub %v3float %708 %243 | |
%710 = OpExtInst %v3float %245 FAbs %709 | |
OpStore %533 %710 | |
%711 = OpAccessChain %_ptr_Function_float %533 %int_0 | |
%712 = OpLoad %float %711 | |
%713 = OpAccessChain %_ptr_Function_float %533 %int_1 | |
%714 = OpLoad %float %713 | |
%715 = OpAccessChain %_ptr_Function_float %533 %int_2 | |
%716 = OpLoad %float %715 | |
%717 = OpExtInst %float %245 FMax %714 %716 | |
%718 = OpExtInst %float %245 FMax %712 %717 | |
OpStore %532 %718 | |
%719 = OpLoad %float %537 | |
%720 = OpLoad %float %532 | |
%721 = OpFSub %float %float_0_5 %720 | |
%722 = OpFMul %float %float_0_5 %721 | |
%723 = OpExtInst %float %245 FMin %722 %float_1 | |
%724 = OpFMul %float %719 %723 | |
%725 = OpFSub %float %724 %float_0_00100000005 | |
OpStore %537 %725 | |
%726 = OpLoad %float %537 | |
OpStore %531 %726 | |
%727 = OpLoad %float %531 | |
OpStore %557 %727 | |
%728 = OpLoad %float %557 | |
%729 = OpGroupNonUniformShuffleDown %float %uint_3 %728 %uint_8 | |
%730 = OpLoad %float %557 | |
%732 = OpGroupNonUniformShuffleDown %float %uint_3 %730 %uint_16 | |
%733 = OpLoad %float %557 | |
%735 = OpGroupNonUniformShuffleDown %float %uint_3 %733 %uint_24 | |
%736 = OpCompositeConstruct %v3float %729 %732 %735 | |
OpStore %558 %736 | |
%737 = OpLoad %int %545 | |
%738 = OpSLessThan %bool %737 %int_8 | |
OpSelectionMerge %739 None | |
OpBranchConditional %738 %740 %741 | |
%740 = OpLabel | |
%742 = OpLoad %float %557 | |
%743 = OpCompositeConstruct %v3float %742 %742 %742 | |
%744 = OpLoad %v3float %558 | |
%745 = OpFSub %v3float %743 %744 | |
%746 = OpExtInst %v3float %245 Normalize %745 | |
%747 = OpLoad %float %557 | |
%748 = OpCompositeConstruct %v4float %746 %747 | |
%749 = OpLoad %int %545 | |
%750 = OpSConvert %long %749 | |
%751 = OpSConvert %int %750 | |
%753 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %751 | |
OpStore %753 %748 | |
OpBranch %739 | |
%741 = OpLabel | |
OpBranch %739 | |
%739 = OpLabel | |
OpControlBarrier %int_2 %int_2 %int_264 | |
%755 = OpLoad %float %557 | |
%756 = OpFOrdGreaterThan %bool %755 %float_0 | |
%757 = OpGroupNonUniformBallot %v4uint %uint_3 %756 | |
%758 = OpCompositeExtract %uint %757 0 | |
%759 = OpBitwiseAnd %uint %uint_255 %758 | |
OpStore %559 %759 | |
%760 = OpLoad %uint %559 | |
%761 = OpSConvert %long %760 | |
%762 = OpSConvert %int %761 | |
%764 = OpAccessChain %_ptr_StorageBuffer_marching_cubes_lookup_t %marching_cubes_lookup %762 | |
%765 = OpLoad %marching_cubes_lookup_t %764 | |
%766 = OpCopyLogical %marching_cubes_lookup_t_0 %765 | |
OpStore %562 %766 | |
%767 = OpLoad %int %545 | |
%768 = OpINotEqual %bool %767 %int_0 | |
%769 = OpLogicalNot %bool %768 | |
OpSelectionMerge %770 None | |
OpBranchConditional %769 %771 %772 | |
%771 = OpLabel | |
%774 = OpAccessChain %_ptr_Function_uchar %562 %int_2 | |
%775 = OpLoad %uchar %774 | |
%776 = OpUConvert %uint %775 | |
OpStore %glmesh_PrimitiveCount %776 | |
OpBranch %770 | |
%772 = OpLabel | |
OpBranch %770 | |
%770 = OpLabel | |
%777 = OpLoad %int %545 | |
%778 = OpAccessChain %_ptr_Function_uchar %562 %int_3 | |
%779 = OpLoad %uchar %778 | |
%780 = OpSConvert %int %779 | |
%781 = OpSLessThan %bool %777 %780 | |
OpSelectionMerge %782 None | |
OpBranchConditional %781 %783 %784 | |
%783 = OpLabel | |
%786 = OpAccessChain %_ptr_Function__arr_uchar_uint_12 %562 %int_1 | |
%787 = OpLoad %int %545 | |
%788 = OpSConvert %long %787 | |
%789 = OpSConvert %int %788 | |
%790 = OpAccessChain %_ptr_Function_uchar %786 %789 | |
%791 = OpLoad %uchar %790 | |
%792 = OpUConvert %uint %791 | |
OpStore %563 %792 | |
%793 = OpLoad %uint %563 | |
%794 = OpBitwiseAnd %uint %793 %uint_7 | |
OpStore %564 %794 | |
%795 = OpLoad %uint %563 | |
%796 = OpShiftRightLogical %uint %795 %uint_3 | |
OpStore %565 %796 | |
%797 = OpLoad %uint %564 | |
%798 = OpBitcast %int %797 | |
%799 = OpCompositeConstruct %v3int %798 %798 %798 | |
%800 = OpBitwiseAnd %v3int %799 %626 | |
%801 = OpIEqual %v3bool %800 %629 | |
%802 = OpLoad %v3float %551 | |
%803 = OpLoad %v3float %549 | |
%804 = OpSelect %v3float %801 %802 %803 | |
OpStore %566 %804 | |
%805 = OpLoad %uint %565 | |
%806 = OpBitcast %int %805 | |
%807 = OpCompositeConstruct %v3int %806 %806 %806 | |
%808 = OpBitwiseAnd %v3int %807 %626 | |
%809 = OpIEqual %v3bool %808 %629 | |
%810 = OpLoad %v3float %551 | |
%811 = OpLoad %v3float %549 | |
%812 = OpSelect %v3float %809 %810 %811 | |
OpStore %567 %812 | |
%813 = OpLoad %uint %564 | |
%814 = OpSConvert %long %813 | |
%815 = OpSConvert %int %814 | |
%816 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %815 | |
%818 = OpAccessChain %_ptr_Workgroup_float %816 %int_3 | |
%819 = OpLoad %float %818 | |
%820 = OpLoad %uint %564 | |
%821 = OpSConvert %long %820 | |
%822 = OpSConvert %int %821 | |
%823 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %822 | |
%824 = OpAccessChain %_ptr_Workgroup_float %823 %int_3 | |
%825 = OpLoad %float %824 | |
%826 = OpLoad %uint %565 | |
%827 = OpSConvert %long %826 | |
%828 = OpSConvert %int %827 | |
%829 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %828 | |
%830 = OpAccessChain %_ptr_Workgroup_float %829 %int_3 | |
%831 = OpLoad %float %830 | |
%832 = OpFSub %float %825 %831 | |
%833 = OpFDiv %float %819 %832 | |
OpStore %568 %833 | |
%834 = OpLoad %v3float %566 | |
%835 = OpLoad %v3float %567 | |
%836 = OpLoad %float %568 | |
%837 = OpCompositeConstruct %v3float %836 %836 %836 | |
%838 = OpExtInst %v3float %245 FMix %834 %835 %837 | |
OpStore %569 %838 | |
%839 = OpLoad %uint %564 | |
%840 = OpSConvert %long %839 | |
%841 = OpSConvert %int %840 | |
%842 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %841 | |
%843 = OpLoad %v4float %842 | |
%844 = OpVectorShuffle %v3float %843 %843 0 1 2 | |
%845 = OpLoad %uint %565 | |
%846 = OpSConvert %long %845 | |
%847 = OpSConvert %int %846 | |
%848 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %847 | |
%849 = OpLoad %v4float %848 | |
%850 = OpVectorShuffle %v3float %849 %849 0 1 2 | |
%851 = OpLoad %float %568 | |
%852 = OpCompositeConstruct %v3float %851 %851 %851 | |
%853 = OpExtInst %v3float %245 FMix %844 %850 %852 | |
OpStore %570 %853 | |
%855 = OpAccessChain %_ptr_Uniform_mat4v4float %uniforms %int_0 | |
%856 = OpLoad %mat4v4float %855 | |
%857 = OpLoad %v3float %569 | |
%858 = OpCompositeConstruct %v4float %857 %float_1 | |
%859 = OpMatrixTimesVector %v4float %856 %858 | |
%860 = OpLoad %int %545 | |
%861 = OpSConvert %long %860 | |
%862 = OpSConvert %int %861 | |
%864 = OpAccessChain %_ptr_Output_gl_PerVertex %glmesh_Output %862 | |
%865 = OpAccessChain %_ptr_Output_v4float %864 %int_0 | |
OpStore %865 %859 | |
%866 = OpLoad %v3float %569 | |
%867 = OpLoad %int %545 | |
%868 = OpSConvert %long %867 | |
%869 = OpSConvert %int %868 | |
%871 = OpAccessChain %_ptr_Output_v3float %_Z16shader_out_arrayILj0EDv3_fE %869 | |
OpStore %871 %866 | |
%872 = OpLoad %v3float %570 | |
%873 = OpLoad %int %545 | |
%874 = OpSConvert %long %873 | |
%875 = OpSConvert %int %874 | |
%876 = OpAccessChain %_ptr_Output_v3float %_Z16shader_out_arrayILj1EDv3_fE %875 | |
OpStore %876 %872 | |
OpBranch %782 | |
%784 = OpLabel | |
OpBranch %782 | |
%782 = OpLabel | |
%877 = OpAccessChain %_ptr_Function_uchar %562 %int_2 | |
%878 = OpLoad %uchar %877 | |
%879 = OpSConvert %int %878 | |
%880 = OpIMul %int %int_3 %879 | |
OpStore %571 %880 | |
%881 = OpLoad %int %545 | |
%882 = OpIMul %int %int_4 %881 | |
%883 = OpLoad %int %571 | |
%884 = OpSLessThan %bool %882 %883 | |
OpSelectionMerge %885 None | |
OpBranchConditional %884 %886 %887 | |
%886 = OpLabel | |
OpBranch %885 | |
%887 = OpLabel | |
OpBranch %885 | |
%885 = OpLabel | |
OpReturn | |
OpFunctionEnd | |
%_Z9frag_mainv = OpFunction %void None %65 | |
%888 = OpLabel | |
%889 = OpVariable %_ptr_Function_v3float Function | |
%890 = OpVariable %_ptr_Function_v3float Function | |
%891 = OpVariable %_ptr_Function_float Function | |
%892 = OpVariable %_ptr_Function_float Function | |
%893 = OpVariable %_ptr_Function_float Function | |
%894 = OpVariable %_ptr_Function_float Function | |
%895 = OpVariable %_ptr_Function_v3float Function | |
%896 = OpVariable %_ptr_Function_v3float Function | |
%897 = OpVariable %_ptr_Function_v3float Function | |
%898 = OpVariable %_ptr_Function_v3float Function | |
%899 = OpVariable %_ptr_Function_v3float Function | |
%900 = OpVariable %_ptr_Function_v3float Function | |
%901 = OpLoad %v3float %_Z9shader_inILj0EDv3_fE | |
%903 = OpAccessChain %_ptr_Uniform_v3float %uniforms %int_1 | |
%904 = OpLoad %v3float %903 | |
%905 = OpFSub %v3float %901 %904 | |
OpStore %889 %905 | |
%906 = OpLoad %v3float %_Z9shader_inILj1EDv3_fE | |
%907 = OpExtInst %v3float %245 Normalize %906 | |
OpStore %890 %907 | |
OpStore %891 %float_1_12 | |
%909 = OpLoad %v3float %889 | |
%910 = OpLoad %v3float %890 | |
%911 = OpDot %float %909 %910 | |
OpStore %892 %911 | |
%912 = OpLoad %float %891 | |
%913 = OpLoad %float %892 | |
%914 = OpFMul %float %912 %913 | |
OpStore %893 %914 | |
%915 = OpLoad %float %893 | |
%916 = OpLoad %float %893 | |
%917 = OpFMul %float %915 %916 | |
%918 = OpLoad %float %891 | |
%919 = OpLoad %float %891 | |
%920 = OpFMul %float %918 %919 | |
%921 = OpFSub %float %float_1 %920 | |
%922 = OpFAdd %float %917 %921 | |
%923 = OpExtInst %float %245 FClamp %922 %float_0 %float_1 | |
OpStore %894 %923 | |
%924 = OpLoad %v3float %889 | |
%925 = OpLoad %v3float %890 | |
%926 = OpLoad %float %892 | |
%928 = OpFMul %float %float_2 %926 | |
%929 = OpVectorTimesScalar %v3float %925 %928 | |
%930 = OpFSub %v3float %924 %929 | |
OpStore %895 %930 | |
%931 = OpLoad %v3float %889 | |
%932 = OpLoad %float %891 | |
%933 = OpVectorTimesScalar %v3float %931 %932 | |
%934 = OpLoad %v3float %890 | |
%935 = OpLoad %float %893 | |
%936 = OpLoad %float %894 | |
%937 = OpExtInst %float %245 Sqrt %936 | |
%938 = OpFAdd %float %935 %937 | |
%939 = OpVectorTimesScalar %v3float %934 %938 | |
%940 = OpFSub %v3float %933 %939 | |
OpStore %896 %940 | |
%941 = OpLoad %samplerCube %sky_box | |
%942 = OpLoad %v3float %895 | |
%943 = OpImageSampleImplicitLod %v4float %941 %942 None | |
%944 = OpVectorShuffle %v3float %943 %943 0 1 2 | |
OpStore %897 %944 | |
%945 = OpLoad %samplerCube %sky_box | |
%946 = OpLoad %v3float %896 | |
%947 = OpImageSampleImplicitLod %v4float %945 %946 None | |
%948 = OpVectorShuffle %v3float %947 %947 0 1 2 | |
OpStore %898 %948 | |
%949 = OpLoad %v3float %897 | |
%950 = OpLoad %v3float %898 | |
%951 = OpLoad %float %894 | |
%952 = OpCompositeConstruct %v3float %951 %951 %951 | |
%953 = OpExtInst %v3float %245 FMix %949 %950 %952 | |
OpStore %899 %953 | |
%954 = OpLoad %v3float %890 | |
%955 = OpExtInst %v3float %245 FAbs %954 | |
%956 = OpLoad %float %894 | |
%957 = OpFSub %float %float_1 %956 | |
%959 = OpExtInst %float %245 Pow %957 %float_5 | |
%961 = OpFMul %float %float_0_25 %959 | |
%962 = OpVectorTimesScalar %v3float %955 %961 | |
OpStore %900 %962 | |
%963 = OpLoad %v3float %899 | |
%964 = OpLoad %v3float %900 | |
%965 = OpFAdd %v3float %963 %964 | |
%966 = OpCompositeConstruct %v4float %965 %float_1 | |
OpStore %_Z10shader_outILi0EDv4_fE %966 | |
OpReturn | |
OpFunctionEnd |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment