2 meshlet_visibility_buffer_resolve::resolve_vertex_output, 3 view_transformations::uv_to_ndc, 10fn vertex(@builtin(vertex_index) vertex_input: u32) -> @builtin(position) vec4<f32> { 11 let vertex_index = vertex_input % 3u; 12 let material_id = vertex_input / 3u; 13 let material_depth = f32(material_id) / 65535.0; 14 let uv = vec2<f32>(vec2(vertex_index >> 1u, vertex_index & 1u)) * 2.0; 15 return vec4(uv_to_ndc(uv), material_depth, 1.0); 19fn fragment(@builtin(position) frag_coord: vec4<f32>) -> @location(0) vec4<f32> { 20 let vertex_output = resolve_vertex_output(frag_coord); 21 var rng = vertex_output.cluster_id; 22 let color = vec3(rand_f(&rng), rand_f(&rng), rand_f(&rng)); 23 return vec4(color, 1.0); 26#ifdef PREPASS_FRAGMENT 28fn prepass_fragment(@builtin(position) frag_coord: vec4<f32>) -> prepass_io::FragmentOutput { 29 let vertex_output = resolve_vertex_output(frag_coord); 31 var out: prepass_io::FragmentOutput; 34 out.normal = vec4(vertex_output.world_normal * 0.5 + vec3(0.5), 1.0); 37#ifdef MOTION_VECTOR_PREPASS 38 out.motion_vector = vertex_output.motion_vector; 41#ifdef DEFERRED_PREPASS 46 out.deferred = vec4(0u, bevy_pbr::rgb9e5::vec3_to_rgb9e5_(vec3(1.0, 0.0, 1.0)), 0u, 0u); 47 out.deferred_lighting_pass_id = 1u;