Use cube for light debug mesh instead of entirety of Sponza...
This commit is contained in:
parent
2ddc863ca5
commit
450fc7a518
4 changed files with 16 additions and 5 deletions
|
@ -62,3 +62,5 @@ For miniserve, see:
|
||||||
## Assets
|
## Assets
|
||||||
- Sponza
|
- Sponza
|
||||||
- Obtained from [KhronosGroup glTF-Sample-Models repository](https://github.com/KhronosGroup/glTF-Sample-Models/tree/16e2408d31e06d4b0bcf6123db472e802d71f081/2.0/Sponza), converted to .glb
|
- Obtained from [KhronosGroup glTF-Sample-Models repository](https://github.com/KhronosGroup/glTF-Sample-Models/tree/16e2408d31e06d4b0bcf6123db472e802d71f081/2.0/Sponza), converted to .glb
|
||||||
|
- Cube
|
||||||
|
- Obtained from [KhronosGroup glTF-Sample-Models repository](https://github.com/KhronosGroup/glTF-Sample-Models/tree/16e2408d31e06d4b0bcf6123db472e802d71f081/2.0/Cube), converted to .glb
|
||||||
|
|
BIN
res/models/Cube.glb
Normal file
BIN
res/models/Cube.glb
Normal file
Binary file not shown.
|
@ -28,7 +28,7 @@ struct VertexOutput {
|
||||||
fn vs_main(
|
fn vs_main(
|
||||||
model: VertexInput,
|
model: VertexInput,
|
||||||
) -> VertexOutput {
|
) -> VertexOutput {
|
||||||
let scale = 0.01;
|
let scale = 10.0;
|
||||||
var out: VertexOutput;
|
var out: VertexOutput;
|
||||||
out.clip_position = camera.proj * camera.view * vec4<f32>(model.position * scale + light.position, 1.0);
|
out.clip_position = camera.proj * camera.view * vec4<f32>(model.position * scale + light.position, 1.0);
|
||||||
out.color = light.color;
|
out.color = light.color;
|
||||||
|
|
|
@ -29,6 +29,7 @@ pub struct State {
|
||||||
instance_buffer: wgpu::Buffer,
|
instance_buffer: wgpu::Buffer,
|
||||||
depth_texture: Texture,
|
depth_texture: Texture,
|
||||||
model: Model,
|
model: Model,
|
||||||
|
light_model: Model,
|
||||||
light_uniform: LightUniform,
|
light_uniform: LightUniform,
|
||||||
light_buffer: wgpu::Buffer,
|
light_buffer: wgpu::Buffer,
|
||||||
light_debug_pass: RenderPass,
|
light_debug_pass: RenderPass,
|
||||||
|
@ -222,6 +223,15 @@ impl State {
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
let light_model = resources::load_model_gltf(
|
||||||
|
"models/Cube.glb",
|
||||||
|
&device,
|
||||||
|
&queue,
|
||||||
|
&texture_bind_group_layout,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let instances = vec![Instance {
|
let instances = vec![Instance {
|
||||||
position: [0.0, 0.0, 0.0].into(),
|
position: [0.0, 0.0, 0.0].into(),
|
||||||
rotation: cgmath::Quaternion::one(),
|
rotation: cgmath::Quaternion::one(),
|
||||||
|
@ -276,6 +286,7 @@ impl State {
|
||||||
instance_buffer,
|
instance_buffer,
|
||||||
depth_texture,
|
depth_texture,
|
||||||
model,
|
model,
|
||||||
|
light_model,
|
||||||
light_uniform,
|
light_uniform,
|
||||||
light_buffer,
|
light_buffer,
|
||||||
light_debug_pass,
|
light_debug_pass,
|
||||||
|
@ -366,16 +377,14 @@ impl State {
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: only use for geom, not lights
|
|
||||||
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));
|
|
||||||
|
|
||||||
render_pass.set_pipeline(&self.light_debug_pass.pipeline);
|
render_pass.set_pipeline(&self.light_debug_pass.pipeline);
|
||||||
render_pass.draw_light_model(
|
render_pass.draw_light_model(
|
||||||
&self.model,
|
&self.light_model,
|
||||||
&self.camera_bind_group,
|
&self.camera_bind_group,
|
||||||
&self.light_bind_group,
|
&self.light_bind_group,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..));
|
||||||
render_pass.set_pipeline(&self.geometry_pass.pipeline);
|
render_pass.set_pipeline(&self.geometry_pass.pipeline);
|
||||||
render_pass.draw_model_instanced(
|
render_pass.draw_model_instanced(
|
||||||
&self.model,
|
&self.model,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue