Fix unit test for the new defshader system

This commit is contained in:
Renaud Casenave-Péré 2015-05-05 14:17:49 +02:00
parent c910a4ce1f
commit 9b69dee238

View file

@ -8,52 +8,51 @@
(:use :cl (:use :cl
:stoe :stoe
:prove :prove
:stoe.shader)) :stoe.shader
:stoe.shader.glsl))
(in-package :stoe-test.shader) (in-package :stoe-test.shader)
;; Preamble ;; Preamble
(defshader test-vertex-shader-1 (:version 330 (defshader fshader1 ((u-resolution :uniform :vec2)
:in ((position :vec4 :location 0) (u-mouse :uniform :vec2)
(color :vec4 :location 1)) (u-time :uniform :float))
:out ((out-color :vec4 :interp :smooth)) (let ((st :vec2 (abs (/ (- gl-fragcoord u-mouse) u-resolution))))
:uniform ((camera-to-clip :mat4) (setf gl-fragcolor (vec4 (- 1.0 (x st)) (y st) 0.0 1.0))))
(model-to-camera :mat4)))
"gl_Position = camera_to_clip * model_to_camera * position;
out_color = color;")
(defshader test-fragment-shader-1 (:version 330 (defshader fshader2 ((u-resolution :uniform :vec2)
:in ((out-color :vec4)) (u-mouse :uniform :vec2)
:out ((frag-color :vec4))) (u-time :uniform :float))
"frag_color = out_color;") (let ((st :vec2 (+ (/ (sin (/ (- gl-fragcoord u-mouse) u-resolution)) 4.0) 0.75)))
(setf gl-fragcolor (vec4 (- 1.0 (x st)) (y st) 0.0 1.0))))
(defprogram shader-program ()
:vertex-shader test-vertex-shader-1
:fragment-shader test-fragment-shader-1)
;; Start Tests ;; Start Tests
(plan 2) (plan 2)
(diag "Shader definitions") (diag "Shader definitions")
(is (glsl-compiler::shader-code (gethash 'test-vertex-shader-1 shader::*shader-db*)) "#version 330 core (is (glsl-print fshader1)
layout (location = 0) in vec4 position; "vec2 uniform u_resolution;
layout (location = 1) in vec4 color; vec2 uniform u_mouse;
smooth out vec4 out_color; float uniform u_time;
uniform mat4 camera_to_clip;
uniform mat4 model_to_camera;
void main ()
{
gl_Position = camera_to_clip * model_to_camera * position;
out_color = color;
}
" "Simple Vertex shader definition" :test #'string=)
(is (glsl-compiler::shader-code (gethash 'test-fragment-shader-1 shader::*shader-db*)) "#version 330 core
in vec4 out_color;
out vec4 frag_color;
void main () void main ()
{ {
frag_color = out_color; vec2 st = abs ((gl_FragCoord - u_mouse) / u_resolution);
gl_FragColor = vec4 (1.0 - (st.x), st.y, 0.0, 1.0);
} }
" "Simple Fragment shader definition" :test #'string=) " "shader 1")
(is (glsl-print fshader2)
"vec2 uniform u_resolution;
vec2 uniform u_mouse;
float uniform u_time;
void main ()
{
vec2 st = (( sin ((gl_FragCoord - u_mouse) / u_resolution)) / 4.0) + 0.75;
gl_FragColor = vec4 (1.0 - (st.x), st.y, 0.0, 1.0);
}
" "shader 2")
(finalize) (finalize)