Crate smaa[][src]

Expand description

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::PRIMARY);
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)
    .unwrap_or(wgpu::TextureFormat::Bgra8UnormSrgb);
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().height,
    present_mode: wgpu::PresentMode::Mailbox,
});

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

// Main loop
event_loop.run(move |event, _, control_flow| {
    match event {
        Event::RedrawRequested(_) => {
            let output_frame = swap_chain.get_current_frame().unwrap().output;
            let frame = smaa_target.start_frame(&device, &queue, &output_frame.view);

            // Render the scene into `*frame`.
            // [...]
        }
        _ => {}
    }
});

Structs

Frame that the scene should be rendered into; can be created by a SmaaTarget.

Wraps a color buffer, which it can resolve into an antialiased image using the Subpixel Morphological Antialiasing (SMAA) algorithm.

Enums

Anti-aliasing mode. Higher values produce nicer results but run slower.