9 prepass::io::{VertexOutput, FragmentOutput}, 12import bevy_pbr::render::{ 13 forward_io::{VertexOutput, FragmentOutput}, 16@if(MATERIAL_OIT_ENABLED) 17import bevy_core_pipeline::oit::draw::oit_draw; 18@if(MATERIAL_OIT_ENABLED) 19import bevy_pbr::render::pbr_types; 20@if(MATERIAL_OIT_ENABLED) 21import bevy_pbr::render::pbr_fragment::pbr_input_from_standard_material; 29@group(constants::MATERIAL_BIND_GROUP) @binding(100) var<uniform> material: Colors; 35 var out: FragmentOutput; 38 let grid = vec2u(in.uv * 30.0f) % 2; 39 out.color = select(material.color1, material.color2, (grid.x + grid.y == 1)); 41@if(MATERIAL_OIT_ENABLED) { 42 let pbr_input = pbr_input_from_standard_material(in, false); 43 let alpha_mode = pbr_input.material.flags & pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_RESERVED_BITS; 44 if alpha_mode == pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_BLEND { 46 oit_draw(in.position, vec4(out.color.rgb * out.color.a, out.color.a)); 50 if alpha_mode == pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_PREMULTIPLIED 51 || alpha_mode == pbr_types::STANDARD_MATERIAL_FLAGS_ALPHA_MODE_ADD { 53 oit_draw(in.position, out.color);