diff --git a/package.lisp b/package.lisp index 83122765..91754890 100644 --- a/package.lisp +++ b/package.lisp @@ -739,7 +739,7 @@ (:use #:cl #:varjo.utils #:varjo.internals #:vari.types #:named-readtables #:glsl-symbols #:varjo-conditions) (:import-from :varjo.internals - :def-v-type-class) + :v-deftype-internal) (:reexport :vari.types) (:reexport :glsl-symbols) (:export @@ -801,7 +801,7 @@ :flatten :iota) (:import-from :varjo.internals - :def-v-type-class) + :v-deftype-internal) (:reexport :vari.types :vari.glsl) (:export ;; special functions diff --git a/src/vari.glsl/built-in-types.lisp b/src/vari.glsl/built-in-types.lisp index 4e5a313b..ebce0ade 100644 --- a/src/vari.glsl/built-in-types.lisp +++ b/src/vari.glsl/built-in-types.lisp @@ -9,7 +9,7 @@ (diff v-float :accessor diff)) (eval-when (:compile-toplevel :load-toplevel :execute) - (def-v-type-class v-per-vertex (v-ephemeral-type) ())) + (v-deftype-internal v-per-vertex (v-ephemeral-type) ())) (v-def-glsl-template-fun gl-position (vert-data) "~a.gl_Position" (v-per-vertex) :vec4) (v-def-glsl-template-fun gl-point-size (vert-data) "~a.gl_PointSize" (v-per-vertex) :float) diff --git a/src/vari.types/types.lisp b/src/vari.types/types.lisp index b261ba5e..e9ad5ba9 100644 --- a/src/vari.types/types.lisp +++ b/src/vari.types/types.lisp @@ -2,45 +2,45 @@ ;;---------------------------------------------------------------------- -(def-v-type-class v-bool (v-type) +(v-deftype-internal v-bool (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "bool" :reader v-glsl-string))) -(def-v-type-class v-number (v-type) ()) +(v-deftype-internal v-number (v-type) ()) -(def-v-type-class v-int (v-number) +(v-deftype-internal v-int (v-number) ((core :initform t :reader core-typep) (glsl-string :initform "int" :reader v-glsl-string) (casts-to :initform '(v-uint v-float v-double)) (default-value :initform 0))) -(def-v-type-class v-uint (v-number) +(v-deftype-internal v-uint (v-number) ((core :initform t :reader core-typep) (glsl-string :initform "uint" :reader v-glsl-string) (casts-to :initform '(v-float v-double)) (default-value :initform 0))) -(def-v-type-class v-float (v-number) +(v-deftype-internal v-float (v-number) ((core :initform t :reader core-typep) (glsl-string :initform "float" :reader v-glsl-string) (casts-to :initform '(v-double)) (default-value :initform 0f0))) -(def-v-type-class v-short-float (v-number) +(v-deftype-internal v-short-float (v-number) ((core :initform t :reader core-typep) (glsl-string :initform "short-float" :reader v-glsl-string) (default-value :initform 0s0))) -(def-v-type-class v-double (v-number) +(v-deftype-internal v-double (v-number) ((core :initform t :reader core-typep) (glsl-string :initform "double" :reader v-glsl-string) (default-value :initform 0d0))) -(def-v-type-class v-matrix (v-container) ()) +(v-deftype-internal v-matrix (v-container) ()) -(def-v-type-class v-dmatrix (v-matrix) ()) +(v-deftype-internal v-dmatrix (v-matrix) ()) -(def-v-type-class v-mat2 (v-matrix) +(v-deftype-internal v-mat2 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2" :reader v-glsl-string) (element-type :initform 'v-float) @@ -48,7 +48,7 @@ (glsl-size :initform 2) (casts-to :initform '(v-dmat2)))) -(def-v-type-class v-mat3 (v-matrix) +(v-deftype-internal v-mat3 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3" :reader v-glsl-string) (element-type :initform 'v-float) @@ -56,7 +56,7 @@ (glsl-size :initform 3) (casts-to :initform '(v-dmat3)))) -(def-v-type-class v-mat4 (v-matrix) +(v-deftype-internal v-mat4 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4" :reader v-glsl-string) (element-type :initform 'v-float) @@ -64,14 +64,14 @@ (glsl-size :initform 4) (casts-to :initform '(v-dmat4)))) -(def-v-type-class v-mat2x2 (v-matrix) +(v-deftype-internal v-mat2x2 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2x2" :reader v-glsl-string) (element-type :initform 'v-float) (dimensions :initform '(2 2) :reader v-dimensions) (glsl-size :initform 2))) -(def-v-type-class v-mat2x3 (v-matrix) +(v-deftype-internal v-mat2x3 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2x3" :reader v-glsl-string) (element-type :initform 'v-float) @@ -79,7 +79,7 @@ (glsl-size :initform 2) (casts-to :initform '(v-dmat2x3)))) -(def-v-type-class v-mat2x4 (v-matrix) +(v-deftype-internal v-mat2x4 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2x4" :reader v-glsl-string) (element-type :initform 'v-float) @@ -87,7 +87,7 @@ (glsl-size :initform 2) (casts-to :initform '(v-dmat2x4)))) -(def-v-type-class v-mat3x2 (v-matrix) +(v-deftype-internal v-mat3x2 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3x2" :reader v-glsl-string) (element-type :initform 'v-float) @@ -95,14 +95,14 @@ (glsl-size :initform 3) (casts-to :initform '(v-dmat3x2)))) -(def-v-type-class v-mat3x3 (v-matrix) +(v-deftype-internal v-mat3x3 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3x3" :reader v-glsl-string) (element-type :initform 'v-float) (dimensions :initform '(3 3) :reader v-dimensions) (glsl-size :initform 3))) -(def-v-type-class v-mat3x4 (v-matrix) +(v-deftype-internal v-mat3x4 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3x4" :reader v-glsl-string) (element-type :initform 'v-float) @@ -110,7 +110,7 @@ (glsl-size :initform 3) (casts-to :initform '(v-dmat3x4)))) -(def-v-type-class v-mat4x2 (v-matrix) +(v-deftype-internal v-mat4x2 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4x2" :reader v-glsl-string) (element-type :initform 'v-float) @@ -118,7 +118,7 @@ (glsl-size :initform 4) (casts-to :initform '(v-dmat4x2)))) -(def-v-type-class v-mat4x3 (v-matrix) +(v-deftype-internal v-mat4x3 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4x3" :reader v-glsl-string) (element-type :initform 'v-float) @@ -126,14 +126,14 @@ (glsl-size :initform 4) (casts-to :initform '(v-dmat4x3)))) -(def-v-type-class v-mat4x4 (v-matrix) +(v-deftype-internal v-mat4x4 (v-matrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4x4" :reader v-glsl-string) (element-type :initform 'v-float) (dimensions :initform '(4 4) :reader v-dimensions) (glsl-size :initform 4))) -(def-v-type-class v-dmat2 (v-dmatrix) +(v-deftype-internal v-dmat2 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2" :reader v-glsl-string) (element-type :initform 'v-double) @@ -141,7 +141,7 @@ (glsl-size :initform 2) (casts-to :initform '(v-dmat2)))) -(def-v-type-class v-dmat3 (v-dmatrix) +(v-deftype-internal v-dmat3 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3" :reader v-glsl-string) (element-type :initform 'v-double) @@ -149,7 +149,7 @@ (glsl-size :initform 3) (casts-to :initform '(v-dmat3)))) -(def-v-type-class v-dmat4 (v-dmatrix) +(v-deftype-internal v-dmat4 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4" :reader v-glsl-string) (element-type :initform 'v-double) @@ -157,14 +157,14 @@ (glsl-size :initform 4) (casts-to :initform '(v-dmat4)))) -(def-v-type-class v-dmat2x2 (v-dmatrix) +(v-deftype-internal v-dmat2x2 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2x2" :reader v-glsl-string) (element-type :initform 'v-double) (dimensions :initform '(2 2) :reader v-dimensions) (glsl-size :initform 2))) -(def-v-type-class v-dmat2x3 (v-dmatrix) +(v-deftype-internal v-dmat2x3 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2x3" :reader v-glsl-string) (element-type :initform 'v-double) @@ -172,7 +172,7 @@ (glsl-size :initform 2) (casts-to :initform '(v-dmat2x3)))) -(def-v-type-class v-dmat2x4 (v-dmatrix) +(v-deftype-internal v-dmat2x4 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat2x4" :reader v-glsl-string) (element-type :initform 'v-double) @@ -180,7 +180,7 @@ (glsl-size :initform 2) (casts-to :initform '(v-dmat2x4)))) -(def-v-type-class v-dmat3x2 (v-dmatrix) +(v-deftype-internal v-dmat3x2 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3x2" :reader v-glsl-string) (element-type :initform 'v-double) @@ -188,14 +188,14 @@ (glsl-size :initform 3) (casts-to :initform '(v-dmat3x2)))) -(def-v-type-class v-dmat3x3 (v-dmatrix) +(v-deftype-internal v-dmat3x3 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3x3" :reader v-glsl-string) (element-type :initform 'v-double) (dimensions :initform '(3 3) :reader v-dimensions) (glsl-size :initform 3))) -(def-v-type-class v-dmat3x4 (v-dmatrix) +(v-deftype-internal v-dmat3x4 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat3x4" :reader v-glsl-string) (element-type :initform 'v-double) @@ -203,7 +203,7 @@ (glsl-size :initform 3) (casts-to :initform '(v-dmat3x4)))) -(def-v-type-class v-dmat4x2 (v-dmatrix) +(v-deftype-internal v-dmat4x2 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4x2" :reader v-glsl-string) (element-type :initform 'v-double) @@ -211,7 +211,7 @@ (glsl-size :initform 4) (casts-to :initform '(v-dmat4x2)))) -(def-v-type-class v-dmat4x3 (v-dmatrix) +(v-deftype-internal v-dmat4x3 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4x3" :reader v-glsl-string) (element-type :initform 'v-double) @@ -219,499 +219,499 @@ (glsl-size :initform 4) (casts-to :initform '(v-dmat4x3)))) -(def-v-type-class v-dmat4x4 (v-dmatrix) +(v-deftype-internal v-dmat4x4 (v-dmatrix) ((core :initform t :reader core-typep) (glsl-string :initform "mat4x4" :reader v-glsl-string) (element-type :initform 'v-double) (dimensions :initform '(4 4) :reader v-dimensions) (glsl-size :initform 4))) -(def-v-type-class v-vector (v-container) ()) +(v-deftype-internal v-vector (v-container) ()) -(def-v-type-class v-fvector (v-vector) ()) +(v-deftype-internal v-fvector (v-vector) ()) -(def-v-type-class v-vec2 (v-fvector) +(v-deftype-internal v-vec2 (v-fvector) ((core :initform t :reader core-typep) (glsl-string :initform "vec2" :reader v-glsl-string) (element-type :initform 'v-float) (dimensions :initform '(2) :reader v-dimensions) (casts-to :initform '(v-dvec2)))) -(def-v-type-class v-vec3 (v-fvector) +(v-deftype-internal v-vec3 (v-fvector) ((core :initform t :reader core-typep) (glsl-string :initform "vec3" :reader v-glsl-string) (element-type :initform 'v-float) (dimensions :initform '(3) :reader v-dimensions) (casts-to :initform '(v-dvec3)))) -(def-v-type-class v-vec4 (v-fvector) +(v-deftype-internal v-vec4 (v-fvector) ((core :initform t :reader core-typep) (glsl-string :initform "vec4" :reader v-glsl-string) (element-type :initform 'v-float) (dimensions :initform '(4) :reader v-dimensions) (casts-to :initform '(v-dvec4)))) -(def-v-type-class v-bvector (v-vector) ()) +(v-deftype-internal v-bvector (v-vector) ()) -(def-v-type-class v-bvec2 (v-bvector) +(v-deftype-internal v-bvec2 (v-bvector) ((core :initform t :reader core-typep) (glsl-string :initform "bvec2" :reader v-glsl-string) (element-type :initform 'v-bool) (dimensions :initform '(2) :reader v-dimensions))) -(def-v-type-class v-bvec3 (v-bvector) +(v-deftype-internal v-bvec3 (v-bvector) ((core :initform t :reader core-typep) (glsl-string :initform "bvec3" :reader v-glsl-string) (element-type :initform 'v-bool) (dimensions :initform '(3) :reader v-dimensions))) -(def-v-type-class v-bvec4 (v-bvector) +(v-deftype-internal v-bvec4 (v-bvector) ((core :initform t :reader core-typep) (glsl-string :initform "bvec4" :reader v-glsl-string) (element-type :initform 'v-bool) (dimensions :initform '(4) :reader v-dimensions))) -(def-v-type-class v-uvector (v-vector) ()) +(v-deftype-internal v-uvector (v-vector) ()) -(def-v-type-class v-uvec2 (v-uvector) +(v-deftype-internal v-uvec2 (v-uvector) ((core :initform t :reader core-typep) (glsl-string :initform "uvec2" :reader v-glsl-string) (element-type :initform 'v-uint) (dimensions :initform '(2) :reader v-dimensions) (casts-to :initform '(v-dvec2 v-vec2)))) -(def-v-type-class v-uvec3 (v-uvector) +(v-deftype-internal v-uvec3 (v-uvector) ((core :initform t :reader core-typep) (glsl-string :initform "uvec3" :reader v-glsl-string) (element-type :initform 'v-uint) (dimensions :initform '(3) :reader v-dimensions) (casts-to :initform '(v-dvec3 v-vec3)))) -(def-v-type-class v-uvec4 (v-uvector) +(v-deftype-internal v-uvec4 (v-uvector) ((core :initform t :reader core-typep) (glsl-string :initform "uvec4" :reader v-glsl-string) (element-type :initform 'v-uint) (dimensions :initform '(4) :reader v-dimensions) (casts-to :initform '(v-dvec4 v-vec4)))) -(def-v-type-class v-ivector (v-vector) ()) +(v-deftype-internal v-ivector (v-vector) ()) -(def-v-type-class v-ivec2 (v-ivector) +(v-deftype-internal v-ivec2 (v-ivector) ((core :initform t :reader core-typep) (glsl-string :initform "ivec2" :reader v-glsl-string) (element-type :initform 'v-int) (dimensions :initform '(2) :reader v-dimensions) (casts-to :initform '(v-uvec2 v-vec2 v-dvec2)))) -(def-v-type-class v-ivec3 (v-ivector) +(v-deftype-internal v-ivec3 (v-ivector) ((core :initform t :reader core-typep) (glsl-string :initform "ivec3" :reader v-glsl-string) (element-type :initform 'v-int) (dimensions :initform '(3) :reader v-dimensions) (casts-to :initform '(v-uvec3 v-vec3 v-dvec3)))) -(def-v-type-class v-ivec4 (v-ivector) +(v-deftype-internal v-ivec4 (v-ivector) ((core :initform t :reader core-typep) (glsl-string :initform "ivec4" :reader v-glsl-string) (element-type :initform 'v-int) (dimensions :initform '(4) :reader v-dimensions) (casts-to :initform '(v-uvec4 v-vec4 v-dvec4)))) -(def-v-type-class v-dvector (v-vector) ()) +(v-deftype-internal v-dvector (v-vector) ()) -(def-v-type-class v-dvec2 (v-dvector) +(v-deftype-internal v-dvec2 (v-dvector) ((core :initform t :reader core-typep) (glsl-string :initform "dvec2" :reader v-glsl-string) (element-type :initform 'v-double) (dimensions :initform '(2) :reader v-dimensions) (casts-to :initform '(v-uvec2 v-vec2 v-dvec2)))) -(def-v-type-class v-dvec3 (v-dvector) +(v-deftype-internal v-dvec3 (v-dvector) ((core :initform t :reader core-typep) (glsl-string :initform "dvec3" :reader v-glsl-string) (element-type :initform 'v-double) (dimensions :initform '(3) :reader v-dimensions) (casts-to :initform '(v-uvec3 v-vec3 v-dvec3)))) -(def-v-type-class v-dvec4 (v-dvector) +(v-deftype-internal v-dvec4 (v-dvector) ((core :initform t :reader core-typep) (glsl-string :initform "dvec4" :reader v-glsl-string) (element-type :initform 'v-double) (dimensions :initform '(4) :reader v-dimensions) (casts-to :initform '(v-uvec4 v-vec4 v-dvec4)))) -(def-v-type-class v-isampler-1d (v-sampler) +(v-deftype-internal v-isampler-1d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler1D" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-1d-array (v-sampler) +(v-deftype-internal v-isampler-1d-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler1DArray" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-2d (v-sampler) +(v-deftype-internal v-isampler-2d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler2D" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-2d-array (v-sampler) +(v-deftype-internal v-isampler-2d-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler2DArray" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-2d-ms (v-sampler) +(v-deftype-internal v-isampler-2d-ms (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler2DMS" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-2d-ms-array (v-sampler) +(v-deftype-internal v-isampler-2d-ms-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler2DMSArray" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-2d-rect (v-sampler) +(v-deftype-internal v-isampler-2d-rect (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler2DRect" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-3d (v-sampler) +(v-deftype-internal v-isampler-3d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isampler3D" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-buffer (v-sampler) +(v-deftype-internal v-isampler-buffer (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isamplerBuffer" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-cube (v-sampler) +(v-deftype-internal v-isampler-cube (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isamplerCube" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-isampler-cube-array (v-sampler) +(v-deftype-internal v-isampler-cube-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isamplerCubeArray" :reader v-glsl-string) (element-type :initform 'v-ivec4))) -(def-v-type-class v-sampler-1d (v-sampler) +(v-deftype-internal v-sampler-1d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler1D" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-1d-array (v-sampler) +(v-deftype-internal v-sampler-1d-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler1DArray" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-1d-array-shadow +(v-deftype-internal v-sampler-1d-array-shadow (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler1DArrayShadow" :reader glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-1d-shadow (v-sampler) +(v-deftype-internal v-sampler-1d-shadow (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler1DShadow" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d (v-sampler) +(v-deftype-internal v-sampler-2d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2D" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d-array (v-sampler) +(v-deftype-internal v-sampler-2d-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2DArray" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d-array-shadow +(v-deftype-internal v-sampler-2d-array-shadow (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2DArrayShadow" :reader glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d-ms (v-sampler) +(v-deftype-internal v-sampler-2d-ms (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2DMS" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d-ms-array (v-sampler) +(v-deftype-internal v-sampler-2d-ms-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2DMSArray" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d-rect (v-sampler) +(v-deftype-internal v-sampler-2d-rect (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2DRect" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d-rect-shadow (v-sampler) +(v-deftype-internal v-sampler-2d-rect-shadow (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2DRectShadow" :reader glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-2d-shadow (v-sampler) +(v-deftype-internal v-sampler-2d-shadow (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler2DShadow" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-3d (v-sampler) +(v-deftype-internal v-sampler-3d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "sampler3D" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-buffer (v-sampler) +(v-deftype-internal v-sampler-buffer (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "samplerBuffer" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-cube (v-sampler) +(v-deftype-internal v-sampler-cube (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "samplerCube" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-cube-array (v-sampler) +(v-deftype-internal v-sampler-cube-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "samplerCubeArray" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-cube-array-shadow +(v-deftype-internal v-sampler-cube-array-shadow (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "samplerCubeArrayShadow" :reader glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-sampler-cube-shadow (v-sampler) +(v-deftype-internal v-sampler-cube-shadow (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "samplerCubeShadow" :reader v-glsl-string) (element-type :initform 'v-vec4))) -(def-v-type-class v-usampler-1d (v-sampler) +(v-deftype-internal v-usampler-1d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler1D" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-1d-array (v-sampler) +(v-deftype-internal v-usampler-1d-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler1DArray" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-2d (v-sampler) +(v-deftype-internal v-usampler-2d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler2D" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-2d-array (v-sampler) +(v-deftype-internal v-usampler-2d-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler2DArray" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-2d-ms (v-sampler) +(v-deftype-internal v-usampler-2d-ms (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler2DMS" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-2d-ms-array (v-sampler) +(v-deftype-internal v-usampler-2d-ms-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler2DMSArray" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-2d-rect (v-sampler) +(v-deftype-internal v-usampler-2d-rect (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler2DRect" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-3d (v-sampler) +(v-deftype-internal v-usampler-3d (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usampler3D" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-buffer (v-sampler) +(v-deftype-internal v-usampler-buffer (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usamplerBuffer" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-cube (v-sampler) +(v-deftype-internal v-usampler-cube (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usamplerCube" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-cube-array (v-sampler) +(v-deftype-internal v-usampler-cube-array (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usamplerCubeArray" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-sampler-rect (v-sampler) +(v-deftype-internal v-sampler-rect (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "samplerRect" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-isampler-rect (v-sampler) +(v-deftype-internal v-isampler-rect (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "isamplerRect" :reader v-glsl-string) (element-type :initform 'v-uvec4))) -(def-v-type-class v-usampler-rect (v-sampler) +(v-deftype-internal v-usampler-rect (v-sampler) ((core :initform t :reader core-typep) (glsl-string :initform "usamplerRect" :reader v-glsl-string) (element-type :initform 'v-uvec4))) ;;---------------------------------------------------------------------- -(def-v-type-class v-atomic-uint (v-type) +(v-deftype-internal v-atomic-uint (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "atomic_uint" :reader v-glsl-string))) ;;---------------------------------------------------------------------- -(def-v-type-class v-image-1d (v-type) +(v-deftype-internal v-image-1d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image1D" :reader v-glsl-string))) -(def-v-type-class v-iimage-1d (v-type) +(v-deftype-internal v-iimage-1d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage1D" :reader v-glsl-string))) -(def-v-type-class v-uimage-1d (v-type) +(v-deftype-internal v-uimage-1d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage1D" :reader v-glsl-string))) -(def-v-type-class v-image-2d (v-type) +(v-deftype-internal v-image-2d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image2D" :reader v-glsl-string))) -(def-v-type-class v-iimage-2d (v-type) +(v-deftype-internal v-iimage-2d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage2D" :reader v-glsl-string))) -(def-v-type-class v-uimage-2d (v-type) +(v-deftype-internal v-uimage-2d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage2D" :reader v-glsl-string))) -(def-v-type-class v-image-3d (v-type) +(v-deftype-internal v-image-3d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image3D" :reader v-glsl-string))) -(def-v-type-class v-iimage-3d (v-type) +(v-deftype-internal v-iimage-3d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage3D" :reader v-glsl-string))) -(def-v-type-class v-uimage-3d (v-type) +(v-deftype-internal v-uimage-3d (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage3D" :reader v-glsl-string))) -(def-v-type-class v-image-rect (v-type) +(v-deftype-internal v-image-rect (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "imageRect" :reader v-glsl-string))) -(def-v-type-class v-iimage-rect (v-type) +(v-deftype-internal v-iimage-rect (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimageRect" :reader v-glsl-string))) -(def-v-type-class v-uimage-rect (v-type) +(v-deftype-internal v-uimage-rect (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimageRect" :reader v-glsl-string))) -(def-v-type-class v-image-2d-rect (v-type) +(v-deftype-internal v-image-2d-rect (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image2DRect" :reader v-glsl-string))) -(def-v-type-class v-iimage-2d-rect (v-type) +(v-deftype-internal v-iimage-2d-rect (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage2DRect" :reader v-glsl-string))) -(def-v-type-class v-uimage-2d-rect (v-type) +(v-deftype-internal v-uimage-2d-rect (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage2DRect" :reader v-glsl-string))) -(def-v-type-class v-image-cube (v-type) +(v-deftype-internal v-image-cube (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "imageCube" :reader v-glsl-string))) -(def-v-type-class v-iimage-cube (v-type) +(v-deftype-internal v-iimage-cube (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimageCube" :reader v-glsl-string))) -(def-v-type-class v-uimage-cube (v-type) +(v-deftype-internal v-uimage-cube (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimageCube" :reader v-glsl-string))) -(def-v-type-class v-image-buffer (v-type) +(v-deftype-internal v-image-buffer (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "imageBuffer" :reader v-glsl-string))) -(def-v-type-class v-iimage-buffer (v-type) +(v-deftype-internal v-iimage-buffer (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimageBuffer" :reader v-glsl-string))) -(def-v-type-class v-uimage-buffer (v-type) +(v-deftype-internal v-uimage-buffer (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimageBuffer" :reader v-glsl-string))) -(def-v-type-class v-image-1d-array (v-type) +(v-deftype-internal v-image-1d-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image1DArray" :reader v-glsl-string))) -(def-v-type-class v-iimage-1d-array (v-type) +(v-deftype-internal v-iimage-1d-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage1DArray" :reader v-glsl-string))) -(def-v-type-class v-uimage-1d-array (v-type) +(v-deftype-internal v-uimage-1d-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage1DArray" :reader v-glsl-string))) -(def-v-type-class v-image-2d-array (v-type) +(v-deftype-internal v-image-2d-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image2DArray" :reader v-glsl-string))) -(def-v-type-class v-iimage-2d-array (v-type) +(v-deftype-internal v-iimage-2d-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage2DArray" :reader v-glsl-string))) -(def-v-type-class v-uimage-2d-array (v-type) +(v-deftype-internal v-uimage-2d-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage2DArray" :reader v-glsl-string))) -(def-v-type-class v-image-cube-array (v-type) +(v-deftype-internal v-image-cube-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "imageCubeArray" :reader v-glsl-string))) -(def-v-type-class v-iimage-cube-array (v-type) +(v-deftype-internal v-iimage-cube-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimageCubeArray" :reader v-glsl-string))) -(def-v-type-class v-uimage-cube-array (v-type) +(v-deftype-internal v-uimage-cube-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimageCubeArray" :reader v-glsl-string))) -(def-v-type-class v-image-2d-ms (v-type) +(v-deftype-internal v-image-2d-ms (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image2DMS" :reader v-glsl-string))) -(def-v-type-class v-iimage-2d-ms (v-type) +(v-deftype-internal v-iimage-2d-ms (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage2DMS" :reader v-glsl-string))) -(def-v-type-class v-uimage-2d-ms (v-type) +(v-deftype-internal v-uimage-2d-ms (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage2DMS" :reader v-glsl-string))) -(def-v-type-class v-image-2d-ms-array (v-type) +(v-deftype-internal v-image-2d-ms-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "image2DMSArray" :reader v-glsl-string))) -(def-v-type-class v-iimage-2d-ms-array (v-type) +(v-deftype-internal v-iimage-2d-ms-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "iimage2DMSArray" :reader v-glsl-string))) -(def-v-type-class v-uimage-2d-ms-array (v-type) +(v-deftype-internal v-uimage-2d-ms-array (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "uimage2DMSArray" :reader v-glsl-string))) @@ -720,11 +720,11 @@ ;; ;; {TODO} look into these -(def-v-type-class v-buffer-image (v-type) ()) +(v-deftype-internal v-buffer-image (v-type) ()) -(def-v-type-class v-ibuffer-image (v-type) ()) +(v-deftype-internal v-ibuffer-image (v-type) ()) -(def-v-type-class v-ubuffer-image (v-type) ()) +(v-deftype-internal v-ubuffer-image (v-type) ()) ;;---------------------------------------------------------------------- diff --git a/src/varjo.internals/deftype.lisp b/src/varjo.internals/deftype.lisp index df837c68..93d8bfdd 100644 --- a/src/varjo.internals/deftype.lisp +++ b/src/varjo.internals/deftype.lisp @@ -10,7 +10,7 @@ (if ephemeral `(progn (eval-when (:compile-toplevel :load-toplevel :execute) - (def-v-type-class ,name (v-ephemeral-type) ())) + (v-deftype-internal ,name (v-ephemeral-type) ())) (v-def-glsl-template-fun ,name () nil () ,name) (defmethod meta-kinds-to-infer ((varjo-type ,name)) (declare (ignore varjo-type)) @@ -18,7 +18,7 @@ ',name) (let ((shadowed-type (type-spec->type type-form))) `(progn - (def-v-type-class ,name (v-shadow-type) + (v-deftype-internal ,name (v-shadow-type) ((shadowed-type :initform ,shadowed-type) (glsl-string :initform ,(v-glsl-string shadowed-type)))) (defmethod meta-kinds-to-infer ((varjo-type ,name)) diff --git a/src/varjo.internals/structs.lisp b/src/varjo.internals/structs.lisp index 0936d258..8df62638 100644 --- a/src/varjo.internals/structs.lisp +++ b/src/varjo.internals/structs.lisp @@ -46,7 +46,7 @@ slot-transforms))) `(progn (eval-when (:compile-toplevel :load-toplevel :execute) - (def-v-type-class ,class-name (v-user-struct) + (v-deftype-internal ,class-name (v-user-struct) ((glsl-string :initform ,name-string :initarg :glsl-string :reader v-glsl-string) (signature :initform ,(gen-struct-sig @@ -54,8 +54,8 @@ :initarg :signature :accessor v-signature) (slots :initform ',slot-transforms-type-obj :reader v-slots))) - (def-v-type-class ,true-type-name (,class-name) ()) - (def-v-type-class ,fake-type-name (,class-name) + (v-deftype-internal ,true-type-name (,class-name) ()) + (v-deftype-internal ,fake-type-name (,class-name) ((signature :initform "")))) ,(when shadowing `(add-alternate-type-name ',name ',class-name)) (defmethod v-true-type ((object ,class-name)) diff --git a/src/varjo.internals/types/def-v-core-type.lisp b/src/varjo.internals/types/def-v-core-type.lisp index e1e8f092..b80e1a5e 100644 --- a/src/varjo.internals/types/def-v-core-type.lisp +++ b/src/varjo.internals/types/def-v-core-type.lisp @@ -5,7 +5,7 @@ ;; Macro for defining vari.types ;; {TODO} proper errors -(defmacro def-v-type-class (name direct-superclass direct-slots &rest options) +(defmacro v-deftype-internal (name direct-superclass direct-slots &rest options) (unless (eq name 'v-type) (assert (and (listp direct-superclass) (symbolp (first direct-superclass)) diff --git a/src/varjo.internals/types/early-types.lisp b/src/varjo.internals/types/early-types.lisp index 806d8f57..c090c582 100644 --- a/src/varjo.internals/types/early-types.lisp +++ b/src/varjo.internals/types/early-types.lisp @@ -4,7 +4,7 @@ ;;------------------------------------------------------------ ;; Varjo's root type -(def-v-type-class v-type () +(v-deftype-internal v-type () ((core :initform nil :reader core-typep) (superclass :initform nil) (glsl-string :initform "" :reader v-glsl-string) @@ -70,7 +70,7 @@ type-spec trick doesnt")) ;; Attached to failed compilation objects when delaying errors ;; see functions.lisp for use -(def-v-type-class v-error (v-type) +(v-deftype-internal v-error (v-type) ((payload :initform nil :initarg :payload :accessor v-payload))) (defun v-errorp (obj) diff --git a/src/varjo.internals/types/types.lisp b/src/varjo.internals/types/types.lisp index 6324aec7..fd477ab6 100644 --- a/src/varjo.internals/types/types.lisp +++ b/src/varjo.internals/types/types.lisp @@ -84,7 +84,7 @@ ;;------------------------------------------------------------ ;; Void -(def-v-type-class v-void (v-type) +(v-deftype-internal v-void (v-type) ((core :initform t :reader core-typep) (glsl-string :initform "void" :reader v-glsl-string) (glsl-size :initform :sizeless))) @@ -95,13 +95,13 @@ ;; The supertype for all types which that are shadowing a core ;; glsl type. -(def-v-type-class v-shadow-type (v-type) +(v-deftype-internal v-shadow-type (v-type) ((shadowed-type :initform nil :reader shadowed-type))) ;;------------------------------------------------------------ ;; Sampler -(def-v-type-class v-sampler (v-type) +(v-deftype-internal v-sampler (v-type) ((element-type :initform 'v-type))) (defmethod post-initialise ((object v-sampler)) @@ -123,7 +123,7 @@ ;; The supertype of all types that can have values stored into, and ;; retrieved from, themselves -(def-v-type-class v-container (v-type) +(v-deftype-internal v-container (v-type) ((element-type :initform t) (dimensions :initform nil :accessor v-dimensions))) @@ -147,7 +147,7 @@ ;;------------------------------------------------------------ ;; Array -(def-v-type-class v-array (v-container) +(v-deftype-internal v-array (v-container) ((element-type :initform t :initarg :element-type) (dimensions :initform nil :initarg :dimensions :accessor v-dimensions))) @@ -236,7 +236,7 @@ ;; Make sure you define these using deftype ;; -(def-v-type-class v-ephemeral-type (v-type) ()) +(v-deftype-internal v-ephemeral-type (v-type) ()) (defgeneric ephemeral-p (x) (:method ((x v-type)) @@ -250,7 +250,7 @@ ;; An array for item which that have no representation in glsl. ;; -(def-v-type-class v-ephemeral-array (v-array v-ephemeral-type) ()) +(v-deftype-internal v-ephemeral-array (v-array v-ephemeral-type) ()) (defmethod v-make-type ((type v-ephemeral-array) flow-id &rest args) (destructuring-bind (element-type length) args @@ -270,7 +270,7 @@ ;; {TODO} I think this should be a field on ephemeral-types. We then ;; have func spicing ephemerals and regular. -(def-v-type-class v-unrepresentable-value (v-ephemeral-type) ()) +(v-deftype-internal v-unrepresentable-value (v-ephemeral-type) ()) ;;------------------------------------------------------------ ;; Block Array @@ -283,7 +283,7 @@ ;; array. ;; -(def-v-type-class v-block-array (v-ephemeral-type) +(v-deftype-internal v-block-array (v-ephemeral-type) ((element-type :initform t :initarg :element-type) (dimensions :initform nil :initarg :dimensions :accessor v-dimensions) (block-name :initarg :block-name :initform "" :reader block-name))) @@ -360,7 +360,7 @@ ;;------------------------------------------------------------ ;; Or -(def-v-type-class v-or (v-type) +(v-deftype-internal v-or (v-type) ((types :initform nil :initarg :types :reader v-types))) (defmethod copy-type ((type v-or)) @@ -409,7 +409,7 @@ ;; all of the values and the compiler is free to pick any which ;; satisfies it's needs -(def-v-type-class v-any-one-of (v-unrepresentable-value) +(v-deftype-internal v-any-one-of (v-unrepresentable-value) ((types :initform nil :initarg :types :reader v-types))) (defmethod copy-type ((type v-any-one-of)) @@ -445,21 +445,21 @@ ;; ;; Supertype of all structs -(def-v-type-class v-struct (v-type) +(v-deftype-internal v-struct (v-type) ((versions :initform nil :initarg :versions :accessor v-versions) (signature :initform nil :initarg :signature :accessor v-signature) (glsl-string :initform "" :initarg :glsl-string :reader v-glsl-string) (slots :initform nil :initarg :slots :reader v-slots))) ;; Supertype of all structs that are not from the glsl spec -(def-v-type-class v-user-struct (v-struct) ()) +(v-deftype-internal v-user-struct (v-struct) ()) ;;------------------------------------------------------------ ;; Function Type ;; ;; The type of all function objects -(def-v-type-class v-function-type (v-unrepresentable-value) +(v-deftype-internal v-function-type (v-unrepresentable-value) ((argument-spec :initform nil :initarg :arg-spec :accessor v-argument-spec) (return-spec :initform nil :initarg :return-spec :accessor v-return-spec))) @@ -531,7 +531,7 @@ ;;------------------------------------------------------------ ;; Stemcell -(def-v-type-class v-stemcell (v-type) ()) +(v-deftype-internal v-stemcell (v-type) ()) ;;------------------------------------------------------------ ;; Type Equality diff --git a/todo b/todo index 1bcc1084..dadfae76 100644 --- a/todo +++ b/todo @@ -16,7 +16,7 @@ ------------------------------------------------------------ -* why use def-v-type-class for v-user-function? Switch to defclass? +* why use v-deftype-internal for v-user-function? Switch to defclass? * low-hanging-fruit: unify labels/flet/labels-no-implicit implementations