0.18 and hdr tutorial

pull/505/head
Benjamin Hansen 6 months ago
parent f111c33cba
commit 653a9928b3

722
Cargo.lock generated

File diff suppressed because it is too large Load Diff

@ -16,5 +16,5 @@ members = [
]
exclude = [
"code/showcase/imgui-demo",
#"code/showcase/pong",
"code/showcase/pong",
]

@ -16,13 +16,13 @@ cfg-if = "1"
winit = "0.28"
env_logger = "0.10"
log = "0.4"
wgpu = "0.17"
wgpu = "0.18"
pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "=0.2.87"
wasm-bindgen-futures = "0.4.30"
web-sys = { version = "0.3.53", features = [

@ -12,13 +12,13 @@ cfg-if = "1"
winit = "0.28"
env_logger = "0.10"
log = "0.4"
wgpu = "0.17"
wgpu = "0.18"
pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -28,7 +28,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -150,10 +150,12 @@ impl State {
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Clear(self.clear_color),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
}

@ -29,7 +29,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -142,10 +142,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
}

@ -12,13 +12,13 @@ cfg-if = "1"
winit = "0.28"
env_logger = "0.10"
log = "0.4"
wgpu = "0.17"
wgpu = "0.18"
pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -26,7 +26,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -255,10 +255,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(if self.use_color {

@ -28,7 +28,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -197,10 +197,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);

@ -11,7 +11,7 @@ crate-type = ["cdylib", "rlib"]
[dependencies]
cfg-if = "1"
winit = "0.28"
wgpu = "0.17"
wgpu = "0.18"
env_logger = "0.10"
log = "0.4"
pollster = "0.3"
@ -21,7 +21,7 @@ bytemuck = { version = "1.12", features = [ "derive" ] }
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -89,7 +89,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -323,10 +323,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);

@ -85,7 +85,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -269,10 +269,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);

@ -14,7 +14,7 @@ bytemuck = { version = "1.12", features = [ "derive" ] }
env_logger = "0.10"
log = "0.4"
pollster = "0.3"
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
[dependencies.image]
@ -25,7 +25,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -91,7 +91,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -354,10 +354,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
let bind_group = if self.is_space_pressed {

@ -91,7 +91,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -318,10 +318,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);

@ -15,7 +15,7 @@ cgmath = "0.18"
env_logger = "0.10"
log = "0.4"
pollster = "0.3"
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
[dependencies.image]
@ -26,7 +26,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -241,7 +241,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -530,10 +530,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);

@ -241,7 +241,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -526,10 +526,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);

@ -15,7 +15,7 @@ cgmath = "0.18"
env_logger = "0.10"
log = "0.4"
pollster = "0.3"
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
[dependencies.image]
@ -26,7 +26,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -295,7 +295,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -630,10 +630,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -302,7 +302,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -622,10 +622,12 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);

