mirror of
https://github.com/sotrh/learn-wgpu.git
synced 2024-11-08 07:10:33 +00:00
commit
24d2abb55f
@ -52,7 +52,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -74,7 +74,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -74,7 +74,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -79,7 +79,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -75,7 +75,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -79,7 +79,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -83,7 +83,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -83,7 +83,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -79,7 +79,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -83,7 +83,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ const DEPTH_INDICES: &[u16] = &[
|
|||||||
0, 2, 3,
|
0, 2, 3,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -93,7 +93,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ const INDICES: &[u16] = &[
|
|||||||
2, 3, 4,
|
2, 3, 4,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -81,7 +81,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ mod texture;
|
|||||||
|
|
||||||
use model::{DrawModel, Vertex};
|
use model::{DrawModel, Vertex};
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -34,7 +34,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ mod texture;
|
|||||||
|
|
||||||
use model::{DrawLight, DrawModel, Vertex};
|
use model::{DrawLight, DrawModel, Vertex};
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -34,7 +34,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ mod texture;
|
|||||||
|
|
||||||
use model::{DrawLight, DrawModel, Vertex};
|
use model::{DrawLight, DrawModel, Vertex};
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -34,7 +34,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ use winit::dpi::LogicalPosition;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::f32::consts::FRAC_PI_2;
|
use std::f32::consts::FRAC_PI_2;
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
|
@ -4,7 +4,7 @@ use winit::event::*;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::f32::consts::FRAC_PI_2;
|
use std::f32::consts::FRAC_PI_2;
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
|
@ -14,7 +14,7 @@ mod texture;
|
|||||||
|
|
||||||
use model::{DrawLight, DrawModel, Vertex};
|
use model::{DrawLight, DrawModel, Vertex};
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
@ -38,7 +38,7 @@ impl Camera {
|
|||||||
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, -1.0, 0.0, 0.0,
|
0.0, -1.0, 0.0, 0.0,
|
||||||
@ -20,6 +20,6 @@ impl Camera {
|
|||||||
pub fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
pub fn build_view_projection_matrix(&self) -> cgmath::Matrix4<f32> {
|
||||||
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
let view = cgmath::Matrix4::look_at(self.eye, self.target, self.up);
|
||||||
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar);
|
||||||
return proj * view;
|
proj * view
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -60,10 +60,10 @@ let buffer = device.create_buffer_with_data(
|
|||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
We specified our `diffuse_buffer` to be `COPY_SRC` so that we can copy it to our `diffuse_texture`. We preform the copy using a `CommandEncoder`. We'll need to change `queue`'s mutablility so we can submit the resulting `CommandBuffer`.
|
We specified our `diffuse_buffer` to be `COPY_SRC` so that we can copy it to our `diffuse_texture`. We preform the copy using a `CommandEncoder`.
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
let (device, mut queue) = // ...
|
let (device, queue) = // ...
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
@ -467,7 +467,7 @@ impl Texture {
|
|||||||
```
|
```
|
||||||
|
|
||||||
1. We're using the [failure](https://docs.rs/failure/0.1.6/failure/) crate to simplify error handling.
|
1. We're using the [failure](https://docs.rs/failure/0.1.6/failure/) crate to simplify error handling.
|
||||||
2. In order to prevent importing `queue` as `&mut`, we're returning a `CommandBuffer` with our texture. This means we could load multiple textures at the same time, and then submit all there command buffers at once.
|
2. We're returning a `CommandBuffer` with our texture. This means we could load multiple textures at the same time, and then submit all there command buffers at once.
|
||||||
|
|
||||||
We need to import `texture.rs` as a module, so somewhere at the top of `main.rs` add the following.
|
We need to import `texture.rs` as a module, so somewhere at the top of `main.rs` add the following.
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ The `build_view_projection_matrix` is where the magic happens.
|
|||||||
3. The coordinate system in Wgpu is based on DirectX, and Metal's coordinate systems. That means that in [normalized device coordinates](https://github.com/gfx-rs/gfx/tree/master/src/backend/dx12#normalized-coordinates) the x axis and y axis are in the range of -1.0 to +1.0, and the z axis is 0.0 to +1.0. The `cgmath` crate (as well as most game math crates) are built for OpenGL's coordinate system. This matrix will scale and translate our scene from OpenGL's coordinate sytem to WGPU's. We'll define it as follows.
|
3. The coordinate system in Wgpu is based on DirectX, and Metal's coordinate systems. That means that in [normalized device coordinates](https://github.com/gfx-rs/gfx/tree/master/src/backend/dx12#normalized-coordinates) the x axis and y axis are in the range of -1.0 to +1.0, and the z axis is 0.0 to +1.0. The `cgmath` crate (as well as most game math crates) are built for OpenGL's coordinate system. This matrix will scale and translate our scene from OpenGL's coordinate sytem to WGPU's. We'll define it as follows.
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Instancing
|
# Instancing
|
||||||
|
|
||||||
Up to this point we've been drawing just one object. Most games have hundreds of objects on screen at the same time. If we wanted to draw multiple instances of our model, we could copy the vertex buffer and modify it's vertices to be in the right place, but this would be hilariously inefficient. We have our model, and we now how to position it in 3d space with a matrix, like we did the camera, so all we have to do is change the matrix we're using when we draw.
|
Up to this point we've been drawing just one object. Most games have hundreds of objects on screen at the same time. If we wanted to draw multiple instances of our model, we could copy the vertex buffer and modify it's vertices to be in the right place, but this would be hilariously inefficient. We have our model, and we know how to position it in 3d space with a matrix, like we did the camera, so all we have to do is change the matrix we're using when we draw.
|
||||||
|
|
||||||
## The naive method
|
## The naive method
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ use winit::dpi::LogicalPosition;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::f32::consts::FRAC_PI_2;
|
use std::f32::consts::FRAC_PI_2;
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[rustfmt::skip]
|
||||||
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4<f32> = cgmath::Matrix4::new(
|
||||||
1.0, 0.0, 0.0, 0.0,
|
1.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
||||||
|
Loading…
Reference in New Issue
Block a user