Move text rendering shaders out of line.
[mandelwow.git] / mandelwow.rs
index 76ca54e4cb5572a421d9aab8b1c18f961528ee77..e5c883ac8c7342564f1e49cf17cfd6f82f93f7fd 100644 (file)
@@ -29,57 +29,11 @@ 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);
-                }
-            "#
-        }).unwrap();
+    program!(display,
+        100 => {
+            vertex: include_str!("mandelwow.vert"),
+            fragment: include_str!("mandelwow.frag"),
+        }).unwrap()
 }
 
 fn mandel<U>(display: &glium::Display,
@@ -175,6 +129,6 @@ pub fn draw(display: &glium::Display,
             perspective: camera.get_perspective(),
         };
 
-        mandel(&display, &mut frame, &program, &uniforms, bounds, z0);
+        mandel(display, &mut frame, program, &uniforms, bounds, z0);
     }
 }