removed vertex and index buffers, we are only rendering fullscreen
This commit is contained in:
@@ -24,10 +24,6 @@ mod uniform;
|
|||||||
pub use uniform::Uniform;
|
pub use uniform::Uniform;
|
||||||
pub use uniform::UniformValues;
|
pub use uniform::UniformValues;
|
||||||
|
|
||||||
mod raster;
|
|
||||||
pub use raster::Raster;
|
|
||||||
pub use raster::Vertex;
|
|
||||||
|
|
||||||
mod materials;
|
mod materials;
|
||||||
pub use materials::Materials;
|
pub use materials::Materials;
|
||||||
|
|
||||||
@@ -35,7 +31,6 @@ pub use materials::Materials;
|
|||||||
|
|
||||||
pub struct Buffers {
|
pub struct Buffers {
|
||||||
pub uniform_buffer: Uniform,
|
pub uniform_buffer: Uniform,
|
||||||
pub raster_buffer: Raster,
|
|
||||||
pub node_buffer: Nodes,
|
pub node_buffer: Nodes,
|
||||||
pub brick_buffer: Blocks,
|
pub brick_buffer: Blocks,
|
||||||
pub material_buffer: Materials
|
pub material_buffer: Materials
|
||||||
@@ -45,10 +40,9 @@ impl Buffers {
|
|||||||
|
|
||||||
pub fn new(device: &wgpu::Device) -> Self {
|
pub fn new(device: &wgpu::Device) -> Self {
|
||||||
let uniform_buffer = Uniform::new(device);
|
let uniform_buffer = Uniform::new(device);
|
||||||
let raster_buffer = Raster::new(device);
|
|
||||||
let node_buffer = Nodes::new(device);
|
let node_buffer = Nodes::new(device);
|
||||||
let brick_buffer = Blocks::new(device);
|
let brick_buffer = Blocks::new(device);
|
||||||
let material_buffer = Materials::new(device);
|
let material_buffer = Materials::new(device);
|
||||||
Self { uniform_buffer, raster_buffer, node_buffer, brick_buffer, material_buffer }
|
Self { uniform_buffer, node_buffer, brick_buffer, material_buffer }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
use wgpu::util::DeviceExt;
|
|
||||||
|
|
||||||
#[repr(C)]
|
|
||||||
#[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
|
|
||||||
pub struct Vertex {
|
|
||||||
pub position: [f32; 3],
|
|
||||||
pub uv: [f32; 2],
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Vertex {
|
|
||||||
pub fn desc<'a>() -> wgpu::VertexBufferLayout<'a> {
|
|
||||||
wgpu::VertexBufferLayout {
|
|
||||||
array_stride: std::mem::size_of::<Vertex>() as wgpu::BufferAddress,
|
|
||||||
step_mode: wgpu::InputStepMode::Vertex,
|
|
||||||
attributes: &[
|
|
||||||
// position
|
|
||||||
wgpu::VertexAttribute {
|
|
||||||
offset: 0,
|
|
||||||
shader_location: 0,
|
|
||||||
format: wgpu::VertexFormat::Float3,
|
|
||||||
},
|
|
||||||
// color
|
|
||||||
wgpu::VertexAttribute {
|
|
||||||
offset: std::mem::size_of::<[f32; 3]>() as wgpu::BufferAddress,
|
|
||||||
shader_location: 1,
|
|
||||||
format: wgpu::VertexFormat::Float2,
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const VERTICES: &[Vertex] = &[
|
|
||||||
Vertex { position: [-1.0, 1.0, 0.0], uv: [-1.0, 1.0] }, // top left
|
|
||||||
Vertex { position: [ 1.0, 1.0, 0.0], uv: [1.0, 1.0] }, // top right
|
|
||||||
Vertex { position: [ 1.0,-1.0, 0.0], uv: [1.0, -1.0] }, // bottom right
|
|
||||||
Vertex { position: [-1.0,-1.0, 0.0], uv: [-1.0, -1.0] }, // bottom left
|
|
||||||
];
|
|
||||||
pub const INDICES: &[u16] = &[ 0, 1, 3, 3, 1, 2 ];
|
|
||||||
|
|
||||||
|
|
||||||
pub struct Raster {
|
|
||||||
pub vertex_buffer: wgpu::Buffer,
|
|
||||||
pub index_buffer: wgpu::Buffer,
|
|
||||||
pub index_len: u32
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Raster {
|
|
||||||
pub fn new(device: &wgpu::Device) -> Self {
|
|
||||||
|
|
||||||
// Create vertex buffer
|
|
||||||
let vertex_buffer = device.create_buffer_init(
|
|
||||||
&wgpu::util::BufferInitDescriptor {
|
|
||||||
label: Some("Vertex buffer"),
|
|
||||||
contents: bytemuck::cast_slice(VERTICES),
|
|
||||||
usage: wgpu::BufferUsage::VERTEX,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create index buffer
|
|
||||||
let index_buffer = device.create_buffer_init(
|
|
||||||
&wgpu::util::BufferInitDescriptor {
|
|
||||||
label: Some("Index buffer"),
|
|
||||||
contents: bytemuck::cast_slice(INDICES),
|
|
||||||
usage: wgpu::BufferUsage::INDEX,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
let index_len = INDICES.len() as u32;
|
|
||||||
|
|
||||||
// Done
|
|
||||||
Self { vertex_buffer, index_buffer, index_len }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-1
@@ -2,7 +2,7 @@ use winit::{window::Window, dpi::PhysicalSize};
|
|||||||
use cgmath::{Point3};
|
use cgmath::{Point3};
|
||||||
|
|
||||||
pub mod buffers;
|
pub mod buffers;
|
||||||
use buffers::{Buffers, Nodes, Blocks, Uniform, Raster, Materials};
|
use buffers::Buffers;
|
||||||
|
|
||||||
mod passes;
|
mod passes;
|
||||||
use passes::RaytracePass;
|
use passes::RaytracePass;
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
pub struct PostprocessPass {
|
||||||
|
pub pipeline: wgpu::RenderPipeline
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PostprocessPass {
|
||||||
|
pub fn new(device: &wgpu::Device, swapchain_desc: &wgpu::SwapChainDescriptor) -> Self {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
use crate::renderer::buffers::{Vertex, Buffers};
|
use crate::renderer::buffers::Buffers;
|
||||||
|
|
||||||
pub struct RaytracePass {
|
pub struct RaytracePass {
|
||||||
pub pipeline: wgpu::RenderPipeline
|
pub pipeline: wgpu::RenderPipeline
|
||||||
@@ -11,7 +11,7 @@ impl RaytracePass {
|
|||||||
let vert_state = wgpu::VertexState {
|
let vert_state = wgpu::VertexState {
|
||||||
module: &device.create_shader_module(&wgpu::include_spirv!("..\\..\\shaders\\bin\\shader.vert.spv")),
|
module: &device.create_shader_module(&wgpu::include_spirv!("..\\..\\shaders\\bin\\shader.vert.spv")),
|
||||||
entry_point: "main",
|
entry_point: "main",
|
||||||
buffers: &[Vertex::desc()],
|
buffers: &[],
|
||||||
};
|
};
|
||||||
|
|
||||||
// Fragment shader
|
// Fragment shader
|
||||||
@@ -80,15 +80,16 @@ impl RaytracePass {
|
|||||||
// Pipeline
|
// Pipeline
|
||||||
render_pass.set_pipeline(&self.pipeline);
|
render_pass.set_pipeline(&self.pipeline);
|
||||||
|
|
||||||
// Vertices and indices
|
|
||||||
render_pass.set_vertex_buffer(0, buffers.raster_buffer.vertex_buffer.slice(..));
|
|
||||||
render_pass.set_index_buffer(buffers.raster_buffer.index_buffer.slice(..), wgpu::IndexFormat::Uint16);
|
|
||||||
render_pass.draw_indexed(0..buffers.raster_buffer.index_len, 0, 0..1);
|
|
||||||
|
|
||||||
// Bind groups
|
// Bind groups
|
||||||
render_pass.set_bind_group(0, &buffers.uniform_buffer.bind_group, &[]);
|
render_pass.set_bind_group(0, &buffers.uniform_buffer.bind_group, &[]);
|
||||||
render_pass.set_bind_group(1, &buffers.node_buffer.bind_group, &[]);
|
render_pass.set_bind_group(1, &buffers.node_buffer.bind_group, &[]);
|
||||||
render_pass.set_bind_group(2, &buffers.brick_buffer.bind_group, &[]);
|
render_pass.set_bind_group(2, &buffers.brick_buffer.bind_group, &[]);
|
||||||
render_pass.set_bind_group(3, &buffers.material_buffer.bind_group, &[]);
|
render_pass.set_bind_group(3, &buffers.material_buffer.bind_group, &[]);
|
||||||
|
|
||||||
|
// Vertices and indices
|
||||||
|
render_pass.draw(0..6, 0..1); // 3.
|
||||||
|
// render_pass.set_vertex_buffer(0, buffers.raster_buffer.vertex_buffer.slice(..));
|
||||||
|
// render_pass.set_index_buffer(buffers.raster_buffer.index_buffer.slice(..), wgpu::IndexFormat::Uint16);
|
||||||
|
// render_pass.draw_indexed(0..buffers.raster_buffer.index_len, 0, 0..1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
+12
-4
@@ -1,11 +1,19 @@
|
|||||||
#version 450
|
#version 450
|
||||||
|
|
||||||
layout(location=0) in vec3 in_position;
|
|
||||||
layout(location=1) in vec2 in_uv;
|
|
||||||
layout(location=0) out vec2 vert_uv;
|
layout(location=0) out vec2 vert_uv;
|
||||||
|
|
||||||
|
const vec2 positions[6] = vec2[6](
|
||||||
|
vec2(-1.0, 1.0),
|
||||||
|
vec2( 1.0, 1.0),
|
||||||
|
vec2( 1.0,-1.0),
|
||||||
|
|
||||||
|
vec2(-1.0, 1.0),
|
||||||
|
vec2( 1.0,-1.0),
|
||||||
|
vec2(-1.0,-1.0)
|
||||||
|
);
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vert_uv = in_uv;
|
vert_uv = positions[gl_VertexIndex];
|
||||||
gl_Position = vec4(in_position, 1.0);
|
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user