#define_import_path bevy_render::view struct ColorGrading { balance: mat3x3, saturation: vec3, contrast: vec3, gamma: vec3, gain: vec3, lift: vec3, midtone_range: vec2, exposure: f32, hue: f32, post_saturation: f32, } struct View { clip_from_world: mat4x4, unjittered_clip_from_world: mat4x4, world_from_clip: mat4x4, world_from_view: mat4x4, view_from_world: mat4x4, // Typically a column-major right-handed projection matrix, one of either: // // Perspective (infinite reverse z) // ``` // f = 1 / tan(fov_y_radians / 2) // // ⎡ f / aspect 0 0 0 ⎤ // ⎢ 0 f 0 0 ⎥ // ⎢ 0 0 0 near ⎥ // ⎣ 0 0 -1 0 ⎦ // ``` // // Orthographic // ``` // w = right - left // h = top - bottom // d = far - near // cw = -right - left // ch = -top - bottom // // ⎡ 2 / w 0 0 cw / w ⎤ // ⎢ 0 2 / h 0 ch / h ⎥ // ⎢ 0 0 1 / d far / d ⎥ // ⎣ 0 0 0 1 ⎦ // ``` // // `clip_from_view[3][3] == 1.0` is the standard way to check if a projection is orthographic // // Wgsl matrices are column major, so for example getting the near plane of a perspective projection is `clip_from_view[3][2]` // // Custom projections are also possible however. clip_from_view: mat4x4, view_from_clip: mat4x4, world_position: vec3, exposure: f32, // viewport(x_origin, y_origin, width, height) viewport: vec4, // 6 world-space half spaces (normal: vec3, distance: f32) ordered left, right, top, bottom, near, far. // The normal vectors point towards the interior of the frustum. // A half space contains `p` if `normal.dot(p) + distance > 0.` frustum: array, 6>, color_grading: ColorGrading, mip_bias: f32, frame_count: u32, };