From 9f2ecaec4ac4e4ebe9fec4003b105a2e39a326e8 Mon Sep 17 00:00:00 2001 From: Benjamin Hansen Date: Wed, 1 Feb 2023 21:26:30 -0700 Subject: [PATCH] added `view_formats` details to the docs --- code/beginner/tutorial2-surface/src/challenge.rs | 2 +- code/beginner/tutorial2-surface/src/lib.rs | 2 +- code/beginner/tutorial3-pipeline/src/challenge.rs | 2 +- code/beginner/tutorial3-pipeline/src/lib.rs | 2 +- code/beginner/tutorial4-buffer/src/challenge.rs | 2 +- code/beginner/tutorial4-buffer/src/lib.rs | 2 +- code/beginner/tutorial5-textures/src/challenge.rs | 2 +- code/beginner/tutorial5-textures/src/lib.rs | 2 +- code/beginner/tutorial6-uniforms/src/challenge.rs | 2 +- code/beginner/tutorial6-uniforms/src/lib.rs | 2 +- code/beginner/tutorial7-instancing/src/challenge.rs | 2 +- code/beginner/tutorial7-instancing/src/lib.rs | 2 +- code/beginner/tutorial8-depth/src/challenge.rs | 2 +- code/beginner/tutorial8-depth/src/lib.rs | 2 +- code/beginner/tutorial9-models/src/lib.rs | 2 +- code/intermediate/tutorial10-lighting/src/lib.rs | 2 +- code/intermediate/tutorial11-normals/src/lib.rs | 2 +- code/intermediate/tutorial12-camera/src/lib.rs | 2 +- code/intermediate/tutorial13-terrain/src/lib.rs | 2 +- code/showcase/compute/src/main.rs | 2 +- code/showcase/framework/src/lib.rs | 2 +- code/showcase/mouse-picking/src/lib.rs | 2 +- code/showcase/pong/src/render/mod.rs | 2 +- code/showcase/threading/src/lib.rs | 2 +- docs/beginner/tutorial2-surface/README.md | 10 +++++++--- docs/beginner/tutorial5-textures/README.md | 9 +++++++++ docs/intermediate/tutorial11-normals/README.md | 13 ++++++++----- 27 files changed, 48 insertions(+), 32 deletions(-) diff --git a/code/beginner/tutorial2-surface/src/challenge.rs b/code/beginner/tutorial2-surface/src/challenge.rs index 36ffc5d5..899c7c57 100644 --- a/code/beginner/tutorial2-surface/src/challenge.rs +++ b/code/beginner/tutorial2-surface/src/challenge.rs @@ -80,7 +80,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial2-surface/src/lib.rs b/code/beginner/tutorial2-surface/src/lib.rs index b49913e3..858ebe50 100644 --- a/code/beginner/tutorial2-surface/src/lib.rs +++ b/code/beginner/tutorial2-surface/src/lib.rs @@ -79,7 +79,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial3-pipeline/src/challenge.rs b/code/beginner/tutorial3-pipeline/src/challenge.rs index 9d331b08..d6cf6667 100644 --- a/code/beginner/tutorial3-pipeline/src/challenge.rs +++ b/code/beginner/tutorial3-pipeline/src/challenge.rs @@ -78,7 +78,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial3-pipeline/src/lib.rs b/code/beginner/tutorial3-pipeline/src/lib.rs index 4e3e65d1..b5d50826 100644 --- a/code/beginner/tutorial3-pipeline/src/lib.rs +++ b/code/beginner/tutorial3-pipeline/src/lib.rs @@ -80,7 +80,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial4-buffer/src/challenge.rs b/code/beginner/tutorial4-buffer/src/challenge.rs index 3f683cc0..c1aa27c3 100644 --- a/code/beginner/tutorial4-buffer/src/challenge.rs +++ b/code/beginner/tutorial4-buffer/src/challenge.rs @@ -141,7 +141,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial4-buffer/src/lib.rs b/code/beginner/tutorial4-buffer/src/lib.rs index 315774ef..dd71cbd9 100644 --- a/code/beginner/tutorial4-buffer/src/lib.rs +++ b/code/beginner/tutorial4-buffer/src/lib.rs @@ -137,7 +137,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial5-textures/src/challenge.rs b/code/beginner/tutorial5-textures/src/challenge.rs index a9571c6b..3160dea4 100644 --- a/code/beginner/tutorial5-textures/src/challenge.rs +++ b/code/beginner/tutorial5-textures/src/challenge.rs @@ -142,7 +142,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial5-textures/src/lib.rs b/code/beginner/tutorial5-textures/src/lib.rs index ba31a75b..34c5794c 100644 --- a/code/beginner/tutorial5-textures/src/lib.rs +++ b/code/beginner/tutorial5-textures/src/lib.rs @@ -142,7 +142,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial6-uniforms/src/challenge.rs b/code/beginner/tutorial6-uniforms/src/challenge.rs index a4151884..d275e47c 100644 --- a/code/beginner/tutorial6-uniforms/src/challenge.rs +++ b/code/beginner/tutorial6-uniforms/src/challenge.rs @@ -292,7 +292,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial6-uniforms/src/lib.rs b/code/beginner/tutorial6-uniforms/src/lib.rs index ff1ddabd..9e15635b 100644 --- a/code/beginner/tutorial6-uniforms/src/lib.rs +++ b/code/beginner/tutorial6-uniforms/src/lib.rs @@ -292,7 +292,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial7-instancing/src/challenge.rs b/code/beginner/tutorial7-instancing/src/challenge.rs index d0edcb38..3207a90d 100644 --- a/code/beginner/tutorial7-instancing/src/challenge.rs +++ b/code/beginner/tutorial7-instancing/src/challenge.rs @@ -346,7 +346,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial7-instancing/src/lib.rs b/code/beginner/tutorial7-instancing/src/lib.rs index e3c9a925..05832785 100644 --- a/code/beginner/tutorial7-instancing/src/lib.rs +++ b/code/beginner/tutorial7-instancing/src/lib.rs @@ -353,7 +353,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial8-depth/src/challenge.rs b/code/beginner/tutorial8-depth/src/challenge.rs index 00cff25d..a72384db 100644 --- a/code/beginner/tutorial8-depth/src/challenge.rs +++ b/code/beginner/tutorial8-depth/src/challenge.rs @@ -535,7 +535,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial8-depth/src/lib.rs b/code/beginner/tutorial8-depth/src/lib.rs index 39af8208..abfa4bdf 100644 --- a/code/beginner/tutorial8-depth/src/lib.rs +++ b/code/beginner/tutorial8-depth/src/lib.rs @@ -363,7 +363,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/beginner/tutorial9-models/src/lib.rs b/code/beginner/tutorial9-models/src/lib.rs index d52eefcc..f2e5595f 100644 --- a/code/beginner/tutorial9-models/src/lib.rs +++ b/code/beginner/tutorial9-models/src/lib.rs @@ -306,7 +306,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/intermediate/tutorial10-lighting/src/lib.rs b/code/intermediate/tutorial10-lighting/src/lib.rs index 76adcd22..9e075cf1 100644 --- a/code/intermediate/tutorial10-lighting/src/lib.rs +++ b/code/intermediate/tutorial10-lighting/src/lib.rs @@ -398,7 +398,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/intermediate/tutorial11-normals/src/lib.rs b/code/intermediate/tutorial11-normals/src/lib.rs index 4e9d596e..b560b76e 100644 --- a/code/intermediate/tutorial11-normals/src/lib.rs +++ b/code/intermediate/tutorial11-normals/src/lib.rs @@ -398,7 +398,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/intermediate/tutorial12-camera/src/lib.rs b/code/intermediate/tutorial12-camera/src/lib.rs index 81eb20af..3daf18da 100644 --- a/code/intermediate/tutorial12-camera/src/lib.rs +++ b/code/intermediate/tutorial12-camera/src/lib.rs @@ -278,7 +278,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/intermediate/tutorial13-terrain/src/lib.rs b/code/intermediate/tutorial13-terrain/src/lib.rs index 608ed6e3..1d5d5d41 100644 --- a/code/intermediate/tutorial13-terrain/src/lib.rs +++ b/code/intermediate/tutorial13-terrain/src/lib.rs @@ -280,7 +280,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/showcase/compute/src/main.rs b/code/showcase/compute/src/main.rs index fb191917..5d7478dc 100644 --- a/code/showcase/compute/src/main.rs +++ b/code/showcase/compute/src/main.rs @@ -217,7 +217,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/showcase/framework/src/lib.rs b/code/showcase/framework/src/lib.rs index cfb4873a..8a5c5c80 100644 --- a/code/showcase/framework/src/lib.rs +++ b/code/showcase/framework/src/lib.rs @@ -80,7 +80,7 @@ impl Display { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/showcase/mouse-picking/src/lib.rs b/code/showcase/mouse-picking/src/lib.rs index 7a70f2bc..11f385c6 100644 --- a/code/showcase/mouse-picking/src/lib.rs +++ b/code/showcase/mouse-picking/src/lib.rs @@ -283,7 +283,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/showcase/pong/src/render/mod.rs b/code/showcase/pong/src/render/mod.rs index 754d5acc..910a9664 100644 --- a/code/showcase/pong/src/render/mod.rs +++ b/code/showcase/pong/src/render/mod.rs @@ -87,7 +87,7 @@ impl Render { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/code/showcase/threading/src/lib.rs b/code/showcase/threading/src/lib.rs index e7dc2352..58e629b5 100644 --- a/code/showcase/threading/src/lib.rs +++ b/code/showcase/threading/src/lib.rs @@ -277,7 +277,7 @@ impl State { height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); diff --git a/docs/beginner/tutorial2-surface/README.md b/docs/beginner/tutorial2-surface/README.md index aa72413e..8242dfc2 100644 --- a/docs/beginner/tutorial2-surface/README.md +++ b/docs/beginner/tutorial2-surface/README.md @@ -169,7 +169,7 @@ The `limits` field describes the limit of certain types of resources that we can height: size.height, present_mode: surface_caps.present_modes[0], alpha_mode: surface_caps.alpha_modes[0], - view_formats: vec![surface_format], + view_formats: vec![], }; surface.configure(&device, &config); ``` @@ -190,16 +190,20 @@ Make sure that the width and height of the `SurfaceTexture` are not 0, as that c
-If you want to let your users pick what `PresentMode` they use, you can use [Surface::get_supported_modes()](https://docs.rs/wgpu/latest/wgpu/struct.Surface.html#method.get_supported_modes) to get a list of all the `PresentMode`s the surface supports: +If you want to let your users pick what `PresentMode` they use, you can use [SurfaceCapabilities::present_modes](https://docs.rs/wgpu/latest/wgpu/struct.SurfaceCapabilities.html#structfield.present_modes) to get a list of all the `PresentMode`s the surface supports: ```rust -let modes = surface.get_supported_modes(&adapter); +let modes = &surface_caps.present_modes; ``` Regardless, `PresentMode::Fifo` will always be supported, and `PresentMode::AutoVsync` and `PresentMode::AutoNoVsync` have fallback support and therefore will work on all platforms.
+`alpha_mode` is honestly not something I'm familiar with. I believe it has something to do with transparent windows, but feel free to open a pull request. For now we'll just use the first `AlphaMode` in the list given by `surface_caps`. + +`view_formats` is a list of `TextureFormat`s that you can use when creating `TextureView`s (we'll cover those briefly later in the this tutorial as well as more in depth [in the texture tutorial](../beginner/tutorial5-textures)). As of writing this means that if your surface is srgb color space, you can create a texture view that uses a linear color space. + Now that we've configured our surface properly we can add these new fields at the end of the method. ```rust diff --git a/docs/beginner/tutorial5-textures/README.md b/docs/beginner/tutorial5-textures/README.md index 04d0ec5d..a9161931 100644 --- a/docs/beginner/tutorial5-textures/README.md +++ b/docs/beginner/tutorial5-textures/README.md @@ -65,6 +65,14 @@ let diffuse_texture = device.create_texture( // COPY_DST means that we want to copy data to this texture usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, label: Some("diffuse_texture"), + // This is the same as with the SurfaceConfig. It + // specifies what texture formats can be used to + // create TextureViews for this texture. The base + // texture format (Rgba8UnormSrgb in this case) is + // always supported. Note that using a different + // texture format is not supported on the WebGL2 + // backend. + view_formats: &[], } ); ``` @@ -493,6 +501,7 @@ impl Texture { dimension: wgpu::TextureDimension::D2, format: wgpu::TextureFormat::Rgba8UnormSrgb, usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, + view_formats: &[], } ); diff --git a/docs/intermediate/tutorial11-normals/README.md b/docs/intermediate/tutorial11-normals/README.md index 88da99a9..f7aaeae5 100644 --- a/docs/intermediate/tutorial11-normals/README.md +++ b/docs/intermediate/tutorial11-normals/README.md @@ -442,6 +442,12 @@ pub fn from_image( is_normal_map: bool, // NEW! ) -> Result { // ... + // NEW! + let format = if is_normal_map { + wgpu::TextureFormat::Rgba8Unorm + } else { + wgpu::TextureFormat::Rgba8UnormSrgb + }; let texture = device.create_texture(&wgpu::TextureDescriptor { label, size, @@ -449,12 +455,9 @@ pub fn from_image( sample_count: 1, dimension: wgpu::TextureDimension::D2, // UPDATED! - format: if is_normal_map { - wgpu::TextureFormat::Rgba8Unorm - } else { - wgpu::TextureFormat::Rgba8UnormSrgb - }, + format, usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, + view_formats: &[], }); // ...