diff options
author | David Thompson <dthompson2@worcester.edu> | 2021-09-07 18:27:34 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2021-09-07 18:27:34 -0400 |
commit | 35fe2265e5a2732796bfe905ca7fcaf480adcb27 (patch) | |
tree | 35afbf80373adc447df6a6924bbc832b5977cf1b | |
parent | 8f57210d89f47398b8084bb1f3553f5dbfe2f3ca (diff) |
graphics: shader: Add support for 3x3 matrices.
-rw-r--r-- | chickadee/graphics/shader.scm | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/chickadee/graphics/shader.scm b/chickadee/graphics/shader.scm index 08e8672..7def1f2 100644 --- a/chickadee/graphics/shader.scm +++ b/chickadee/graphics/shader.scm @@ -45,6 +45,7 @@ float-vec2 float-vec3 float-vec4 + mat3 mat4 sampler-2d sampler-cube @@ -214,6 +215,18 @@ #:setter gl-uniform4fv #:null (make-null-rect)) +(define-shader-primitive-type mat3 + #:name 'mat3 + #:size (* 3 3 4) ; 3 rows x 3 columns x 4 byte floats + #:validator matrix3? + #:serializer + (let ((matrix3-bv (@@ (chickadee math matrix) matrix3-bv))) + (lambda (bv i m) + (bytevector-copy! (matrix3-bv m) 0 bv i (* 3 3 4)))) + #:setter (lambda (location count ptr) + (gl-uniform-matrix3fv location count #f ptr)) + #:null (make-identity-matrix3)) + (define-shader-primitive-type mat4 #:name 'mat4 #:size 64 ; 4 rows x 4 columns = 16 floats x 4 bytes each = 64 bytes @@ -588,6 +601,7 @@ them into a GPU shader program." ((= type (version-2-0 float-vec2)) float-vec2) ((= type (version-2-0 float-vec3)) float-vec3) ((= type (version-2-0 float-vec4)) float-vec4) + ((= type (version-2-0 float-mat3)) mat3) ((= type (version-2-0 float-mat4)) mat4) ((= type (version-2-0 sampler-2d)) sampler-2d) ((= type (version-2-0 sampler-cube)) sampler-cube) |