going to switch the lights over to using position, or maybe flesh out directional light more
This commit is contained in:
10
resources/light.mtl
Normal file
10
resources/light.mtl
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Blender MTL File: 'None'
|
||||||
|
# Material Count: 1
|
||||||
|
|
||||||
|
newmtl None
|
||||||
|
Ns 0
|
||||||
|
Ka 0.000000 0.000000 0.000000
|
||||||
|
Kd 0.8 0.8 0.8
|
||||||
|
Ks 0.8 0.8 0.8
|
||||||
|
d 1
|
||||||
|
illum 2
|
||||||
163
resources/light.obj
Normal file
163
resources/light.obj
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
# Blender v2.79 (sub 0) OBJ File: ''
|
||||||
|
# www.blender.org
|
||||||
|
mtllib light.mtl
|
||||||
|
o Cone
|
||||||
|
v -0.739722 -0.000000 -0.429722
|
||||||
|
v -0.739722 -0.083835 -0.421465
|
||||||
|
v -0.739722 -0.164448 -0.397011
|
||||||
|
v -0.739722 -0.238741 -0.357301
|
||||||
|
v -0.739722 -0.303859 -0.303859
|
||||||
|
v -0.739722 -0.357301 -0.238741
|
||||||
|
v -0.739722 -0.397011 -0.164448
|
||||||
|
v -0.739722 -0.421465 -0.083835
|
||||||
|
v -0.739722 -0.429722 -0.000000
|
||||||
|
v -0.739722 -0.421465 0.083835
|
||||||
|
v -0.739722 -0.397011 0.164447
|
||||||
|
v -0.739722 -0.357301 0.238741
|
||||||
|
v -0.739722 -0.303859 0.303859
|
||||||
|
v -0.739722 -0.238741 0.357301
|
||||||
|
v -0.739722 -0.164447 0.397011
|
||||||
|
v -0.739722 -0.083835 0.421465
|
||||||
|
v -0.739722 0.000000 0.429722
|
||||||
|
v -0.739722 0.083835 0.421465
|
||||||
|
v -0.739722 0.164448 0.397011
|
||||||
|
v -0.739722 0.238741 0.357301
|
||||||
|
v -0.739722 0.303860 0.303859
|
||||||
|
v -0.739722 0.357301 0.238741
|
||||||
|
v -0.739722 0.397012 0.164447
|
||||||
|
v 0.119722 0.000000 0.000000
|
||||||
|
v -0.739722 0.421465 0.083834
|
||||||
|
v -0.739722 0.429722 -0.000000
|
||||||
|
v -0.739722 0.421465 -0.083835
|
||||||
|
v -0.739722 0.397011 -0.164448
|
||||||
|
v -0.739722 0.357301 -0.238741
|
||||||
|
v -0.739722 0.303859 -0.303860
|
||||||
|
v -0.739722 0.238740 -0.357301
|
||||||
|
v -0.739722 0.164447 -0.397012
|
||||||
|
v -0.739722 0.083834 -0.421465
|
||||||
|
vn 0.4455 -0.0878 -0.8910
|
||||||
|
vn 0.4455 -0.2599 -0.8567
|
||||||
|
vn 0.4455 -0.4220 -0.7896
|
||||||
|
vn 0.4455 -0.5680 -0.6921
|
||||||
|
vn 0.4455 -0.6921 -0.5680
|
||||||
|
vn 0.4455 -0.7896 -0.4220
|
||||||
|
vn 0.4455 -0.8567 -0.2599
|
||||||
|
vn 0.4455 -0.8910 -0.0878
|
||||||
|
vn 0.4455 -0.8910 0.0878
|
||||||
|
vn 0.4455 -0.8567 0.2599
|
||||||
|
vn 0.4455 -0.7896 0.4220
|
||||||
|
vn 0.4455 -0.6921 0.5680
|
||||||
|
vn 0.4455 -0.5680 0.6921
|
||||||
|
vn 0.4455 -0.4220 0.7896
|
||||||
|
vn 0.4455 -0.2599 0.8567
|
||||||
|
vn 0.4455 -0.0878 0.8910
|
||||||
|
vn 0.4455 0.0878 0.8910
|
||||||
|
vn 0.4455 0.2599 0.8567
|
||||||
|
vn 0.4455 0.4220 0.7896
|
||||||
|
vn 0.4455 0.5680 0.6921
|
||||||
|
vn 0.4455 0.6921 0.5680
|
||||||
|
vn 0.4455 0.7896 0.4220
|
||||||
|
vn 0.4455 0.8567 0.2599
|
||||||
|
vn 0.4455 0.8910 0.0878
|
||||||
|
vn 0.4455 0.8910 -0.0878
|
||||||
|
vn 0.4455 0.8567 -0.2599
|
||||||
|
vn 0.4455 0.7896 -0.4220
|
||||||
|
vn 0.4455 0.6921 -0.5680
|
||||||
|
vn 0.4455 0.5680 -0.6921
|
||||||
|
vn 0.4455 0.4220 -0.7896
|
||||||
|
vn 0.4455 0.2599 -0.8567
|
||||||
|
vn 0.4455 0.0878 -0.8910
|
||||||
|
vn -1.0000 -0.0000 -0.0000
|
||||||
|
usemtl None
|
||||||
|
s off
|
||||||
|
f 1//1 24//1 2//1
|
||||||
|
f 2//2 24//2 3//2
|
||||||
|
f 3//3 24//3 4//3
|
||||||
|
f 4//4 24//4 5//4
|
||||||
|
f 5//5 24//5 6//5
|
||||||
|
f 6//6 24//6 7//6
|
||||||
|
f 7//7 24//7 8//7
|
||||||
|
f 8//8 24//8 9//8
|
||||||
|
f 9//9 24//9 10//9
|
||||||
|
f 10//10 24//10 11//10
|
||||||
|
f 11//11 24//11 12//11
|
||||||
|
f 12//12 24//12 13//12
|
||||||
|
f 13//13 24//13 14//13
|
||||||
|
f 14//14 24//14 15//14
|
||||||
|
f 15//15 24//15 16//15
|
||||||
|
f 16//16 24//16 17//16
|
||||||
|
f 17//17 24//17 18//17
|
||||||
|
f 18//18 24//18 19//18
|
||||||
|
f 19//19 24//19 20//19
|
||||||
|
f 20//20 24//20 21//20
|
||||||
|
f 21//21 24//21 22//21
|
||||||
|
f 22//22 24//22 23//22
|
||||||
|
f 23//23 24//23 25//23
|
||||||
|
f 25//24 24//24 26//24
|
||||||
|
f 26//25 24//25 27//25
|
||||||
|
f 27//26 24//26 28//26
|
||||||
|
f 28//27 24//27 29//27
|
||||||
|
f 29//28 24//28 30//28
|
||||||
|
f 30//29 24//29 31//29
|
||||||
|
f 31//30 24//30 32//30
|
||||||
|
f 32//31 24//31 33//31
|
||||||
|
f 33//32 24//32 1//32
|
||||||
|
f 8//33 16//33 25//33
|
||||||
|
f 33//33 1//33 2//33
|
||||||
|
f 2//33 3//33 4//33
|
||||||
|
f 4//33 5//33 6//33
|
||||||
|
f 6//33 7//33 4//33
|
||||||
|
f 7//33 8//33 4//33
|
||||||
|
f 8//33 9//33 10//33
|
||||||
|
f 10//33 11//33 8//33
|
||||||
|
f 11//33 12//33 8//33
|
||||||
|
f 12//33 13//33 16//33
|
||||||
|
f 13//33 14//33 16//33
|
||||||
|
f 14//33 15//33 16//33
|
||||||
|
f 16//33 17//33 18//33
|
||||||
|
f 18//33 19//33 20//33
|
||||||
|
f 20//33 21//33 22//33
|
||||||
|
f 22//33 23//33 25//33
|
||||||
|
f 25//33 26//33 27//33
|
||||||
|
f 27//33 28//33 29//33
|
||||||
|
f 29//33 30//33 33//33
|
||||||
|
f 30//33 31//33 33//33
|
||||||
|
f 31//33 32//33 33//33
|
||||||
|
f 33//33 2//33 4//33
|
||||||
|
f 16//33 18//33 25//33
|
||||||
|
f 18//33 20//33 25//33
|
||||||
|
f 20//33 22//33 25//33
|
||||||
|
f 25//33 27//33 33//33
|
||||||
|
f 27//33 29//33 33//33
|
||||||
|
f 33//33 4//33 8//33
|
||||||
|
f 8//33 12//33 16//33
|
||||||
|
f 33//33 8//33 25//33
|
||||||
|
o Cube_Cube.001
|
||||||
|
v -0.377020 -0.377020 0.377020
|
||||||
|
v -0.377020 0.377020 0.377020
|
||||||
|
v -0.377020 -0.377020 -0.377020
|
||||||
|
v -0.377020 0.377020 -0.377020
|
||||||
|
v 0.377020 -0.377020 0.377020
|
||||||
|
v 0.377020 0.377020 0.377020
|
||||||
|
v 0.377020 -0.377020 -0.377020
|
||||||
|
v 0.377020 0.377020 -0.377020
|
||||||
|
vn -1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 -1.0000
|
||||||
|
vn 1.0000 0.0000 0.0000
|
||||||
|
vn 0.0000 0.0000 1.0000
|
||||||
|
vn 0.0000 -1.0000 0.0000
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
usemtl None
|
||||||
|
s off
|
||||||
|
f 35//34 36//34 34//34
|
||||||
|
f 37//35 40//35 36//35
|
||||||
|
f 41//36 38//36 40//36
|
||||||
|
f 39//37 34//37 38//37
|
||||||
|
f 40//38 34//38 36//38
|
||||||
|
f 37//39 39//39 41//39
|
||||||
|
f 35//34 37//34 36//34
|
||||||
|
f 37//35 41//35 40//35
|
||||||
|
f 41//36 39//36 38//36
|
||||||
|
f 39//37 35//37 34//37
|
||||||
|
f 40//38 38//38 34//38
|
||||||
|
f 37//39 35//39 39//39
|
||||||
@@ -157,15 +157,16 @@ impl CameraController {
|
|||||||
(1.0 * camera.pitch.0.sin() * camera.yaw.0.cos()),
|
(1.0 * camera.pitch.0.sin() * camera.yaw.0.cos()),
|
||||||
);
|
);
|
||||||
|
|
||||||
let yaw_offset = camera.yaw.0 - Rad(PI).0;
|
let offset = camera.yaw.0 + PI/2.0;
|
||||||
let right_vector = Vector3::new(
|
let pitch = PI/2.0;
|
||||||
(1.0 * camera.pitch.0.sin() * yaw_offset.sin()),
|
let left_vector = Vector3::new(
|
||||||
(1.0 * camera.pitch.0.cos()),
|
(1.0 * pitch.sin() * offset.sin()),
|
||||||
(1.0 * camera.pitch.0.sin() * yaw_offset.cos()),
|
(1.0 * pitch.cos()),
|
||||||
|
(1.0 * pitch.sin() * offset.cos()),
|
||||||
);
|
);
|
||||||
|
|
||||||
camera.position += view_vector * (self.amount_forward - self.amount_backward) * self.speed * dt;
|
camera.position += view_vector * (self.amount_forward - self.amount_backward) * self.speed * dt;
|
||||||
camera.position += right_vector * (self.amount_right - self.amount_left) * self.speed * dt;
|
camera.position += left_vector * (self.amount_left - self.amount_right) * self.speed * dt;
|
||||||
|
|
||||||
// I'm not a huge fan of this
|
// I'm not a huge fan of this
|
||||||
// // Move in/out (aka. "zoom")
|
// // Move in/out (aka. "zoom")
|
||||||
|
|||||||
@@ -44,13 +44,7 @@ pub struct RangeCopy<Idx> {
|
|||||||
pub end: Idx,
|
pub end: Idx,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
|
||||||
pub struct DirectionalLight {
|
|
||||||
pub color: wgpu::Color,
|
|
||||||
pub fov: f32,
|
|
||||||
pub depth: RangeCopy<f32>,
|
|
||||||
pub target_view: Arc<TextureView>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Mesh {
|
pub struct Mesh {
|
||||||
|
|||||||
12
src/light.rs
12
src/light.rs
@@ -2,7 +2,9 @@ use bytemuck::__core::ops::Range;
|
|||||||
use bytemuck::{Zeroable, Pod};
|
use bytemuck::{Zeroable, Pod};
|
||||||
use cgmath::Point3;
|
use cgmath::Point3;
|
||||||
use crate::render::OPENGL_TO_WGPU_MATRIX;
|
use crate::render::OPENGL_TO_WGPU_MATRIX;
|
||||||
use crate::components::DirectionalLight;
|
use std::sync::Arc;
|
||||||
|
use wgpu::TextureView;
|
||||||
|
use crate::components::RangeCopy;
|
||||||
|
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
@@ -17,6 +19,14 @@ unsafe impl Pod for LightRaw {}
|
|||||||
|
|
||||||
unsafe impl Zeroable for LightRaw {}
|
unsafe impl Zeroable for LightRaw {}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub struct DirectionalLight {
|
||||||
|
pub color: wgpu::Color,
|
||||||
|
pub fov: f32,
|
||||||
|
pub depth: RangeCopy<f32>,
|
||||||
|
pub target_view: Arc<TextureView>,
|
||||||
|
}
|
||||||
|
|
||||||
impl DirectionalLight {
|
impl DirectionalLight {
|
||||||
pub fn to_raw(&self, pos: Point3<f32>) -> LightRaw {
|
pub fn to_raw(&self, pos: Point3<f32>) -> LightRaw {
|
||||||
use cgmath::{Deg, EuclideanSpace, Matrix4, PerspectiveFov, Point3, Vector3};
|
use cgmath::{Deg, EuclideanSpace, Matrix4, PerspectiveFov, Point3, Vector3};
|
||||||
|
|||||||
35
src/main.rs
35
src/main.rs
@@ -131,7 +131,7 @@ fn main() {
|
|||||||
resources.insert(LoopState {
|
resources.insert(LoopState {
|
||||||
delta_time: Default::default(),
|
delta_time: Default::default(),
|
||||||
start_time: Instant::now(),
|
start_time: Instant::now(),
|
||||||
step_size: 0.005,
|
step_size: 0.01666, // 60hz
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@@ -181,11 +181,8 @@ fn main() {
|
|||||||
let mut current_time: f32 = elapsed_time;
|
let mut current_time: f32 = elapsed_time;
|
||||||
|
|
||||||
event_loop.run(move |event, _, control_flow| {
|
event_loop.run(move |event, _, control_flow| {
|
||||||
// Artificially slows the loop rate to 10 millis
|
|
||||||
// This is called after redraw events cleared
|
|
||||||
//*control_flow = ControlFlow::WaitUntil(Instant::now() + Duration::from_millis(10));
|
|
||||||
*control_flow = ControlFlow::Poll;
|
|
||||||
|
|
||||||
|
*control_flow = ControlFlow::Poll;
|
||||||
match event {
|
match event {
|
||||||
event::Event::NewEvents(cause) => {
|
event::Event::NewEvents(cause) => {
|
||||||
event_schedule.execute(&mut world, &mut resources);
|
event_schedule.execute(&mut world, &mut resources);
|
||||||
@@ -256,15 +253,30 @@ pub fn entity_loading(world: &mut World, renderer: &mut Renderer) {
|
|||||||
yaw: Rad(-PI),
|
yaw: Rad(-PI),
|
||||||
pitch: Rad(PI/2.0)
|
pitch: Rad(PI/2.0)
|
||||||
},
|
},
|
||||||
|
Color {
|
||||||
|
r: 1.0,
|
||||||
|
g: 1.0,
|
||||||
|
b: 0.5,
|
||||||
|
a: 1.0,
|
||||||
|
},
|
||||||
CameraController::new(3.0, 1.0),
|
CameraController::new(3.0, 1.0),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
let light_mesh = renderer.load_mesh_to_buffer("./resources/light.obj");
|
||||||
|
|
||||||
let light_entity: Entity = world.push((
|
let light_entity: Entity = world.push((
|
||||||
cgmath::Point3 {
|
cgmath::Point3 {
|
||||||
x: 7.0 as f32,
|
x: 5.0 as f32,
|
||||||
y: -5.0 as f32,
|
y: 5.0 as f32,
|
||||||
z: 10.0 as f32,
|
z: 5.0 as f32,
|
||||||
},
|
},
|
||||||
|
Color {
|
||||||
|
r: 1.0,
|
||||||
|
g: 0.0,
|
||||||
|
b: 1.0,
|
||||||
|
a: 1.0,
|
||||||
|
},
|
||||||
|
light_mesh.clone(),
|
||||||
renderer.create_light(),
|
renderer.create_light(),
|
||||||
));
|
));
|
||||||
|
|
||||||
@@ -274,6 +286,7 @@ pub fn entity_loading(world: &mut World, renderer: &mut Renderer) {
|
|||||||
y: 7.0 as f32,
|
y: 7.0 as f32,
|
||||||
z: 10.0 as f32,
|
z: 10.0 as f32,
|
||||||
},
|
},
|
||||||
|
light_mesh,
|
||||||
renderer.create_light(),
|
renderer.create_light(),
|
||||||
));
|
));
|
||||||
|
|
||||||
@@ -297,9 +310,9 @@ pub fn entity_loading(world: &mut World, renderer: &mut Renderer) {
|
|||||||
},
|
},
|
||||||
monkey_mesh,
|
monkey_mesh,
|
||||||
Color {
|
Color {
|
||||||
r: 1.0,
|
r: 0.0,
|
||||||
g: 0.5,
|
g: 1.0,
|
||||||
b: 0.5,
|
b: 0.0,
|
||||||
a: 1.0,
|
a: 1.0,
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ use winit::platform::unix::x11::ffi::Time;
|
|||||||
use winit::window::Window;
|
use winit::window::Window;
|
||||||
|
|
||||||
use crate::camera::{Camera, CameraController};
|
use crate::camera::{Camera, CameraController};
|
||||||
use crate::components::{Color, DirectionalLight, Mesh, Position, RangeCopy};
|
use crate::components::{Color, Mesh, Position, RangeCopy};
|
||||||
use crate::geometry::{create_plane, import_mesh, vertex, Vertex};
|
use crate::geometry::{create_plane, import_mesh, vertex, Vertex};
|
||||||
use crate::light::LightRaw;
|
use crate::light::{LightRaw, DirectionalLight};
|
||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
@@ -267,8 +267,8 @@ impl Renderer {
|
|||||||
cgmath::perspective(
|
cgmath::perspective(
|
||||||
cgmath::Deg(75f32),
|
cgmath::Deg(75f32),
|
||||||
self.size.width as f32 / self.size.height as f32,
|
self.size.width as f32 / self.size.height as f32,
|
||||||
1.0,
|
0.1,
|
||||||
20.0,
|
100.0,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,46 +340,6 @@ impl Renderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// I don't know why the hell this is still in here
|
|
||||||
pub fn create_plane(&self, size: f32) -> Mesh {
|
|
||||||
let vertices = [
|
|
||||||
vertex([size, -size, 0.0], [0.0, 0.0, 1.0]),
|
|
||||||
vertex([size, size, 0.0], [0.0, 0.0, 1.0]),
|
|
||||||
vertex([-size, -size, 0.0], [0.0, 0.0, 1.0]),
|
|
||||||
vertex([-size, size, 0.0], [0.0, 0.0, 1.0]),
|
|
||||||
];
|
|
||||||
|
|
||||||
let indices: &[u32] = &[0, 1, 2, 2, 1, 3];
|
|
||||||
|
|
||||||
let index_count = indices.len();
|
|
||||||
let (vertex_buf, index_buf) =
|
|
||||||
Renderer::create_buffer(&self.device, indices.to_vec(), vertices.to_vec());
|
|
||||||
|
|
||||||
let uniform_buf = Arc::new(self.device.create_buffer(&wgpu::BufferDescriptor {
|
|
||||||
label: Some("Plane Uniform Buf"),
|
|
||||||
size: mem::size_of::<EntityUniforms>() as wgpu::BufferAddress,
|
|
||||||
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST,
|
|
||||||
mapped_at_creation: false,
|
|
||||||
}));
|
|
||||||
|
|
||||||
let bind_group = Arc::new(self.device.create_bind_group(&wgpu::BindGroupDescriptor {
|
|
||||||
layout: &self.entity_bind_group_layout,
|
|
||||||
entries: &[wgpu::BindGroupEntry {
|
|
||||||
binding: 0,
|
|
||||||
resource: wgpu::BindingResource::Buffer(uniform_buf.slice(..)),
|
|
||||||
}],
|
|
||||||
label: Some("Plane Bind Group"),
|
|
||||||
}));
|
|
||||||
|
|
||||||
Mesh {
|
|
||||||
index_buffer: index_buf,
|
|
||||||
index_count: index_count,
|
|
||||||
vertex_buffer: vertex_buf,
|
|
||||||
uniform_buffer: uniform_buf,
|
|
||||||
bind_group: bind_group,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn load_mesh_to_buffer(&self, filepath: &str) -> Mesh {
|
pub fn load_mesh_to_buffer(&self, filepath: &str) -> Mesh {
|
||||||
let (vertices, indices) = import_mesh(filepath);
|
let (vertices, indices) = import_mesh(filepath);
|
||||||
let index_count = indices.len();
|
let index_count = indices.len();
|
||||||
@@ -411,7 +371,6 @@ impl Renderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn init(window: &Window) -> Renderer {
|
pub fn init(window: &Window) -> Renderer {
|
||||||
log::info!("Initializing the surface...");
|
|
||||||
|
|
||||||
// Grab the GPU instance, and query its features
|
// Grab the GPU instance, and query its features
|
||||||
let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY);
|
let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY);
|
||||||
@@ -428,11 +387,9 @@ impl Renderer {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let adapter = futures::executor::block_on(adapter).unwrap();
|
let adapter = futures::executor::block_on(adapter).unwrap();
|
||||||
|
|
||||||
let optional_features = Renderer::optional_features();
|
let optional_features = Renderer::optional_features();
|
||||||
let required_features = Renderer::required_features();
|
let required_features = Renderer::required_features();
|
||||||
let adapter_features = adapter.features();
|
let adapter_features = adapter.features();
|
||||||
|
|
||||||
let needed_limits = wgpu::Limits::default(); //Renderer::required_limits();
|
let needed_limits = wgpu::Limits::default(); //Renderer::required_limits();
|
||||||
|
|
||||||
// Maybe for debug tracing???
|
// Maybe for debug tracing???
|
||||||
@@ -453,39 +410,6 @@ impl Renderer {
|
|||||||
let queue = Arc::new(queue);
|
let queue = Arc::new(queue);
|
||||||
let device = Arc::new(device);
|
let device = Arc::new(device);
|
||||||
|
|
||||||
// This is some gross-ass web shit
|
|
||||||
/*#[cfg(target_arch = "wasm32")]
|
|
||||||
let spawner = {
|
|
||||||
use futures::{future::LocalFutureObj, task::SpawnError};
|
|
||||||
use winit::platform::web::WindowExtWebSys;
|
|
||||||
|
|
||||||
struct WebSpawner {}
|
|
||||||
impl LocalSpawn for WebSpawner {
|
|
||||||
fn spawn_local_obj(
|
|
||||||
&self,
|
|
||||||
future: LocalFutureObj<'static, ()>,
|
|
||||||
) -> Result<(), SpawnError> {
|
|
||||||
Ok(wasm_bindgen_futures::spawn_local(future))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::panic::set_hook(Box::new(console_error_panic_hook::hook));
|
|
||||||
|
|
||||||
// On wasm, append the canvas to the document body
|
|
||||||
web_sys::window()
|
|
||||||
.and_then(|win| win.document())
|
|
||||||
.and_then(|doc| doc.body())
|
|
||||||
.and_then(|body| {
|
|
||||||
body.append_child(&web_sys::Element::from(window.canvas()))
|
|
||||||
.ok()
|
|
||||||
})
|
|
||||||
.expect("couldn't append canvas to document body");
|
|
||||||
|
|
||||||
WebSpawner {}
|
|
||||||
};*/
|
|
||||||
|
|
||||||
log::info!("Done doing the loading part...");
|
|
||||||
|
|
||||||
let mut sc_desc = (wgpu::SwapChainDescriptor {
|
let mut sc_desc = (wgpu::SwapChainDescriptor {
|
||||||
// Allows a texture to be a output attachment of a renderpass.
|
// Allows a texture to be a output attachment of a renderpass.
|
||||||
usage: wgpu::TextureUsage::OUTPUT_ATTACHMENT,
|
usage: wgpu::TextureUsage::OUTPUT_ATTACHMENT,
|
||||||
|
|||||||
Reference in New Issue
Block a user