Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.
1import bevy_render::{
2 view::View,
3 maths::powsafe,
4};
5import package::{
6 fullscreen_vertex_shader::FullscreenVertexOutput,
7 tonemapping::{tone_mapping, screen_space_dither},
8};
10@group(0) @binding(0) var<uniform> view: View;
12@group(0) @binding(1) var hdr_texture: texture_2d<f32>;
13@group(0) @binding(2) var hdr_sampler: sampler;
14@group(0) @binding(3) var dt_lut_texture: texture_3d<f32>;
15@group(0) @binding(4) var dt_lut_sampler: sampler;
17@fragment
18fn fragment(in: FullscreenVertexOutput) -> @location(0) vec4<f32> {
19 let hdr_color = textureSample(hdr_texture, hdr_sampler, in.uv);
21 var output_rgb = tone_mapping(hdr_color, view.color_grading).rgb;
23@if(DEBAND_DITHER) {
24 output_rgb = powsafe(output_rgb.rgb, 1.0 / 2.2);
25 output_rgb = output_rgb + screen_space_dither(in.position.xy);
26 // This conversion back to linear space is required because our output texture format is
27 // SRGB; the GPU will assume our output is linear and will apply an SRGB conversion.
28 output_rgb = powsafe(output_rgb.rgb, 2.2);
31 return vec4<f32>(output_rgb, hdr_color.a);
Contents