1import package::mesh2d::{ 2 functions as mesh_functions, 3 vertex_output::VertexOutput, 5 vertex_input::{Vertex, decompress_vertex} 9import bevy_core_pipeline::tonemapping; 11import bevy_render::color_operations::linear_to_srgb; 13import bevy_render::color_operations::linear_rgb_to_oklab; 16fn vertex(vertex: Vertex) -> VertexOutput { 17 var out: VertexOutput; 18 let uncompressed_vertex = decompress_vertex(vertex, vertex.instance_index); 20 out.uv = uncompressed_vertex.uv; 23 var world_from_local = mesh_functions::get_world_from_local(vertex.instance_index); 25 out.world_position = mesh_functions::mesh2d_position_local_to_world( 27 vec4<f32>(uncompressed_vertex.position, 1.0) 30 out.position = mesh_functions::mesh2d_position_world_to_clip(out.world_position); 33 out.world_normal = mesh_functions::mesh2d_normal_local_to_world(uncompressed_vertex.normal, vertex.instance_index); 36 out.world_tangent = mesh_functions::mesh2d_tangent_local_to_world( 38 uncompressed_vertex.tangent 42 out.color = uncompressed_vertex.color; 44 out.instance_index = vertex.instance_index; 52) -> @location(0) vec4<f32> { 56 color = tonemapping::tone_mapping(color, view.color_grading); 58 color = vec4(linear_to_srgb(color.rgb), color.a); 60 color = vec4(linear_rgb_to_oklab(color.rgb), color.a); 63 return vec4<f32>(1.0, 0.0, 1.0, 1.0);