stoe/t/shader.lisp

58 lines
1.4 KiB
Common Lisp

#|
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)