59 lines
1.8 KiB
Common Lisp
59 lines
1.8 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
|
|
: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)
|