#| 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 :prove :stoe.shader :stoe.shader.glsl)) (in-package :stoe-test.shader) ;; Preamble (defshader fshader1 ((u-resolution :uniform :vec2) (u-mouse :uniform :vec2) (u-time :uniform :float)) (let ((st :vec2 (abs (/ (- gl-fragcoord u-mouse) u-resolution)))) (setf gl-fragcolor (vec4 (- 1.0 (x st)) (y st) 0.0 1.0)))) (defshader fshader2 ((u-resolution :uniform :vec2) (u-mouse :uniform :vec2) (u-time :uniform :float)) (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)))) ;; Start Tests (plan 2) (diag "Shader definitions") (is (glsl-print fshader1) "vec2 uniform u_resolution; vec2 uniform u_mouse; float uniform u_time; void main () { vec2 st = abs ((gl_FragCoord - u_mouse) / u_resolution); gl_FragColor = vec4 (1.0 - (st.x), st.y, 0.0, 1.0); } " "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)