From 13aa2ba04d932265cd19982831ba0a9795894dba Mon Sep 17 00:00:00 2001 From: hodasemi Date: Mon, 25 Mar 2024 07:12:51 +0100 Subject: [PATCH] Create build file for shaders --- .gitignore | 4 +- build.rs | 53 ++++++++++++++++++ src/element_creator/generator.frag | 12 ++++ src/element_creator/generator.vert | 8 +++ src/guihandler/guishader/input_rect.frag.spv | Bin 612 -> 0 bytes src/guihandler/guishader/rect.frag.spv | Bin 548 -> 0 bytes .../guishader/{gui.vert => rect.vert} | 0 src/guihandler/guishader/rect.vert.spv | Bin 888 -> 0 bytes .../guishader/single_color.frag.spv | Bin 652 -> 0 bytes .../guishader/single_color.vert.spv | Bin 708 -> 0 bytes src/guihandler/guishader/text.frag.spv | Bin 992 -> 0 bytes src/guihandler/guishader/text.vert | 12 ++++ src/guihandler/guishader/text.vert.spv | Bin 888 -> 0 bytes 13 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 build.rs create mode 100644 src/element_creator/generator.frag create mode 100644 src/element_creator/generator.vert delete mode 100644 src/guihandler/guishader/input_rect.frag.spv delete mode 100644 src/guihandler/guishader/rect.frag.spv rename src/guihandler/guishader/{gui.vert => rect.vert} (100%) delete mode 100644 src/guihandler/guishader/rect.vert.spv delete mode 100644 src/guihandler/guishader/single_color.frag.spv delete mode 100644 src/guihandler/guishader/single_color.vert.spv delete mode 100644 src/guihandler/guishader/text.frag.spv create mode 100644 src/guihandler/guishader/text.vert delete mode 100644 src/guihandler/guishader/text.vert.spv 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 4df9377e69dda24ea0c3460ea9ac180fd9897e01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmZ9I%Su9F6ot2*yrktN(`XV}lfaM$6+zV0iL;)-E`*Q?-5#)~Y7+Q;zbBG5Y}a1P zb@t`Yibs`*Le!!fy;wy%iYO7{F<6gs;^WEfWc2p_FgiOw)!B$lNdGmX5*yU!d^&qk z-z2+a3!gfJs4}`nd@-Pey6%_z&Hdte@e0bfz}bBI^q6>-`h9#xjC1b+x*^wlnAjg5 z{Nuwl?ry)|ci76k25G}cb&tA?)+hJq@BVUk?(poczh iG`!^-r37B1deb)Pj(4cuzLRUtz2OVrK<$T)m*f&E_84sd diff --git a/src/guihandler/guishader/rect.frag.spv b/src/guihandler/guishader/rect.frag.spv deleted file mode 100644 index fc53c30f9750d8828836b530c3f4f0d2b79ab9c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmY+AOG`pg6oq%*d}aAaF+vEfxj3i@qNYxqIdCi%A!tIcAK0&I67+qiE7^waK5N}| z)>+%Ea8Zufi*i(=6Tj7p0!&0LN@Z39e6{;AdX38Tn4-tw#PH M2X~YE=7k&j2a{kH?*IS* 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 83710f00dde2407a0915b04510dd2c0b5bde69d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmYk3UrPc}5XEomu9lUVsr^GXdJLq8iXaN2z#e=EgkD2*i3{7V=o-<->r?d-bbdFl zHOuVWIp@sWncZUHxNOXdDVvHpFuzte1tG>%P3U5;Kj?R7`M7&_eu`q#6rB)F&8)g} zN$=O8O-Vqi@`k)EFX|~MeySiaB|U%IKpgt{8(iS(^7ws}Wz(@>A)%=&z9i3&@$@O4 ziUbcAIA^$QW^@@Kg>fF;t?9h>8?lTZ`f?9>Q;t#JQiP*7_2hgjF!()1 zdcj}lAMrid0R#UM5-45^W%qSCd*6uV`;fy?zbmKrtt#ldFK1TfK~Ik6Ten}ze*gd& BISK#( diff --git a/src/guihandler/guishader/single_color.frag.spv b/src/guihandler/guishader/single_color.frag.spv deleted file mode 100644 index 070e49e757d50b029bc5b9e5b8c3cc0521a53b39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmYk2O-q7N5JpGMkFxy8)K;Ro45URx5EaqF7A}f@KuB!@ODJpIZ}V5R2|DL}U!@Ck z=gu={=FYu^{IDF6i*i(AKho8VJW510N{Js&9wwuY#q;R+39&Dw3e_o-QH?0jl%;u^k><*>snu5)%--@wb-&%F1vu!!%gQ~tu7bGp3$ z2c?L=X1BJ9d7nKmAnmh@so%rcZ!gnuYptDW&b8t?ndY5${D%M0#jKY%?`)S$;{TZY IV(P6ym_;4cEjK}GG@(0rfK@7wyp_;7}GM1DkkH}cvzG#!_%`7jJ63YBAkvUv32>| z)aB&c@~%A87bt#-XvO%?u{yh@-fQ;skS-q6MVWr66k6lt^k#)C-7FUxReUrn+~wuO zeWvhy4=wd>GdI6;MLEr%(^Zd+>Ah#!s%NzyyJA)!JI}qK@_S+Ii23NT`h9r0KOXw< z(DFQTFz%kHLk=$yg5E%m^@M^SiNg%}zOsg5EI$yRm!{^dzWzkZ}Xbf|h$ z5kA;J8QT5~dU!0}mZIPDa#`~(VCb|fUVSb))Ezm-{Ei};oXtEncLSr}Q{*iA=Xz7_ j#vL&5Zy{FkN+_INIrBF{ncb7K51QASpoa4!g$wyFjF2#a diff --git a/src/guihandler/guishader/text.frag.spv b/src/guihandler/guishader/text.frag.spv deleted file mode 100644 index f8375a39aac05814fabf9111534f659696a23292..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 992 zcmYk4PcK736vZ#kYfI@LrA4XN78^-pfk*@q3l?1v5=&`lq={-miKS2AL-|xT66ZIa zS8tNrJLk-qbMM^OV6vGuo3ONHY|BQgXp>^hvX*lBynWqny$&B*yL&q*auzrtn!IjK zDHHup@0o*XMNv_Z4qgSc3*>6{txKWUq#n$j`@z%TMHxJ&-0OE9yAB7=@9mwl(3ZsA zbU%h?UZ3)u=!8dTE5bwR?!582uTw*)1*T5Jp?_RYVBQhyFA{Z{V@=@t;cfU)6F+7X z#>^n%ayqdg>)tjH^;+b$|}P zSucXa56lc$)Xyv9N1x~m%6P$}2Qw46Md1bINWt3ncyR=sUqyTT=(na{z8xIi%gWS& z!yC-};P9?0M+$1;4PI5SxWA^17C+9Z6DiC-Pxke#IAe}1>i>udm5;>o{+xohgL&V) zg16mD#k@-jH1JpA@GmRiS*POYf&T}6(;Hs&v#x-T@6|o0H0Bzf<9)HN={b78R2THI eq2NAx&LhQ_?{QOm>t|ujIc0_p7NLDEr?d-bbdFl zHOuVWIp@sWncZUHxNOXdDVvHpFuzte1tG>%P3U5;Kj?R7`M7&_eu`q#6rB)F&8)g} zN$=O8O-Vqi@`k)EFX|~MeySiaB|U%IKpgt{8(iS(^7ws}Wz(@>A)%=&z9i3&@$@O4 ziUbcAIA^$QW^@@Kg>fF;t?9h>8?lTZ`f?9>Q;t#JQiP*7_2hgjF!()1 zdcj}lAMrid0R#UM5-45^W%qSCd*6uV`;fy?zbmKrtt#ldFK1TfK~Ik6Ten}ze*gd& BISK#(