Move GLSL shaders to external files and use include_str!() to load them.
authorBernie Innocenti <bernie@codewiz.org>
Sat, 8 Apr 2017 20:33:50 +0000 (16:33 -0400)
committerBernie Innocenti <bernie@codewiz.org>
Sat, 8 Apr 2017 20:43:30 +0000 (16:43 -0400)
bounding_box.rs
mandelwow.frag [new file with mode: 0644]
mandelwow.rs
mandelwow.vert [new file with mode: 0644]
solid.frag [new file with mode: 0644]
solid.vert [new file with mode: 0644]

index 657b206d53e92a8e2d9d9d5318abdc510d04a098..95d3608768bebfc432e230d09c9a22f1cc5601d2 100644 (file)
@@ -4,29 +4,8 @@ use glium::{Display, Program, Surface};
 use glium::index::{IndexBuffer, PrimitiveType};
 
 pub fn solid_fill_program(display: &Display) -> Program {
-    let vertex_shader_src = r#"
-        #version 140
-        in vec3 position;
-        uniform mat4 perspective;
-        uniform mat4 view;
-        uniform mat4 model;
-
-        void main() {
-            mat4 modelview = view * model;
-            gl_Position = perspective * modelview * vec4(position, 1.0);
-        }
-    "#;
-
-    let fragment_shader_src = r#"
-        #version 140
-
-        out vec4 color;
-
-        void main() {
-            color = vec4(1.0, 1.0, 1.0, 1.0);
-        }
-    "#;
-
+    let vertex_shader_src = include_str!("solid.vert");
+    let fragment_shader_src = include_str!("solid.frag");
     return Program::from_source(display, vertex_shader_src, fragment_shader_src, None).unwrap();
 }
 
diff --git a/mandelwow.frag b/mandelwow.frag
new file mode 100644 (file)
index 0000000..3795fd4
--- /dev/null
@@ -0,0 +1,28 @@
+#version 140
+precision highp float;
+in vec2 c;
+in vec2 z;
+out vec4 f_color;
+
+void main() {
+    float zx = z.x;
+    float zy = z.y;
+    int maxiter = 64;
+    int iter = maxiter;
+    while (iter > 0) {
+        float zx2 = zx * zx;
+        float zy2 = zy * zy;
+        if (zx2 * zy2 > 4.0) {
+          float index = float(iter) / float(maxiter);
+          f_color = vec4(index, 0.1, 0.5 - index / 2, 0.8 - index);
+          return;
+        }
+        zy = zx * zy * 2.0 + c.y;
+        zx = zx2 - zy2 + c.x;
+        iter -= 1;
+    }
+    f_color = vec4((sin(z.y) + 1.0) / 2,
+                   (sin(c.y) + 1.0) / 2,
+                   (sin(c.x) + 1.0) / 2,
+                   1.0);
+}
index 76ca54e4cb5572a421d9aab8b1c18f961528ee77..d3b86e6ee1aa0e49779386826dfee6797fc32bc9 100644 (file)
@@ -31,54 +31,8 @@ fn mand(cx: f32, cy: f32) -> [f32; 3] {
 pub fn program(display: &glium::Display) -> glium::Program {
     return program!(display,
         140 => {
-            vertex: r#"
-                #version 140
-                uniform mat4 perspective;
-                uniform mat4 view;
-                uniform mat4 model;
-                uniform vec2 z0;
-                in vec3 position;
-                out vec2 c;
-                out vec2 z;
-
-                void main() {
-                    mat4 modelview = view * model;
-                    gl_Position = perspective * modelview * vec4(position, 1.0);
-                    c = vec2(position.x, position.y);
-                    z = vec2(z0.x, z0.y);
-                }
-            "#,
-
-            fragment: r#"
-                #version 140
-                precision highp float;
-                in vec2 c;
-                in vec2 z;
-                out vec4 f_color;
-
-                void main() {
-                    float zx = z.x;
-                    float zy = z.y;
-                    int maxiter = 64;
-                    int iter = maxiter;
-                    while (iter > 0) {
-                        float zx2 = zx * zx;
-                        float zy2 = zy * zy;
-                        if (zx2 * zy2 > 4.0) {
-                          float index = float(iter) / float(maxiter);
-                          f_color = vec4(index, 0.1, 0.5 - index / 2, 0.8 - index);
-                          return;
-                        }
-                        zy = zx * zy * 2.0 + c.y;
-                        zx = zx2 - zy2 + c.x;
-                        iter -= 1;
-                    }
-                    f_color = vec4((sin(z.y) + 1.0) / 2,
-                                   (sin(c.y) + 1.0) / 2,
-                                   (sin(c.x) + 1.0) / 2,
-                                   1.0);
-                }
-            "#
+            vertex: include_str!("mandelwow.vert"),
+            fragment: include_str!("mandelwow.frag"),
         }).unwrap();
 }
 
diff --git a/mandelwow.vert b/mandelwow.vert
new file mode 100644 (file)
index 0000000..9c3e5f8
--- /dev/null
@@ -0,0 +1,15 @@
+#version 140
+uniform mat4 perspective;
+uniform mat4 view;
+uniform mat4 model;
+uniform vec2 z0;
+in vec3 position;
+out vec2 c;
+out vec2 z;
+
+void main() {
+    mat4 modelview = view * model;
+    gl_Position = perspective * modelview * vec4(position, 1.0);
+    c = vec2(position.x, position.y);
+    z = vec2(z0.x, z0.y);
+}
diff --git a/solid.frag b/solid.frag
new file mode 100644 (file)
index 0000000..7d1a7c7
--- /dev/null
@@ -0,0 +1,7 @@
+#version 140
+
+out vec4 color;
+
+void main() {
+    color = vec4(1.0, 1.0, 1.0, 1.0);
+}
diff --git a/solid.vert b/solid.vert
new file mode 100644 (file)
index 0000000..aaacaa9
--- /dev/null
@@ -0,0 +1,10 @@
+#version 140
+in vec3 position;
+uniform mat4 perspective;
+uniform mat4 view;
+uniform mat4 model;
+
+void main() {
+    mat4 modelview = view * model;
+    gl_Position = perspective * modelview * vec4(position, 1.0);
+}