diff --git a/experiments/2024-10-30/src/render/geometry.rs b/experiments/2024-10-30/src/render/geometry.rs index 65afc9040..d2dc30560 100644 --- a/experiments/2024-10-30/src/render/geometry.rs +++ b/experiments/2024-10-30/src/render/geometry.rs @@ -5,7 +5,7 @@ use wgpu::util::DeviceExt; use crate::geometry::Operation; -use super::shaders::{TrianglesVertex, VerticesVertex}; +use super::pipelines::{TrianglesVertex, VerticesVertex}; pub struct Geometry { pub vertices: wgpu::Buffer, diff --git a/experiments/2024-10-30/src/render/mod.rs b/experiments/2024-10-30/src/render/mod.rs index a09ed284f..f76869e43 100644 --- a/experiments/2024-10-30/src/render/mod.rs +++ b/experiments/2024-10-30/src/render/mod.rs @@ -1,6 +1,5 @@ mod geometry; mod pipelines; mod renderer; -mod shaders; pub use self::renderer::Renderer; diff --git a/experiments/2024-10-30/src/render/pipelines/mod.rs b/experiments/2024-10-30/src/render/pipelines/mod.rs index d6d4d66a2..d7c987af6 100644 --- a/experiments/2024-10-30/src/render/pipelines/mod.rs +++ b/experiments/2024-10-30/src/render/pipelines/mod.rs @@ -1,8 +1,8 @@ mod pipeline; -pub use self::pipeline::Pipeline; +use glam::Mat4; -use super::shaders::{TrianglesVertex, VerticesVertex}; +pub use self::pipeline::Pipeline; pub struct Pipelines { pub vertices: Pipeline, @@ -34,3 +34,55 @@ impl Pipelines { } } } + +#[derive(Clone, Copy, bytemuck::Pod, bytemuck::Zeroable)] +#[repr(C)] +pub struct Uniforms { + pub transform: Mat4, + pub transform_for_normals: Mat4, +} + +impl Uniforms { + pub fn from_transform(transform: Mat4) -> Self { + let transform_for_normals = transform.inverse().transpose(); + + Self { + transform, + transform_for_normals, + } + } +} + +pub trait Vertex { + const ATTRIBUTES: &[wgpu::VertexAttribute]; +} + +#[derive(Clone, Copy, bytemuck::Pod, bytemuck::Zeroable)] +#[repr(C)] +pub struct TrianglesVertex { + pub position: [f32; 3], + pub normal: [f32; 3], +} + +impl Vertex for TrianglesVertex { + const ATTRIBUTES: &[wgpu::VertexAttribute] = &wgpu::vertex_attr_array![ + 0 => Float32x3, + 1 => Float32x3, + ]; +} + +#[derive(Clone, Copy, bytemuck::Pod, bytemuck::Zeroable)] +#[repr(C)] +pub struct VerticesVertex { + pub position: [f32; 3], + pub center: [f32; 3], + pub radius: f32, +} + +impl Vertex for VerticesVertex { + const ATTRIBUTES: &[wgpu::VertexAttribute] = &wgpu::vertex_attr_array![ + 0 => Float32x3, + 1 => Float32x3, + 2 => Float32, + ]; +} diff --git a/experiments/2024-10-30/src/render/pipelines/pipeline.rs b/experiments/2024-10-30/src/render/pipelines/pipeline.rs index fd8d08dce..e6b63a6c5 100644 --- a/experiments/2024-10-30/src/render/pipelines/pipeline.rs +++ b/experiments/2024-10-30/src/render/pipelines/pipeline.rs @@ -1,6 +1,8 @@ use std::marker::PhantomData; -use crate::render::{geometry::Geometry, shaders::Vertex}; +use crate::render::geometry::Geometry; + +use super::Vertex; pub struct Pipeline { render_pipeline: wgpu::RenderPipeline, diff --git a/experiments/2024-10-30/src/render/renderer.rs b/experiments/2024-10-30/src/render/renderer.rs index e685d5009..1cc5750b9 100644 --- a/experiments/2024-10-30/src/render/renderer.rs +++ b/experiments/2024-10-30/src/render/renderer.rs @@ -7,7 +7,10 @@ use winit::window::Window; use crate::geometry::Operation; -use super::{geometry::Geometry, pipelines::Pipelines, shaders::Uniforms}; +use super::{ + geometry::Geometry, + pipelines::{Pipelines, Uniforms}, +}; pub struct Renderer { pub surface: wgpu::Surface<'static>, diff --git a/experiments/2024-10-30/src/render/shaders/mod.rs b/experiments/2024-10-30/src/render/shaders/mod.rs deleted file mode 100644 index 35b2b4d5a..000000000 --- a/experiments/2024-10-30/src/render/shaders/mod.rs +++ /dev/null @@ -1,53 +0,0 @@ -use glam::Mat4; - -#[derive(Clone, Copy, bytemuck::Pod, bytemuck::Zeroable)] -#[repr(C)] -pub struct Uniforms { - pub transform: Mat4, - pub transform_for_normals: Mat4, -} - -impl Uniforms { - pub fn from_transform(transform: Mat4) -> Self { - let transform_for_normals = transform.inverse().transpose(); - - Self { - transform, - transform_for_normals, - } - } -} - -pub trait Vertex { - const ATTRIBUTES: &[wgpu::VertexAttribute]; -} - -#[derive(Clone, Copy, bytemuck::Pod, bytemuck::Zeroable)] -#[repr(C)] -pub struct TrianglesVertex { - pub position: [f32; 3], - pub normal: [f32; 3], -} - -impl Vertex for TrianglesVertex { - const ATTRIBUTES: &[wgpu::VertexAttribute] = &wgpu::vertex_attr_array![ - 0 => Float32x3, - 1 => Float32x3, - ]; -} - -#[derive(Clone, Copy, bytemuck::Pod, bytemuck::Zeroable)] -#[repr(C)] -pub struct VerticesVertex { - pub position: [f32; 3], - pub center: [f32; 3], - pub radius: f32, -} - -impl Vertex for VerticesVertex { - const ATTRIBUTES: &[wgpu::VertexAttribute] = &wgpu::vertex_attr_array![ - 0 => Float32x3, - 1 => Float32x3, - 2 => Float32, - ]; -}