gray cube
This commit is contained in:
parent
586d78b3b8
commit
2bb28c240b
23
src/lib.rs
23
src/lib.rs
|
|
@ -39,23 +39,27 @@ pub struct Core {
|
|||
surface: wgpu::Surface<'static>,
|
||||
|
||||
mesh_pipeline: render::mesh::Pipeline,
|
||||
mesh1: render::mesh::GpuMeshIndexed,
|
||||
mesh_color: render::mesh::GpuMeshIndexed,
|
||||
mesh_gray: render::mesh::GpuMeshIndexed,
|
||||
depth: wgpu::Texture,
|
||||
}
|
||||
|
||||
fn cube() -> render::mesh::CpuMeshIndexed {
|
||||
fn cube(a: f32, b: f32) -> render::mesh::CpuMeshIndexed {
|
||||
let gray_level = (b + a) / 2.;
|
||||
let gray = Vec3::splat(gray_level);
|
||||
let color_level = (b - a) / 2.;
|
||||
let mut mesh = render::mesh::CpuMeshIndexed::default();
|
||||
for (u, v, w) in [
|
||||
(Vec3::X, Vec3::Y, Vec3::Z),
|
||||
(Vec3::Y, Vec3::Z, Vec3::X),
|
||||
(Vec3::Z, Vec3::X, Vec3::Y),
|
||||
] {
|
||||
for (m, color) in [(1., w), (-1., 1. - w)] {
|
||||
for m in [1., -1.] {
|
||||
let base = mesh.vertices.len() as u16;
|
||||
for offset in [m * v + u, -m * v + u, -m * v - u, m * v - u] {
|
||||
let vertex = render::mesh::Vertex {
|
||||
position: (m * w + offset),
|
||||
color,
|
||||
color: gray + color_level * m * w,
|
||||
normal: m * w,
|
||||
};
|
||||
mesh.vertices.push(vertex);
|
||||
|
|
@ -77,8 +81,8 @@ impl Core {
|
|||
|
||||
let depth = Self::create_depth_buffer(&device, pixel_size);
|
||||
let mesh_pipeline = render::mesh::Pipeline::new(&device);
|
||||
let mesh1 = cube();
|
||||
let mesh1 = render::mesh::GpuMeshIndexed::new(&device, &mesh1);
|
||||
let mesh_color = render::mesh::GpuMeshIndexed::new(&device, &cube(0.2, 0.8));
|
||||
let mesh_gray = render::mesh::GpuMeshIndexed::new(&device, &cube(0.7, 0.7));
|
||||
|
||||
Self::configure_surface(&surface, &device, pixel_size);
|
||||
|
||||
|
|
@ -87,7 +91,8 @@ impl Core {
|
|||
queue,
|
||||
surface,
|
||||
mesh_pipeline,
|
||||
mesh1,
|
||||
mesh_color,
|
||||
mesh_gray,
|
||||
depth,
|
||||
}
|
||||
}
|
||||
|
|
@ -109,7 +114,7 @@ impl Core {
|
|||
&self.queue,
|
||||
render::mesh::Params {
|
||||
mvp: proj * view,
|
||||
light: vec3(1., 0.5, 0.5).normalize(),
|
||||
light: vec3(0.7, 0.5, 1.0).normalize(),
|
||||
_zero: 0.,
|
||||
},
|
||||
);
|
||||
|
|
@ -147,7 +152,7 @@ impl Core {
|
|||
}),
|
||||
..Default::default()
|
||||
});
|
||||
self.mesh1.render(&self.mesh_pipeline, &mut pass);
|
||||
self.mesh_gray.render(&self.mesh_pipeline, &mut pass);
|
||||
drop(pass);
|
||||
self.queue.submit(std::iter::once(encoder.finish()));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user