migrated tutorial4

0.10
Ben Hansen 3 years ago
parent 0f618a2ff8
commit 57d7eb763f

@ -18,7 +18,7 @@ impl Vertex {
fn desc<'a>() -> wgpu::VertexBufferLayout<'a> { fn desc<'a>() -> wgpu::VertexBufferLayout<'a> {
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -172,12 +172,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;
@ -204,12 +204,12 @@ impl State {
device.create_buffer_init(&wgpu::util::BufferInitDescriptor { device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Challenge Vertex Buffer"), label: Some("Challenge Vertex Buffer"),
contents: bytemuck::cast_slice(&challenge_verts), contents: bytemuck::cast_slice(&challenge_verts),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let challenge_index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let challenge_index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Challenge Index Buffer"), label: Some("Challenge Index Buffer"),
contents: bytemuck::cast_slice(&challenge_indices), contents: bytemuck::cast_slice(&challenge_indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let use_complex = false; let use_complex = false;

@ -18,7 +18,7 @@ impl Vertex {
fn desc<'a>() -> wgpu::VertexBufferLayout<'a> { fn desc<'a>() -> wgpu::VertexBufferLayout<'a> {
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -165,12 +165,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -21,7 +21,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -238,12 +238,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -21,7 +21,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -215,12 +215,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -21,7 +21,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -343,7 +343,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -425,12 +425,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -21,7 +21,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -327,7 +327,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -409,12 +409,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -22,7 +22,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -245,7 +245,7 @@ impl InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -424,7 +424,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let instances = (0..NUM_INSTANCES_PER_ROW) let instances = (0..NUM_INSTANCES_PER_ROW)
@ -456,7 +456,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -538,12 +538,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -29,7 +29,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -235,7 +235,7 @@ impl InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -388,7 +388,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let instances = (0..NUM_INSTANCES_PER_ROW) let instances = (0..NUM_INSTANCES_PER_ROW)
@ -420,7 +420,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -502,12 +502,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -22,7 +22,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -266,7 +266,7 @@ impl InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -354,12 +354,12 @@ impl DepthPass {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Depth Pass VB"), label: Some("Depth Pass VB"),
contents: bytemuck::cast_slice(DEPTH_VERTICES), contents: bytemuck::cast_slice(DEPTH_VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Depth Pass IB"), label: Some("Depth Pass IB"),
contents: bytemuck::cast_slice(DEPTH_INDICES), contents: bytemuck::cast_slice(DEPTH_INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
@ -585,7 +585,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let instances = (0..NUM_INSTANCES_PER_ROW) let instances = (0..NUM_INSTANCES_PER_ROW)
@ -617,7 +617,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -709,12 +709,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -22,7 +22,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -244,7 +244,7 @@ impl InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -398,7 +398,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let instances = (0..NUM_INSTANCES_PER_ROW) let instances = (0..NUM_INSTANCES_PER_ROW)
@ -430,7 +430,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -521,12 +521,12 @@ impl State {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;

@ -188,7 +188,7 @@ impl InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -319,7 +319,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
const SPACE_BETWEEN: f32 = 3.0; const SPACE_BETWEEN: f32 = 3.0;
@ -349,7 +349,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =

@ -23,7 +23,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -135,12 +135,12 @@ impl Model {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", path.as_ref())), label: Some(&format!("{:?} Vertex Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", path.as_ref())), label: Some(&format!("{:?} Index Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
meshes.push(Mesh { meshes.push(Mesh {

@ -194,7 +194,7 @@ impl model::Vertex for InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -410,7 +410,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
const SPACE_BETWEEN: f32 = 3.0; const SPACE_BETWEEN: f32 = 3.0;
@ -440,7 +440,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -485,7 +485,7 @@ impl State {
let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Light VB"), label: Some("Light VB"),
contents: bytemuck::cast_slice(&[light_uniform]), contents: bytemuck::cast_slice(&[light_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let light_bind_group_layout = let light_bind_group_layout =

@ -23,7 +23,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -135,12 +135,12 @@ impl Model {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", path.as_ref())), label: Some(&format!("{:?} Vertex Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", path.as_ref())), label: Some(&format!("{:?} Index Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
meshes.push(Mesh { meshes.push(Mesh {

@ -193,7 +193,7 @@ impl model::Vertex for InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -431,7 +431,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
const SPACE_BETWEEN: f32 = 3.0; const SPACE_BETWEEN: f32 = 3.0;
@ -461,7 +461,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -506,7 +506,7 @@ impl State {
let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Light VB"), label: Some("Light VB"),
contents: bytemuck::cast_slice(&[light_uniform]), contents: bytemuck::cast_slice(&[light_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let light_bind_group_layout = let light_bind_group_layout =

@ -26,7 +26,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -256,12 +256,12 @@ impl Model {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", path.as_ref())), label: Some(&format!("{:?} Vertex Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", path.as_ref())), label: Some(&format!("{:?} Index Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
meshes.push(Mesh { meshes.push(Mesh {

@ -70,7 +70,7 @@ impl model::Vertex for InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -305,7 +305,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
const SPACE_BETWEEN: f32 = 3.0; const SPACE_BETWEEN: f32 = 3.0;
@ -335,7 +335,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -382,7 +382,7 @@ impl State {
let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Light VB"), label: Some("Light VB"),
contents: bytemuck::cast_slice(&[light_uniform]), contents: bytemuck::cast_slice(&[light_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let light_bind_group_layout = let light_bind_group_layout =

@ -26,7 +26,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -256,12 +256,12 @@ impl Model {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", path.as_ref())), label: Some(&format!("{:?} Vertex Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", path.as_ref())), label: Some(&format!("{:?} Index Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
meshes.push(Mesh { meshes.push(Mesh {

@ -70,7 +70,7 @@ impl model::Vertex for InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -304,7 +304,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
const SPACE_BETWEEN: f32 = 3.0; const SPACE_BETWEEN: f32 = 3.0;
@ -336,7 +336,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -381,7 +381,7 @@ impl State {
let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Light VB"), label: Some("Light VB"),
contents: bytemuck::cast_slice(&[light_uniform]), contents: bytemuck::cast_slice(&[light_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let light_bind_group_layout = let light_bind_group_layout =

@ -26,7 +26,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -256,12 +256,12 @@ impl Model {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", path.as_ref())), label: Some(&format!("{:?} Vertex Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", path.as_ref())), label: Some(&format!("{:?} Index Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
meshes.push(Mesh { meshes.push(Mesh {

@ -71,7 +71,7 @@ impl model::Vertex for InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -235,7 +235,7 @@ impl State {
let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
const SPACE_BETWEEN: f32 = 3.0; const SPACE_BETWEEN: f32 = 3.0;
@ -267,7 +267,7 @@ impl State {
let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let camera_bind_group_layout = let camera_bind_group_layout =
@ -316,7 +316,7 @@ impl State {
let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let light_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Light VB"), label: Some("Light VB"),
contents: bytemuck::cast_slice(&[light_uniform]), contents: bytemuck::cast_slice(&[light_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let light_bind_group_layout = let light_bind_group_layout =

@ -27,7 +27,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -316,20 +316,20 @@ impl ModelLoader {
label: Some(&format!("{:?} Vertex Buffer", m.name)), label: Some(&format!("{:?} Vertex Buffer", m.name)),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
// UPDATED! // UPDATED!
usage: wgpu::BufferUsage::STORAGE, usage: wgpu::BufferUsages::STORAGE,
}); });
let dst_vertex_buffer = let dst_vertex_buffer =
device.create_buffer_init(&wgpu::util::BufferInitDescriptor { device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", m.name)), label: Some(&format!("{:?} Vertex Buffer", m.name)),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
// UPDATED! // UPDATED!
usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::STORAGE, usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::STORAGE,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", m.name)), label: Some(&format!("{:?} Index Buffer", m.name)),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
// UPDATED! // UPDATED!
usage: wgpu::BufferUsage::INDEX | wgpu::BufferUsage::STORAGE, usage: wgpu::BufferUsages::INDEX | wgpu::BufferUsages::STORAGE,
}); });
let compute_info = ComputeInfo { let compute_info = ComputeInfo {
num_vertices: vertices.len() as _, num_vertices: vertices.len() as _,
@ -338,7 +338,7 @@ impl ModelLoader {
let info_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let info_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Compute Info Buffer", m.name)), label: Some(&format!("{:?} Compute Info Buffer", m.name)),
contents: bytemuck::cast_slice(&[compute_info]), contents: bytemuck::cast_slice(&[compute_info]),
usage: wgpu::BufferUsage::UNIFORM, usage: wgpu::BufferUsages::UNIFORM,
}); });
// NEW! // NEW!

@ -18,13 +18,13 @@ impl<R: Copy + bytemuck::Pod + bytemuck::Zeroable> RawBuffer<R> {
pub fn from_slice<T: ToRaw<Output = R>>( pub fn from_slice<T: ToRaw<Output = R>>(
device: &wgpu::Device, device: &wgpu::Device,
data: &[T], data: &[T],
usage: wgpu::BufferUsage, usage: wgpu::BufferUsages,
) -> Self { ) -> Self {
let raw_data = data.iter().map(ToRaw::to_raw).collect::<Vec<R>>(); let raw_data = data.iter().map(ToRaw::to_raw).collect::<Vec<R>>();
Self::from_vec(device, raw_data, usage) Self::from_vec(device, raw_data, usage)
} }
pub fn from_vec(device: &wgpu::Device, data: Vec<R>, usage: wgpu::BufferUsage) -> Self { pub fn from_vec(device: &wgpu::Device, data: Vec<R>, usage: wgpu::BufferUsages) -> Self {
let buffer = device.create_buffer_init(&BufferInitDescriptor { let buffer = device.create_buffer_init(&BufferInitDescriptor {
contents: bytemuck::cast_slice(&data), contents: bytemuck::cast_slice(&data),
usage, usage,
@ -33,7 +33,7 @@ impl<R: Copy + bytemuck::Pod + bytemuck::Zeroable> RawBuffer<R> {
Self::from_parts(buffer, data, usage) Self::from_parts(buffer, data, usage)
} }
pub fn from_parts(buffer: wgpu::Buffer, data: Vec<R>, _usage: wgpu::BufferUsage) -> Self { pub fn from_parts(buffer: wgpu::Buffer, data: Vec<R>, _usage: wgpu::BufferUsages) -> Self {
Self { buffer, data } Self { buffer, data }
} }
@ -45,26 +45,26 @@ impl<R: Copy + bytemuck::Pod + bytemuck::Zeroable> RawBuffer<R> {
pub struct Buffer<U: ToRaw<Output = R>, R: Copy + bytemuck::Pod + bytemuck::Zeroable> { pub struct Buffer<U: ToRaw<Output = R>, R: Copy + bytemuck::Pod + bytemuck::Zeroable> {
pub data: Vec<U>, pub data: Vec<U>,
pub raw_buffer: RawBuffer<R>, pub raw_buffer: RawBuffer<R>,
pub usage: wgpu::BufferUsage, pub usage: wgpu::BufferUsages,
} }
impl<U: ToRaw<Output = R>, R: Copy + bytemuck::Pod + bytemuck::Zeroable> Buffer<U, R> { impl<U: ToRaw<Output = R>, R: Copy + bytemuck::Pod + bytemuck::Zeroable> Buffer<U, R> {
pub fn uniform(device: &wgpu::Device, datum: U) -> Self { pub fn uniform(device: &wgpu::Device, datum: U) -> Self {
let data = vec![datum]; let data = vec![datum];
let usage = wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST; let usage = wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST;
Self::with_usage(device, data, usage) Self::with_usage(device, data, usage)
} }
pub fn storage(device: &wgpu::Device, data: Vec<U>) -> Self { pub fn storage(device: &wgpu::Device, data: Vec<U>) -> Self {
let usage = wgpu::BufferUsage::STORAGE | wgpu::BufferUsage::COPY_DST; let usage = wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST;
Self::with_usage(device, data, usage) Self::with_usage(device, data, usage)
} }
pub fn staging(device: &wgpu::Device, other: &Self) -> Self { pub fn staging(device: &wgpu::Device, other: &Self) -> Self {
let buffer_size = other.raw_buffer.buffer_size(); let buffer_size = other.raw_buffer.buffer_size();
let usage = wgpu::BufferUsage::COPY_SRC let usage = wgpu::BufferUsages::COPY_SRC
| wgpu::BufferUsage::MAP_READ | wgpu::BufferUsages::MAP_READ
| wgpu::BufferUsage::MAP_WRITE; | wgpu::BufferUsages::MAP_WRITE;
let buffer = device.create_buffer(&wgpu::BufferDescriptor { let buffer = device.create_buffer(&wgpu::BufferDescriptor {
size: buffer_size, size: buffer_size,
usage, usage,
@ -75,12 +75,12 @@ impl<U: ToRaw<Output = R>, R: Copy + bytemuck::Pod + bytemuck::Zeroable> Buffer<
Self::from_parts(Vec::new(), raw_buffer, usage) Self::from_parts(Vec::new(), raw_buffer, usage)
} }
pub fn with_usage(device: &wgpu::Device, data: Vec<U>, usage: wgpu::BufferUsage) -> Self { pub fn with_usage(device: &wgpu::Device, data: Vec<U>, usage: wgpu::BufferUsages) -> Self {
let raw_buffer = RawBuffer::from_slice(device, &data, usage); let raw_buffer = RawBuffer::from_slice(device, &data, usage);
Self::from_parts(data, raw_buffer, usage) Self::from_parts(data, raw_buffer, usage)
} }
pub fn from_parts(data: Vec<U>, raw_buffer: RawBuffer<R>, usage: wgpu::BufferUsage) -> Self { pub fn from_parts(data: Vec<U>, raw_buffer: RawBuffer<R>, usage: wgpu::BufferUsages) -> Self {
Self { Self {
data, data,
raw_buffer, raw_buffer,

@ -107,7 +107,7 @@ impl CameraUniform {
let buffer = device.create_buffer_init(&BufferInitDescriptor { let buffer = device.create_buffer_init(&BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[data]), contents: bytemuck::cast_slice(&[data]),
usage: wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::UNIFORM, usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::UNIFORM,
}); });
Self { data, buffer } Self { data, buffer }
@ -122,7 +122,7 @@ impl CameraUniform {
let staging_buffer = device.create_buffer_init(&BufferInitDescriptor { let staging_buffer = device.create_buffer_init(&BufferInitDescriptor {
label: Some("Camera Update Buffer"), label: Some("Camera Update Buffer"),
contents: bytemuck::cast_slice(&[self.data]), contents: bytemuck::cast_slice(&[self.data]),
usage: wgpu::BufferUsage::COPY_SRC, usage: wgpu::BufferUsages::COPY_SRC,
}); });
encoder.copy_buffer_to_buffer( encoder.copy_buffer_to_buffer(
&staging_buffer, &staging_buffer,

@ -26,7 +26,7 @@ impl LightUniform {
}; };
let buffer = device.create_buffer_init(&BufferInitDescriptor { let buffer = device.create_buffer_init(&BufferInitDescriptor {
contents: bytemuck::cast_slice(&[data]), contents: bytemuck::cast_slice(&[data]),
usage: wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::UNIFORM, usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::UNIFORM,
label: Some("Light Buffer"), label: Some("Light Buffer"),
}); });

@ -24,7 +24,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -222,12 +222,12 @@ impl<'a> Model<'a> {
let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", path.as_ref())), label: Some(&format!("{:?} Vertex Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
}); });
let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", path.as_ref())), label: Some(&format!("{:?} Index Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
}); });
meshes.push(Mesh { meshes.push(Mesh {

@ -165,7 +165,7 @@ impl<'a> ShaderCanvasBuilder<'a> {
let simulation_data_buffer = device.create_buffer_init(&BufferInitDescriptor { let simulation_data_buffer = device.create_buffer_init(&BufferInitDescriptor {
label: self.label, label: self.label,
contents: bytemuck::cast_slice(&[simulation_data]), contents: bytemuck::cast_slice(&[simulation_data]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
}); });
let simulation_bind_group_layout = let simulation_bind_group_layout =

@ -155,7 +155,7 @@ impl<'a> Texture<'a> {
self.desc.size.width * self.desc.size.height * self.desc.size.depth_or_array_layers; self.desc.size.width * self.desc.size.height * self.desc.size.depth_or_array_layers;
let buffer_size = num_pixels * mem::size_of::<[f32; 4]>() as u32; let buffer_size = num_pixels * mem::size_of::<[f32; 4]>() as u32;
let buffer_usage = wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::MAP_READ; let buffer_usage = wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ;
let buffer_desc = wgpu::BufferDescriptor { let buffer_desc = wgpu::BufferDescriptor {
size: buffer_size as wgpu::BufferAddress, size: buffer_size as wgpu::BufferAddress,
usage: buffer_usage, usage: buffer_usage,

@ -63,7 +63,7 @@ async fn run() {
let buffer_size = (padded_bytes_per_row * texture_size) as wgpu::BufferAddress; let buffer_size = (padded_bytes_per_row * texture_size) as wgpu::BufferAddress;
let buffer_desc = wgpu::BufferDescriptor { let buffer_desc = wgpu::BufferDescriptor {
size: buffer_size, size: buffer_size,
usage: wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::MAP_READ, usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
label: Some("Output Buffer"), label: Some("Output Buffer"),
mapped_at_creation: false, mapped_at_creation: false,
}; };

@ -17,7 +17,7 @@ impl Vertex {
pub const SIZE: wgpu::BufferAddress = std::mem::size_of::<Self>() as wgpu::BufferAddress; pub const SIZE: wgpu::BufferAddress = std::mem::size_of::<Self>() as wgpu::BufferAddress;
pub const DESC: wgpu::VertexBufferLayout<'static> = wgpu::VertexBufferLayout { pub const DESC: wgpu::VertexBufferLayout<'static> = wgpu::VertexBufferLayout {
array_stride: Self::SIZE, array_stride: Self::SIZE,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &wgpu::vertex_attr_array![ attributes: &wgpu::vertex_attr_array![
0 => Float32x2 0 => Float32x2
], ],
@ -111,7 +111,7 @@ impl StagingBuffer {
StagingBuffer { StagingBuffer {
buffer: device.create_buffer_init(&BufferInitDescriptor { buffer: device.create_buffer_init(&BufferInitDescriptor {
contents: bytemuck::cast_slice(data), contents: bytemuck::cast_slice(data),
usage: wgpu::BufferUsage::COPY_SRC, usage: wgpu::BufferUsages::COPY_SRC,
label: Some("Staging Buffer"), label: Some("Staging Buffer"),
}), }),
size: size_of_slice(data) as wgpu::BufferAddress, size: size_of_slice(data) as wgpu::BufferAddress,

@ -88,14 +88,14 @@ impl Render {
let vertex_buffer = device.create_buffer(&wgpu::BufferDescriptor { let vertex_buffer = device.create_buffer(&wgpu::BufferDescriptor {
label: None, label: None,
size: Vertex::SIZE * 4 * 3, size: Vertex::SIZE * 4 * 3,
usage: wgpu::BufferUsage::VERTEX | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST,
mapped_at_creation: false, mapped_at_creation: false,
}); });
let index_buffer = device.create_buffer(&wgpu::BufferDescriptor { let index_buffer = device.create_buffer(&wgpu::BufferDescriptor {
label: None, label: None,
size: U32_SIZE * 6 * 3, size: U32_SIZE * 6 * 3,
usage: wgpu::BufferUsage::INDEX | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::INDEX | wgpu::BufferUsages::COPY_DST,
mapped_at_creation: false, mapped_at_creation: false,
}); });

@ -37,9 +37,9 @@ async fn run() {
let output_buffer_size = (u32_size * texture_size * texture_size) as wgpu::BufferAddress; let output_buffer_size = (u32_size * texture_size * texture_size) as wgpu::BufferAddress;
let output_buffer_desc = wgpu::BufferDescriptor { let output_buffer_desc = wgpu::BufferDescriptor {
size: output_buffer_size, size: output_buffer_size,
usage: wgpu::BufferUsage::COPY_DST usage: wgpu::BufferUsages::COPY_DST
// this tells wpgu that we want to read this buffer from the cpu // this tells wpgu that we want to read this buffer from the cpu
| wgpu::BufferUsage::MAP_READ, | wgpu::BufferUsages::MAP_READ,
label: None, label: None,
mapped_at_creation: false, mapped_at_creation: false,
}; };

@ -57,7 +57,7 @@ let vertex_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
} }
); );
``` ```
@ -120,7 +120,7 @@ A `VertexBufferLayout` defines how a buffer is layed out in memory. Without this
```rust ```rust
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress, // 1. array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress, // 1.
step_mode: wgpu::InputStepMode::Vertex, // 2. step_mode: wgpu::VertexStepMode::Vertex, // 2.
attributes: &[ // 3. attributes: &[ // 3.
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, // 4. offset: 0, // 4.
@ -137,7 +137,7 @@ wgpu::VertexBufferLayout {
``` ```
1. The `array_stride` defines how wide a vertex is. When the shader goes to read the next vertex, it will skip over `array_stride` number of bytes. In our case, array_stride will probably be 24 bytes. 1. The `array_stride` defines how wide a vertex is. When the shader goes to read the next vertex, it will skip over `array_stride` number of bytes. In our case, array_stride will probably be 24 bytes.
2. `step_mode` tells the pipeline how often it should move to the next vertex. This seems redundant in our case, but we can specify `wgpu::InputStepMode::Instance` if we only want to change vertices when we start drawing a new instance. We'll cover instancing in a later tutorial. 2. `step_mode` tells the pipeline how often it should move to the next vertex. This seems redundant in our case, but we can specify `wgpu::VertexStepMode::Instance` if we only want to change vertices when we start drawing a new instance. We'll cover instancing in a later tutorial.
3. Vertex attributes describe the individual parts of the vertex. Generally this is a 1:1 mapping with a struct's fields, which it is in our case. 3. Vertex attributes describe the individual parts of the vertex. Generally this is a 1:1 mapping with a struct's fields, which it is in our case.
4. This defines the `offset` in bytes that this attribute starts. The first attribute is usually zero, and any future attributes are the collective `size_of` the previous attributes data. 4. This defines the `offset` in bytes that this attribute starts. The first attribute is usually zero, and any future attributes are the collective `size_of` the previous attributes data.
5. This tells the shader what location to store this attribute at. For example `[[location(0)]] x: vec3<f32>` in the vertex shader would correspond to the position field of the struct, while `[[location(1)]] x: vec3<f32>` would be the color field. 5. This tells the shader what location to store this attribute at. For example `[[location(0)]] x: vec3<f32>` in the vertex shader would correspond to the position field of the struct, while `[[location(1)]] x: vec3<f32>` would be the color field.
@ -155,7 +155,7 @@ impl Vertex {
fn desc<'a>() -> wgpu::VertexBufferLayout<'a> { fn desc<'a>() -> wgpu::VertexBufferLayout<'a> {
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -180,7 +180,7 @@ Specifying the attributes as we did now is quite verbose. We could use the `vert
```rust ```rust
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &wgpu::vertex_attr_array![0 => Float32x3, 1 => Float32x3], attributes: &wgpu::vertex_attr_array![0 => Float32x3, 1 => Float32x3],
} }
``` ```
@ -348,7 +348,7 @@ let vertex_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some("Vertex Buffer"), label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(VERTICES), contents: bytemuck::cast_slice(VERTICES),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
} }
); );
// NEW! // NEW!
@ -356,7 +356,7 @@ let index_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some("Index Buffer"), label: Some("Index Buffer"),
contents: bytemuck::cast_slice(INDICES), contents: bytemuck::cast_slice(INDICES),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
} }
); );
let num_indices = INDICES.len() as u32; let num_indices = INDICES.len() as u32;
@ -418,7 +418,7 @@ With all that you should have a garishly magenta pentagon in your window.
If you use a color picker on the magenta pentagon, you'll get a hex value of #BC00BC. If you convert this to RGB values you'll get (188, 0, 188). Dividing these values by 255 to get them into the [0, 1] range we get roughly (0.737254902, 0, 0.737254902). This is not the same as we are using for our vertex colors which is (0.5, 0.0, 0.5). The reason for this has to do with color spaces. If you use a color picker on the magenta pentagon, you'll get a hex value of #BC00BC. If you convert this to RGB values you'll get (188, 0, 188). Dividing these values by 255 to get them into the [0, 1] range we get roughly (0.737254902, 0, 0.737254902). This is not the same as we are using for our vertex colors which is (0.5, 0.0, 0.5). The reason for this has to do with color spaces.
Most monitors use a color space know as sRGB. Our swap chain is (most likely depending on what is returned from `adapter.get_preferred_format()`) using an sRGB texture format. The sRGB format stores colors according to their relative brightness instead of their actual brightness. The reason for this is that our eyes don't perceive light linearly. We notice more differences in darker colors than we do lighter colors. Most monitors use a color space know as sRGB. Our surface is (most likely depending on what is returned from `surface.get_preferred_format()`) using an sRGB texture format. The sRGB format stores colors according to their relative brightness instead of their actual brightness. The reason for this is that our eyes don't perceive light linearly. We notice more differences in darker colors than we do lighter colors.
You get an approximation of the correct color using the following formula: `srgb_color = (rgb_color / 255) ^ 2.2`. Doing this with an RGB value of (188, 0, 188) will give us (0.511397819, 0.0, 0.511397819). A little off from our (0.5, 0.0, 0.5). While you could tweak the formula to get the desired values, you'll likely save a lot of time by using textures instead as they are stored as sRGB by default, so they don't suffer from the same color inaccuracies that vertex colors do. We'll cover textures in the next lesson. You get an approximation of the correct color using the following formula: `srgb_color = (rgb_color / 255) ^ 2.2`. Doing this with an RGB value of (188, 0, 188) will give us (0.511397819, 0.0, 0.511397819). A little off from our (0.5, 0.0, 0.5). While you could tweak the formula to get the desired values, you'll likely save a lot of time by using textures instead as they are stored as sRGB by default, so they don't suffer from the same color inaccuracies that vertex colors do. We'll cover textures in the next lesson.

@ -87,7 +87,7 @@ let buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some("Temp Buffer"), label: Some("Temp Buffer"),
contents: &diffuse_rgba, contents: &diffuse_rgba,
usage: wgpu::BufferUsage::COPY_SRC, usage: wgpu::BufferUsages::COPY_SRC,
} }
); );
@ -316,7 +316,7 @@ impl Vertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,

@ -126,7 +126,7 @@ let camera_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some("Camera Buffer"), label: Some("Camera Buffer"),
contents: bytemuck::cast_slice(&[camera_uniform]), contents: bytemuck::cast_slice(&[camera_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
} }
); );
``` ```
@ -408,7 +408,7 @@ fn input(&mut self, event: &WindowEvent) -> bool {
Up to this point, the camera controller isn't actually doing anything. The values in our uniform buffer need to be updated. There are a few main methods to do that. Up to this point, the camera controller isn't actually doing anything. The values in our uniform buffer need to be updated. There are a few main methods to do that.
1. We can create a separate buffer and copy it's contents to our `camera_buffer`. The new buffer is known as a staging buffer. This method is usually how it's done as it allows the contents of the main buffer (in this case `camera_buffer`) to only be accessible by the gpu. The gpu can do some speed optimizations which it couldn't if we could access the buffer via the cpu. 1. We can create a separate buffer and copy it's contents to our `camera_buffer`. The new buffer is known as a staging buffer. This method is usually how it's done as it allows the contents of the main buffer (in this case `camera_buffer`) to only be accessible by the gpu. The gpu can do some speed optimizations which it couldn't if we could access the buffer via the cpu.
2. We can call on of the mapping method's `map_read_async`, and `map_write_async` on the buffer itself. These allow us to access a buffer's contents directly, but requires us to deal with the `async` aspect of these methods this also requires our buffer to use the `BufferUsage::MAP_READ` and/or `BufferUsage::MAP_WRITE`. We won't talk about it here, but you check out [Wgpu without a window](../../showcase/windowless) tutorial if you want to know more. 2. We can call on of the mapping method's `map_read_async`, and `map_write_async` on the buffer itself. These allow us to access a buffer's contents directly, but requires us to deal with the `async` aspect of these methods this also requires our buffer to use the `BufferUsages::MAP_READ` and/or `BufferUsages::MAP_WRITE`. We won't talk about it here, but you check out [Wgpu without a window](../../showcase/windowless) tutorial if you want to know more.
3. We can use `write_buffer` on `queue`. 3. We can use `write_buffer` on `queue`.
We're going to use option number 3. We're going to use option number 3.

@ -123,7 +123,7 @@ let instance_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some("Instance Buffer"), label: Some("Instance Buffer"),
contents: bytemuck::cast_slice(&instance_data), contents: bytemuck::cast_slice(&instance_data),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
} }
); );
``` ```
@ -139,7 +139,7 @@ impl InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,

@ -37,7 +37,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,
@ -263,14 +263,14 @@ impl Model {
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Vertex Buffer", path.as_ref())), label: Some(&format!("{:?} Vertex Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&vertices), contents: bytemuck::cast_slice(&vertices),
usage: wgpu::BufferUsage::VERTEX, usage: wgpu::BufferUsages::VERTEX,
} }
); );
let index_buffer = device.create_buffer_init( let index_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", path.as_ref())), label: Some(&format!("{:?} Index Buffer", path.as_ref())),
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
} }
); );

@ -46,7 +46,7 @@ let light_buffer = device.create_buffer_init(
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some("Light VB"), label: Some("Light VB"),
contents: bytemuck::cast_slice(&[light_uniform]), contents: bytemuck::cast_slice(&[light_uniform]),
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST, usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
} }
); );
``` ```
@ -628,7 +628,7 @@ impl model::Vertex for InstanceRaw {
// We need to switch from using a step mode of Vertex to Instance // We need to switch from using a step mode of Vertex to Instance
// This means that our shaders will only change to use the next // This means that our shaders will only change to use the next
// instance when the shader starts processing a new instance // instance when the shader starts processing a new instance
step_mode: wgpu::InputStepMode::Instance, step_mode: wgpu::VertexStepMode::Instance,
attributes: &[ attributes: &[
wgpu::VertexAttribute { wgpu::VertexAttribute {
offset: 0, offset: 0,

@ -190,7 +190,7 @@ impl Vertex for ModelVertex {
use std::mem; use std::mem;
wgpu::VertexBufferLayout { wgpu::VertexBufferLayout {
array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress, array_stride: mem::size_of::<ModelVertex>() as wgpu::BufferAddress,
step_mode: wgpu::InputStepMode::Vertex, step_mode: wgpu::VertexStepMode::Vertex,
attributes: &[ attributes: &[
// ... // ...

@ -92,7 +92,7 @@ impl Model {
&wgpu::util::BufferInitDescriptor { &wgpu::util::BufferInitDescriptor {
label: Some(&format!("{:?} Index Buffer", m.name)), // UPDATED! label: Some(&format!("{:?} Index Buffer", m.name)), // UPDATED!
contents: bytemuck::cast_slice(&m.mesh.indices), contents: bytemuck::cast_slice(&m.mesh.indices),
usage: wgpu::BufferUsage::INDEX, usage: wgpu::BufferUsages::INDEX,
} }
); );
// ... // ...

@ -88,7 +88,7 @@ Up to this point, we created textures manually everytime. I've pulled out the te
## Fixed panics do to not specifying the correct `usage` ## Fixed panics do to not specifying the correct `usage`
Wgpu has become more strict about what `BufferUsage`s and `TextureUsages`s are required when performing certain operations. For example int the [Wgpu without a window example](/intermediate/windowless/), the `texture_desc` only specified the usage to by `COPY_SRC`. This caused a crash when the `texture` was used as a render target. Adding `OUTPUT_ATTACHMENT` fixed the issue. Wgpu has become more strict about what `BufferUsages`s and `TextureUsages`s are required when performing certain operations. For example int the [Wgpu without a window example](/intermediate/windowless/), the `texture_desc` only specified the usage to by `COPY_SRC`. This caused a crash when the `texture` was used as a render target. Adding `OUTPUT_ATTACHMENT` fixed the issue.
## Updating Winit from 0.20.0-alpha5 to 0.20 ## Updating Winit from 0.20.0-alpha5 to 0.20

@ -80,7 +80,7 @@ let padded_bytes_per_row = unpadded_bytes_per_row + padding;
let buffer_size = (padded_bytes_per_row * texture_size) as wgpu::BufferAddress; let buffer_size = (padded_bytes_per_row * texture_size) as wgpu::BufferAddress;
let buffer_desc = wgpu::BufferDescriptor { let buffer_desc = wgpu::BufferDescriptor {
size: buffer_size, size: buffer_size,
usage: wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::MAP_READ, usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
label: Some("Output Buffer"), label: Some("Output Buffer"),
mapped_at_creation: false, mapped_at_creation: false,
}; };

@ -57,9 +57,9 @@ let u32_size = std::mem::size_of::<u32>() as u32;
let output_buffer_size = (u32_size * texture_size * texture_size) as wgpu::BufferAddress; let output_buffer_size = (u32_size * texture_size * texture_size) as wgpu::BufferAddress;
let output_buffer_desc = wgpu::BufferDescriptor { let output_buffer_desc = wgpu::BufferDescriptor {
size: output_buffer_size, size: output_buffer_size,
usage: wgpu::BufferUsage::COPY_DST usage: wgpu::BufferUsages::COPY_DST
// this tells wpgu that we want to read this buffer from the cpu // this tells wpgu that we want to read this buffer from the cpu
| wgpu::BufferUsage::MAP_READ, | wgpu::BufferUsages::MAP_READ,
label: None, label: None,
mapped_at_creation: false, mapped_at_creation: false,
}; };

Loading…
Cancel
Save