Crate smaa[][src]

Post-process antialiasing for wgpu-rs, using the SMAA reference implementation.

Example

// Initialize wgpu
let event_loop = EventLoop::new();
let window = winit::window::Window::new(&event_loop).unwrap();
let instance = wgpu::Instance::new(wgpu::BackendBit::all());
let surface = unsafe { instance.create_surface(&window) };
let adapter = instance.request_adapter(&Default::default()).await.unwrap();
let (device, queue) = adapter.request_device(&Default::default(), None).await?;
let swapchain_format = adapter.get_swap_chain_preferred_format(&surface);
let mut swap_chain = device.create_swap_chain(&surface, &wgpu::SwapChainDescriptor {
    usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
    format: swapchain_format,
    width: window.inner_size().width,
    height: window.inner_size().width,
    present_mode: wgpu::PresentMode::Mailbox,
});

// Create SMAA target
let mut smaa_target = SmaaTarget::new(
    &device,
    &queue,
    window.inner_size().width,
    window.inner_size().height,
    wgpu::TextureFormat::Rgba8Unorm,
    swapchain_format
)?;

// Main loop
event_loop.run(move |event, _, control_flow| {
    match event {
        Event::RedrawRequested(_) => {
            let frame = smaa_target.color_target();

            // Render the scene into `frame`.
            // [...]
    
            let output_frame = swap_chain.get_current_frame().unwrap().output;
            smaa_target.resolve(&device, &queue, &output_frame.view);
        }
        _ => {}
    }
});

Structs

SmaaTarget

A SmaaTarget wraps a color and depth buffer, which it can resolve into an antialiased image using the Subpixel Morphological Antialiasing (SMAA) algorithm.

Enums

ToneMappingFunction

Which tone mapping function to use. Currently, only one such function is supported, but more may be added in the future.