struct _MatrixStorage_float4x4_ColMajorstd140_0 { @align(16) data_0 : array, i32(4)>, }; @binding(0) @group(1) var view_projection_matrix_0 : _MatrixStorage_float4x4_ColMajorstd140_0; @binding(0) @group(2) var texture1_texture_0 : texture_2d; @binding(1) @group(2) var texture1_sampler_0 : sampler; @binding(0) @group(3) var tint_0 : vec3; struct VertexShaderOutput_0 { @builtin(position) pos_0 : vec4, @location(0) uv_0 : vec2, }; struct vertexInput_0 { @location(0) pos_1 : vec3, @location(1) uv_1 : vec2, @location(2) world_pos_0 : vec2, @location(3) sprite_selection_0 : u32, }; @vertex fn main_vertex( _S1 : vertexInput_0, @builtin(vertex_index) vertex_index_0 : u32) -> VertexShaderOutput_0 { var output_0 : VertexShaderOutput_0; output_0.pos_0 = (((mat4x4(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4(_S1.world_pos_0 + _S1.pos_1.xy, 0.0f, 1.0f)))); output_0.uv_0 = (vec2(f32((u32(_S1.sprite_selection_0>>(u32(16)))&((((u32(1)<>(u32(0)))&((((u32(1)<(0.25f); return output_0; } fn GetDimensions_0( texture_texture_0 : texture_2d, texture_sampler_0 : sampler, width_0 : ptr, height_0 : ptr) { {var dim = textureDimensions((texture_texture_0));(((*width_0))) = f32(dim.x);(((*height_0))) = f32(dim.y);}; return; } fn pixel_art_sample_0( input_texture_texture_0 : texture_2d, input_texture_sampler_0 : sampler, input_uv_0 : vec2) -> vec4 { var dimensions_0 : vec2; var _S2 : f32 = dimensions_0[i32(0)]; var _S3 : f32 = dimensions_0[i32(1)]; GetDimensions_0(input_texture_texture_0, input_texture_sampler_0, &(_S2), &(_S3)); dimensions_0[i32(0)] = _S2; dimensions_0[i32(1)] = _S3; var _S4 : vec2 = input_uv_0 * dimensions_0.xy; var _S5 : vec2 = (floor(_S4) + min(fract(_S4) / (fwidth((_S4))), vec2(1.0f, 1.0f)) - vec2(0.5f)) / dimensions_0.xy; ; return (textureSample((input_texture_texture_0), (input_texture_sampler_0), (_S5))); } struct FragmentShaderOutput_0 { @location(0) color_0 : vec4, }; struct pixelInput_0 { @location(0) uv_2 : vec2, }; @fragment fn main_fragment( _S6 : pixelInput_0, @builtin(position) pos_2 : vec4) -> FragmentShaderOutput_0 { var output_1 : FragmentShaderOutput_0; var _S7 : vec4 = pixel_art_sample_0(texture1_texture_0, texture1_sampler_0, _S6.uv_2); output_1.color_0 = vec4(_S7.xyz * tint_0.xyz, _S7.w); return output_1; }