6import bevy_pbr::render::{ 8 view_transformations::position_world_to_clip 14 @builtin(instance_index) instance_index: u32, 17 @if(VERTEX_POSITIONS_COMPRESSED) 18 @location(0) compressed_position: vec4<f32>, 20 @location(0) position: vec3<f32>, 25 @builtin(position) clip_position: vec4<f32>, 26 @location(0) world_position: vec4<f32>, 30fn vertex(vertex: Vertex) -> VertexOutput { 31 var out: VertexOutput; 34 var world_from_local = mesh_functions::get_world_from_local(vertex.instance_index); 35@if(VERTEX_POSITIONS_COMPRESSED) { 36 let mesh_metadata = bevy_pbr::render::mesh_functions::get_metadata(vertex.instance_index); 37 let vertex_position = bevy_render::utils::decompress_vertex_position(vertex.compressed_position, mesh_metadata.aabb_center, mesh_metadata.aabb_half_extents); 40 let vertex_position = vertex.position; 42 out.world_position = mesh_functions::mesh_position_local_to_world(world_from_local, vec4(vertex_position, 1.0)); 43 out.clip_position = position_world_to_clip(out.world_position.xyz); 48fn fragment(in: VertexOutput) -> @location(0) vec4<f32> { 50 return vec4(1.0, 0.0, 0.0, 1.0);