diff --git a/stoe-test.asd b/stoe-test.asd index 5561c49..7bd30a7 100644 --- a/stoe-test.asd +++ b/stoe-test.asd @@ -16,5 +16,6 @@ :components ((:module "t" :components ((:file "stoe") - (:file "maths")))) + (:file "maths") + (:file "shader")))) :perform (load-op :after (op c) (asdf:clear-system c))) diff --git a/t/shader.lisp b/t/shader.lisp new file mode 100644 index 0000000..95169b6 --- /dev/null +++ b/t/shader.lisp @@ -0,0 +1,59 @@ +#| + This file is a part of stoe project. + Copyright (c) 2014 Renaud Casenave-Péré (renaud@casenave-pere.fr) +|# + +(in-package :cl-user) +(defpackage stoe-test.shader + (:use :cl + :stoe + :cl-test-more + :stoe.shader)) +(in-package :stoe-test.shader) + +;; Preamble +(defshader test-vertex-shader-1 (:version 330 + :in ((position :vec4 :location 0) + (color :vec4 :location 1)) + :out ((out-color :vec4 :interp :smooth)) + :uniform ((camera-to-clip :mat4) + (model-to-camera :mat4))) + "gl_Position = camera_to_clip * model_to_camera * position; +out_color = color;") + +(defshader test-fragment-shader-1 (:version 330 + :in ((out-color :vec4)) + :out ((frag-color :vec4))) + "frag_color = out_color;") + +(defprogram shader-program () + :vertex-shader test-vertex-shader-1 + :fragment-shader test-fragment-shader-1) + +;; Start Tests +(plan 2) + +(diag "Shader definitions") +(is (glsl-compiler::shader-code (gethash 'test-vertex-shader-1 shader::*shader-db*)) "#version 330 core +layout (location = 0) in vec4 position; +layout (location = 1) in vec4 color; +smooth out vec4 out_color; +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 () +{ +frag_color = out_color; +} +" "Simple Fragment shader definition" :test #'string=) + +(finalize)