2 mesh2d::functions as mesh_functions, 3 mesh2d::vertex_output::VertexOutput, 4 mesh2d::view_bindings::view, 5 mesh2d::vertex_input::{Vertex, decompress_vertex}, 6 mesh2d::bindings as mesh2d_bindings, 7 sprite_mesh::bindings::material, 8 sprite_mesh::functions as sprite_functions, 11import package::sprite_mesh::bindings::material_indices; 14import bevy_core_pipeline::tonemapping; 16import bevy_render::color_operations::linear_to_srgb; 18import bevy_render::color_operations::linear_rgb_to_oklab; 21fn vertex(vertex: Vertex) -> VertexOutput { 22 let instance_index = vertex.instance_index; 25 let slot = mesh2d_bindings::mesh[instance_index].material_bind_group_slot; 27 let vertex_scale = material[material_indices[slot].material].vertex_scale; 29 let vertex_scale = material.vertex_scale; 31 let vertex_offset = material[material_indices[slot].material].vertex_offset; 33 let vertex_offset = material.vertex_offset; 35 var out: VertexOutput; 36 let uncompressed_vertex = decompress_vertex(vertex, instance_index); 38 out.uv = uncompressed_vertex.uv; 41 var world_from_local = mesh_functions::get_world_from_local(instance_index); 43 let position = vec4<f32>(uncompressed_vertex.position * vec3<f32>(vertex_scale, 1.0) + vec3<f32>(vertex_offset, 0.0), 1.0); 46 out.world_position = mesh_functions::mesh2d_position_local_to_world( 51 out.position = mesh_functions::mesh2d_position_world_to_clip(out.world_position); 54 out.world_normal = mesh_functions::mesh2d_normal_local_to_world(uncompressed_vertex.normal, vertex.instance_index); 57 out.world_tangent = mesh_functions::mesh2d_tangent_local_to_world( 59 uncompressed_vertex.tangent 63 out.color = uncompressed_vertex.color; 65 out.instance_index = instance_index; 73) -> @location(0) vec4<f32> { 74 var output_color = sprite_functions::sample_final_color(mesh.uv, mesh.instance_index); 77 output_color = tonemapping::tone_mapping(output_color, view.color_grading); 80 output_color = vec4(linear_to_srgb(output_color.rgb), output_color.a); 83 output_color = vec4(linear_rgb_to_oklab(output_color.rgb), output_color.a);