Fixes https://github.com/bevyengine/bevy/issues/1207 # Objective Right now, it's impossible to capture a screenshot of the entire window without forking bevy. This is because - The swapchain texture never has the COPY_SRC usage - It can't be accessed without taking ownership of it - Taking ownership of it breaks *a lot* of stuff ## Solution - Introduce a dedicated api for taking a screenshot of a given bevy window, and guarantee this screenshot will always match up with what gets put on the screen. --- ## Changelog - Added the `ScreenshotManager` resource with two functions, `take_screenshot` and `save_screenshot_to_disk`
17 lines
606 B
WebGPU Shading Language
17 lines
606 B
WebGPU Shading Language
// This vertex shader will create a triangle that will cover the entire screen
|
|
// with minimal effort, avoiding the need for a vertex buffer etc.
|
|
@vertex
|
|
fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> @builtin(position) vec4<f32> {
|
|
let x = f32((in_vertex_index & 1u) << 2u);
|
|
let y = f32((in_vertex_index & 2u) << 1u);
|
|
return vec4<f32>(x - 1.0, y - 1.0, 0.0, 1.0);
|
|
}
|
|
|
|
@group(0) @binding(0) var t: texture_2d<f32>;
|
|
|
|
@fragment
|
|
fn fs_main(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
let coords = floor(pos.xy);
|
|
return textureLoad(t, vec2<i32>(coords), 0i);
|
|
}
|