diff --git a/.gitignore b/.gitignore index b354aec..5ffbcda 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ Cargo.lock -target/ \ No newline at end of file +target/ + +*.spv \ No newline at end of file diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..2cc5a8e --- /dev/null +++ b/build.rs @@ -0,0 +1,53 @@ +use std::{fs, path::Path, process::Command}; + +const FILE_ENDINGS: &'static [&'static str] = &[ + "vert", "frag", "geom", "comp", "rchit", "rmiss", "rgen", "rahit", +]; + +fn find_shader_files(path: impl AsRef) -> Vec { + let mut v = Vec::new(); + + if !path.as_ref().is_dir() { + panic!("path ({:?}) is not a directory!", path.as_ref()); + } + + for entry in fs::read_dir(path).unwrap() { + let child_path = entry.unwrap().path(); + + if child_path.is_dir() { + v.extend(find_shader_files(child_path)); + } else if child_path.is_file() { + for ending in FILE_ENDINGS.iter() { + if child_path.extension().unwrap() == *ending { + v.push(child_path.to_str().unwrap().to_string()); + + break; + } + } + } + } + + v +} + +fn compile_shader(shader_files: &[String]) { + Command::new("glslangValidator") + .arg("--help") + .output() + .expect("Failed to execute glslangValidator. Maybe you need to install it first?"); + + for shader in shader_files { + Command::new("glslangValidator") + .arg("-V") + .arg(shader) + .arg("-o") + .arg(&format!("{}.spv", shader)) + .output() + .expect(&format!("Failed to compile {}", shader)); + } +} + +fn main() { + let shader_files = find_shader_files("src"); + compile_shader(&shader_files); +} diff --git a/src/element_creator/generator.frag b/src/element_creator/generator.frag new file mode 100644 index 0000000..52f80f5 --- /dev/null +++ b/src/element_creator/generator.frag @@ -0,0 +1,12 @@ +#version 450 + +layout (set = 0, binding = 0) uniform Descriptor { + vec3 color; +} descriptor; + +layout (location = 0) out vec4 out_color; + +void main() +{ + out_color = vec4(descriptor.color, 1.0); +} diff --git a/src/element_creator/generator.vert b/src/element_creator/generator.vert new file mode 100644 index 0000000..126ef86 --- /dev/null +++ b/src/element_creator/generator.vert @@ -0,0 +1,8 @@ +#version 450 + +layout (location = 0) in vec4 position; + +void main() +{ + gl_Position = position; +} \ No newline at end of file diff --git a/src/guihandler/guishader/input_rect.frag.spv b/src/guihandler/guishader/input_rect.frag.spv deleted file mode 100644 index 4df9377..0000000 Binary files a/src/guihandler/guishader/input_rect.frag.spv and /dev/null differ diff --git a/src/guihandler/guishader/rect.frag.spv b/src/guihandler/guishader/rect.frag.spv deleted file mode 100644 index fc53c30..0000000 Binary files a/src/guihandler/guishader/rect.frag.spv and /dev/null differ diff --git a/src/guihandler/guishader/gui.vert b/src/guihandler/guishader/rect.vert similarity index 100% rename from src/guihandler/guishader/gui.vert rename to src/guihandler/guishader/rect.vert diff --git a/src/guihandler/guishader/rect.vert.spv b/src/guihandler/guishader/rect.vert.spv deleted file mode 100644 index 83710f0..0000000 Binary files a/src/guihandler/guishader/rect.vert.spv and /dev/null differ diff --git a/src/guihandler/guishader/single_color.frag.spv b/src/guihandler/guishader/single_color.frag.spv deleted file mode 100644 index 070e49e..0000000 Binary files a/src/guihandler/guishader/single_color.frag.spv and /dev/null differ diff --git a/src/guihandler/guishader/single_color.vert.spv b/src/guihandler/guishader/single_color.vert.spv deleted file mode 100644 index c9acf34..0000000 Binary files a/src/guihandler/guishader/single_color.vert.spv and /dev/null differ diff --git a/src/guihandler/guishader/text.frag.spv b/src/guihandler/guishader/text.frag.spv deleted file mode 100644 index f8375a3..0000000 Binary files a/src/guihandler/guishader/text.frag.spv and /dev/null differ diff --git a/src/guihandler/guishader/text.vert b/src/guihandler/guishader/text.vert new file mode 100644 index 0000000..0b55291 --- /dev/null +++ b/src/guihandler/guishader/text.vert @@ -0,0 +1,12 @@ +#version 450 + +layout (location = 0) in vec4 position; +layout (location = 1) in vec2 texcoord; + +layout (location = 0) out vec2 uv; + +void main() +{ + uv = texcoord; + gl_Position = position; +} \ No newline at end of file diff --git a/src/guihandler/guishader/text.vert.spv b/src/guihandler/guishader/text.vert.spv deleted file mode 100644 index 83710f0..0000000 Binary files a/src/guihandler/guishader/text.vert.spv and /dev/null differ