@ -15,7 +15,7 @@ cgmath = "0.18"
env_logger = "0.10"
pollster = "0.3"
log = "0.4"
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
[dependencies.image]
@ -26,7 +26,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -446,10 +446,12 @@ impl DepthPass {
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Load,
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_pipeline(&self.render_pipeline);
render_pass.set_bind_group(0, &self.bind_group, &[]);
@ -492,7 +494,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -826,17 +828,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_pass.texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -312,7 +312,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -643,17 +643,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -1,5 +1,3 @@
use std::num::NonZeroU32;
use anyhow::*;
use image::GenericImageView;
@ -54,6 +52,7 @@ impl Texture {
}
}
#[allow(unused)]
pub fn create_depth_texture_non_comparison_sampler(
device: &wgpu::Device,
config: &wgpu::SurfaceConfiguration,

@ -16,7 +16,7 @@ env_logger = "0.10"
pollster = "0.3"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
[dependencies.image]
@ -28,7 +28,7 @@ features = ["png", "jpeg"]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -252,7 +252,7 @@ impl State {
log::warn!("WGPU setup");
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -554,17 +554,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -16,7 +16,7 @@ env_logger = "0.10"
pollster = "0.3"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.17"}
wgpu = { version = "0.18"}
winit = "0.28"
[dependencies.image]
@ -28,7 +28,7 @@ features = ["png", "jpeg"]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -347,7 +347,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -684,17 +684,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -16,7 +16,7 @@ env_logger = "0.10"
pollster = "0.3"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.17"}
wgpu = { version = "0.18"}
winit = "0.28"
[dependencies.image]
@ -28,7 +28,7 @@ features = ["png", "jpeg"]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -347,7 +347,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -735,17 +735,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -189,7 +189,7 @@ pub async fn load_model(
// Average the tangents/bitangents
for (i, n) in triangles_included.into_iter().enumerate() {
let denom = 1.0 / n as f32;
let mut v = &mut vertices[i];
let v = &mut vertices[i];
v.tangent = (cgmath::Vector3::from(v.tangent) * denom).into();
v.bitangent = (cgmath::Vector3::from(v.bitangent) * denom).into();
}

@ -16,7 +16,7 @@ env_logger = "0.10"
pollster = "0.3"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.17"}
wgpu = { version = "0.18"}
winit = "0.28"
instant = "0.1"
@ -29,7 +29,7 @@ features = ["png", "jpeg"]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -227,7 +227,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -637,17 +637,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -189,7 +189,7 @@ pub async fn load_model(
// Average the tangents/bitangents
for (i, n) in triangles_included.into_iter().enumerate() {
let denom = 1.0 / n as f32;
let mut v = &mut vertices[i];
let v = &mut vertices[i];
v.tangent = (cgmath::Vector3::from(v.tangent) * denom).into();
v.bitangent = (cgmath::Vector3::from(v.bitangent) * denom).into();
}

@ -1,6 +1,5 @@
use anyhow::*;
use image::GenericImageView;
use std::num::NonZeroU32;
pub struct Texture {
pub texture: wgpu::Texture,

@ -16,7 +16,7 @@ env_logger = "0.10"
pollster = "0.3"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.17"}
wgpu = { version = "0.18"}
winit = "0.28"
instant = "0.1"

@ -146,10 +146,12 @@ impl HdrPipeline {
resolve_target: None,
ops: Operations {
load: wgpu::LoadOp::Load,
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
pass.set_pipeline(&self.pipeline);
pass.set_bind_group(0, &self.bind_group, &[]);

@ -250,7 +250,7 @@ impl State {
backends: wgpu::Backends::BROWSER_WEBGPU,
#[cfg(not(target_arch="wasm32"))]
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -737,17 +737,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));
@ -786,10 +788,12 @@ impl State {
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Load,
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
self.debug.draw_axis(&mut pass, &self.camera_bind_group);
}

@ -356,7 +356,7 @@ impl HdrLoader {
});
let mut encoder = device.create_command_encoder(&Default::default());
let mut pass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor { label });
let mut pass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor { label, timestamp_writes: None });
let num_workgroups = (dst_size + 15) / 16;
pass.set_pipeline(&self.equirect_to_cubemap);

@ -133,8 +133,7 @@ fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
let reflection = textureSample(env_map, env_sampler, world_reflect).rgb;
let shininess = 0.1;
// let result = (diffuse_color + specular_color) * object_color.xyz + reflection * shininess;
let result = reflection;
let result = (diffuse_color + specular_color) * object_color.xyz + reflection * shininess;
return vec4<f32>(result, object_color.a);
}

@ -16,7 +16,7 @@ env_logger = "0.10"
pollster = "0.3"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.17"}
wgpu = { version = "0.18"}
winit = "0.28"
instant = "0.1"
@ -29,7 +29,7 @@ features = ["png", "jpeg"]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -228,7 +228,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -679,17 +679,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -205,7 +205,7 @@ pub async fn load_model(
// Average the tangents/bitangents
for (i, n) in triangles_included.into_iter().enumerate() {
let denom = 1.0 / n as f32;
let mut v = &mut vertices[i];
let v = &mut vertices[i];
v.tangent = (cgmath::Vector3::from(v.tangent) * denom).into();
v.bitangent = (cgmath::Vector3::from(v.bitangent) * denom).into();
}

@ -272,6 +272,7 @@ impl GenerateChunk for TerrainPipeline {
let mut cpass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor {
label: Some("TerrainPipeline: ComputePass"),
timestamp_writes: None,
});
cpass.set_pipeline(&self.gen_pipeline);
cpass.set_bind_group(0, &bind_group, &[]);

@ -14,7 +14,7 @@ image = "0.24"
log = "0.4"
rayon = "1.4"
tobj = "2.0"
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
[build-dependencies]

@ -166,7 +166,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -589,17 +589,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -362,6 +362,7 @@ impl ModelLoader {
{
let mut pass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor {
label: Some("Compute Pass"),
timestamp_writes: None,
});
pass.set_pipeline(&self.pipeline);
pass.set_bind_group(0, &calc_bind_group, &[]);

@ -1,6 +1,6 @@
use anyhow::*;
use image::GenericImageView;
use std::{num::NonZeroU32, path::Path};
use std::path::Path;
pub struct Texture {
pub texture: wgpu::Texture,

@ -14,7 +14,7 @@ pollster = "0.3"
image = "0.24.2"
log = "0.4"
tobj = "2.0"
wgpu = "0.17"
wgpu = "0.18"
wgpu-subscriber = "0.1"
winit = "0.28"

@ -36,7 +36,7 @@ impl Display {
let size = window.inner_size();
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
let surface = unsafe { instance.create_surface(&window) }.unwrap();
let adapter = instance

@ -85,10 +85,12 @@ impl ShaderCanvas {
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Load,
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
pass.set_bind_group(0, &self.simulation_bind_group, &[]);
pass.set_pipeline(&self.pipeline);

@ -1,7 +1,7 @@
use anyhow::*;
use image::GenericImageView;
use std::path::Path;
use std::{mem, num::NonZeroU32};
use std::mem;
use crate::buffer;

@ -14,7 +14,7 @@ pollster = "0.3"
image = "0.24.2"
log = "0.4"
tobj = "3.1"
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
gif = "0.11.4"
futures-intrusive = "0.4"

@ -6,7 +6,7 @@ use std::{iter, mem};
async fn run() {
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
let adapter = instance
.request_adapter(&wgpu::RequestAdapterOptions::default())
@ -100,10 +100,12 @@ async fn run() {
b: c[2],
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
rpass.set_pipeline(&render_pipeline);

@ -8,9 +8,9 @@ edition = "2018"
[dependencies]
anyhow = "1.0"
wgpu = "0.17"
wgpu = "0.18"
pollster = "0.3"
imgui = "0.7"
imgui-wgpu = "0.17"
imgui-wgpu = "0.18"
imgui-winit-support = "0.7"
framework = { path = "../framework" }

@ -119,7 +119,7 @@ impl framework::Demo for ImguiDemo {
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Load,
store: true,
store: wgpu::StoreOp::Store,
},
}],
depth_stencil_attachment: None,

@ -7,6 +7,6 @@ edition = "2021"
[dependencies]
anyhow = "1"
wgpu = "0.17"
wgpu = "0.18"
winit = "0.28"
pollster = "0.3"

@ -89,6 +89,8 @@ async fn run() -> anyhow::Result<()> {
ops: Default::default(),
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
}));
queue.submit([encoder.finish()]);
frame.present();

@ -16,7 +16,7 @@ env_logger = "0.10"
pollster = "0.3"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.17"}
wgpu = { version = "0.18"}
winit = "0.28"
instant = "0.1"
@ -29,7 +29,7 @@ features = ["png", "jpeg"]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -232,7 +232,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -684,17 +684,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -15,7 +15,7 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18"
pollster = "0.3"
wgpu = { version = "0.17", features = ["spirv"]}
wgpu = { version = "0.18", features = ["spirv"]}
#wgpu_glyph = { version = "0.20", path = "../../../../wgpu_glyph" }
wgpu_glyph = { version = "0.20", git = "https://github.com/sotrh/wgpu_glyph.git" }
rand = "0.8"
@ -35,7 +35,7 @@ web-sys = { version = "0.3.53", features = [
"Window",
"Element",
]}
wgpu = { version = "0.17", features = ["spirv", "webgl"]}
wgpu = { version = "0.18", features = ["spirv", "webgl"]}
[build-dependencies]
anyhow = "1.0"

@ -42,7 +42,7 @@ impl Render {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety

@ -11,5 +11,5 @@ bytemuck = { version = "1.13.1", features = ["derive"] }
framework = { version = "0.1", path = "../framework"}
glam = { version = "0.24.1", features = ["bytemuck"] }
pollster = "0.3.0"
wgpu = "0.17.0"
wgpu = "0.18"
winit = "0.28.6"

@ -302,6 +302,7 @@ impl framework::Demo for Snow {
let mut encoder = display.device.create_command_encoder(&Default::default());
let mut move_pass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor {
label: Some("move_pass"),
timestamp_writes: None,
});
move_pass.set_pipeline(&self.move_particles);
move_pass.set_bind_group(0, &self.particle_bind_groups[self.iteration % 2], &[]);
@ -331,10 +332,12 @@ impl framework::Demo for Snow {
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Clear(wgpu::Color::BLACK),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
});
draw_pass.set_pipeline(&self.draw_particles);

@ -17,7 +17,7 @@ pollster = "0.3"
log = "0.4"
rayon = "1.4" # NEW!
tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.17"}
wgpu = { version = "0.18"}
winit = "0.28"
instant = "0.1"
async-std = "1"
@ -31,7 +31,7 @@ features = ["png", "jpeg"]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -226,7 +226,7 @@ impl State {
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -645,17 +645,19 @@ impl State {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),
occlusion_query_set: None,
timestamp_writes: None,
});
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));

@ -9,7 +9,7 @@ edition = "2018"
[dependencies]
image = "0.24"
shaderc = "0.8"
wgpu = { version = "0.17", features = ["spirv"] }
wgpu = { version = "0.18", features = ["spirv"] }
pollster = "0.3"
futures-intrusive = "0.4"

@ -3,7 +3,7 @@ use std::num::NonZeroU32;
async fn run() {
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
let adapter = instance
.request_adapter(&wgpu::RequestAdapterOptions {
@ -147,10 +147,12 @@ async fn run() {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
};
let mut render_pass = encoder.begin_render_pass(&render_pass_desc);

@ -60,6 +60,7 @@ module.exports = {
title: 'News',
collapsable: true,
children: [
'/news/0.18 and hdr/',
'/news/0.17/',
'/news/0.16/',
'/news/0.15/',

@ -11,7 +11,7 @@ For the beginner stuff, we're going to keep things very simple, we'll add things
winit = "0.28"
env_logger = "0.10"
log = "0.4"
wgpu = "0.17"
wgpu = "0.18"
```
## Using Rust's new resolver
@ -110,7 +110,7 @@ cfg-if = "1"
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4.30"
web-sys = { version = "0.3", features = [

@ -62,7 +62,7 @@ impl State {
// Backends::all => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(),
..Default::default()
});
// # Safety
@ -264,13 +264,13 @@ cfg-if = "1"
winit = "0.28"
env_logger = "0.10"
log = "0.4"
wgpu = "0.17"
wgpu = "0.18"
pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6"
console_log = "1.0"
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [
@ -423,7 +423,7 @@ Now we can get to clearing the screen (long time coming). We need to use the `en
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
@ -511,7 +511,7 @@ Some(wgpu::RenderPassColorAttachment {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})
```

@ -308,7 +308,7 @@ If you run your program now, it'll take a little longer to start, but it will st
a: 1.0,
}
),
store: true,
store: wgpu::StoreOp::Store,
}
})
],

@ -450,7 +450,7 @@ winit = "0.28"
env_logger = "0.10"
log = "0.4"
pollster = "0.3"
wgpu = "0.17"
wgpu = "0.18"
bytemuck = { version = "1.12", features = [ "derive" ] }
anyhow = "1.0" # NEW!
```

@ -158,7 +158,7 @@ let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
view: &self.depth_texture.view,
depth_ops: Some(wgpu::Operations {
load: wgpu::LoadOp::Clear(1.0),
store: true,
store: wgpu::StoreOp::Store,
}),
stencil_ops: None,
}),

@ -196,7 +196,7 @@ impl HdrPipeline {
resolve_target: None,
ops: Operations {
load: wgpu::LoadOp::Load,
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: None,
@ -366,7 +366,7 @@ let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
})],
depth_stencil_attachment: Some(
@ -566,7 +566,7 @@ Consequently we are going to remove the webgl feature from
`Cargo.toml`. This line in particular:
```toml
wgpu = { version = "0.17", features = ["webgl"]}
wgpu = { version = "0.18", features = ["webgl"]}
```
</div>

@ -29,7 +29,7 @@ In other news WebGPU has been added to Chrome 113 and up! Currently the Linux ve
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
# wgpu = { version = "0.17", features = ["webgl"]}
# wgpu = { version = "0.18", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [

@ -0,0 +1,27 @@
# Update to 0.18 and HDR tutorial
First let's go over some of the changes that occurred:
1. `RenderPassDescriptor` now have 2 new fields:
`occlusion_query_set` and, `timestamp_writes`. I'm
setting both to `None` for now.
2. `ComputePassDescriptor` now has a `timestamp_writes`
field.
3. `InstanceDescriptor` now has some more fields, but I
opted to just use `..Default::default()` for all the
fields other than `backends`.
## HDR tutorial
I've been unsure how best to introduce compute shaders
as they are a big part of what makes WebGPU special, but
most browsers don't support them at the moment. With Chrome
rolling out support for WebGPU, I felt more confident
writing a tutorial for them.
Also, I'm been interested learning how to load HDR images
from places like Polyhaven, so I decided to introduce
compute shaders by creating one that will load an HDR and
convert it to a Cubemap to be rendered.
You can check it out [here](../../intermediate/tutorial13-hdr)!

@ -112,7 +112,7 @@ for c in &colors {
a: 1.0,
}
),
store: true,
store: wgpu::StoreOp::Store,
},
}
],

@ -14,7 +14,7 @@ This is not an in-depth guide on how to use Imgui. But here are some of the basi
```toml
imgui = "0.7"
imgui-wgpu = "0.17"
imgui-wgpu = "0.18"
imgui-winit-support = "0.7"
```
@ -127,7 +127,7 @@ let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Load,
store: true,
store: wgpu::StoreOp::Store,
},
}],
depth_stencil_attachment: None,

