Use a Domain Specific Language to define shaders in common-lisp syntax. The code is then walked and compiled into glsl expressions and stored in easy to use structures. At the program initialization, the shader programs are compiled into opengl. Dependencies are also kept, so that if a shader is redefined, the corresponding program will be recompiled into opengl. The old glsl-compiler is deleted as it is now rendered useless. The render and mesh code are fixed according to changes in the interface.
85 lines
3.1 KiB
Common Lisp
85 lines
3.1 KiB
Common Lisp
#|
|
|
This file is a part of stoe project.
|
|
Copyright (c) 2014 Renaud Casenave-Péré (renaud@casenave-pere.fr)
|
|
|#
|
|
|
|
#|
|
|
SaintOEngine - A 3d engine in common-lisp
|
|
|
|
Author: Renaud Casenave-Péré (renaud@casenave-pere.fr)
|
|
|#
|
|
|
|
(in-package :cl-user)
|
|
(defpackage stoe-asd
|
|
(:use :cl :asdf))
|
|
(in-package :stoe-asd)
|
|
|
|
(defsystem stoe
|
|
:version "0.1"
|
|
:author "Renaud Casenave-Péré"
|
|
:license "GPL3"
|
|
:depends-on (:swank
|
|
:alexandria
|
|
:glop
|
|
:cl-opengl)
|
|
:components ((:module "src"
|
|
:components
|
|
((:file "utils")
|
|
(:module "maths"
|
|
:components
|
|
((:file "maths")
|
|
(:file "vector")
|
|
(:file "float2")
|
|
(:file "float3")
|
|
(:file "float4")
|
|
(:file "matrix")
|
|
(:file "float22")
|
|
(:file "float33")
|
|
(:file "float44")
|
|
(:file "quaternion")
|
|
(:file "geometry")))
|
|
(:file "thread"
|
|
:depends-on ("utils"))
|
|
(:file "containers")
|
|
(:file "modules"
|
|
:depends-on ("utils"))
|
|
(:file "debug"
|
|
:depends-on ("modules" "thread"))
|
|
(:file "jobs"
|
|
:depends-on ("thread" "containers" "utils"))
|
|
(:file "file"
|
|
:depends-on ("jobs"))
|
|
(:file "scene")
|
|
(:file "object")
|
|
(:file "camera")
|
|
(:file "input")
|
|
(:file "game")
|
|
(:module "render"
|
|
:components
|
|
((:file "gl-utils")
|
|
(:module "shader"
|
|
:components
|
|
((:file "shader")
|
|
(:file "walker")
|
|
(:file "glsl")
|
|
(:file "compiler")))
|
|
(:file "mesh")
|
|
(:file "render")
|
|
(:file "shaders"))
|
|
:depends-on ("modules" "utils"))
|
|
(:file "stoe"
|
|
:depends-on ("utils" "modules")))))
|
|
:description "SaintOEngine - A 3d engine in common-lisp"
|
|
:long-description
|
|
#.(with-open-file (stream (merge-pathnames
|
|
#p"README.md"
|
|
(or *load-pathname* *compile-file-pathname*))
|
|
:if-does-not-exist nil
|
|
:direction :input)
|
|
(when stream
|
|
(let ((seq (make-array (file-length stream)
|
|
:element-type 'character
|
|
:fill-pointer t)))
|
|
(setf (fill-pointer seq) (read-sequence seq stream))
|
|
seq)))
|
|
:in-order-to ((test-op (load-op stoe-test))))
|