3 pbr_functions::alpha_discard, 4 pbr_fragment::pbr_input_from_standard_material, 9 prepass_io::{VertexOutput, FragmentOutput}, 10 pbr_deferred_functions::deferred_output, 14 forward_io::{VertexOutput, FragmentOutput}, 16 pbr_functions::{apply_pbr_lighting, main_pass_post_lighting_processing}, 17 pbr_types::STANDARD_MATERIAL_FLAGS_UNLIT_BIT, 21#ifdef MESHLET_MESH_MATERIAL_PASS 22#import bevy_pbr::meshlet_visibility_buffer_resolve::resolve_vertex_output 26#import bevy_core_pipeline::oit::oit_draw 31#ifdef MESHLET_MESH_MATERIAL_PASS 32 @builtin(position) frag_coord: vec4<f32>, 35 @builtin(front_facing) is_front: bool, 38#ifdef MESHLET_MESH_MATERIAL_PASS 39 let in = resolve_vertex_output(frag_coord); 45#ifdef VISIBILITY_RANGE_DITHER 46 pbr_functions::visibility_range_dither(in.position, in.visibility_range_dither); 50 var pbr_input = pbr_input_from_standard_material(in, is_front); 53 pbr_input.material.base_color = alpha_discard(pbr_input.material, pbr_input.material.base_color); 55#ifdef PREPASS_PIPELINE 57 let out = deferred_output(in, pbr_input); 61 var out: FragmentOutput; 62 if (pbr_input.material.flags & STANDARD_MATERIAL_FLAGS_UNLIT_BIT) == 0u { 63 out.color = apply_pbr_lighting(pbr_input); 65 out.color = pbr_input.material.base_color; 70 out.color = main_pass_post_lighting_processing(pbr_input, out.color); 74 let alpha_mode = pbr_input.material.flags & pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_RESERVED_BITS; 75 if alpha_mode != pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_OPAQUE { 77 oit_draw(in.position, out.color);