1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//! # dlss_wgpu
//!
//! This crate provides Rust bindings for integrating NVIDIA DLSS (Deep Learning Super Sampling) with the `wgpu` graphics API.
//!
//! ## Setup
//! See <https://github.com/bevyengine/dlss_wgpu/blob/main/README.md> for setup instructions.
//!
//! This crate only works with wgpu's Vulkan backend. Other backends are not supported.
//!
//! For further info on how to integrate DLSS into your application, read `$DLSS_SDK/doc/DLSS_Programming_Guide_Release.pdf`.
//!
//! ## API Usage
//! ```compile_fail
//! use dlss_wgpu::{FeatureSupport, DlssSdk, DlssPerfQualityMode, DlssFeatureFlags};
//! use dlss_wgpu::super_resolution::{DlssSuperResolution, DlssSuperResolutionRenderParameters};
//!
//! let project_id = Uuid::parse_str("...").unwrap();
//! let mut feature_support = FeatureSupport::default();
//!
//! // Initialize wgpu
//! let instance = dlss_wgpu::create_instance(project_id, &instance_descriptor, &mut feature_support).unwrap();
//! let adapter = instance.request_adapter(&adapter_options).await.unwrap();
//! let (device, queue) = dlss_wgpu::request_device(project_id, &adapter, &device_descriptor, &mut feature_support, None).unwrap();
//!
//! // Check for feature support, if false don't create DLSS resources
//! println!("DLSS supported: {}", feature_support.super_resolution_supported);
//!
//! // Create the SDK once per application
//! let sdk = DlssSdk::new(project_id, device).expect("Failed to create DlssSdk");
//!
//! // Create a DLSS context once per camera or when DLSS settings change
//! let mut context = DlssSuperResolution::new(
//! camera.output_resolution,
//! DlssPerfQualityMode::Auto,
//! DlssFeatureFlags::empty(),
//! Arc::clone(&sdk),
//! &device,
//! &queue,
//! )
//! .expect("Failed to create DlssSuperResolution");
//!
//! // Setup camera settings
//! camera.view_size = context.render_resolution();
//! camera.subpixel_jitter = context.suggested_jitter(frame_number, camera.view_size);
//! camera.mip_bias = context.suggested_mip_bias(camera.view_size);
//!
//! // Encode DLSS render commands
//! let render_parameters = DlssSuperResolutionRenderParameters { ... };
//! let dlss_command_buffer = context.render(render_parameters, &mut command_encoder, &adapter)
//! .expect("Failed to render DLSS");
//!
//! // Submit render commands
//! queue.submit([command_encoder.finsh(), dlss_command_buffer]);
//! ```
/// DLSS Ray Reconstruction.
/// DLSS Super Resolution.
pub use ;
pub use ;
pub use DlssSdk;