@ -268,8 +268,8 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18"
pollster = "0.3"
wgpu = { version = "0.17", features = ["spirv"]}
wgpu_glyph = "0.17"
wgpu = { version = "0.18", features = ["spirv"]}
wgpu_glyph = "0.18"
rand = "0.8"
rodio = { version = "0.15", default-features = false, features = ["wav"] }
log = "0.4"
@ -287,7 +287,7 @@ web-sys = { version = "0.3.53", features = [
"Window",
"Element",
]}
wgpu = { version = "0.17", features = ["spirv", "webgl"]}
wgpu = { version = "0.18", features = ["spirv", "webgl"]}
[build-dependencies]
anyhow = "1.0"

@ -100,7 +100,7 @@ Update dependencies to support SPIR-V module.
[dependencies]
image = "0.23"
shaderc = "0.7"
wgpu = { version = "0.17", features = ["spirv"] }
wgpu = { version = "0.18", features = ["spirv"] }
pollster = "0.3"
```
@ -207,7 +207,7 @@ The `RenderPass` is where things get interesting. A render pass requires at leas
b: 0.3,
a: 1.0,
}),
store: true,
store: wgpu::StoreOp::Store,
},
}
],

@ -20,7 +20,7 @@ cargo run --bin tutorial9-models &
cargo run --bin tutorial10-lighting &
cargo run --bin tutorial11-normals &
cargo run --bin tutorial12-camera &
cargo run --bin tutorial13-terrain &
cargo run --bin tutorial13-hdr &
cargo run --bin windowless &
cargo run --bin gifs &
cargo run --bin compute

Loading…
Cancel
Save