From 037b38c70487a152cfe7249dfe0c64791279e975 Mon Sep 17 00:00:00 2001 From: Thomas Forgione Date: Fri, 23 Feb 2018 17:35:39 +0100 Subject: [PATCH] Added assets --- assets/shaders/shader.frag | 22 ++++++++++++++++++++++ assets/shaders/shader.vert | 12 ++++++++++++ src/lib.rs | 5 +++-- src/math/vector.rs | 7 +++++++ src/{model/mod.rs => model.rs} | 0 src/programs/viewer.rs | 7 +++++++ src/renderer.rs | 1 + 7 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 assets/shaders/shader.frag create mode 100644 assets/shaders/shader.vert rename src/{model/mod.rs => model.rs} (100%) create mode 100644 src/renderer.rs diff --git a/assets/shaders/shader.frag b/assets/shaders/shader.frag new file mode 100644 index 0000000..b850034 --- /dev/null +++ b/assets/shaders/shader.frag @@ -0,0 +1,22 @@ +varying vec3 fNormal; +varying vec4 fFrontColor; + +vec3 ambientLight = vec3(0.2,0.2,0.2); +vec3 directionnalLight = normalize(vec3(10,5,7)); +vec3 directionnalLightFactor = vec3(0.5,0.5,0.5); + +uniform sampler2D tex; + +void main() { + + vec3 ambientFactor = ambientLight; + vec3 lambertFactor = max(vec3(0.0,0.0,0.0), dot(directionnalLight, fNormal) * directionnalLightFactor); + vec4 noTexColor = vec4(ambientFactor + lambertFactor, 1.0); + + vec4 color = texture2D(tex, gl_TexCoord[0].st); + + vec4 fragColor = noTexColor * color; + gl_FragColor = fragColor * fFrontColor; + +} + diff --git a/assets/shaders/shader.vert b/assets/shaders/shader.vert new file mode 100644 index 0000000..a50f4ef --- /dev/null +++ b/assets/shaders/shader.vert @@ -0,0 +1,12 @@ +varying vec3 fNormal; +varying vec4 fTexCoord; +varying vec4 fFrontColor; + +void main() { + + fNormal = gl_Normal; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + fFrontColor = gl_Color; + +} diff --git a/src/lib.rs b/src/lib.rs index 3957bbe..68d7bed 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,9 +1,10 @@ extern crate num; -#[macro_use] -extern crate verbose_log; +#[macro_use] extern crate verbose_log; +#[macro_use] extern crate glium; pub mod math; pub mod model; +pub mod renderer; pub mod parser; pub mod exporter; diff --git a/src/math/vector.rs b/src/math/vector.rs index 8c05bf7..f953223 100644 --- a/src/math/vector.rs +++ b/src/math/vector.rs @@ -245,6 +245,13 @@ impl Vector3 { } } +type Vector2f32 = Vector2; implement_vertex!(Vector2f32, data); +type Vector2f64 = Vector2; implement_vertex!(Vector2f64, data); +type Vector3f32 = Vector3; implement_vertex!(Vector3f32, data); +type Vector3f64 = Vector3; implement_vertex!(Vector3f64, data); +type Vector4f32 = Vector4; implement_vertex!(Vector4f32, data); +type Vector4f64 = Vector4; implement_vertex!(Vector4f64, data); + #[cfg(test)] mod test { diff --git a/src/model/mod.rs b/src/model.rs similarity index 100% rename from src/model/mod.rs rename to src/model.rs diff --git a/src/programs/viewer.rs b/src/programs/viewer.rs index 9e7365a..011eff6 100644 --- a/src/programs/viewer.rs +++ b/src/programs/viewer.rs @@ -19,6 +19,13 @@ fn main() { let context = ContextBuilder::new(); let display = Display::new(window, context, &events_loop).unwrap(); + let program = glium::Program::from_source( + &display, + include_str!("../../assets/shaders/shader.vert"), + include_str!("../../assets/shaders/shader.frag"), + None + ).unwrap(); + let mut closed = false; while !closed { diff --git a/src/renderer.rs b/src/renderer.rs new file mode 100644 index 0000000..0fc0ebb --- /dev/null +++ b/src/renderer.rs @@ -0,0 +1 @@ +pub struct Renderer;