3 pbr_functions::alpha_discard, 4 pbr_fragment::pbr_input_from_standard_material, 5 decal::clustered::apply_decal_base_color, 10 prepass_io::{VertexOutput, FragmentOutput}, 11 pbr_deferred_functions::deferred_output, 15 forward_io::{VertexOutput, FragmentOutput}, 17 pbr_functions::{apply_pbr_lighting, main_pass_post_lighting_processing}, 18 pbr_types::STANDARD_MATERIAL_FLAGS_UNLIT_BIT, 22#ifdef MESHLET_MESH_MATERIAL_PASS 23#import bevy_pbr::meshlet_visibility_buffer_resolve::resolve_vertex_output 27#import bevy_core_pipeline::oit::oit_draw 31#import bevy_pbr::decal::forward::get_forward_decal_info 36#ifdef MESHLET_MESH_MATERIAL_PASS 37 @builtin(position) frag_coord: vec4<f32>, 39 vertex_output: VertexOutput, 40 @builtin(front_facing) is_front: bool, 43#ifdef MESHLET_MESH_MATERIAL_PASS 44 let vertex_output = resolve_vertex_output(frag_coord); 48 var in = vertex_output; 52#ifdef VISIBILITY_RANGE_DITHER 53 pbr_functions::visibility_range_dither(in.position, in.visibility_range_dither); 57 let forward_decal_info = get_forward_decal_info(in); 58 in.world_position = forward_decal_info.world_position; 59 in.uv = forward_decal_info.uv; 63 var pbr_input = pbr_input_from_standard_material(in, is_front); 66 pbr_input.material.base_color = alpha_discard(pbr_input.material, pbr_input.material.base_color); 69 pbr_input.material.base_color = apply_decal_base_color( 70 in.world_position.xyz, 72 pbr_input.material.base_color 75#ifdef PREPASS_PIPELINE 77 let out = deferred_output(in, pbr_input); 81 var out: FragmentOutput; 82 if (pbr_input.material.flags & STANDARD_MATERIAL_FLAGS_UNLIT_BIT) == 0u { 83 out.color = apply_pbr_lighting(pbr_input); 85 out.color = pbr_input.material.base_color; 90 out.color = main_pass_post_lighting_processing(pbr_input, out.color); 94 let alpha_mode = pbr_input.material.flags & pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_RESERVED_BITS; 95 if alpha_mode != pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_OPAQUE { 97 oit_draw(in.position, out.color); 103 out.color.a = min(forward_decal_info.alpha, out.color.a);