diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-11-08 07:34:46 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-11-08 07:34:46 -0500 |
commit | 8d48b4eb6149c881ab8f08d41472e0d602941de3 (patch) | |
tree | b85d2d3c7d23589237954836c5f1ba15b81317ee /sly/render/shape.scm | |
parent | 02fda236872d690d4dc173268d99acc255b5bdda (diff) |
render: Move shape module to sly/render directory.
* sly/shape.scm: Delete.
* sly/render/shape.scm: New file.
* Makefile.am (SOURCES): Add new file. Delete old one.
Diffstat (limited to 'sly/render/shape.scm')
-rw-r--r-- | sly/render/shape.scm | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/sly/render/shape.scm b/sly/render/shape.scm new file mode 100644 index 0000000..d6d9bf3 --- /dev/null +++ b/sly/render/shape.scm @@ -0,0 +1,116 @@ +;;; Sly +;;; Copyright (C) 2014 David Thompson <davet@gnu.org> +;;; +;;; This program is free software: you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see +;;; <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; Primitive 2D/3D shapes. +;; +;;; Code: + +(define-module (sly render shape) + #:use-module (sly math) + #:use-module (sly render mesh) + #:use-module (sly render shader) + #:use-module (sly render texture) + #:use-module (sly math vector) + #:export (make-cube)) + +(define* (make-cube size #:optional #:key (texture #f) + (shader (load-default-shader))) + (let ((half-size (half size))) + (make-mesh + #:shader shader + #:texture texture + #:indices #( + ;; Front + 0 3 2 0 2 1 + ;; Back + 4 6 7 4 5 6 + ;; Top + 8 11 10 8 10 9 + ;; Bottom + 12 14 15 12 13 14 + ;; Left + 16 19 18 16 18 17 + ;; Right + 20 22 23 20 21 22) + #:positions (vector + ;; Front + (vector3 (- half-size) (- half-size) (- half-size)) + (vector3 half-size (- half-size) (- half-size)) + (vector3 half-size half-size (- half-size)) + (vector3 (- half-size) half-size (- half-size)) + ;; Back + (vector3 (- half-size) (- half-size) half-size) + (vector3 half-size (- half-size) half-size) + (vector3 half-size half-size half-size) + (vector3 (- half-size) half-size half-size) + ;; Top + (vector3 (- half-size) half-size (- half-size)) + (vector3 half-size half-size (- half-size)) + (vector3 half-size half-size half-size) + (vector3 (- half-size) half-size half-size) + ;; Bottom + (vector3 (- half-size) (- half-size) (- half-size)) + (vector3 half-size (- half-size) (- half-size)) + (vector3 half-size (- half-size) half-size) + (vector3 (- half-size) (- half-size) half-size) + ;; Left + (vector3 (- half-size) (- half-size) (- half-size)) + (vector3 (- half-size) half-size (- half-size)) + (vector3 (- half-size) half-size half-size) + (vector3 (- half-size) (- half-size) half-size) + ;; Right + (vector3 half-size (- half-size) (- half-size)) + (vector3 half-size half-size (- half-size)) + (vector3 half-size half-size half-size) + (vector3 half-size (- half-size) half-size)) + #:textures (let ((s1 (texture-s1 texture)) + (t1 (texture-t1 texture)) + (s2 (texture-s2 texture)) + (t2 (texture-t2 texture))) + (vector + ;; Front + (vector2 s1 t1) + (vector2 s2 t1) + (vector2 s2 t2) + (vector2 s1 t2) + ;; Back + (vector2 s1 t1) + (vector2 s2 t1) + (vector2 s2 t2) + (vector2 s1 t2) + ;; Top + (vector2 s1 t1) + (vector2 s2 t1) + (vector2 s2 t2) + (vector2 s1 t2) + ;; Bottom + (vector2 s1 t1) + (vector2 s2 t1) + (vector2 s2 t2) + (vector2 s1 t2) + ;; Left + (vector2 s1 t1) + (vector2 s2 t1) + (vector2 s2 t2) + (vector2 s1 t2) + ;; Right + (vector2 s1 t1) + (vector2 s2 t1) + (vector2 s2 t2) + (vector2 s1 t2)))))) |