58 lines
1.4 KiB
Common 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)
|