This is the cepl Reference Manual, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 15 04:32:03 2024 GMT+0.
cepl/cepl.asd
cepl.build/cepl.build.asd
cepl/package.lisp
cepl/host/api-api.lisp
cepl/host/api-generics.lisp
cepl/host/api-0.lisp
cepl/host/api-1.lisp
cepl/host/api-2.lisp
cepl/host/api-common.lisp
cepl/core/ffi.lisp
cepl/core/early.lisp
cepl/core/utils.lisp
cepl/project.lisp
cepl/core/context/documentation-functions.lisp
cepl/core/lifecycle.lisp
cepl/core/measurements/measurements.lisp
cepl/core/memory/memory.lisp
cepl/core/types/math.lisp
cepl/core/types/cepl-types.lisp
cepl/core/types/checks.lisp
cepl/core/types/nulls-and-uninitialized.lisp
cepl/core/context/gl-context.lisp
cepl/core/context/types.lisp
cepl/core/context/cepl-context.lisp
cepl/core/context/surface.lisp
cepl/core/context/delayed-resource-init.lisp
cepl/core/context/version.lisp
cepl/core/blending/blending.lisp
cepl/core/stencil/stencil.lisp
cepl/core/stencil/mask.lisp
cepl/core/scissor/scissor.lisp
cepl/core/color/color.lisp
cepl/core/pixel-store/pixel-store.lisp
cepl/core/depth/depth.lisp
cepl/core/face/face.lisp
cepl/core/types/initalized-p.lisp
cepl/core/internals.lisp
cepl/core/types/types.lisp
cepl/core/errors.lisp
cepl/core/viewports/viewport.lisp
cepl/core/types/image-format.lisp
cepl/core/types/pixel-format.lisp
cepl/core/types/cffi-extra-primitive-types.lisp
cepl/core/types/cffi-helpers.lisp
cepl/core/c-arrays/def.lisp
cepl/core/c-arrays/aref-c.lisp
cepl/core/c-arrays/populate.lisp
cepl/core/c-arrays/make.lisp
cepl/core/c-arrays/map.lisp
cepl/core/c-arrays/rest.lisp
cepl/core/types/layout.lisp
cepl/core/types/structs.lisp
cepl/core/gpu-buffers/gpu-buffers.lisp
cepl/core/gpu-arrays/buffer-backed.lisp
cepl/core/vaos/vaos.lisp
cepl/core/streams/buffer-streams.lisp
cepl/core/transform-feedback/transform-feedback.lisp
cepl/core/pipelines/compile-context.lisp
cepl/core/pipelines/generics.lisp
cepl/core/pipelines/uniforms.lisp
cepl/core/pipelines/gpu-macros.lisp
cepl/core/pipelines/gpu-pipeline-base.lisp
cepl/core/pipelines/pipeline-validation.lisp
cepl/core/pipelines/funcall-g.lisp
cepl/core/pipelines/gpu-functions.lisp
cepl/core/pipelines/glsl-stages.lisp
cepl/core/pipelines/mapg-context.lisp
cepl/core/pipelines/uniform-assigners-generation.lisp
cepl/core/pipelines/programs.lisp
cepl/core/pipelines/multi-draw.lisp
cepl/core/pipelines/defpipeline.lisp
cepl/core/pipelines/gpu-lambda.lisp
cepl/core/pipelines/bake.lisp
cepl/core/textures/def.lisp
cepl/core/samplers/samplers.lisp
cepl/core/textures/textures.lisp
cepl/core/textures/texture-samplers.lisp
cepl/core/render-buffers/render-buffer.lisp
cepl/core/samplers/context.lisp
cepl/core/pipelines/map-g.lisp
cepl/core/pipelines/quad-stages.lisp
cepl/core/gpu-arrays/texture-backed.lisp
cepl/core/gpu-arrays/with-and-push.lisp
cepl/core/fbos/fbo.lisp
cepl/core/ubos/ubo.lisp
cepl/core/ssbos/ssbos.lisp
cepl/core/sync/sync.lisp
cepl/core/queries/query.lisp
cepl/core/compute/compute.lisp
cepl/core/types/predefined/gpu-structs.lisp
cepl/core/context/make.lisp
cepl/core/context/known-state-blocks.lisp
cepl/core/repl.lisp
cepl/docs/api/package.lisp
cepl/core/types/docs-image-formats.lisp
cepl/core/types/docs-pixel-formats.lisp
cepl/core/types/predefined/docs.lisp
cepl/core/types/docs.lisp
cepl/core/measurements/docs.lisp
cepl/core/memory/docs.lisp
cepl/core/c-arrays/docs.lisp
cepl/core/gpu-buffers/docs.lisp
cepl/core/gpu-arrays/docs.lisp
cepl/core/streams/docs.lisp
cepl/core/viewports/docs.lisp
cepl/core/textures/docs.lisp
cepl/core/samplers/docs.lisp
cepl/core/fbos/docs.lisp
cepl/core/blending/docs.lisp
cepl/core/ubos/docs.lisp
cepl/core/ssbos/docs.lisp
cepl/core/vaos/docs.lisp
cepl/core/pipelines/docs.lisp
cepl.build/build/package.lisp
cepl.build/build/build.lisp
cepl.build/defn/package.lisp
cepl.build/defn/defn.lisp
cepl.build
cepl.pipelines
cepl.ssbos
cepl.vaos
cepl.internals
cepl.gpu-buffers
cepl.docs
cepl.fbos
cepl.gpu-arrays.buffer-backed
cepl.measurements
cepl.blending
cepl.documentation-functions
cepl.scissor
cepl.stencil
cepl.samplers
cepl.types.foreign
cepl
cepl.types.predefined
cepl.queries
cepl.ubos
cepl.viewports
cepl.render-buffers
cepl.compute
cepl.context
cepl.textures
cepl.defn
cepl.host
cepl.gpu-arrays
cepl.gpu-arrays.texture-backed
cepl.memory
cepl.lifecycle
cepl.transform-feedback
cepl.streams
%cepl.types
cepl.pixel-formats
cepl-utils
cepl.errors
cepl.types
cepl.c-arrays
cepl.image-formats
cepl.sync
The main system appears first, followed by any subsystem dependency.
cepl
Fast lispy way to work with OpenGL
Chris Bagley (Baggers) <techsnuffle@gmail.com>
BSD 2 Clause
cffi
(system).
uiop
(system).
cl-opengl
(system).
cl-ppcre
(system).
documentation-utils
(system).
ieee-floats
(system).
varjo
(system).
bordeaux-threads
(system).
cepl.build
(system).
alexandria
(system).
split-sequence
(system).
float-features
(system).
package.lisp
(file).
host/api-api.lisp
(file).
host/api-generics.lisp
(file).
host/api-0.lisp
(file).
host/api-1.lisp
(file).
host/api-2.lisp
(file).
host/api-common.lisp
(file).
core/ffi.lisp
(file).
core/early.lisp
(file).
core/utils.lisp
(file).
project.lisp
(file).
core/context/documentation-functions.lisp
(file).
core/lifecycle.lisp
(file).
core/measurements/measurements.lisp
(file).
core/memory/memory.lisp
(file).
core/types/math.lisp
(file).
core/types/cepl-types.lisp
(file).
core/types/checks.lisp
(file).
core/types/nulls-and-uninitialized.lisp
(file).
core/context/gl-context.lisp
(file).
core/context/types.lisp
(file).
core/context/cepl-context.lisp
(file).
core/context/surface.lisp
(file).
core/context/delayed-resource-init.lisp
(file).
core/context/version.lisp
(file).
core/blending/blending.lisp
(file).
core/stencil/stencil.lisp
(file).
core/stencil/mask.lisp
(file).
core/scissor/scissor.lisp
(file).
core/color/color.lisp
(file).
core/pixel-store/pixel-store.lisp
(file).
core/depth/depth.lisp
(file).
core/face/face.lisp
(file).
core/types/initalized-p.lisp
(file).
core/internals.lisp
(file).
core/types/types.lisp
(file).
core/errors.lisp
(file).
core/viewports/viewport.lisp
(file).
core/types/image-format.lisp
(file).
core/types/pixel-format.lisp
(file).
core/types/cffi-extra-primitive-types.lisp
(file).
core/types/cffi-helpers.lisp
(file).
core/c-arrays/def.lisp
(file).
core/c-arrays/aref-c.lisp
(file).
core/c-arrays/populate.lisp
(file).
core/c-arrays/make.lisp
(file).
core/c-arrays/map.lisp
(file).
core/c-arrays/rest.lisp
(file).
core/types/layout.lisp
(file).
core/types/structs.lisp
(file).
core/gpu-buffers/gpu-buffers.lisp
(file).
core/gpu-arrays/buffer-backed.lisp
(file).
core/vaos/vaos.lisp
(file).
core/streams/buffer-streams.lisp
(file).
core/transform-feedback/transform-feedback.lisp
(file).
core/pipelines/compile-context.lisp
(file).
core/pipelines/generics.lisp
(file).
core/pipelines/uniforms.lisp
(file).
core/pipelines/gpu-macros.lisp
(file).
core/pipelines/gpu-pipeline-base.lisp
(file).
core/pipelines/pipeline-validation.lisp
(file).
core/pipelines/funcall-g.lisp
(file).
core/pipelines/gpu-functions.lisp
(file).
core/pipelines/glsl-stages.lisp
(file).
core/pipelines/mapg-context.lisp
(file).
core/pipelines/uniform-assigners-generation.lisp
(file).
core/pipelines/programs.lisp
(file).
core/pipelines/multi-draw.lisp
(file).
core/pipelines/defpipeline.lisp
(file).
core/pipelines/gpu-lambda.lisp
(file).
core/pipelines/bake.lisp
(file).
core/textures/def.lisp
(file).
core/samplers/samplers.lisp
(file).
core/textures/textures.lisp
(file).
core/textures/texture-samplers.lisp
(file).
core/render-buffers/render-buffer.lisp
(file).
core/samplers/context.lisp
(file).
core/pipelines/map-g.lisp
(file).
core/pipelines/quad-stages.lisp
(file).
core/gpu-arrays/texture-backed.lisp
(file).
core/gpu-arrays/with-and-push.lisp
(file).
core/fbos/fbo.lisp
(file).
core/ubos/ubo.lisp
(file).
core/ssbos/ssbos.lisp
(file).
core/sync/sync.lisp
(file).
core/queries/query.lisp
(file).
core/compute/compute.lisp
(file).
core/types/predefined/gpu-structs.lisp
(file).
core/context/make.lisp
(file).
core/context/known-state-blocks.lisp
(file).
core/repl.lisp
(file).
docs/api/package.lisp
(file).
core/types/docs-image-formats.lisp
(file).
core/types/docs-pixel-formats.lisp
(file).
core/types/predefined/docs.lisp
(file).
core/types/docs.lisp
(file).
core/measurements/docs.lisp
(file).
core/memory/docs.lisp
(file).
core/c-arrays/docs.lisp
(file).
core/gpu-buffers/docs.lisp
(file).
core/gpu-arrays/docs.lisp
(file).
core/streams/docs.lisp
(file).
core/viewports/docs.lisp
(file).
core/textures/docs.lisp
(file).
core/samplers/docs.lisp
(file).
core/fbos/docs.lisp
(file).
core/blending/docs.lisp
(file).
core/ubos/docs.lisp
(file).
core/ssbos/docs.lisp
(file).
core/vaos/docs.lisp
(file).
core/pipelines/docs.lisp
(file).
cepl.build
Common package and system behind CEPL’s profiling tools
Chris Bagley <techsnuffle@gmail.com>
BSD 2 Clause
alexandria
(system).
build/package.lisp
(file).
build/build.lisp
(file).
defn/package.lisp
(file).
defn/defn.lisp
(file).
Files are sorted by type and then listed depth-first from the systems components trees.
cepl/cepl.asd
cepl.build/cepl.build.asd
cepl/package.lisp
cepl/host/api-api.lisp
cepl/host/api-generics.lisp
cepl/host/api-0.lisp
cepl/host/api-1.lisp
cepl/host/api-2.lisp
cepl/host/api-common.lisp
cepl/core/ffi.lisp
cepl/core/early.lisp
cepl/core/utils.lisp
cepl/project.lisp
cepl/core/context/documentation-functions.lisp
cepl/core/lifecycle.lisp
cepl/core/measurements/measurements.lisp
cepl/core/memory/memory.lisp
cepl/core/types/math.lisp
cepl/core/types/cepl-types.lisp
cepl/core/types/checks.lisp
cepl/core/types/nulls-and-uninitialized.lisp
cepl/core/context/gl-context.lisp
cepl/core/context/types.lisp
cepl/core/context/cepl-context.lisp
cepl/core/context/surface.lisp
cepl/core/context/delayed-resource-init.lisp
cepl/core/context/version.lisp
cepl/core/blending/blending.lisp
cepl/core/stencil/stencil.lisp
cepl/core/stencil/mask.lisp
cepl/core/scissor/scissor.lisp
cepl/core/color/color.lisp
cepl/core/pixel-store/pixel-store.lisp
cepl/core/depth/depth.lisp
cepl/core/face/face.lisp
cepl/core/types/initalized-p.lisp
cepl/core/internals.lisp
cepl/core/types/types.lisp
cepl/core/errors.lisp
cepl/core/viewports/viewport.lisp
cepl/core/types/image-format.lisp
cepl/core/types/pixel-format.lisp
cepl/core/types/cffi-extra-primitive-types.lisp
cepl/core/types/cffi-helpers.lisp
cepl/core/c-arrays/def.lisp
cepl/core/c-arrays/aref-c.lisp
cepl/core/c-arrays/populate.lisp
cepl/core/c-arrays/make.lisp
cepl/core/c-arrays/map.lisp
cepl/core/c-arrays/rest.lisp
cepl/core/types/layout.lisp
cepl/core/types/structs.lisp
cepl/core/gpu-buffers/gpu-buffers.lisp
cepl/core/gpu-arrays/buffer-backed.lisp
cepl/core/vaos/vaos.lisp
cepl/core/streams/buffer-streams.lisp
cepl/core/transform-feedback/transform-feedback.lisp
cepl/core/pipelines/compile-context.lisp
cepl/core/pipelines/generics.lisp
cepl/core/pipelines/uniforms.lisp
cepl/core/pipelines/gpu-macros.lisp
cepl/core/pipelines/gpu-pipeline-base.lisp
cepl/core/pipelines/pipeline-validation.lisp
cepl/core/pipelines/funcall-g.lisp
cepl/core/pipelines/gpu-functions.lisp
cepl/core/pipelines/glsl-stages.lisp
cepl/core/pipelines/mapg-context.lisp
cepl/core/pipelines/uniform-assigners-generation.lisp
cepl/core/pipelines/programs.lisp
cepl/core/pipelines/multi-draw.lisp
cepl/core/pipelines/defpipeline.lisp
cepl/core/pipelines/gpu-lambda.lisp
cepl/core/pipelines/bake.lisp
cepl/core/textures/def.lisp
cepl/core/samplers/samplers.lisp
cepl/core/textures/textures.lisp
cepl/core/textures/texture-samplers.lisp
cepl/core/render-buffers/render-buffer.lisp
cepl/core/samplers/context.lisp
cepl/core/pipelines/map-g.lisp
cepl/core/pipelines/quad-stages.lisp
cepl/core/gpu-arrays/texture-backed.lisp
cepl/core/gpu-arrays/with-and-push.lisp
cepl/core/fbos/fbo.lisp
cepl/core/ubos/ubo.lisp
cepl/core/ssbos/ssbos.lisp
cepl/core/sync/sync.lisp
cepl/core/queries/query.lisp
cepl/core/compute/compute.lisp
cepl/core/types/predefined/gpu-structs.lisp
cepl/core/context/make.lisp
cepl/core/context/known-state-blocks.lisp
cepl/core/repl.lisp
cepl/docs/api/package.lisp
cepl/core/types/docs-image-formats.lisp
cepl/core/types/docs-pixel-formats.lisp
cepl/core/types/predefined/docs.lisp
cepl/core/types/docs.lisp
cepl/core/measurements/docs.lisp
cepl/core/memory/docs.lisp
cepl/core/c-arrays/docs.lisp
cepl/core/gpu-buffers/docs.lisp
cepl/core/gpu-arrays/docs.lisp
cepl/core/streams/docs.lisp
cepl/core/viewports/docs.lisp
cepl/core/textures/docs.lisp
cepl/core/samplers/docs.lisp
cepl/core/fbos/docs.lisp
cepl/core/blending/docs.lisp
cepl/core/ubos/docs.lisp
cepl/core/ssbos/docs.lisp
cepl/core/vaos/docs.lisp
cepl/core/pipelines/docs.lisp
cepl.build/build/package.lisp
cepl.build/build/build.lisp
cepl.build/defn/package.lisp
cepl.build/defn/defn.lisp
cepl/package.lisp
cepl
(system).
cepl.pipelines
.
cepl.ssbos
.
cepl.vaos
.
cepl.internals
.
cepl.gpu-buffers
.
cepl.fbos
.
cepl.gpu-arrays.buffer-backed
.
cepl.measurements
.
cepl.blending
.
cepl.documentation-functions
.
cepl.scissor
.
cepl.stencil
.
cepl.samplers
.
cepl.types.foreign
.
cepl
.
cepl.types.predefined
.
cepl.queries
.
cepl.ubos
.
cepl.viewports
.
cepl.hidden
.
cepl.render-buffers
.
cepl.compute
.
cepl.context
.
cepl.textures
.
cepl.host
.
cepl.gpu-arrays
.
cepl.gpu-arrays.texture-backed
.
cepl.memory
.
cepl.lifecycle
.
cepl.transform-feedback
.
cepl.streams
.
%cepl.types
.
cepl.pixel-formats
.
cepl-utils
.
cepl.errors
.
cepl.types
.
cepl.c-arrays
.
cepl.image-formats
.
cepl.sync
.
cepl/host/api-api.lisp
package.lisp
(file).
cepl
(system).
register-host
(function).
*current-host*
(special variable).
*declared-host*
(special variable).
cepl-host-api
(class).
check-host
(generic function).
replace-host
(function).
cepl/host/api-generics.lisp
host/api-api.lisp
(file).
cepl
(system).
%destroy-surface
(generic function).
%init
(generic function).
%make-gl-context
(generic function).
%make-gl-context-shared-with-current-context
(generic function).
%make-surface
(generic function).
%set-surface-fullscreen
(generic function).
%set-surface-size
(generic function).
%set-surface-title
(generic function).
%shutdown
(generic function).
%supports-multiple-contexts-p
(generic function).
%supports-multiple-surfaces-p
(generic function).
%surface-fullscreen-p
(generic function).
%surface-title
(generic function).
cepl/host/api-0.lisp
host/api-generics.lisp
(file).
cepl
(system).
init
(generic function).
request-context
(generic function).
set-default-swap-arg
(function).
shutdown
(generic function).
%api-0-populate-singletons
(function).
%destroy-surface
(method).
%init
(method).
%make-gl-context
(method).
%make-gl-context-shared-with-current-context
(method).
%make-surface
(method).
%set-surface-fullscreen
(method).
%set-surface-size
(method).
%set-surface-title
(method).
%shutdown
(method).
%surface-fullscreen-p
(method).
%surface-title
(method).
*api-0-context-singleton*
(special variable).
*api-0-make-context-called*
(special variable).
*api-0-make-window-called*
(special variable).
*api-0-window-singleton*
(special variable).
api-0
(class).
check-host
(method).
set-primary-thread-and-run
(generic function).
cepl/host/api-1.lisp
host/api-0.lisp
(file).
cepl
(system).
api-1
(class).
%destroy-surface
(method).
%init
(method).
%make-gl-context
(method).
%make-gl-context-shared-with-current-context
(method).
%make-surface
(method).
%set-surface-fullscreen
(method).
%set-surface-size
(method).
%set-surface-title
(method).
%shutdown
(method).
%supports-multiple-contexts-p
(method).
%supports-multiple-surfaces-p
(method).
%surface-fullscreen-p
(method).
%surface-title
(method).
check-host
(method).
cepl/host/api-2.lisp
host/api-1.lisp
(file).
cepl
(system).
api-2
(class).
%make-gl-context-shared-with-current-context
(method).
check-host
(method).
cepl/host/api-common.lisp
host/api-2.lisp
(file).
cepl
(system).
destroy-surface
(function).
host-step
(function).
host-swap
(function).
initialize
(function).
make-gl-context
(function).
make-gl-context-current-on-surface
(function).
make-gl-context-shared-with-current-context
(function).
make-surface
(function).
set-make-gl-context-current-on-surface
(function).
set-register-event-callback-func
(function).
set-step-func
(function).
set-surface-fullscreen
(function).
set-surface-size
(function).
set-surface-title
(function).
set-swap-func
(function).
set-window-size-func
(function).
supports-multiple-contexts-p
(function).
supports-multiple-surfaces-p
(function).
surface-fullscreen-p
(function).
surface-title
(function).
window-size
(function).
%destroy-surface
(method).
%set-surface-fullscreen
(method).
%set-surface-size
(method).
%set-surface-title
(method).
%supports-multiple-contexts-p
(method).
%supports-multiple-surfaces-p
(method).
%surface-fullscreen-p
(method).
%surface-title
(method).
register-event-listener
(function).
cepl/core/ffi.lisp
host/api-common.lisp
(file).
cepl
(system).
cepl/core/early.lisp
core/ffi.lisp
(file).
cepl
(system).
+gl-enum-size+
(constant).
cepl/core/utils.lisp
core/early.lisp
(file).
cepl
(system).
arange
(function).
arangei
(function).
array-index
(type).
assert-lambda-list
(macro).
assoc-bind
(macro).
assocr
(compiler macro).
assocr
(function).
case=
(macro).
consecutive-integers-p
(function).
dbind
(macro).
defcondition
(macro).
deferror
(macro).
define-const
(macro).
defwarning
(macro).
ecase=
(macro).
ensure-vec-index
(compiler macro).
ensure-vec-index
(function).
file-to-string
(function).
filter-hash
(function).
find-in-tree
(function).
flatten
(function).
gl-enum
(function).
group
(function).
hash-keys
(function).
hash-values
(function).
hidden-symb
(function).
intersperse
(function).
just-ignore
(function).
kwd
(function).
last1
(function).
lispify-name
(function).
list-not-consp
(function).
listify
(function).
make-keyword
(function).
make-length-same
(generic function).
mapcat
(function).
mkstr
(function).
n-of
(function).
n-of*
(macro).
ni-call
(function).
ni-val
(function).
p->
(macro).
print-mem
(generic function).
range
(function).
rangei
(function).
read-integers
(function).
replace-nth
(function).
sn-equal
(function).
split-seq-by-seq
(function).
split-string
(function).
sub-at-index
(function).
symb
(function).
symb-name=
(function).
symb-package
(function).
symbol-name-equal
(function).
vec-bind
(macro).
walk-replace
(function).
with-hash
(macro).
with-hash*
(macro).
with-setf
(macro).
with-setf*
(macro).
%print-mem
(function).
---block-doc---
(macro).
boop-p
(function).
boop-x
(reader).
(setf boop-x)
(writer).
boop-y
(reader).
(setf boop-y)
(writer).
boop6
(structure).
copy-boop6
(function).
defx*
(function).
make-boop6
(function).
with-setf-internals
(function).
cepl/project.lisp
core/utils.lisp
(file).
cepl
(system).
make-project
(function).
*template-dir*
(special variable).
make-project-needs-quickproject
(condition).
make-project-no-such-dir
(condition).
process-mp-path
(function).
cepl/core/context/documentation-functions.lisp
project.lisp
(file).
cepl
(system).
always
(function).
keep
(function).
never
(function).
one
(function).
stencil-decf
(function).
stencil-decf-wrap
(function).
stencil-incf
(function).
stencil-incf-wrap
(function).
stencil-invert
(function).
stencil-replace
(function).
zero
(function).
cepl/core/lifecycle.lisp
cepl
(system).
listen-to-lifecycle-changes
(function).
shutting-down-p
(function).
stop-listening-to-lifecycle-changes
(function).
uninitialized-p
(function).
*active-listeners*
(special variable).
*lifecycle-state*
(special variable).
*shutting-down-listeners*
(special variable).
*suspended-listeners*
(special variable).
+lifecycle-states+
(constant).
active-p
(function).
call-listeners
(function).
change-state
(function).
from-active
(function).
from-suspended
(function).
from-unitialized
(function).
suspended-p
(function).
to-active
(function).
to-shutting-down
(function).
to-suspended
(function).
cepl/core/measurements/measurements.lisp
core/lifecycle.lisp
(file).
cepl
(system).
dimensions
(generic function).
(setf dimensions)
(generic function).
origin
(generic function).
(setf origin)
(generic function).
resolution
(generic function).
(setf resolution)
(generic function).
cepl/core/memory/memory.lisp
cepl
(system).
cepl/core/types/math.lisp
core/memory/memory.lisp
(file).
cepl
(system).
cepl/core/types/cepl-types.lisp
core/types/math.lisp
(file).
cepl
(system).
%%make-buffer-texture
(function).
%%make-fbo
(function).
%%make-texture
(function).
%empty-fbo-params-dimensions
(reader).
(setf %empty-fbo-params-dimensions)
(writer).
%empty-fbo-params-fbo
(reader).
(setf %empty-fbo-params-fbo)
(writer).
%empty-fbo-params-fixed-sample-locations-p
(reader).
(setf %empty-fbo-params-fixed-sample-locations-p)
(writer).
%empty-fbo-params-layer-count
(reader).
(setf %empty-fbo-params-layer-count)
(writer).
%empty-fbo-params-samples
(reader).
(setf %empty-fbo-params-samples)
(writer).
%empty-fbo-params-viewport
(reader).
(setf %empty-fbo-params-viewport)
(writer).
%fbo-attachment-count
(reader).
(setf %fbo-attachment-count)
(writer).
%fbo-blending-params
(reader).
(setf %fbo-blending-params)
(writer).
%fbo-clear-mask
(reader).
(setf %fbo-clear-mask)
(writer).
%fbo-color-arrays
(reader).
(setf %fbo-color-arrays)
(writer).
%fbo-color-arrays-fill-pointer
(reader).
(setf %fbo-color-arrays-fill-pointer)
(writer).
%fbo-depth-array
(reader).
(setf %fbo-depth-array)
(writer).
%fbo-draw-buffer-map
(reader).
(setf %fbo-draw-buffer-map)
(writer).
%fbo-empty-params
(reader).
(setf %fbo-empty-params)
(writer).
%fbo-id
(reader).
(setf %fbo-id)
(writer).
%fbo-is-default
(reader).
(setf %fbo-is-default)
(writer).
%fbo-stencil-array
(reader).
(setf %fbo-stencil-array)
(writer).
%gpu-fence-obj
(reader).
(setf %gpu-fence-obj)
(writer).
%make-c-array
(function).
%make-gpu-array
(function).
%make-gpu-array-bb
(function).
%make-gpu-array-t
(function).
%make-gpu-buffer
(function).
%make-gpu-fence
(function).
%make-render-buffer
(function).
%make-sampler
(function).
%make-ssbo
(function).
%make-stencil-params
(function).
%make-tfs
(function).
%make-ubo
(function).
%make-viewport
(function).
%render-buffer-id
(reader).
(setf %render-buffer-id)
(writer).
%render-buffer-image-format
(reader).
(setf %render-buffer-image-format)
(writer).
%render-buffer-multisample-p
(reader).
(setf %render-buffer-multisample-p)
(writer).
%render-buffer-resolution
(reader).
(setf %render-buffer-resolution)
(writer).
%sampler-anisotropy
(reader).
(setf %sampler-anisotropy)
(writer).
%sampler-border-color
(reader).
(setf %sampler-border-color)
(writer).
%sampler-compare
(reader).
(setf %sampler-compare)
(writer).
%sampler-expects-depth
(reader).
(setf %sampler-expects-depth)
(writer).
%sampler-expects-mipmap
(reader).
(setf %sampler-expects-mipmap)
(writer).
%sampler-id
(function).
(setf %sampler-id)
(function).
%sampler-id-box
(reader).
(setf %sampler-id-box)
(writer).
%sampler-lod-bias
(reader).
(setf %sampler-lod-bias)
(writer).
%sampler-magnify-filter
(reader).
(setf %sampler-magnify-filter)
(writer).
%sampler-max-lod
(reader).
(setf %sampler-max-lod)
(writer).
%sampler-min-lod
(reader).
(setf %sampler-min-lod)
(writer).
%sampler-minify-filter
(reader).
(setf %sampler-minify-filter)
(writer).
%sampler-texture
(reader).
(setf %sampler-texture)
(writer).
%sampler-type
(reader).
(setf %sampler-type)
(writer).
%sampler-wrap
(reader).
(setf %sampler-wrap)
(writer).
%stencil-params-mask
(reader).
%stencil-params-on-stencil-pass-depth-test-fail
(reader).
%stencil-params-on-stencil-pass-depth-test-pass
(reader).
%stencil-params-on-stencil-test-fail
(reader).
%stencil-params-test
(reader).
%stencil-params-value
(reader).
%tfs-arrays
(reader).
(setf %tfs-arrays)
(writer).
%tfs-bound
(reader).
(setf %tfs-bound)
(writer).
%tfs-current-prog-id
(reader).
(setf %tfs-current-prog-id)
(writer).
%tfs-pending-arrays
(reader).
(setf %tfs-pending-arrays)
(writer).
%viewport-origin-x
(reader).
(setf %viewport-origin-x)
(writer).
%viewport-origin-y
(reader).
(setf %viewport-origin-y)
(writer).
%viewport-resolution-x
(reader).
(setf %viewport-resolution-x)
(writer).
%viewport-resolution-y
(reader).
(setf %viewport-resolution-y)
(writer).
*extra-primitive-types*
(special variable).
+gl-id-bit-size+
(constant).
+null-gl-id+
(constant).
+unknown-gl-id+
(constant).
active-texture-num
(function).
any-samples-passed-conservative-query
(structure).
any-samples-passed-query
(structure).
att
(structure).
att-array
(reader).
(setf att-array)
(writer).
att-blend
(reader).
(setf att-blend)
(writer).
att-bparams
(reader).
(setf att-bparams)
(writer).
att-owned-p
(reader).
(setf att-owned-p)
(writer).
att-viewport
(reader).
(setf att-viewport)
(writer).
attachment-name
(type).
attachment-num
(type).
blending-params
(structure).
blending-params-destination-alpha
(reader).
(setf blending-params-destination-alpha)
(writer).
blending-params-destination-rgb
(reader).
(setf blending-params-destination-rgb)
(writer).
blending-params-mode-alpha
(reader).
(setf blending-params-mode-alpha)
(writer).
blending-params-mode-rgb
(reader).
(setf blending-params-mode-rgb)
(writer).
blending-params-p
(function).
blending-params-source-alpha
(reader).
(setf blending-params-source-alpha)
(writer).
blending-params-source-rgb
(reader).
(setf blending-params-source-rgb)
(writer).
buffer-stream
(structure).
buffer-stream-%index-type-enum
(reader).
(setf buffer-stream-%index-type-enum)
(writer).
buffer-stream-%index-type-size
(reader).
(setf buffer-stream-%index-type-size)
(writer).
buffer-stream-%primitive
(reader).
(setf buffer-stream-%primitive)
(writer).
buffer-stream-%start
(reader).
(setf buffer-stream-%start)
(writer).
buffer-stream-%start-byte
(reader).
(setf buffer-stream-%start-byte)
(writer).
buffer-stream-base-vertex
(reader).
(setf buffer-stream-base-vertex)
(writer).
buffer-stream-draw-mode-val
(reader).
(setf buffer-stream-draw-mode-val)
(writer).
buffer-stream-gpu-arrays
(reader).
(setf buffer-stream-gpu-arrays)
(writer).
buffer-stream-index-type
(function).
(setf buffer-stream-index-type)
(function).
buffer-stream-length
(reader).
(setf buffer-stream-length)
(writer).
buffer-stream-managed
(reader).
(setf buffer-stream-managed)
(writer).
buffer-stream-p
(function).
buffer-stream-patch-length
(reader).
(setf buffer-stream-patch-length)
(writer).
buffer-stream-primitive
(function).
(setf buffer-stream-primitive)
(function).
buffer-stream-primitive-group-id
(reader).
(setf buffer-stream-primitive-group-id)
(writer).
buffer-stream-start
(function).
(setf buffer-stream-start)
(function).
buffer-stream-start-byte
(function).
(setf buffer-stream-start-byte)
(function).
buffer-stream-vao
(reader).
(setf buffer-stream-vao)
(writer).
buffer-texture
(structure).
buffer-texture-backing-array
(reader).
(setf buffer-texture-backing-array)
(writer).
buffer-texture-owns-array
(reader).
(setf buffer-texture-owns-array)
(writer).
buffer-texture-p
(function).
c-array
(structure).
c-array-byte-size
(reader).
(setf c-array-byte-size)
(writer).
c-array-dimensions
(reader).
(setf c-array-dimensions)
(writer).
c-array-element-byte-size
(function).
c-array-element-from-foreign
(reader).
(setf c-array-element-from-foreign)
(writer).
c-array-element-pixel-format
(reader).
(setf c-array-element-pixel-format)
(writer).
c-array-element-to-foreign
(reader).
(setf c-array-element-to-foreign)
(writer).
c-array-element-type
(reader).
(setf c-array-element-type)
(writer).
c-array-free
(reader).
(setf c-array-free)
(writer).
c-array-index
(type).
c-array-p
(function).
c-array-pointer
(reader).
(setf c-array-pointer)
(writer).
c-array-row-alignment
(reader).
(setf c-array-row-alignment)
(writer).
c-array-sizes
(reader).
(setf c-array-sizes)
(writer).
c-array-struct-element-typep
(reader).
(setf c-array-struct-element-typep)
(writer).
c-array-total-size
(reader).
(setf c-array-total-size)
(writer).
can-be-shared-between-contexts-p
(generic function).
compute-space
(structure).
compute-space-size-x
(reader).
(setf compute-space-size-x)
(writer).
compute-space-size-y
(reader).
(setf compute-space-size-y)
(writer).
compute-space-size-z
(reader).
(setf compute-space-size-z)
(writer).
copy-blending-params
(function).
copy-viewport
(function).
draw-mode-group-id
(function).
empty-fbo-params
(structure).
extended-attachment-num
(type).
fbo
(structure).
fbo-empty-p
(function).
fbo-p
(function).
gl-enum-value
(type).
gl-id
(type).
gl-sizei
(type).
gpu-array
(structure).
gpu-array-bb
(structure).
gpu-array-bb-access-style
(reader).
(setf gpu-array-bb-access-style)
(writer).
gpu-array-bb-buffer
(reader).
(setf gpu-array-bb-buffer)
(writer).
gpu-array-bb-byte-size
(reader).
(setf gpu-array-bb-byte-size)
(writer).
gpu-array-bb-element-byte-size
(reader).
(setf gpu-array-bb-element-byte-size)
(writer).
gpu-array-bb-element-pixel-format
(reader).
(setf gpu-array-bb-element-pixel-format)
(writer).
gpu-array-bb-element-type
(reader).
(setf gpu-array-bb-element-type)
(writer).
gpu-array-bb-offset-in-bytes-into-buffer
(reader).
(setf gpu-array-bb-offset-in-bytes-into-buffer)
(writer).
gpu-array-bb-p
(function).
gpu-array-bb-row-alignment
(reader).
(setf gpu-array-bb-row-alignment)
(writer).
gpu-array-dimensions
(reader).
(setf gpu-array-dimensions)
(writer).
gpu-array-p
(function).
gpu-array-t
(structure).
gpu-array-t-face-num
(reader).
(setf gpu-array-t-face-num)
(writer).
gpu-array-t-image-format
(reader).
(setf gpu-array-t-image-format)
(writer).
gpu-array-t-layer-num
(reader).
(setf gpu-array-t-layer-num)
(writer).
gpu-array-t-level-num
(reader).
(setf gpu-array-t-level-num)
(writer).
gpu-array-t-p
(function).
gpu-array-t-texture
(reader).
(setf gpu-array-t-texture)
(writer).
gpu-array-t-texture-type
(reader).
(setf gpu-array-t-texture-type)
(writer).
gpu-buffer
(structure).
gpu-buffer-arrays
(reader).
(setf gpu-buffer-arrays)
(writer).
gpu-buffer-cache-id
(reader).
(setf gpu-buffer-cache-id)
(writer).
gpu-buffer-id
(reader).
(setf gpu-buffer-id)
(writer).
gpu-buffer-p
(function).
gpu-fence
(structure).
gpu-query
(structure).
gpu-query-cache-id
(reader).
gpu-query-enum
(reader).
gpu-query-id
(reader).
holds-gl-object-ref-p
(function).
indexp
(function).
make-any-samples-passed-conservative-query
(function).
make-any-samples-passed-query
(function).
make-att
(function).
make-blending-params
(function).
make-compute-space
(function).
make-empty-fbo-params
(function).
make-pixel-format
(function).
make-primitives-generated-query
(function).
make-raw-buffer-stream
(function).
make-sampler-id-box
(function).
make-samples-passed-query
(function).
make-time-elapsed-query
(function).
make-timestamp-query
(function).
make-transform-feedback-primitives-written-query
(function).
make-viewport
(function).
pixel-format
(structure).
pixel-format-comp-length
(reader).
(setf pixel-format-comp-length)
(writer).
pixel-format-components
(reader).
(setf pixel-format-components)
(writer).
pixel-format-normalize
(reader).
(setf pixel-format-normalize)
(writer).
pixel-format-p
(function).
pixel-format-reversed
(reader).
(setf pixel-format-reversed)
(writer).
pixel-format-sizes
(reader).
(setf pixel-format-sizes)
(writer).
pixel-format-type
(reader).
(setf pixel-format-type)
(writer).
primitives-generated-query
(structure).
render-buffer
(structure).
render-buffer-p
(function).
sampler
(structure).
sampler-id-box
(structure).
sampler-id-box-id
(reader).
(setf sampler-id-box-id)
(writer).
sampler-id-box-shared-p
(reader).
(setf sampler-id-box-shared-p)
(writer).
sampler-p
(function).
sampler-shared-p
(function).
samples-passed-query
(structure).
scoped-gpu-query
(structure).
scoped-gpu-query-active-p
(reader).
(setf scoped-gpu-query-active-p)
(writer).
ssbo
(structure).
ssbo-data
(reader).
(setf ssbo-data)
(writer).
ssbo-id
(reader).
(setf ssbo-id)
(writer).
ssbo-index
(reader).
(setf ssbo-index)
(writer).
ssbo-owns-gpu-array
(reader).
(setf ssbo-owns-gpu-array)
(writer).
ssbo-p
(function).
stencil-mask
(type).
stencil-params
(structure).
tex-unit
(type).
texture
(structure).
texture-allocated-p
(reader).
(setf texture-allocated-p)
(writer).
texture-base-dimensions
(reader).
(setf texture-base-dimensions)
(writer).
texture-cache-id
(reader).
(setf texture-cache-id)
(writer).
texture-cubes-p
(reader).
(setf texture-cubes-p)
(writer).
texture-fixed-sample-locations-p
(reader).
(setf texture-fixed-sample-locations-p)
(writer).
texture-id
(reader).
(setf texture-id)
(writer).
texture-image-format
(reader).
(setf texture-image-format)
(writer).
texture-last-sampler-id
(reader).
(setf texture-last-sampler-id)
(writer).
texture-layer-count
(reader).
(setf texture-layer-count)
(writer).
texture-mipmap-levels
(reader).
(setf texture-mipmap-levels)
(writer).
texture-mutable-p
(reader).
(setf texture-mutable-p)
(writer).
texture-p
(function).
texture-samples
(reader).
(setf texture-samples)
(writer).
texture-type
(reader).
(setf texture-type)
(writer).
time-elapsed-query
(structure).
timestamp-query
(structure).
transform-feedback-primitives-written-query
(structure).
transform-feedback-stream
(structure).
ubo
(structure).
ubo-data
(reader).
(setf ubo-data)
(writer).
ubo-id
(reader).
(setf ubo-id)
(writer).
ubo-index
(reader).
(setf ubo-index)
(writer).
ubo-owns-gpu-array
(reader).
(setf ubo-owns-gpu-array)
(writer).
ubo-p
(function).
unknown-gl-id-p
(function).
vao-id
(type).
viewport
(generic function).
(setf viewport)
(generic function).
viewport
(structure).
viewport-p
(function).
%cffi-type->gl-enum
(function).
%decode-half-float
(function).
%encode-half-float
(function).
%make-buffer-stream
(function).
%sampler-context-id
(reader).
(setf %sampler-context-id)
(writer).
%valid-index-type-p
(function).
+gl-color-mask-bit-size+
(constant).
+unknown-clear-mask+
(constant).
any-samples-passed-conservative-query-active-p
(function).
(setf any-samples-passed-conservative-query-active-p)
(function).
any-samples-passed-conservative-query-cache-id
(reader).
any-samples-passed-conservative-query-enum
(reader).
any-samples-passed-conservative-query-id
(function).
any-samples-passed-conservative-query-p
(function).
any-samples-passed-query-active-p
(function).
(setf any-samples-passed-query-active-p)
(function).
any-samples-passed-query-cache-id
(reader).
any-samples-passed-query-enum
(reader).
any-samples-passed-query-id
(function).
any-samples-passed-query-p
(function).
att-p
(function).
buffer-texture-allocated-p
(function).
(setf buffer-texture-allocated-p)
(function).
buffer-texture-base-dimensions
(function).
(setf buffer-texture-base-dimensions)
(function).
buffer-texture-cache-id
(function).
(setf buffer-texture-cache-id)
(function).
buffer-texture-cubes-p
(function).
(setf buffer-texture-cubes-p)
(function).
buffer-texture-fixed-sample-locations-p
(function).
(setf buffer-texture-fixed-sample-locations-p)
(function).
buffer-texture-id
(function).
(setf buffer-texture-id)
(function).
buffer-texture-image-format
(function).
(setf buffer-texture-image-format)
(function).
buffer-texture-last-sampler-id
(function).
(setf buffer-texture-last-sampler-id)
(function).
buffer-texture-layer-count
(function).
(setf buffer-texture-layer-count)
(function).
buffer-texture-mipmap-levels
(function).
(setf buffer-texture-mipmap-levels)
(function).
buffer-texture-mutable-p
(function).
(setf buffer-texture-mutable-p)
(function).
buffer-texture-samples
(function).
(setf buffer-texture-samples)
(function).
buffer-texture-type
(function).
(setf buffer-texture-type)
(function).
clear-buffer-mask
(type).
compute-space-p
(function).
copy-any-samples-passed-conservative-query
(function).
copy-any-samples-passed-query
(function).
copy-att
(function).
copy-buffer-stream
(function).
copy-buffer-texture
(function).
copy-c-array
(function).
copy-compute-space
(function).
copy-empty-fbo-params
(function).
copy-fbo
(function).
copy-gpu-array
(function).
copy-gpu-array-bb
(function).
copy-gpu-array-t
(function).
copy-gpu-buffer
(function).
copy-gpu-fence
(function).
copy-gpu-query
(function).
copy-pixel-format
(function).
copy-primitives-generated-query
(function).
copy-render-buffer
(function).
copy-sampler
(function).
copy-sampler-id-box
(function).
copy-samples-passed-query
(function).
copy-scoped-gpu-query
(function).
copy-ssbo
(function).
copy-stencil-params
(function).
copy-texture
(function).
copy-time-elapsed-query
(function).
copy-timestamp-query
(function).
copy-transform-feedback-primitives-written-query
(function).
copy-transform-feedback-stream
(function).
copy-ubo
(function).
decode-half-float
(function).
draw-mode-symbol-group-id
(function).
elem-byte-size
(type).
empty-fbo-params-p
(function).
encode-half-float
(function).
gbuf-byte-size
(type).
gen-query-id
(function).
gpu-array-bb-dimensions
(function).
(setf gpu-array-bb-dimensions)
(function).
gpu-array-t-dimensions
(function).
(setf gpu-array-t-dimensions)
(function).
gpu-fence-p
(function).
gpu-query-p
(function).
make-gpu-query
(function).
make-scoped-gpu-query
(function).
primitive-keyword-to-enum-val
(function).
primitive-vert-length
(function).
primitives-generated-query-active-p
(function).
(setf primitives-generated-query-active-p)
(function).
primitives-generated-query-cache-id
(reader).
primitives-generated-query-enum
(reader).
primitives-generated-query-id
(function).
primitives-generated-query-p
(function).
sampler-id-box-p
(function).
samples-passed-query-active-p
(function).
(setf samples-passed-query-active-p)
(function).
samples-passed-query-cache-id
(reader).
samples-passed-query-enum
(reader).
samples-passed-query-id
(function).
samples-passed-query-p
(function).
scoped-gpu-query-cache-id
(function).
scoped-gpu-query-enum
(function).
scoped-gpu-query-id
(function).
scoped-gpu-query-p
(function).
set-patch-stream-primitive
(function).
stencil-params-p
(function).
time-elapsed-query-active-p
(function).
(setf time-elapsed-query-active-p)
(function).
time-elapsed-query-cache-id
(reader).
time-elapsed-query-enum
(reader).
time-elapsed-query-id
(function).
time-elapsed-query-p
(function).
timestamp-query-cache-id
(reader).
timestamp-query-enum
(reader).
timestamp-query-id
(function).
timestamp-query-p
(function).
transform-feedback-primitives-written-query-active-p
(function).
(setf transform-feedback-primitives-written-query-active-p)
(function).
transform-feedback-primitives-written-query-cache-id
(reader).
transform-feedback-primitives-written-query-enum
(reader).
transform-feedback-primitives-written-query-id
(function).
transform-feedback-primitives-written-query-p
(function).
transform-feedback-stream-p
(function).
cepl/core/types/checks.lisp
core/types/cepl-types.lisp
(file).
cepl
(system).
check-array-sizes-for-copy
(function).
check-array-types-for-copy
(function).
cepl/core/types/nulls-and-uninitialized.lisp
core/types/checks.lisp
(file).
cepl
(system).
+null-buffer-backed-gpu-array+
(special variable).
+null-fbo+
(special variable).
+null-gpu-buffer+
(special variable).
+null-texture+
(special variable).
+null-texture-backed-gpu-array+
(special variable).
+null-vao+
(special variable).
make-uninitialized-buffer-stream
(function).
make-uninitialized-fbo
(function).
make-uninitialized-gpu-array-bb
(function).
make-uninitialized-gpu-array-t
(function).
make-uninitialized-gpu-buffer
(function).
make-uninitialized-render-buffer
(function).
make-uninitialized-sampler
(function).
make-uninitialized-texture
(function).
+null-att+
(special variable).
+uninitialized-buffer-array+
(special variable).
cepl/core/context/gl-context.lisp
cepl
(system).
gl-context
(class).
has-feature
(function).
major-version
(reader method).
minor-version
(reader method).
version-float
(reader method).
draw-buffer-i
(generic function).
handle
(reader method).
cepl/core/context/types.lisp
core/context/gl-context.lisp
(file).
cepl
(system).
+max-context-count+
(constant).
cepl-context
(structure).
context-id
(function).
context-id
(type).
print-object
(method).
%cepl-context-array-of-bound-gpu-buffers
(reader).
(setf %cepl-context-array-of-bound-gpu-buffers)
(writer).
%cepl-context-array-of-bound-queries
(reader).
(setf %cepl-context-array-of-bound-queries)
(writer).
%cepl-context-array-of-bound-samplers
(reader).
(setf %cepl-context-array-of-bound-samplers)
(writer).
%cepl-context-array-of-gpu-buffers
(reader).
(setf %cepl-context-array-of-gpu-buffers)
(writer).
%cepl-context-array-of-ssbo-binding-ranges
(reader).
(setf %cepl-context-array-of-ssbo-binding-ranges)
(writer).
%cepl-context-array-of-ssbo-bindings-buffer-ids
(reader).
(setf %cepl-context-array-of-ssbo-bindings-buffer-ids)
(writer).
%cepl-context-array-of-textures
(reader).
(setf %cepl-context-array-of-textures)
(writer).
%cepl-context-array-of-transform-feedback-bindings-buffer-ids
(reader).
(setf %cepl-context-array-of-transform-feedback-bindings-buffer-ids)
(writer).
%cepl-context-array-of-ubo-binding-ranges
(reader).
(setf %cepl-context-array-of-ubo-binding-ranges)
(writer).
%cepl-context-array-of-ubo-bindings-buffer-ids
(reader).
(setf %cepl-context-array-of-ubo-bindings-buffer-ids)
(writer).
%cepl-context-bound-thread
(reader).
(setf %cepl-context-bound-thread)
(writer).
%cepl-context-clear-color
(reader).
(setf %cepl-context-clear-color)
(writer).
%cepl-context-color-masks
(reader).
(setf %cepl-context-color-masks)
(writer).
%cepl-context-cull-face
(reader).
(setf %cepl-context-cull-face)
(writer).
%cepl-context-current-blend-params
(reader).
(setf %cepl-context-current-blend-params)
(writer).
%cepl-context-current-draw-buffers-len
(reader).
(setf %cepl-context-current-draw-buffers-len)
(writer).
%cepl-context-current-draw-buffers-ptr
(reader).
(setf %cepl-context-current-draw-buffers-ptr)
(writer).
%cepl-context-current-program
(reader).
(setf %cepl-context-current-program)
(writer).
%cepl-context-current-scissor-viewports
(reader).
(setf %cepl-context-current-scissor-viewports)
(writer).
%cepl-context-current-stencil-mask-back
(reader).
(setf %cepl-context-current-stencil-mask-back)
(writer).
%cepl-context-current-stencil-mask-front
(reader).
(setf %cepl-context-current-stencil-mask-front)
(writer).
%cepl-context-current-stencil-params-back
(reader).
(setf %cepl-context-current-stencil-params-back)
(writer).
%cepl-context-current-stencil-params-front
(reader).
(setf %cepl-context-current-stencil-params-front)
(writer).
%cepl-context-current-surface
(reader).
(setf %cepl-context-current-surface)
(writer).
%cepl-context-current-tfs
(reader).
(setf %cepl-context-current-tfs)
(writer).
%cepl-context-current-viewport
(reader).
(setf %cepl-context-current-viewport)
(writer).
%cepl-context-default-framebuffer
(reader).
(setf %cepl-context-default-framebuffer)
(writer).
%cepl-context-default-viewport
(reader).
(setf %cepl-context-default-viewport)
(writer).
%cepl-context-depth-clamp
(reader).
(setf %cepl-context-depth-clamp)
(writer).
%cepl-context-depth-func
(reader).
(setf %cepl-context-depth-func)
(writer).
%cepl-context-depth-mask
(reader).
(setf %cepl-context-depth-mask)
(writer).
%cepl-context-depth-range
(reader).
(setf %cepl-context-depth-range)
(writer).
%cepl-context-draw-fbo-binding
(reader).
(setf %cepl-context-draw-fbo-binding)
(writer).
%cepl-context-fbos
(reader).
(setf %cepl-context-fbos)
(writer).
%cepl-context-front-face
(reader).
(setf %cepl-context-front-face)
(writer).
%cepl-context-gl-context
(reader).
(setf %cepl-context-gl-context)
(writer).
%cepl-context-gl-version-float
(reader).
(setf %cepl-context-gl-version-float)
(writer).
%cepl-context-id
(reader).
(setf %cepl-context-id)
(writer).
%cepl-context-instance-count
(reader).
(setf %cepl-context-instance-count)
(writer).
%cepl-context-max-draw-buffer-count
(reader).
(setf %cepl-context-max-draw-buffer-count)
(writer).
%cepl-context-pack-alignment
(reader).
(setf %cepl-context-pack-alignment)
(writer).
%cepl-context-read-fbo-binding
(reader).
(setf %cepl-context-read-fbo-binding)
(writer).
%cepl-context-requested-gl-version
(reader).
(setf %cepl-context-requested-gl-version)
(writer).
%cepl-context-shared
(reader).
(setf %cepl-context-shared)
(writer).
%cepl-context-surfaces
(reader).
(setf %cepl-context-surfaces)
(writer).
%cepl-context-uninitialized-resources
(reader).
(setf %cepl-context-uninitialized-resources)
(writer).
%cepl-context-unpack-alignment
(reader).
(setf %cepl-context-unpack-alignment)
(writer).
%cepl-context-vao-binding-id
(reader).
(setf %cepl-context-vao-binding-id)
(writer).
%make-cepl-context
(function).
%with-cepl-context-slots
(macro).
*free-context-ids*
(special variable).
*free-context-ids-lock*
(special variable).
cepl-context-p
(function).
copy-cepl-context
(function).
copy-unbound-cepl-context
(function).
discard-context-id
(function).
get-free-context-id
(function).
make-unbound-cepl-context
(function).
pending-surface
(class).
unbound-cepl-context
(structure).
unbound-cepl-context-consumed
(reader).
(setf unbound-cepl-context-consumed)
(writer).
unbound-cepl-context-gl-context
(reader).
(setf unbound-cepl-context-gl-context)
(writer).
unbound-cepl-context-p
(function).
unbound-cepl-context-requested-gl-version
(reader).
(setf unbound-cepl-context-requested-gl-version)
(writer).
unbound-cepl-context-shared
(reader).
(setf unbound-cepl-context-shared)
(writer).
unbound-cepl-context-surface
(reader).
(setf unbound-cepl-context-surface)
(writer).
unbound-cepl-context-surfaces
(reader).
(setf unbound-cepl-context-surfaces)
(writer).
cepl/core/context/cepl-context.lisp
core/context/types.lisp
(file).
cepl
(system).
can-bind-query-p
(function).
cepl-context
(compiler macro).
cepl-context
(function).
current-surface
(function).
draw-fbo-bound
(function).
(setf draw-fbo-bound)
(function).
fbo-bound
(function).
(setf fbo-bound)
(function).
force-bind-query
(function).
force-unbind-query
(function).
gl-initialized-p
(function).
gpu-buffer-bound
(compiler macro).
(setf gpu-buffer-bound)
(compiler macro).
gpu-buffer-bound
(function).
(setf gpu-buffer-bound)
(function).
make-context
(function).
make-context-shared-with-current-context
(function).
read-fbo-bound
(function).
(setf read-fbo-bound)
(function).
surfaces
(function).
vao-bound
(function).
(setf vao-bound)
(function).
version-float
(method).
with-cepl-context
(macro).
%inner-with-context
(function).
%register-ssbo-id
(function).
%register-ubo-id
(function).
%set-default-fbo-and-viewport
(function).
%set-draw-fbo-no-check
(function).
%set-fbo-bound
(function).
%set-fbo-no-check
(function).
%set-read-fbo-no-check
(function).
%with-context
(function).
*cepl-context*
(special variable).
*contexts*
(special variable).
*contexts-lock*
(special variable).
*primary-context*
(special variable).
assert-no-other-context-is-bound-to-thread
(function).
buffer-bound-static
(function).
buffer-kind->cache-index
(function).
buffer-kind->enum
(function).
complete-unbound-context
(function).
define-context-func
(macro).
ensure-array-of-ssbo-binding-ranges
(function).
ensure-array-of-ssbo-bindings-buffer-ids
(function).
ensure-array-of-ubo-binding-ranges
(function).
ensure-array-of-ubo-bindings-buffer-ids
(function).
ensure-cepl-compatible-setup
(function).
force-bind-vao
(function).
forget-fbo
(function).
forget-gpu-buffer
(function).
forget-texture
(function).
free-context
(function).
init-gl-context
(function).
l-identity
(macro).
make-context-internals
(function).
patch-uninitialized-context-with-version
(function).
primary-context
(function).
primary-thread
(function).
register-fbo
(function).
register-gpu-buffer
(function).
register-texture
(function).
set-buffer-bound-static
(function).
ssbo-bind-buffer-id-range
(function).
transform-feedback-bind-buffer-id-range
(function).
ubo-bind-buffer-id-range
(function).
cepl/core/context/surface.lisp
core/context/cepl-context.lisp
(file).
cepl
(system).
add-surface
(function).
make-surface-current
(function).
remove-surface
(function).
surface-dimensions
(function).
(setf surface-dimensions)
(function).
surface-fullscreen-p
(function).
(setf surface-fullscreen-p)
(function).
surface-resolution
(function).
(setf surface-resolution)
(function).
surface-title
(function).
(setf surface-title)
(function).
init-pending-surfaces
(function).
legacy-add-surface
(function).
make-surface-from-pending
(function).
cepl/core/context/delayed-resource-init.lisp
core/context/surface.lisp
(file).
cepl
(system).
*post-context-init*
(special variable).
copy-delayed
(function).
delay-initialization
(function).
delayed
(structure).
delayed-p
(function).
delayed-thunk
(reader).
(setf delayed-thunk)
(writer).
delayed-waiting-on
(reader).
(setf delayed-waiting-on)
(writer).
if-gl-context
(macro).
initialize-all-delay-items-in-context
(function).
initialize-all-delayed
(function).
initialize-delayed
(function).
make-delayed
(function).
cepl/core/context/version.lisp
cepl
(system).
split-float-version
(function).
get-best-glsl-version
(function).
cepl/core/blending/blending.lisp
core/context/version.lisp
(file).
cepl
(system).
blending-params
(function).
(setf blending-params)
(function).
destination-alpha
(function).
(setf destination-alpha)
(function).
destination-rgb
(function).
(setf destination-rgb)
(function).
mode-alpha
(function).
(setf mode-alpha)
(function).
mode-rgb
(function).
(setf mode-rgb)
(function).
per-attachment-blending-available-p
(compiler macro).
per-attachment-blending-available-p
(function).
source-alpha
(function).
(setf source-alpha)
(function).
source-rgb
(function).
(setf source-rgb)
(function).
with-blending
(macro).
%blend-fbo
(function).
%blend-i
(function).
%blend-using-params
(function).
%current-blend-params
(function).
%gen-attachment-blend
(function).
%loop-setting-per-attachment-blend-params
(function).
%per-attachment-blending-available-p
(function).
%set-current-blend-params
(function).
%set-current-blend-params-from-fbo
(function).
%with-blending
(macro).
blend-func-namep
(function).
check-version-for-per-attachment-params
(function).
current-blend-params
(compiler macro).
current-blend-params
(function).
loop-disabling-attachments
(function).
loop-enabling-attachments
(function).
set-current-blend-params
(compiler macro).
set-current-blend-params
(function).
set-current-blend-params-from-fbo
(compiler macro).
set-current-blend-params-from-fbo
(function).
with-blending-param-slots
(macro).
cepl/core/stencil/stencil.lisp
core/blending/blending.lisp
(file).
cepl
(system).
current-stencil-params
(compiler macro).
(setf current-stencil-params)
(compiler macro).
current-stencil-params
(function).
(setf current-stencil-params)
(function).
make-stencil-params
(function).
print-object
(method).
stencil-params-mask
(function).
stencil-params-on-dpfail
(function).
stencil-params-on-dppass
(function).
stencil-params-on-sfail
(function).
stencil-params-on-stencil-pass-depth-test-fail
(function).
stencil-params-on-stencil-pass-depth-test-pass
(function).
stencil-params-on-stencil-test-fail
(function).
stencil-params-test
(function).
stencil-params-value
(function).
%apply-stencil-params
(function).
%current-stencil-params
(function).
+valid-stencil-tests+
(constant).
stencil-operation-enum-to-func
(function).
stencil-operation-to-enum
(function).
stencil-test-enum-to-func
(function).
stencil-test-to-enum
(function).
cepl/core/stencil/mask.lisp
core/stencil/stencil.lisp
(file).
cepl
(system).
stencil-mask
(compiler macro).
(setf stencil-mask)
(compiler macro).
stencil-mask
(function).
(setf stencil-mask)
(function).
%apply-stencil-mask
(function).
%stencil-mask
(function).
cepl/core/scissor/scissor.lisp
core/stencil/mask.lisp
(file).
cepl
(system).
scissor-viewport
(compiler macro).
(setf scissor-viewport)
(compiler macro).
scissor-viewport
(function).
(setf scissor-viewport)
(function).
%scissor-viewport
(function).
%set-scissor-viewport
(function).
force-scissor-viewport
(function).
cepl/core/color/color.lisp
core/scissor/scissor.lisp
(file).
cepl
(system).
clear-color
(function).
(setf clear-color)
(function).
color-mask
(compiler macro).
(setf color-mask)
(compiler macro).
color-mask
(function).
(setf color-mask)
(function).
color-masks
(compiler macro).
(setf color-masks)
(compiler macro).
color-masks
(function).
(setf color-masks)
(function).
%color-mask
(function).
%color-masks
(function).
%set-color-mask
(function).
%set-color-masks
(function).
cepl/core/pixel-store/pixel-store.lisp
core/color/color.lisp
(file).
cepl
(system).
pack-alignment
(compiler macro).
(setf pack-alignment)
(compiler macro).
pack-alignment
(function).
(setf pack-alignment)
(function).
unpack-alignment
(compiler macro).
(setf unpack-alignment)
(compiler macro).
unpack-alignment
(function).
(setf unpack-alignment)
(function).
%pack-alignment
(function).
%set-pack-alignment
(function).
%set-unpack-alignment
(function).
%unpack-alignment
(function).
cepl/core/depth/depth.lisp
cepl
(system).
depth-clamp
(compiler macro).
(setf depth-clamp)
(compiler macro).
depth-clamp
(function).
(setf depth-clamp)
(function).
depth-mask
(compiler macro).
(setf depth-mask)
(compiler macro).
depth-mask
(function).
(setf depth-mask)
(function).
depth-range-vec2
(compiler macro).
(setf depth-range-vec2)
(compiler macro).
depth-range-vec2
(function).
(setf depth-range-vec2)
(function).
depth-test-function
(compiler macro).
(setf depth-test-function)
(compiler macro).
depth-test-function
(function).
(setf depth-test-function)
(function).
%depth-clamp
(function).
%depth-mask
(function).
%depth-range-vec2
(function).
%depth-test-function
(function).
%force-depth-test-function
(function).
%set-depth-clamp
(function).
%set-depth-mask
(function).
%set-depth-range-vec2
(function).
%set-depth-test-function
(function).
force-depth-test-function
(compiler macro).
force-depth-test-function
(function).
cepl/core/face/face.lisp
core/depth/depth.lisp
(file).
cepl
(system).
cull-face
(compiler macro).
(setf cull-face)
(compiler macro).
cull-face
(function).
(setf cull-face)
(function).
front-face
(compiler macro).
(setf front-face)
(compiler macro).
front-face
(function).
(setf front-face)
(function).
%cull-face
(function).
%front-face
(function).
%set-cull-face
(function).
%set-front-face
(function).
cepl/core/types/initalized-p.lisp
core/face/face.lisp
(file).
cepl
(system).
initialized-p
(method).
initialized-p
(method).
initialized-p
(method).
initialized-p
(method).
initialized-p
(method).
initialized-p
(method).
cepl/core/internals.lisp
core/types/initalized-p.lisp
(file).
cepl
(system).
1d-p
(function).
cffi-type->gl-type
(function).
clear-gl-context-cache
(generic function).
gl-assign-attrib-pointers
(generic function).
gl-type-size
(function).
maybe-cffi-type->gl-type
(function).
populate
(generic function).
symbol-names-cepl-structp
(generic function).
uploadable-lisp-seq
(type).
window-dimensions
(function).
window-resolution
(function).
surface-dimensions
(function).
surface-resolution
(function).
cepl/core/types/types.lisp
core/internals.lisp
(file).
cepl
(system).
element-byte-size
(generic function).
element-type
(generic function).
lisp-type->pixel-format
(generic function).
cepl/core/errors.lisp
core/types/types.lisp
(file).
cepl
(system).
adjust-gpu-array-mismatched-dimensions
(condition).
adjust-gpu-array-shared-buffer
(condition).
another-query-is-active
(condition).
attachment-viewport-empty-fbo
(condition).
attachments-with-different-sizes
(condition).
bad-c-array-element
(condition).
bad-type-for-buffer-stream-data
(condition).
bake-invalid-pipeling-arg
(condition).
bake-invalid-uniform-name
(condition).
bake-uniform-invalid-values
(condition).
buffer-backed-texture-establish-image-format
(condition).
buffer-backed-texture-invalid-args
(condition).
buffer-backed-texture-invalid-image-format
(condition).
buffer-backed-texture-invalid-samplers
(condition).
buffer-stream-has-invalid-primitive-for-stream
(condition).
c-array-total-size-type-error
(condition).
cannot-extract-stream-length-from-layouts
(condition).
cannot-keep-data-when-uploading
(condition).
compile-g-missing-requested-feature
(condition).
compute-pipeline-must-be-single-stage
(condition).
could-not-layout-type
(condition).
delete-multi-func-error
(condition).
dispatch-called-outside-of-map-g
(condition).
dont-define-space-to-self
(condition).
failed-to-test-compile-gpu-func
(condition).
fbo-binding-missing
(condition).
fbo-missing-outputs
(condition).
fbo-target-not-valid-constant
(condition).
func-keyed-pipeline-not-found
(condition).
functions-in-non-uniform-args
(condition).
gfun-invalid-arg-format
(condition).
gl-context-initialized-from-incorrect-thread
(condition).
glsl-geom-stage-no-out-layout
(condition).
glsl-version-conflict
(condition).
glsl-version-conflict-in-gpu-func
(condition).
gpu-array-from-buffer-missing-args
(condition).
gpu-array-from-id-missing-args
(condition).
gpu-func-spec-not-found
(condition).
gpu-func-symbol-name
(condition).
image-format->lisp-type-failed
(condition).
image-format->pixel-format-failed
(condition).
inconsistent-struct-layout
(condition).
incorrect-number-of-arrays-in-tfs
(condition).
index-layout-with-unknown-length
(condition).
index-on-buffer-stream-with-no-gpu-arrays
(condition).
index-on-buffer-stream-with-no-gpu-layouts
(condition).
invalid-args-in-make-tfs
(condition).
invalid-attachments-for-empty-fbo
(condition).
invalid-compose-gpipe-form
(condition).
invalid-context-for-assert-gpipe
(condition).
invalid-context-for-assert-options
(condition).
invalid-cube-fbo-args
(condition).
invalid-data-layout-specifier
(condition).
invalid-defpipeline-options
(condition).
invalid-empty-fbo-declaration
(condition).
invalid-gpu-arrays-layout
(condition).
invalid-gpu-buffer-layout
(condition).
invalid-gpu-function-args
(condition).
invalid-inline-glsl-stage-arg-layout
(condition).
invalid-keywords-for-shader-gpipe-args
(condition).
invalid-layout-for-inargs
(condition).
invalid-layout-for-uniform
(condition).
invalid-options-for-texture
(condition).
invalid-sampler-wrap-value
(condition).
invalid-shader-gpipe-form
(condition).
invalid-shader-gpipe-stage-keys
(condition).
invalid-sizes-in-make-tfs
(condition).
invalid-stage-for-single-stage-pipeline
(condition).
invalid-stream-layout
(condition).
lisp-type->image-format-failed
(condition).
make-arrays-layout-count-mismatch
(condition).
make-arrays-layout-mismatch
(condition).
make-gpu-array-from-c-array-mismatched-dimensions
(condition).
make-gpu-buffer-from-id-clashing-keys
(condition).
make-tex-array-not-match-type
(condition).
make-tex-array-not-match-type2
(condition).
make-tex-no-content-no-type
(condition).
mapping-over-partial-pipeline
(condition).
max-context-count-reached
(condition).
mixed-pipelines-in-with-tb
(condition).
multi-func-error
(condition).
nested-with-transform-feedback
(condition).
no-named-stages
(condition).
non-consecutive-feedback-groups
(condition).
not-a-gpu-lambda
(condition).
not-enough-args-for-implicit-gpipe-stages
(condition).
one-stage-non-explicit
(condition).
partial-lambda-pipeline
(condition).
pipeline-invalid-null-stage
(condition).
pipeline-recompile-in-tfb-scope
(condition).
pixel-format->image-format-failed
(condition).
pixel-format-in-bb-texture
(condition).
pull*-g-not-enabled
(condition).
pull-g-not-cached
(condition).
query-is-active-bug
(condition).
query-is-already-active
(condition).
query-not-active
(condition).
quote-in-buffer-layout
(condition).
quote-symbol-found-in-fbo-dimensions
(condition).
shader-pipeline-non-null-args
(condition).
shared-context-created-from-incorrect-thread
(condition).
stage-in-context-only-valid-for-glsl-stages
(condition).
stage-not-found
(condition).
stage-not-valid-for-function-restriction
(condition).
state-restore-limitation-blending
(condition).
state-restore-limitation-transform-feedback
(condition).
struct-in-glsl-stage-args
(condition).
symbol-stage-designator
(condition).
symbol-stage-designators
(condition).
texture-dimensions-lequal-zero
(condition).
tfs-setf-arrays-whilst-bound
(condition).
tried-to-make-context-on-thread-that-already-has-one
(condition).
unknown-stage-kind
(condition).
unknown-symbols-in-pipeline-context
(condition).
gl-version-too-low-for-empty-fbos
(condition).
invalid-fbo-args
(condition).
state-restore-limitation-queries
(condition).
cepl/core/viewports/viewport.lisp
core/errors.lisp
(file).
cepl
(system).
current-viewport
(function).
dimensions
(method).
(setf dimensions)
(method).
origin
(method).
(setf origin)
(method).
resolution
(method).
(setf resolution)
(method).
viewport-dimensions
(function).
(setf viewport-dimensions)
(function).
viewport-eql
(function).
viewport-origin
(function).
(setf viewport-origin)
(function).
viewport-origin-i
(function).
(setf viewport-origin-i)
(function).
viewport-origin-x
(function).
viewport-origin-y
(function).
viewport-params-to-vec4
(function).
viewport-resolution
(function).
(setf viewport-resolution)
(function).
viewport-resolution-x
(function).
viewport-resolution-y
(function).
with-fbo-viewport
(macro).
with-viewport
(macro).
%current-viewport
(function).
%set-current-viewport
(function).
%set-resolution
(function).
%update-default-framebuffer-dimensions
(function).
cepl/core/types/image-format.lisp
core/viewports/viewport.lisp
(file).
cepl
(system).
*bptc-compressed-formats*
(special variable).
*color-renderable-formats*
(special variable).
*depth-formats*
(special variable).
*depth-stencil-formats*
(special variable).
*floating-point-formats*
(special variable).
*image-formats*
(special variable).
*red/green-compressed-formats*
(special variable).
*regular-color-formats*
(special variable).
*s3tc/dxt-compessed-formats*
(special variable).
*signed-integral-formats*
(special variable).
*signed-normalized-integer-formats*
(special variable).
*special-color-formats*
(special variable).
*srgb-color-formats*
(special variable).
*stencil-formats*
(special variable).
*unsigned-integral-formats*
(special variable).
*unsigned-normalized-integer-formats*
(special variable).
*valid-image-formats-for-buffer-backed-texture*
(special variable).
color-renderable-formatp
(function).
depth-formatp
(function).
depth-stencil-formatp
(function).
image-formatp
(function).
stencil-formatp
(function).
valid-image-format-for-buffer-backed-texturep
(function).
cepl/core/types/pixel-format.lisp
core/types/image-format.lisp
(file).
cepl
(system).
image-format->lisp-type
(function).
image-format->pixel-format
(function).
lisp-type->image-format
(function).
lisp-type->pixel-format
(method).
pixel-format->image-format
(function).
pixel-format->lisp-type
(function).
+gl-integral-pixel-types+
(constant).
+gl-pixel-to-internal-map+
(constant).
+valid-pixel-components+
(constant).
+valid-pixel-packed-sizes+
(constant).
+valid-pixel-types+
(constant).
compile-pixel-format
(function).
describe-image-format
(function).
describe-pixel-format
(function).
get-component-length
(function).
pixel-format!
(function).
process-pixel-format
(function).
valid-pixel-format-p
(function).
cepl/core/types/cffi-extra-primitive-types.lisp
core/types/pixel-format.lisp
(file).
cepl
(system).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
lisp-type->pixel-format
(method).
cepl/core/types/cffi-helpers.lisp
cepl
(system).
double-from-foreign
(function).
double-to-foreign
(function).
float-from-foreign
(function).
float-to-foreign
(function).
get-typed-from-foreign
(generic function).
get-typed-to-foreign
(generic function).
half-float-from-foreign
(function).
half-float-to-foreign
(function).
half-vec2-from-foreign
(function).
half-vec2-to-foreign
(function).
half-vec3-from-foreign
(function).
half-vec3-to-foreign
(function).
half-vec4-from-foreign
(function).
half-vec4-to-foreign
(function).
int-from-foreign
(function).
int-to-foreign
(function).
int32-from-foreign
(function).
int32-to-foreign
(function).
int8-from-foreign
(function).
int8-to-foreign
(function).
int8-vec2-from-foreign
(function).
int8-vec2-to-foreign
(function).
int8-vec3-from-foreign
(function).
int8-vec3-to-foreign
(function).
int8-vec4-from-foreign
(function).
int8-vec4-to-foreign
(function).
ivec2-from-foreign
(function).
ivec2-to-foreign
(function).
ivec3-from-foreign
(function).
ivec3-to-foreign
(function).
ivec4-from-foreign
(function).
ivec4-to-foreign
(function).
mat2-from-foreign
(function).
mat2-to-foreign
(function).
mat2x2-from-foreign
(function).
mat2x2-to-foreign
(function).
mat2x3-from-foreign
(function).
mat2x3-to-foreign
(function).
mat2x4-from-foreign
(function).
mat2x4-to-foreign
(function).
mat3-from-foreign
(function).
mat3-to-foreign
(function).
mat3x2-from-foreign
(function).
mat3x2-to-foreign
(function).
mat3x3-from-foreign
(function).
mat3x3-to-foreign
(function).
mat3x4-from-foreign
(function).
mat3x4-to-foreign
(function).
mat4-from-foreign
(function).
mat4-to-foreign
(function).
mat4x2-from-foreign
(function).
mat4x2-to-foreign
(function).
mat4x3-from-foreign
(function).
mat4x3-to-foreign
(function).
mat4x4-from-foreign
(function).
mat4x4-to-foreign
(function).
short-from-foreign
(function).
short-to-foreign
(function).
uint-from-foreign
(function).
uint-to-foreign
(function).
uint32-from-foreign
(function).
uint32-to-foreign
(function).
uint8-from-foreign
(function).
uint8-to-foreign
(function).
uint8-vec2-from-foreign
(function).
uint8-vec2-to-foreign
(function).
uint8-vec3-from-foreign
(function).
uint8-vec3-to-foreign
(function).
uint8-vec4-from-foreign
(function).
uint8-vec4-to-foreign
(function).
ushort-from-foreign
(function).
ushort-to-foreign
(function).
uvec2-from-foreign
(function).
uvec2-to-foreign
(function).
uvec3-from-foreign
(function).
uvec3-to-foreign
(function).
uvec4-from-foreign
(function).
uvec4-to-foreign
(function).
vec2-from-foreign
(function).
vec2-to-foreign
(function).
vec3-from-foreign
(function).
vec3-to-foreign
(function).
vec4-from-foreign
(function).
vec4-to-foreign
(function).
%memcpy
(function).
make-typed-from-foreign
(macro).
cepl/core/c-arrays/def.lisp
core/types/cffi-helpers.lisp
(file).
cepl
(system).
dimensions
(method).
element-byte-size
(method).
element-type
(method).
free
(method).
free-c-array
(function).
pointer
(generic function).
print-mem
(method).
print-object
(method).
blank-c-array-object
(function).
c-array-rank
(function).
cepl/core/c-arrays/aref-c.lisp
core/c-arrays/def.lisp
(file).
cepl
(system).
aref-c
(compiler macro).
(setf aref-c)
(compiler macro).
aref-c
(function).
(setf aref-c)
(function).
aref-c*
(function).
(setf aref-c*)
(function).
ptr-index
(compiler macro).
ptr-index
(function).
row-major-aref-c
(function).
(setf row-major-aref-c)
(function).
aref-c*-1d
(function).
(setf aref-c*-1d)
(function).
aref-c*-2d
(function).
(setf aref-c*-2d)
(function).
aref-c*-3d
(function).
(setf aref-c*-3d)
(function).
aref-c*-4d
(function).
(setf aref-c*-4d)
(function).
c-array-4d-limit
(condition).
c-array-4d-limit-aref
(condition).
ptr-index-1d
(function).
ptr-index-2d
(function).
ptr-index-3d
(function).
ptr-index-4d
(function).
cepl/core/c-arrays/populate.lisp
core/c-arrays/aref-c.lisp
(file).
cepl
(system).
copy-lisp-data-to-c-array
(function).
%gl-calc-byte-size
(function).
gl-calc-byte-size
(function).
rm-index-to-coords
(function).
validate-dimensions
(function).
cepl/core/c-arrays/make.lisp
core/c-arrays/populate.lisp
(file).
cepl
(system).
clone-c-array
(function).
make-c-array
(function).
make-c-array-from-pointer
(function).
with-c-array-freed
(macro).
with-c-arrays-freed
(macro).
check-c-array-dimensions
(function).
check-single-element-not-list
(function).
find-compatible-c-array-type
(function).
find-suitable-type
(function).
first-elem
(function).
forgiving-list-dimension-guess
(function).
gen-c-array-sizes
(function).
scan-array-for-type
(function).
scan-for-type
(function).
scan-list-for-type
(function).
update-data
(function).
cepl/core/c-arrays/map.lisp
core/c-arrays/make.lisp
(file).
cepl
(system).
across-c-ptr
(function).
map-c
(function).
map-c-into
(function).
%across-c-1d
(function).
%across-c-2d
(function).
%across-c-3d
(function).
%across-c-4d
(function).
%across-c-ptr-1d
(function).
%across-c-ptr-2d
(function).
%across-c-ptr-3d
(function).
%across-c-ptr-4d
(function).
across-c
(function).
cepl/core/c-arrays/rest.lisp
core/c-arrays/map.lisp
(file).
cepl
(system).
c-arr-to-lisp-struct-elems
(function).
c-arr-to-lisp-val-elems
(function).
cepl/core/types/layout.lisp
core/c-arrays/rest.lisp
(file).
cepl
(system).
calc-block-layout
(function).
calc-struct-layout-from-name-type-pairs
(function).
layout-aligned-offset
(reader method).
layout-base-alignment
(reader method).
layout-base-offset
(reader method).
layout-element-layout
(reader method).
layout-machine-unit-size
(reader method).
layout-members
(reader method).
layout-name
(reader method).
layout-varjo-type
(reader method).
make-load-form
(method).
print-object
(method).
std-140
(class).
std-430
(class).
*valid-layout-specifiers*
(special variable).
calc-aligned-offset
(function).
calc-array-of-col-mat-layout
(function).
calc-array-of-scalar-or-vectors-layout
(function).
calc-array-of-structs-layout
(function).
calc-base-offset
(function).
calc-col-mat-layout
(function).
calc-layout
(function).
calc-scalar-layout
(function).
calc-struct-layout
(function).
calc-struct-member-layout
(function).
calc-vector-base-alignment
(function).
calc-vector-layout
(function).
gl-layout
(class).
machine-unit-size
(function).
process-layout-specifier
(function).
round-to-next-multiple
(function).
scalar-type-p
(function).
cepl/core/types/structs.lisp
core/types/layout.lisp
(file).
cepl
(system).
defstruct-g
(macro).
free
(method).
make-load-form
(method).
make-load-form
(method).
pointer
(method).
v-type-of
(method).
*struct-slot-defs*
(special variable).
+cpu->gpu-vec-mappings+
(constant).
assert-layout-consistent
(function).
base-gstruct-wrapper
(structure).
base-gstruct-wrapper-p
(function).
base-gstruct-wrapper-pointer
(reader).
(setf base-gstruct-wrapper-pointer)
(writer).
buffer-stream-compatible-typep
(function).
cepl-struct-definition
(class).
expand-mappable-slot-to-layout
(function).
expand-slot-to-layout
(function).
expand-unmappable-slot-to-layout
(function).
format-array-slot-for-cstruct
(function).
format-slot-for-cstruct
(function).
format-slot-for-varjo
(function).
g-struct-info
(function).
(setf g-struct-info)
(function).
gl-struct-slot
(class).
make-array-slot-getter
(function).
make-array-slot-setter
(function).
make-base-gstruct-wrapper
(function).
make-eprim-slot-setter
(function).
make-instance-wrapper-def
(function).
make-make-struct
(function).
make-populate
(function).
make-pull-push
(function).
make-slot-getter
(function).
make-slot-setter
(function).
make-struct-attrib-assigner
(function).
make-struct-pixel-format
(function).
make-t-slot-getter
(function).
make-t-slot-setter
(function).
make-varjo-struct-def
(function).
make-varjo-struct-lookup
(function).
nest-simple-loops
(function).
normalize-slot-description
(function).
potential-struct-layout
(function).
s-arrayp
(generic function).
s-def
(generic function).
s-dimensions
(reader method).
s-element-type
(reader method).
s-foreign-name
(reader method).
s-layout
(reader method).
s-layout
(reader method).
s-name
(reader method).
s-name
(reader method).
s-normalizedp
(reader method).
s-parent-ffi-name
(reader method).
s-reader
(reader method).
s-slot-args
(generic function).
s-slots
(reader method).
s-type
(reader method).
s-uses-method-p
(reader method).
s-writer
(reader method).
validate-defstruct-g-form
(function).
validate-varjo-type-spec
(function).
cepl/core/gpu-buffers/gpu-buffers.lisp
core/types/structs.lisp
(file).
cepl
(system).
buffer-data
(function).
buffer-data-raw
(function).
buffer-reserve-block
(function).
free
(method).
free-buffer
(function).
free-buffers
(function).
make-gpu-buffer
(function).
make-gpu-buffer-from-id
(function).
multi-buffer-data
(function).
print-object
(method).
reallocate-buffer
(function).
blank-buffer-object
(function).
buffer-reserve-block-raw
(function).
buffer-reserve-blocks-from-sizes
(function).
buffer-set-arrays-from-sizes
(function).
free-gpu-buffer
(function).
free-gpu-buffers
(function).
gen-buffer
(function).
gpu-array-sub-data
(function).
init-gpu-buffer-now
(function).
init-gpu-buffer-now-with-layouts
(function).
list-of-c-arrays-p
(function).
process-layout
(function).
cepl/core/gpu-arrays/buffer-backed.lisp
cepl
(system).
adjust-gpu-array
(function).
dimensions
(method).
element-type
(method).
free
(method).
free-gpu-array
(generic function).
gpu-array-access-style
(function).
gpu-array-buffer
(function).
gpu-array-buffer-id
(function).
make-gpu-array
(generic function).
make-gpu-array-from-buffer
(function).
make-gpu-array-from-buffer-id
(function).
make-gpu-arrays
(function).
make-gpu-arrays-from-buffer
(function).
make-gpu-arrays-from-buffer-id
(function).
print-object
(method).
subseq-g
(function).
subseq-g-raw
(function).
blank-gpu-array-b-object
(function).
free-gpu-array-bb
(function).
init-gpu-array-from-c-array
(function).
init-gpu-array-no-data
(function).
init-gpu-arrays-from-c-arrays
(function).
make-gpu-array-share-data
(function).
process-layout
(function).
cepl/core/vaos/vaos.lisp
cepl
(system).
free-vao
(function).
free-vaos
(function).
make-vao
(function).
make-vao-from-id
(function).
with-vao-bound
(macro).
cons-aware-1d-p
(function).
preprocess-gpu-arrays-for-vao
(function).
suitable-array-for-index-p
(function).
cepl/core/streams/buffer-streams.lisp
core/vaos/vaos.lisp
(file).
cepl
(system).
free
(method).
free-buffer-stream
(function).
make-buffer-stream
(function).
make-buffer-stream-from-id-and-layouts
(function).
make-buffer-stream-sharing
(function).
print-object
(method).
blank-buffer-stream
(function).
init-buffer-stream-from-id
(function).
init-buffer-stream-from-shared
(function).
make-buffer-stream-from-id
(function).
process-stream-layout
(function).
cepl/core/transform-feedback/transform-feedback.lisp
core/streams/buffer-streams.lisp
(file).
cepl
(system).
make-transform-feedback-stream
(function).
print-object
(method).
transform-feedback-stream-arrays
(function).
(setf transform-feedback-stream-arrays)
(function).
with-transform-feedback
(macro).
%bind-tfs-arrays
(function).
%unbind-tfs-arrays
(function).
cepl/core/pipelines/compile-context.lisp
cepl
(system).
compile-context
(structure).
make-load-form
(method).
%copy-compile-context
(function).
compile-context-p
(function).
compile-context-primitive
(reader).
(setf compile-context-primitive)
(writer).
compile-context-stage
(reader).
(setf compile-context-stage)
(writer).
compile-context-static-p
(reader).
(setf compile-context-static-p)
(writer).
compile-context-versions
(reader).
(setf compile-context-versions)
(writer).
copy-compile-context
(function).
make-compile-context
(function).
parse-compile-context
(function).
cepl/core/pipelines/generics.lisp
cepl
(system).
delete-gpu-function
(generic function).
%funcs-this-func-uses
(generic function).
%gpu-function
(generic function).
%recompile-gpu-function-and-pipelines
(generic function).
%subscribe-to-gpu-func
(generic function).
%unsubscibe-from-all
(generic function).
func-key
(generic function).
func-key->name
(generic function).
func-key=
(generic function).
funcs-that-use-this-func
(generic function).
(setf funcs-that-use-this-func)
(generic function).
gen-cleanup-block
(generic function).
gen-uploaders-block
(generic function).
gpu-func-spec
(generic function).
(setf gpu-func-spec)
(generic function).
lambda-g->func-spec
(generic function).
pipeline-stage-pairs
(generic function).
pipeline-stages
(generic function).
pipelines-that-use-this-as-a-stage
(generic function).
recompile-pipelines-that-use-this-as-a-stage
(generic function).
spec->func-key
(generic function).
unpack-arrayd-assigner
(generic function).
cepl/core/pipelines/uniforms.lisp
core/pipelines/generics.lisp
(file).
cepl
(system).
get-foreign-uniform-function
(function).
get-foreign-uniform-function-name
(function).
get-uniform-function
(function).
get-uniform-function-name
(function).
uniform-1b
(function).
uniform-1f
(function).
uniform-1i
(function).
uniform-2f
(function).
uniform-2i
(function).
uniform-3f
(function).
uniform-3i
(function).
uniform-4f
(function).
uniform-4i
(function).
uniform-matrix-2ft
(function).
uniform-matrix-2fvt
(function).
uniform-matrix-3ft
(function).
uniform-matrix-3fvt
(function).
uniform-matrix-4ft
(function).
uniform-matrix-4fvt
(function).
uniform-sampler
(function).
cepl/core/pipelines/gpu-macros.lisp
core/pipelines/uniforms.lisp
(file).
cepl
(system).
define-compiler-macro-g
(macro).
defmacro-g
(macro).
cepl/core/pipelines/gpu-pipeline-base.lisp
core/pipelines/gpu-macros.lisp
(file).
cepl
(system).
gpu-function
(macro).
gpu-functions
(function).
make-load-form
(method).
make-load-form
(method).
name
(reader method).
print-object
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
with-instances
(macro).
%funcs-this-func-uses
(method).
%gen-pass-key
(function).
%gpu-function
(method).
%gpu-function
(method).
%gpu-function
(method).
%make-glsl-stage-spec
(function).
%make-gpu-func-spec
(function).
%pull-spec-common
(function).
%unsubscibe-from-all
(method).
%unsubscibe-from-all
(method).
*cache-last-compile-result*
(special variable).
*dependent-gpu-functions*
(special variable).
*dependent-gpu-functions-lock*
(special variable).
*gpu-func-diff-tag*
(special variable).
*gpu-func-specs*
(special variable).
*gpu-func-specs-lock*
(special variable).
*gpu-pipeline-specs*
(special variable).
*gpu-pipeline-specs-lock*
(special variable).
*map-of-pipeline-names-to-gl-ids*
(special variable).
*map-of-pipeline-names-to-gl-ids-lock*
(special variable).
*suppress-upload-message*
(special variable).
add-compile-results-to-pipeline
(function).
clone-stage-spec
(function).
delete-func-spec
(generic function).
func-key
(method).
func-key
(method).
func-key
(method).
func-key
(class).
func-key->name
(method).
func-key=
(method).
func-key=
(method).
func-key=
(method).
func-key=
(method).
funcs-that-use-this-func
(method).
funcs-that-use-this-func
(method).
(setf funcs-that-use-this-func)
(method).
(setf funcs-that-use-this-func)
(method).
funcs-these-funcs-use
(function).
funcs-this-func-uses
(function).
function-keyed-pipeline
(function).
(setf function-keyed-pipeline)
(function).
get-gpu-func-spec-tag
(function).
glsl-stage-spec
(class).
gpu-func-spec
(method).
gpu-func-spec
(method).
gpu-func-spec
(method).
(setf gpu-func-spec)
(method).
(setf gpu-func-spec)
(method).
gpu-func-spec
(class).
gpu-func-specs
(function).
in-args
(reader method).
interactive-pick-gpu-function
(function).
lambda-pipeline-spec
(class).
make-lambda-pipeline-spec
(function).
make-pipeline-spec
(function).
new-func-key
(function).
null-func-spec
(function).
pipeline-spec
(function).
(setf pipeline-spec)
(function).
pipeline-spec
(class).
pipeline-spec-base
(class).
pipeline-stage-pairs
(method).
pipeline-stages
(method).
pull-g-soft-multi-func-message
(function).
read-gpu-function-choice
(function).
recompile-name
(function).
recompile-pipelines-that-use-this-as-a-stage
(method).
request-program-id-for
(function).
spec->func-key
(method).
spec->func-key
(method).
spec-changed-p
(function).
update-pipeline-spec
(function).
update-specs-with-missing-dependencies
(function).
varjo->gl-stage-names
(function).
with-glsl-stage-spec
(macro).
with-gpu-func-spec
(macro).
cepl/core/pipelines/pipeline-validation.lisp
cepl
(system).
assendingp
(function).
assert-valid-gpipe-form
(function).
assert-valid-gpipe-shader-implicit-form
(function).
assert-valid-gpu-function-args
(function).
assert-valid-stage-specs
(function).
find-invalid-defpipeline-options
(function).
function-formp
(function).
stage-formp
(function).
typed-defp
(function).
xsymbolp
(function).
cepl/core/pipelines/funcall-g.lisp
cepl
(system).
funcall-g
(function).
dispatch-dyn-gpu-call
(function).
dyn-code-to-pipeline-and-stages
(function).
find-gpu-func-spec-by-name-and-vals
(function).
gen-vertex-stage-code-calling-func
(function).
get-dyn-return-types-from-stage
(function).
split-args-for-dyn-call
(function).
to-cepl-type-spec
(function).
vs-spliced-values
(function).
cepl/core/pipelines/gpu-functions.lisp
core/pipelines/funcall-g.lisp
(file).
cepl
(system).
defun-g
(macro).
defun-g-equiv
(macro).
delete-gpu-function
(method).
delete-gpu-function
(method).
delete-gpu-function
(method).
delete-gpu-function
(method).
%def-gpu-function
(function).
%recompile-gpu-function-and-pipelines
(method).
%recompile-gpu-function-and-pipelines
(method).
%subscribe-to-gpu-func
(method).
%test-&-process-spec
(function).
%update-glsl-stage-data
(function).
%update-gpu-function-data
(function).
%varjo-compile-as-pipeline
(function).
*print-gpu-function-subscriptions*
(special variable).
*warn-when-cant-test-compile*
(special variable).
add-layout-to-struct-uniforms
(function).
aggregate-uniforms
(function).
assert-arg-format
(function).
complete-single-stage-pipeline
(function).
defun-g-common
(function).
get-func-as-stage-code
(function).
get-possible-designators-for-name
(function).
get-stage-key
(function).
guess-a-varjo-array-type
(function).
guess-a-varjo-bool-type
(function).
guess-a-varjo-float-type
(function).
guess-a-varjo-integer-type
(function).
guess-a-varjo-number-type
(function).
guess-a-varjo-type
(function).
infer-implicit-uniform-type
(generic function).
interactive-delete-gpu-function
(function).
lowest-suitable-glsl-version
(function).
make-stand-in-lisp-func
(function).
massage-compute-stage-name
(function).
parse-gpipe-args
(function).
parse-gpipe-args-explicit
(function).
parse-gpipe-args-implicit
(function).
parsed-gpipe-args->v-translate-args
(function).
try-guessing-a-varjo-type-for-symbol
(function).
try-injecting-a-constant
(function).
validate-stage-names
(function).
cepl/core/pipelines/glsl-stages.lisp
cepl
(system).
def-glsl-stage
(macro).
%make-stand-in-lisp-func-for-glsl-stage
(function).
assert-glsl-arg-format
(function).
assert-glsl-stage-types
(function).
get-body-string
(function).
get-stage-kind-from-context
(function).
process-glsl-arg
(function).
type-contains-structs
(function).
cepl/core/pipelines/mapg-context.lisp
core/pipelines/glsl-stages.lisp
(file).
cepl
(system).
*pipeline-body-context-var*
(special variable).
mapg-context-p
(function).
cepl/core/pipelines/uniform-assigners-generation.lisp
core/pipelines/mapg-context.lisp
(file).
cepl
(system).
+unknown-uniform-int-id+
(constant).
+unknown-uniform-uint-id+
(constant).
always-uploadp
(reader method).
(setf always-uploadp)
(writer method).
arg-name
(reader method).
(setf arg-name)
(writer method).
assigner
(class).
assigner-body
(reader method).
(setf assigner-body)
(writer method).
assigner-index
(reader method).
(setf assigner-index)
(writer method).
assigner-let-form
(class).
assigner-name
(reader method).
(setf assigner-name)
(writer method).
assigner-type
(reader method).
(setf assigner-type)
(writer method).
cleanup
(reader method).
(setf cleanup)
(writer method).
copy-uidx
(function).
dispatch-make-assigner
(function).
gen-cleanup-block
(method).
gen-uploaders-block
(method).
get-shader-storage-block-index
(function).
get-uniform-block-index
(function).
let-forms
(reader method).
(setf let-forms)
(writer method).
local-arg-name
(reader method).
(setf local-arg-name)
(writer method).
make-arg-assigners
(function).
make-array-assigners
(function).
make-assigner
(function).
make-assigner-let
(function).
make-sampler-assigner
(function).
make-simple-assigner
(function).
make-ssbo-assigner
(function).
make-struct-assigners
(function).
make-ubo-assigner
(function).
make-uidx
(function).
merge-into-assigner
(function).
pointer-arg
(reader method).
(setf pointer-arg)
(writer method).
uidx
(structure).
uidx-int
(reader).
(setf uidx-int)
(writer).
uidx-p
(function).
uidx-uint
(reader).
(setf uidx-uint)
(writer).
unpack-arrayd-assigner
(method).
uploaders
(reader method).
(setf uploaders)
(writer method).
cepl/core/pipelines/programs.lisp
cepl
(system).
force-use-program
(function).
program-attrib-count
(function).
program-attributes
(function).
program-uniform-count
(function).
program-uniforms
(function).
use-program
(function).
cepl/core/pipelines/multi-draw.lisp
core/pipelines/programs.lisp
(file).
cepl
(system).
arrays-indirect-command
(structure).
arrays-indirect-command-base-instance
(function).
(setf arrays-indirect-command-base-instance)
(function).
arrays-indirect-command-count
(function).
(setf arrays-indirect-command-count)
(function).
arrays-indirect-command-first
(function).
(setf arrays-indirect-command-first)
(function).
arrays-indirect-command-instance-count
(function).
(setf arrays-indirect-command-instance-count)
(function).
elements-indirect-command
(structure).
elements-indirect-command-base-instance
(function).
(setf elements-indirect-command-base-instance)
(function).
elements-indirect-command-base-vertex
(function).
(setf elements-indirect-command-base-vertex)
(function).
elements-indirect-command-count
(function).
(setf elements-indirect-command-count)
(function).
elements-indirect-command-first-index
(function).
(setf elements-indirect-command-first-index)
(function).
elements-indirect-command-instance-count
(function).
(setf elements-indirect-command-instance-count)
(function).
expand-from-foreign
(method).
expand-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
lisp-type->pixel-format
(method).
make-draw-command-c-array
(function).
make-draw-command-gpu-array
(function).
multi-map-g
(macro).
populate
(method).
populate
(method).
print-object
(method).
print-object
(method).
pull-g
(method).
pull-g
(method).
pull1-g
(method).
pull1-g
(method).
push-g
(method).
push-g
(method).
set-draw-command
(function).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
type->type-spec
(method).
type->type-spec
(method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-slots
(reader method).
v-slots
(reader method).
arrays-indirect-command-p
(function).
arrays-indirect-command-pointer
(function).
(setf arrays-indirect-command-pointer)
(function).
cepl.pipelines.arrays-indirect-command.cffi-ct-type
(class).
cepl.pipelines.arrays-indirect-command.foreign-tclass
(class).
cepl.pipelines.arrays-indirect-command.from-foreign
(function).
cepl.pipelines.arrays-indirect-command.make
(function).
cepl.pipelines.arrays-indirect-command.to-foreign
(function).
cepl.pipelines.elements-indirect-command.cffi-ct-type
(class).
cepl.pipelines.elements-indirect-command.foreign-tclass
(class).
cepl.pipelines.elements-indirect-command.from-foreign
(function).
cepl.pipelines.elements-indirect-command.make
(function).
cepl.pipelines.elements-indirect-command.to-foreign
(function).
elements-indirect-command-p
(function).
elements-indirect-command-pointer
(function).
(setf elements-indirect-command-pointer)
(function).
make-arrays-indirect-command
(function).
make-elements-indirect-command
(function).
populate-arrays-indirect-command
(function).
populate-elements-indirect-command
(function).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
v_arrays-indirect-command
(class).
v_elements-indirect-command
(class).
cepl/core/pipelines/defpipeline.lisp
core/pipelines/multi-draw.lisp
(file).
cepl
(system).
defpipeline-g
(macro).
free
(method).
free
(method).
free-pipeline
(function).
%compile-closure
(function).
%compile-link-and-upload
(function).
%create-implicit-uniform-uploader
(function).
%def-complete-pipeline
(function).
%def-partial-pipeline
(function).
%defpipeline-gfuncs
(function).
%gl-make-shader-from-varjo
(function).
%implicit-uniforms-dont-have-type-mismatches
(function).
%post-init
(function).
*init-pipeline-lock*
(special variable).
calc-feedback-style-and-names
(function).
compute-expander
(function).
compute-glsl-version-from-stage-pairs
(function).
copy-pipeline-state
(function).
def-dispatch-func
(function).
draw-expander
(function).
enable-transform-feedback
(function).
escape-tildes
(function).
expand-lambda-defpipeline
(function).
fallback-iuniform-func
(function).
function-arg-p
(function).
function-uniforms
(function).
gen-pipeline-init
(function).
gen-recompile-func
(function).
gen-update-spec
(function).
generate-uniform-upload-forms
(function).
get-feedback-out-vars
(function).
get-transform-feedback-primitive
(function).
get-varyings
(function).
handle-transform-feedback
(function).
has-func-type-in-args
(function).
lambda-arg-p
(function).
link-shaders
(function).
load-shader
(function).
load-shaders
(function).
make-pipeline-state
(function).
make-shader
(function).
pairs-key-to-stage
(function).
pipeline-state
(structure).
pipeline-state-diff-tag
(reader).
(setf pipeline-state-diff-tag)
(writer).
pipeline-state-enable-rasterizer
(reader).
(setf pipeline-state-enable-rasterizer)
(writer).
pipeline-state-implicit-uniform-upload-func
(reader).
(setf pipeline-state-implicit-uniform-upload-func)
(writer).
pipeline-state-p
(function).
pipeline-state-prog-ids
(reader).
(setf pipeline-state-prog-ids)
(writer).
pipeline-state-tfs-array-count
(reader).
(setf pipeline-state-tfs-array-count)
(writer).
pipeline-state-tfs-primitive
(reader).
(setf pipeline-state-tfs-primitive)
(writer).
pipeline-state-uniform-int-ids
(reader).
(setf pipeline-state-uniform-int-ids)
(writer).
pipeline-state-uniform-uint-ids
(reader).
(setf pipeline-state-uniform-uint-ids)
(writer).
register-named-pipeline
(function).
serialize-stage-pairs
(function).
shader-type-from-path
(function).
stages-require-partial-pipeline
(function).
swap-versions
(function).
cepl/core/pipelines/gpu-lambda.lisp
core/pipelines/defpipeline.lisp
(file).
cepl
(system).
compile-g
(function).
initialize-instance
(method).
lambda-g
(macro).
pipeline-g
(macro).
*get-gpu-lambda-state*
(special variable).
copy-glambda-state
(function).
gen-complete-lambda-pipeline-code
(function).
glambda-state
(structure).
glambda-state-p
(function).
glambda-state-pipeline
(reader).
(setf glambda-state-pipeline)
(writer).
glambda-state-recompiler
(reader).
(setf glambda-state-recompiler)
(writer).
glambda-state-spec
(reader).
(setf glambda-state-spec)
(writer).
gpu-lambda-state
(class).
lambda-g->func-spec
(method).
lambda-g->lisp-code
(function).
lambda-g->state
(function).
lambda-g->varjo-lambda-code
(function).
make-complete-lambda-pipeline
(function).
make-glambda-state
(function).
make-gpu-lambda
(function).
make-lambda-pipeline
(function).
make-lambda-pipeline-inner
(function).
make-partial-lambda-pipeline
(function).
register-lambda-pipeline
(function).
wrap-allowing-recompilation
(function).
cepl/core/pipelines/bake.lisp
core/pipelines/gpu-lambda.lisp
(file).
cepl
(system).
bake-uniforms
(function).
bake-and-g->
(function).
cepl/core/textures/def.lisp
core/pipelines/bake.lisp
(file).
cepl
(system).
element-type
(method).
element-type
(method).
free
(method).
free
(method).
free-gpu-array
(method).
free-texture
(generic function).
print-object
(method).
print-object
(method).
print-object
(method).
texture-element-type
(function).
%with-scratch-texture-bound
(macro).
bind-scratch-texture
(function).
blank-texture-object
(function).
free-gpu-array-t
(function).
unbind-texture-from-scratch
(function).
with-gpu-array-t
(macro).
cepl/core/samplers/samplers.lisp
core/textures/def.lisp
(file).
cepl
(system).
anisotropy
(function).
(setf anisotropy)
(function).
compare
(function).
(setf compare)
(function).
free
(method).
free-sampler
(function).
lod-bias
(function).
(setf lod-bias)
(function).
magnify-filter
(function).
(setf magnify-filter)
(function).
max-lod
(function).
(setf max-lod)
(function).
min-lod
(function).
(setf min-lod)
(function).
minify-filter
(function).
(setf minify-filter)
(function).
print-object
(method).
sample
(function).
sampler-texture
(function).
sampler-type
(function).
set-minify-filter
(function).
with-temp-sampler
(macro).
wrap
(function).
(setf wrap)
(function).
%delete-sampler
(function).
%get-id
(function).
%set-anisotropy
(function).
%set-border-color
(function).
%set-compare
(function).
%set-lod-bias
(function).
%set-magnify-filter
(function).
%set-max-lod
(function).
%set-min-lod
(function).
%set-minify-filter
(function).
%set-wrap
(function).
*anisotropy-available*
(special variable).
*default-sampler-id-box*
(special variable).
*fake-sampler-id*
(special variable).
*fake-sampler-id-lock*
(special variable).
*samplers-available*
(special variable).
+sampler-types+
(constant).
border-color
(function).
(setf border-color)
(function).
calc-minify-filter
(function).
calc-sampler-type
(function).
check-anisotropy-feature
(function).
check-sampler-feature
(function).
get-sampler-id-box
(function).
make-default-sampler-id-box
(function).
make-sampler-now
(function).
note-change
(function).
sampler-on-context
(function).
sampler-typep
(function).
wrap-eq
(function).
cepl/core/textures/textures.lisp
core/samplers/samplers.lisp
(file).
cepl
(system).
*immutable-available*
(special variable).
copy-buffer-backed-gpu-array-to-texture-backed-gpu-array
(function).
copy-c-array-to-texture-backed-gpu-array
(function).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-lisp-data-to-texture-backed-gpu-array
(function).
copy-texture-backed-gpu-array-to-buffer-backed-gpu-array
(function).
copy-texture-backed-gpu-array-to-c-array
(function).
copy-texture-backed-gpu-array-to-new-buffer-backed-gpu-array
(function).
copy-texture-backed-gpu-array-to-new-c-array
(function).
copy-texture-backed-gpu-array-to-new-lisp-data
(function).
dimensions
(method).
generate-mipmaps
(function).
make-texture
(function).
make-texture-from-id
(function).
pull-g
(method).
pull-g
(method).
pull1-g
(method).
pull1-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
resolution
(method).
texref
(function).
%calc-image-format-with-declared-format
(function).
%calc-image-format-with-lisp-type
(function).
%calc-image-format-with-pixel-format
(function).
%calc-image-format-without-declared-format
(function).
%find-tex-image-format
(function).
%make-buffer-texture
(function).
%make-cube-texture
(function).
%make-texture
(function).
%make-texture-with-lisp-data
(function).
%texture-dimensions
(function).
%upload-tex
(function).
+cube-face-order+
(constant).
+cube-face-order-enums+
(constant).
+valid-texture-storage-options+
(constant).
allocate-immutable-texture
(function).
allocate-mutable-texture
(function).
allocate-texture
(function).
assert-valid-args-for-buffer-backed-texture
(function).
calc-image-format
(function).
calc-max-num-mipmap-levels
(function).
check-immutable-feature
(function).
check-mipmap-level-count-valid
(generic function).
dimensions-at-mipmap-level
(function).
error-on-invalid-upload-formats
(function).
establish-texture-type
(function).
gen-buffer-tex-initial-contents
(function).
gen-texture
(function).
make-texture-now
(function).
multisample-texture-p
(function).
pack-pixels-from-texture
(function).
pixel-format-from-array
(generic function).
po2p
(function).
reinit-on-context
(function).
slow-query-mipmap-count
(function).
tex-kind->cache-index
(function).
tex-storage-1d
(function).
tex-storage-2d
(function).
tex-storage-2d-multisample
(function).
tex-storage-3d
(function).
tex-storage-3d-multisample
(function).
upload-c-array-to-gpu-array-t
(function).
upload-gpu-array-bb-to-gpu-array-t
(function).
valid-index-p
(function).
validate-pixel-format
(function).
cepl/core/textures/texture-samplers.lisp
core/textures/textures.lisp
(file).
cepl
(system).
(setf border-color)
(function).
fallback-sampler-set
(function).
(setf tex-compare)
(function).
(setf tex-lod-bias)
(function).
(setf tex-magnify-filter)
(function).
(setf tex-max-lod)
(function).
(setf tex-min-lod)
(function).
(setf tex-minify-filter)
(function).
(setf tex-wrap)
(function).
cepl/core/render-buffers/render-buffer.lisp
cepl
(system).
make-render-buffer
(function).
print-object
(method).
render-buffer-dimensions
(function).
render-buffer-image-format
(function).
render-buffer-multisample-p
(function).
render-buffer-resolution
(function).
make-render-buffer-now
(function).
render-buffer-element-type
(function).
cepl/core/samplers/context.lisp
cepl
(system).
force-sampler-bound
(function).
set-sampler-bound
(function).
cepl/core/pipelines/map-g.lisp
core/samplers/context.lisp
(file).
cepl
(system).
map-g
(macro).
map-g-into
(macro).
map-g-into*
(macro).
cepl/core/pipelines/quad-stages.lisp
core/pipelines/map-g.lisp
(file).
cepl
(system).
stateless-quad-geometry-stage
(function).
stateless-quad-vertex-stage
(function).
cepl/core/gpu-arrays/texture-backed.lisp
core/pipelines/quad-stages.lisp
(file).
cepl
(system).
gpu-array-face-num
(function).
gpu-array-layer-num
(function).
gpu-array-level-num
(function).
gpu-array-texture
(function).
gpu-array-texture-type
(function).
resolution
(method).
cepl/core/gpu-arrays/with-and-push.lisp
cepl
(system).
backed-by
(function).
copy-buffer-backed-gpu-array-to-new-c-array
(function).
copy-buffer-backed-gpu-array-to-new-lisp-data
(function).
copy-c-array-to-buffer-backed-gpu-array
(function).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-lisp-data-to-buffer-backed-gpu-array
(function).
gpu-array-element-type
(function).
print-mem
(method).
pull-g
(method).
pull1-g
(method).
push-g
(method).
push-g
(method).
reallocate-gpu-array
(function).
with-gpu-array-as-c-array
(macro).
with-gpu-array-as-pointer
(macro).
with-gpu-array-range-as-c-array
(macro).
with-gpu-array-range-as-pointer
(macro).
%process-with-gpu-array-range-macro-args
(function).
%process-with-gpu-array-range-runtime
(function).
with-buffer-range-mapped
(macro).
cepl/core/fbos/fbo.lisp
cepl
(system).
+discard-attachment+
(constant).
attachment
(function).
(setf attachment)
(function).
attachment-blending
(function).
(setf attachment-blending)
(function).
attachment-pattern
(function).
attachment-tex
(function).
attachment-viewport
(function).
check-framebuffer-status
(function).
clear
(compiler macro).
clear
(function).
clear-attachments
(compiler macro).
clear-attachments
(function).
clear-fbo
(compiler macro).
clear-fbo
(function).
color-attachment-enum
(function).
color-attachments
(compiler macro).
color-attachments
(function).
default-fbo
(function).
empty-fbo-params
(function).
empty-fbo-params-dimensions
(function).
(setf empty-fbo-params-dimensions)
(function).
empty-fbo-params-fixed-sample-locations-p
(function).
(setf empty-fbo-params-fixed-sample-locations-p)
(function).
empty-fbo-params-layer-count
(function).
(setf empty-fbo-params-layer-count)
(function).
empty-fbo-params-samples
(function).
(setf empty-fbo-params-samples)
(function).
empty-fbo-params-viewport
(function).
free
(method).
make-fbo
(function).
print-object
(method).
print-object
(method).
with-fbo-bound
(macro).
with-outputs-to-attachments
(macro).
%attachment
(function).
(setf %attachment)
(function).
%bind-fbo
(function).
%clear-attachments
(function).
%clear-current-fbo
(function).
%clear-fbo-known-attachments
(function).
%clear-fbo-unknown-attachments
(function).
%clear-fbo-with-explicit-attachments
(function).
%clear-fbos-attachments
(function).
%clear-known-attachments
(function).
%clear-known-attachments-no-restore
(function).
%clear-unknown-attachments
(function).
%clear-unknown-attachments-no-restore
(function).
%fbo-owns
(function).
(setf %fbo-owns)
(function).
%gen-texture
(function).
%get-default-texture-format
(function).
%make-default-framebuffer
(function).
%set-default-fbo-viewport
(function).
%unbind-fbo
(function).
%update-fbo-state
(function).
+possible-texture-keys+
(constant).
+valid-fbo-targets+
(constant).
+valid-texture-subset+
(constant).
attachment-compatible
(function).
attachment-viewport-allowing-t
(function).
cube->fbo-arrays
(function).
default-fbo-attachment-enum
(function).
early-compute-mask
(function).
empty-fbo-args-p
(function).
ensure-fbo-array-size
(function).
extract-dimension-from-make-fbo-pattern
(function).
extract-matching-dimension-value
(function).
fbo-attach-array
(function).
fbo-attach-render-buffer
(function).
fbo-color-arrays
(function).
fbo-detach
(function).
fbo-gen-attach
(function).
free-fbo
(function).
free-user-fbo
(function).
fuzzy-args->arrays
(function).
gen-depth-stencil-texture
(function).
get-gl-attachment-enum
(compiler macro).
get-gl-attachment-enum
(function).
handle-empty-framebuffer
(function).
initialize-as-empty-fbo
(function).
initialize-regular-fbo
(function).
make-existing-fbo-empty
(function).
make-fbo-non-empty
(function).
make-fbo-now
(function).
post-gl-init
(function).
pre-gl-init
(function).
process-fbo-init-pattern
(function).
throw-missing-col-attrs
(function).
update-clear-mask
(function).
update-draw-buffer-map
(function).
viewport-for-array
(function).
with-fbo-slots
(macro).
cepl/core/ubos/ubo.lisp
core/fbos/fbo.lisp
(file).
cepl
(system).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
free
(method).
make-ubo
(function).
make-ubo-from-array
(function).
print-object
(method).
pull-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
ubo-data-type
(function).
%bind-ubo
(function).
*freed-ubo-id*
(special variable).
*lowest-unused-ubo-id*
(special variable).
*ubo-id-lock*
(special variable).
copy-c-array-to-ubo
(function).
copy-lisp-array-to-ubo
(function).
copy-lisp-list-to-ubo
(function).
copy-ubo-to-new-c-array
(function).
copy-ubo-to-new-lisp-data
(function).
get-free-ubo-id
(function).
make-ubo-from-array-bad-type
(condition).
make-ubo-from-buffer
(function).
cepl/core/ssbos/ssbos.lisp
core/ubos/ubo.lisp
(file).
cepl
(system).
copy-g
(method).
copy-g
(method).
copy-g
(method).
copy-g
(method).
free
(method).
make-ssbo
(function).
make-ssbo-from-array
(function).
print-object
(method).
pull-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
ssbo-data-type
(function).
%bind-ssbo
(function).
*freed-ssbo-id*
(special variable).
*lowest-unused-ssbo-id*
(special variable).
*ssbo-id-lock*
(special variable).
copy-c-array-to-ssbo
(function).
copy-lisp-array-to-ssbo
(function).
copy-lisp-list-to-ssbo
(function).
copy-ssbo-to-new-c-array
(function).
copy-ssbo-to-new-lisp-data
(function).
get-free-ssbo-id
(function).
make-ssbo-from-array-bad-type
(condition).
make-ssbo-from-buffer
(function).
cepl/core/sync/sync.lisp
core/ssbos/ssbos.lisp
(file).
cepl
(system).
free
(method).
free-gpu-fence
(function).
gpu-fence-signalled-p
(function).
make-gpu-fence
(function).
wait-on-gpu-fence
(function).
cepl-client-wait-sync
(function).
cepl/core/queries/query.lisp
core/sync/sync.lisp
(file).
cepl
(system).
gpu-query-result-available-p
(function).
pull-all-gpu-commands-issued-time
(function).
pull-gpu-query-result
(function).
push-gpu-query-result-to-gpu-array
(function).
query-all-gpu-commands-completed-time
(function).
with-gpu-query-bound
(macro).
begin-scoped-gpu-query
(function).
calc-query-get-func-for-gpu-array
(function).
end-scoped-gpu-query
(function).
cepl/core/compute/compute.lisp
core/queries/query.lisp
(file).
cepl
(system).
compute-space-as-uvec3
(function).
(setf compute-space-as-uvec3)
(function).
compute-space-dimensions
(function).
(setf compute-space-dimensions)
(function).
dimensions
(method).
(setf dimensions)
(method).
cepl/core/types/predefined/gpu-structs.lisp
core/compute/compute.lisp
(file).
cepl
(system).
bi-tangent
(generic function).
(setf bi-tangent)
(generic function).
col
(generic function).
(setf col)
(generic function).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
expand-from-foreign
(method).
g-pc
(structure).
g-pn
(structure).
g-pnb
(structure).
g-pnc
(structure).
g-pncb
(structure).
g-pnt
(structure).
g-pntb
(structure).
g-pntc
(structure).
g-pntcb
(structure).
g-pt
(structure).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-from-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
get-typed-to-foreign
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
gl-assign-attrib-pointers
(method).
make-g-pc
(function).
make-g-pn
(function).
make-g-pnb
(function).
make-g-pnc
(function).
make-g-pncb
(function).
make-g-pnt
(function).
make-g-pntb
(function).
make-g-pntc
(function).
make-g-pntcb
(function).
make-g-pt
(function).
norm
(generic function).
(setf norm)
(generic function).
populate
(method).
populate
(method).
populate
(method).
populate
(method).
populate
(method).
populate
(method).
populate
(method).
populate
(method).
populate
(method).
populate
(method).
pos
(generic function).
(setf pos)
(generic function).
print-object
(method).
print-object
(method).
print-object
(method).
print-object
(method).
print-object
(method).
print-object
(method).
print-object
(method).
print-object
(method).
print-object
(method).
print-object
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
pull1-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
push-g
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
symbol-names-cepl-structp
(method).
tangent
(generic function).
(setf tangent)
(generic function).
tex
(generic function).
(setf tex)
(generic function).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
translate-from-foreign
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
type->type-spec
(method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-glsl-string
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
v-slots
(reader method).
cepl.types.predefined.g-pc.cffi-ct-type
(class).
cepl.types.predefined.g-pc.foreign-tclass
(class).
cepl.types.predefined.g-pc.from-foreign
(function).
cepl.types.predefined.g-pc.make
(function).
cepl.types.predefined.g-pc.to-foreign
(function).
cepl.types.predefined.g-pn.cffi-ct-type
(class).
cepl.types.predefined.g-pn.foreign-tclass
(class).
cepl.types.predefined.g-pn.from-foreign
(function).
cepl.types.predefined.g-pn.make
(function).
cepl.types.predefined.g-pn.to-foreign
(function).
cepl.types.predefined.g-pnb.cffi-ct-type
(class).
cepl.types.predefined.g-pnb.foreign-tclass
(class).
cepl.types.predefined.g-pnb.from-foreign
(function).
cepl.types.predefined.g-pnb.make
(function).
cepl.types.predefined.g-pnb.to-foreign
(function).
cepl.types.predefined.g-pnc.cffi-ct-type
(class).
cepl.types.predefined.g-pnc.foreign-tclass
(class).
cepl.types.predefined.g-pnc.from-foreign
(function).
cepl.types.predefined.g-pnc.make
(function).
cepl.types.predefined.g-pnc.to-foreign
(function).
cepl.types.predefined.g-pncb.cffi-ct-type
(class).
cepl.types.predefined.g-pncb.foreign-tclass
(class).
cepl.types.predefined.g-pncb.from-foreign
(function).
cepl.types.predefined.g-pncb.make
(function).
cepl.types.predefined.g-pncb.to-foreign
(function).
cepl.types.predefined.g-pnt.cffi-ct-type
(class).
cepl.types.predefined.g-pnt.foreign-tclass
(class).
cepl.types.predefined.g-pnt.from-foreign
(function).
cepl.types.predefined.g-pnt.make
(function).
cepl.types.predefined.g-pnt.to-foreign
(function).
cepl.types.predefined.g-pntb.cffi-ct-type
(class).
cepl.types.predefined.g-pntb.foreign-tclass
(class).
cepl.types.predefined.g-pntb.from-foreign
(function).
cepl.types.predefined.g-pntb.make
(function).
cepl.types.predefined.g-pntb.to-foreign
(function).
cepl.types.predefined.g-pntc.cffi-ct-type
(class).
cepl.types.predefined.g-pntc.foreign-tclass
(class).
cepl.types.predefined.g-pntc.from-foreign
(function).
cepl.types.predefined.g-pntc.make
(function).
cepl.types.predefined.g-pntc.to-foreign
(function).
cepl.types.predefined.g-pntcb.cffi-ct-type
(class).
cepl.types.predefined.g-pntcb.foreign-tclass
(class).
cepl.types.predefined.g-pntcb.from-foreign
(function).
cepl.types.predefined.g-pntcb.make
(function).
cepl.types.predefined.g-pntcb.to-foreign
(function).
cepl.types.predefined.g-pt.cffi-ct-type
(class).
cepl.types.predefined.g-pt.foreign-tclass
(class).
cepl.types.predefined.g-pt.from-foreign
(function).
cepl.types.predefined.g-pt.make
(function).
cepl.types.predefined.g-pt.to-foreign
(function).
g-pc-p
(function).
g-pc-pointer
(function).
(setf g-pc-pointer)
(function).
g-pn-p
(function).
g-pn-pointer
(function).
(setf g-pn-pointer)
(function).
g-pnb-p
(function).
g-pnb-pointer
(function).
(setf g-pnb-pointer)
(function).
g-pnc-p
(function).
g-pnc-pointer
(function).
(setf g-pnc-pointer)
(function).
g-pncb-p
(function).
g-pncb-pointer
(function).
(setf g-pncb-pointer)
(function).
g-pnt-p
(function).
g-pnt-pointer
(function).
(setf g-pnt-pointer)
(function).
g-pntb-p
(function).
g-pntb-pointer
(function).
(setf g-pntb-pointer)
(function).
g-pntc-p
(function).
g-pntc-pointer
(function).
(setf g-pntc-pointer)
(function).
g-pntcb-p
(function).
g-pntcb-pointer
(function).
(setf g-pntcb-pointer)
(function).
g-pt-p
(function).
g-pt-pointer
(function).
(setf g-pt-pointer)
(function).
populate-g-pc
(function).
populate-g-pn
(function).
populate-g-pnb
(function).
populate-g-pnc
(function).
populate-g-pncb
(function).
populate-g-pnt
(function).
populate-g-pntb
(function).
populate-g-pntc
(function).
populate-g-pntcb
(function).
populate-g-pt
(function).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
(setf v-signature)
(writer method).
v-signature
(reader method).
v_g-pc
(class).
v_g-pn
(class).
v_g-pnb
(class).
v_g-pnc
(class).
v_g-pncb
(class).
v_g-pnt
(class).
v_g-pntb
(class).
v_g-pntc
(class).
v_g-pntcb
(class).
v_g-pt
(class).
cepl/core/context/make.lisp
cepl
(system).
set-context-defaults
(function).
cepl/core/context/known-state-blocks.lisp
core/context/make.lisp
(file).
cepl
(system).
with-context-state-restored
(macro).
restore-array-of-bound-gpu-buffers
(function).
restore-array-of-bound-samplers
(function).
restore-array-of-ssbo-bindings-buffer-ids
(function).
restore-array-of-ubo-bindings-buffer-ids
(function).
restore-clear-color
(function).
restore-color-masks
(function).
restore-cull-face
(function).
restore-current-scissor-viewports
(function).
restore-depth-clamp
(function).
restore-depth-mask
(function).
restore-depth-range
(function).
restore-depth-test-function
(function).
restore-fbo-bindings
(function).
restore-front-face
(function).
restore-pack-alignment
(function).
restore-program
(function).
restore-stencil
(function).
restore-unpack-alignment
(function).
restore-vao
(function).
restore-viewport
(function).
runtime-restore-block-checks
(function).
cepl/core/repl.lisp
cepl
(system).
cepl-describe
(function).
cls
(function).
initialize-cepl
(function).
quit
(function).
register-event-listener
(function).
repl
(function).
step-host
(function).
swap
(function).
cepl/docs/api/package.lisp
core/repl.lisp
(file).
cepl
(system).
cepl/core/types/docs-image-formats.lisp
docs/api/package.lisp
(file).
cepl
(system).
cepl/core/types/docs.lisp
core/types/predefined/docs.lisp
(file).
cepl
(system).
cepl/core/measurements/docs.lisp
core/types/docs.lisp
(file).
cepl
(system).
cepl/core/memory/docs.lisp
core/measurements/docs.lisp
(file).
cepl
(system).
cepl/core/c-arrays/docs.lisp
core/memory/docs.lisp
(file).
cepl
(system).
cepl/core/gpu-buffers/docs.lisp
core/c-arrays/docs.lisp
(file).
cepl
(system).
cepl/core/gpu-arrays/docs.lisp
core/gpu-buffers/docs.lisp
(file).
cepl
(system).
cepl/core/streams/docs.lisp
core/gpu-arrays/docs.lisp
(file).
cepl
(system).
cepl/core/viewports/docs.lisp
core/streams/docs.lisp
(file).
cepl
(system).
cepl/core/textures/docs.lisp
core/viewports/docs.lisp
(file).
cepl
(system).
cepl/core/samplers/docs.lisp
core/textures/docs.lisp
(file).
cepl
(system).
cepl/core/fbos/docs.lisp
core/samplers/docs.lisp
(file).
cepl
(system).
cepl/core/blending/docs.lisp
core/fbos/docs.lisp
(file).
cepl
(system).
cepl/core/ubos/docs.lisp
core/blending/docs.lisp
(file).
cepl
(system).
cepl/core/ssbos/docs.lisp
core/ubos/docs.lisp
(file).
cepl
(system).
cepl/core/vaos/docs.lisp
core/ssbos/docs.lisp
(file).
cepl
(system).
cepl/core/pipelines/docs.lisp
core/vaos/docs.lisp
(file).
cepl
(system).
cepl.build/build/build.lisp
build/package.lisp
(file).
cepl.build
(system).
load-in-release-mode
(function).
profile-block
(macro).
release-unwind-protect
(macro).
*cepl-release-mode*
(special variable).
cepl.build/defn/package.lisp
build/build.lisp
(file).
cepl.build
(system).
cepl.build/defn/defn.lisp
defn/package.lisp
(file).
cepl.build
(system).
define-defn-declaration
(macro).
defmethod+
(macro).
defn
(macro).
defn-inline
(macro).
defun+
(macro).
locally+
(macro).
parse-body+
(function).
%defn
(function).
*standard-declarations*
(special variable).
handle-defn-declaration
(generic function).
parse-defn-args
(function).
process-defn-declares
(function).
Packages are listed by definition order.
cepl.build
cepl.pipelines
cepl.ssbos
cepl.vaos
cepl.internals
cepl.gpu-buffers
cepl.docs
cepl.fbos
cepl.gpu-arrays.buffer-backed
cepl.measurements
cepl.blending
cepl.documentation-functions
cepl.scissor
cepl.stencil
cepl.samplers
cepl.types.foreign
cepl
cepl.types.predefined
cepl.queries
cepl.ubos
cepl.viewports
cepl.hidden
defxstar-hidden
cepl.render-buffers
cepl.compute
cepl.context
cepl.textures
cepl.defn
cepl.host
cepl.gpu-arrays
cepl.gpu-arrays.texture-backed
cepl.memory
cepl.lifecycle
cepl.transform-feedback
cepl.streams
%cepl.types
cepl.pixel-formats
cepl-utils
cepl.errors
cepl.types
cepl.c-arrays
cepl.image-formats
cepl.sync
cepl.build
common-lisp
.
%cepl.types
.
cepl
.
cepl-utils
.
cepl.blending
.
cepl.c-arrays
.
cepl.compute
.
cepl.context
.
cepl.documentation-functions
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.host
.
cepl.image-formats
.
cepl.internals
.
cepl.lifecycle
.
cepl.measurements
.
cepl.memory
.
cepl.pipelines
.
cepl.pixel-formats
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.types
.
cepl.types.foreign
.
cepl.types.predefined
.
cepl.ubos
.
cepl.vaos
.
cepl.viewports
.
load-in-release-mode
(function).
profile-block
(macro).
release-unwind-protect
(macro).
*cepl-release-mode*
(special variable).
cepl.pipelines
%cepl.types
.
cepl-utils
.
cepl.blending
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.memory
.
cepl.pixel-formats
.
cepl.samplers
.
cepl.ssbos
.
cepl.streams
.
cepl.textures
.
cepl.types
.
cepl.ubos
.
cepl.vaos
.
cepl.viewports
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
arrays-indirect-command
(structure).
arrays-indirect-command-base-instance
(function).
(setf arrays-indirect-command-base-instance)
(function).
arrays-indirect-command-count
(function).
(setf arrays-indirect-command-count)
(function).
arrays-indirect-command-first
(function).
(setf arrays-indirect-command-first)
(function).
arrays-indirect-command-instance-count
(function).
(setf arrays-indirect-command-instance-count)
(function).
bake-uniforms
(function).
compile-context
(structure).
compile-g
(function).
def-glsl-stage
(macro).
define-compiler-macro-g
(macro).
defmacro-g
(macro).
defpipeline-g
(macro).
defun-g
(macro).
defun-g-equiv
(macro).
delete-gpu-function
(generic function).
elements-indirect-command
(structure).
elements-indirect-command-base-instance
(function).
(setf elements-indirect-command-base-instance)
(function).
elements-indirect-command-base-vertex
(function).
(setf elements-indirect-command-base-vertex)
(function).
elements-indirect-command-count
(function).
(setf elements-indirect-command-count)
(function).
elements-indirect-command-first-index
(function).
(setf elements-indirect-command-first-index)
(function).
elements-indirect-command-instance-count
(function).
(setf elements-indirect-command-instance-count)
(function).
free-pipeline
(function).
funcall-g
(function).
gpu-function
(macro).
gpu-functions
(function).
lambda-g
(macro).
make-draw-command-c-array
(function).
make-draw-command-gpu-array
(function).
map-g
(macro).
map-g-into
(macro).
multi-map-g
(macro).
pipeline-g
(macro).
set-draw-command
(function).
with-instances
(macro).
%compile-closure
(function).
%compile-link-and-upload
(function).
%copy-compile-context
(function).
%create-implicit-uniform-uploader
(function).
%def-complete-pipeline
(function).
%def-gpu-function
(function).
%def-partial-pipeline
(function).
%defpipeline-gfuncs
(function).
%funcs-this-func-uses
(generic function).
%gen-pass-key
(function).
%gl-make-shader-from-varjo
(function).
%gpu-function
(generic function).
%implicit-uniforms-dont-have-type-mismatches
(function).
%make-glsl-stage-spec
(function).
%make-gpu-func-spec
(function).
%make-stand-in-lisp-func-for-glsl-stage
(function).
%post-init
(function).
%pull-spec-common
(function).
%recompile-gpu-function-and-pipelines
(generic function).
%subscribe-to-gpu-func
(generic function).
%test-&-process-spec
(function).
%unsubscibe-from-all
(generic function).
%update-glsl-stage-data
(function).
%update-gpu-function-data
(function).
%varjo-compile-as-pipeline
(function).
*cache-last-compile-result*
(special variable).
*dependent-gpu-functions*
(special variable).
*dependent-gpu-functions-lock*
(special variable).
*get-gpu-lambda-state*
(special variable).
*gpu-func-diff-tag*
(special variable).
*gpu-func-specs*
(special variable).
*gpu-func-specs-lock*
(special variable).
*gpu-pipeline-specs*
(special variable).
*gpu-pipeline-specs-lock*
(special variable).
*init-pipeline-lock*
(special variable).
*map-of-pipeline-names-to-gl-ids*
(special variable).
*map-of-pipeline-names-to-gl-ids-lock*
(special variable).
*pipeline-body-context-var*
(special variable).
*print-gpu-function-subscriptions*
(special variable).
*suppress-upload-message*
(special variable).
*warn-when-cant-test-compile*
(special variable).
+unknown-uniform-int-id+
(constant).
+unknown-uniform-uint-id+
(constant).
add-compile-results-to-pipeline
(function).
add-layout-to-struct-uniforms
(function).
aggregate-uniforms
(function).
always-uploadp
(generic reader).
(setf always-uploadp)
(generic writer).
arg-name
(generic reader).
(setf arg-name)
(generic writer).
arrays-indirect-command-p
(function).
arrays-indirect-command-pointer
(function).
(setf arrays-indirect-command-pointer)
(function).
assendingp
(function).
assert-arg-format
(function).
assert-glsl-arg-format
(function).
assert-glsl-stage-types
(function).
assert-valid-gpipe-form
(function).
assert-valid-gpipe-shader-implicit-form
(function).
assert-valid-gpu-function-args
(function).
assert-valid-stage-specs
(function).
assigner
(class).
assigner-body
(generic reader).
(setf assigner-body)
(generic writer).
assigner-index
(generic reader).
(setf assigner-index)
(generic writer).
assigner-let-form
(class).
assigner-name
(generic reader).
(setf assigner-name)
(generic writer).
assigner-type
(generic reader).
(setf assigner-type)
(generic writer).
bake-and-g->
(function).
calc-feedback-style-and-names
(function).
cepl.pipelines.arrays-indirect-command.foreign-tclass
(class).
cepl.pipelines.elements-indirect-command.foreign-tclass
(class).
cleanup
(generic reader).
(setf cleanup)
(generic writer).
clone-stage-spec
(function).
compile-context-p
(function).
compile-context-primitive
(reader).
(setf compile-context-primitive)
(writer).
compile-context-stage
(reader).
(setf compile-context-stage)
(writer).
compile-context-static-p
(reader).
(setf compile-context-static-p)
(writer).
compile-context-versions
(reader).
(setf compile-context-versions)
(writer).
complete-single-stage-pipeline
(function).
compute-expander
(function).
compute-glsl-version-from-stage-pairs
(function).
copy-compile-context
(function).
copy-glambda-state
(function).
copy-pipeline-state
(function).
copy-uidx
(function).
def-dispatch-func
(function).
defun-g-common
(function).
delete-func-spec
(generic function).
dispatch-dyn-gpu-call
(function).
dispatch-make-assigner
(function).
draw-expander
(function).
dyn-code-to-pipeline-and-stages
(function).
elements-indirect-command-p
(function).
elements-indirect-command-pointer
(function).
(setf elements-indirect-command-pointer)
(function).
enable-transform-feedback
(function).
escape-tildes
(function).
expand-lambda-defpipeline
(function).
fallback-iuniform-func
(function).
find-gpu-func-spec-by-name-and-vals
(function).
find-invalid-defpipeline-options
(function).
force-use-program
(function).
func-key
(generic function).
func-key
(class).
func-key->name
(generic function).
func-key=
(generic function).
funcs-that-use-this-func
(generic function).
(setf funcs-that-use-this-func)
(generic function).
funcs-these-funcs-use
(function).
funcs-this-func-uses
(function).
function-arg-p
(function).
function-formp
(function).
function-keyed-pipeline
(function).
(setf function-keyed-pipeline)
(function).
function-uniforms
(function).
gen-cleanup-block
(generic function).
gen-complete-lambda-pipeline-code
(function).
gen-pipeline-init
(function).
gen-recompile-func
(function).
gen-update-spec
(function).
gen-uploaders-block
(generic function).
gen-vertex-stage-code-calling-func
(function).
generate-uniform-upload-forms
(function).
get-body-string
(function).
get-dyn-return-types-from-stage
(function).
get-feedback-out-vars
(function).
get-foreign-uniform-function
(function).
get-foreign-uniform-function-name
(function).
get-func-as-stage-code
(function).
get-gpu-func-spec-tag
(function).
get-possible-designators-for-name
(function).
get-shader-storage-block-index
(function).
get-stage-key
(function).
get-stage-kind-from-context
(function).
get-transform-feedback-primitive
(function).
get-uniform-block-index
(function).
get-uniform-function
(function).
get-uniform-function-name
(function).
get-varyings
(function).
glambda-state
(structure).
glambda-state-p
(function).
glambda-state-pipeline
(reader).
(setf glambda-state-pipeline)
(writer).
glambda-state-recompiler
(reader).
(setf glambda-state-recompiler)
(writer).
glambda-state-spec
(reader).
(setf glambda-state-spec)
(writer).
glsl-stage-spec
(class).
gpu-func-spec
(generic function).
(setf gpu-func-spec)
(generic function).
gpu-func-spec
(class).
gpu-func-specs
(function).
gpu-lambda-state
(class).
guess-a-varjo-array-type
(function).
guess-a-varjo-bool-type
(function).
guess-a-varjo-float-type
(function).
guess-a-varjo-integer-type
(function).
guess-a-varjo-number-type
(function).
guess-a-varjo-type
(function).
handle-transform-feedback
(function).
has-func-type-in-args
(function).
in-args
(generic reader).
infer-implicit-uniform-type
(generic function).
interactive-delete-gpu-function
(function).
interactive-pick-gpu-function
(function).
lambda-arg-p
(function).
lambda-g->func-spec
(generic function).
lambda-g->lisp-code
(function).
lambda-g->state
(function).
lambda-g->varjo-lambda-code
(function).
lambda-pipeline-spec
(class).
let-forms
(generic reader).
(setf let-forms)
(generic writer).
link-shaders
(function).
load-shader
(function).
load-shaders
(function).
local-arg-name
(generic reader).
(setf local-arg-name)
(generic writer).
lowest-suitable-glsl-version
(function).
make-arg-assigners
(function).
make-array-assigners
(function).
make-arrays-indirect-command
(function).
make-assigner
(function).
make-assigner-let
(function).
make-compile-context
(function).
make-complete-lambda-pipeline
(function).
make-elements-indirect-command
(function).
make-glambda-state
(function).
make-gpu-lambda
(function).
make-lambda-pipeline
(function).
make-lambda-pipeline-inner
(function).
make-lambda-pipeline-spec
(function).
make-partial-lambda-pipeline
(function).
make-pipeline-spec
(function).
make-pipeline-state
(function).
make-sampler-assigner
(function).
make-shader
(function).
make-simple-assigner
(function).
make-ssbo-assigner
(function).
make-stand-in-lisp-func
(function).
make-struct-assigners
(function).
make-ubo-assigner
(function).
make-uidx
(function).
map-g-into*
(macro).
mapg-context-p
(function).
massage-compute-stage-name
(function).
merge-into-assigner
(function).
new-func-key
(function).
null-func-spec
(function).
pairs-key-to-stage
(function).
parse-compile-context
(function).
parse-gpipe-args
(function).
parse-gpipe-args-explicit
(function).
parse-gpipe-args-implicit
(function).
parsed-gpipe-args->v-translate-args
(function).
pipeline-spec
(function).
(setf pipeline-spec)
(function).
pipeline-spec
(class).
pipeline-spec-base
(class).
pipeline-stage-pairs
(generic function).
pipeline-stages
(generic function).
pipeline-state
(structure).
pipeline-state-diff-tag
(reader).
(setf pipeline-state-diff-tag)
(writer).
pipeline-state-enable-rasterizer
(reader).
(setf pipeline-state-enable-rasterizer)
(writer).
pipeline-state-implicit-uniform-upload-func
(reader).
(setf pipeline-state-implicit-uniform-upload-func)
(writer).
pipeline-state-p
(function).
pipeline-state-prog-ids
(reader).
(setf pipeline-state-prog-ids)
(writer).
pipeline-state-tfs-array-count
(reader).
(setf pipeline-state-tfs-array-count)
(writer).
pipeline-state-tfs-primitive
(reader).
(setf pipeline-state-tfs-primitive)
(writer).
pipeline-state-uniform-int-ids
(reader).
(setf pipeline-state-uniform-int-ids)
(writer).
pipeline-state-uniform-uint-ids
(reader).
(setf pipeline-state-uniform-uint-ids)
(writer).
pipelines-that-use-this-as-a-stage
(generic function).
pointer-arg
(generic reader).
(setf pointer-arg)
(generic writer).
populate-arrays-indirect-command
(function).
populate-elements-indirect-command
(function).
process-glsl-arg
(function).
program-attrib-count
(function).
program-attributes
(function).
program-uniform-count
(function).
program-uniforms
(function).
pull-g-soft-multi-func-message
(function).
read-gpu-function-choice
(function).
recompile-name
(function).
recompile-pipelines-that-use-this-as-a-stage
(generic function).
register-lambda-pipeline
(function).
register-named-pipeline
(function).
request-program-id-for
(function).
serialize-stage-pairs
(function).
shader-type-from-path
(function).
spec->func-key
(generic function).
spec-changed-p
(function).
split-args-for-dyn-call
(function).
stage-formp
(function).
stages-require-partial-pipeline
(function).
stateless-quad-geometry-stage
(function).
stateless-quad-vertex-stage
(function).
swap-versions
(function).
to-cepl-type-spec
(function).
try-guessing-a-varjo-type-for-symbol
(function).
try-injecting-a-constant
(function).
type-contains-structs
(function).
typed-defp
(function).
uidx
(structure).
uidx-int
(reader).
(setf uidx-int)
(writer).
uidx-p
(function).
uidx-uint
(reader).
(setf uidx-uint)
(writer).
uniform-1b
(function).
uniform-1f
(function).
uniform-1i
(function).
uniform-2f
(function).
uniform-2i
(function).
uniform-3f
(function).
uniform-3i
(function).
uniform-4f
(function).
uniform-4i
(function).
uniform-matrix-2ft
(function).
uniform-matrix-2fvt
(function).
uniform-matrix-3ft
(function).
uniform-matrix-3fvt
(function).
uniform-matrix-4ft
(function).
uniform-matrix-4fvt
(function).
uniform-sampler
(function).
unpack-arrayd-assigner
(generic function).
update-pipeline-spec
(function).
update-specs-with-missing-dependencies
(function).
uploaders
(generic reader).
(setf uploaders)
(generic writer).
use-program
(function).
v_arrays-indirect-command
(class).
v_elements-indirect-command
(class).
validate-stage-names
(function).
varjo->gl-stage-names
(function).
vs-spliced-values
(function).
with-glsl-stage-spec
(macro).
with-gpu-func-spec
(macro).
wrap-allowing-recompilation
(function).
xsymbolp
(function).
cepl.ssbos
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-buffers
.
cepl.internals
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
make-ssbo
(function).
make-ssbo-from-array
(function).
ssbo-data-type
(function).
%bind-ssbo
(function).
*freed-ssbo-id*
(special variable).
*lowest-unused-ssbo-id*
(special variable).
*ssbo-id-lock*
(special variable).
copy-c-array-to-ssbo
(function).
copy-lisp-array-to-ssbo
(function).
copy-lisp-list-to-ssbo
(function).
copy-ssbo-to-new-c-array
(function).
copy-ssbo-to-new-lisp-data
(function).
get-free-ssbo-id
(function).
make-ssbo-from-array-bad-type
(condition).
make-ssbo-from-buffer
(function).
cepl.vaos
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-buffers
.
cepl.internals
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
free-vao
(function).
free-vaos
(function).
make-vao
(function).
make-vao-from-id
(function).
with-vao-bound
(macro).
cons-aware-1d-p
(function).
preprocess-gpu-arrays-for-vao
(function).
suitable-array-for-index-p
(function).
cepl.internals
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
cepl.measurements
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
cepl.blending
.
cepl.c-arrays
.
cepl.compute
.
cepl.context
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.pipelines
.
cepl.pixel-formats
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.ubos
.
cepl.vaos
.
cepl.viewports
.
1d-p
(function).
cffi-type->gl-type
(function).
clear-gl-context-cache
(generic function).
color-attachment-enum
(function).
gl-assign-attrib-pointers
(generic function).
gl-type-size
(function).
maybe-cffi-type->gl-type
(function).
populate
(generic function).
symbol-names-cepl-structp
(generic function).
uploadable-lisp-seq
(type).
window-dimensions
(function).
window-resolution
(function).
surface-dimensions
(function).
surface-resolution
(function).
cepl.gpu-buffers
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.internals
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
buffer-data
(function).
buffer-data-raw
(function).
buffer-reserve-block
(function).
free-buffer
(function).
free-buffers
(function).
make-gpu-buffer
(function).
make-gpu-buffer-from-id
(function).
multi-buffer-data
(function).
reallocate-buffer
(function).
blank-buffer-object
(function).
buffer-reserve-block-raw
(function).
buffer-reserve-blocks-from-sizes
(function).
buffer-set-arrays-from-sizes
(function).
free-gpu-buffer
(function).
free-gpu-buffers
(function).
gen-buffer
(function).
gpu-array-sub-data
(function).
init-gpu-buffer-now
(function).
init-gpu-buffer-now-with-layouts
(function).
list-of-c-arrays-p
(function).
process-layout
(function).
cepl.fbos
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.image-formats
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.textures
.
cepl.types
.
cepl.viewports
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
+discard-attachment+
(constant).
attachment
(function).
(setf attachment)
(function).
attachment-blending
(function).
(setf attachment-blending)
(function).
attachment-pattern
(function).
attachment-tex
(function).
attachment-viewport
(function).
check-framebuffer-status
(function).
clear
(compiler macro).
clear
(function).
clear-attachments
(compiler macro).
clear-attachments
(function).
clear-fbo
(compiler macro).
clear-fbo
(function).
color-attachments
(compiler macro).
color-attachments
(function).
default-fbo
(function).
empty-fbo-params-dimensions
(function).
(setf empty-fbo-params-dimensions)
(function).
empty-fbo-params-fixed-sample-locations-p
(function).
(setf empty-fbo-params-fixed-sample-locations-p)
(function).
empty-fbo-params-layer-count
(function).
(setf empty-fbo-params-layer-count)
(function).
empty-fbo-params-samples
(function).
(setf empty-fbo-params-samples)
(function).
empty-fbo-params-viewport
(function).
make-fbo
(function).
per-attachment-blending-available-p
(compiler macro).
per-attachment-blending-available-p
(function).
with-fbo-bound
(macro).
with-outputs-to-attachments
(macro).
%attachment
(function).
(setf %attachment)
(function).
%bind-fbo
(function).
%clear-attachments
(function).
%clear-current-fbo
(function).
%clear-fbo-known-attachments
(function).
%clear-fbo-unknown-attachments
(function).
%clear-fbo-with-explicit-attachments
(function).
%clear-fbos-attachments
(function).
%clear-known-attachments
(function).
%clear-known-attachments-no-restore
(function).
%clear-unknown-attachments
(function).
%clear-unknown-attachments-no-restore
(function).
%fbo-owns
(function).
(setf %fbo-owns)
(function).
%gen-texture
(function).
%get-default-texture-format
(function).
%make-default-framebuffer
(function).
%per-attachment-blending-available-p
(function).
%set-default-fbo-viewport
(function).
%unbind-fbo
(function).
%update-fbo-state
(function).
+possible-texture-keys+
(constant).
+valid-fbo-targets+
(constant).
+valid-texture-subset+
(constant).
attachment-compatible
(function).
attachment-viewport-allowing-t
(function).
cube->fbo-arrays
(function).
default-fbo-attachment-enum
(function).
early-compute-mask
(function).
empty-fbo-args-p
(function).
ensure-fbo-array-size
(function).
extract-dimension-from-make-fbo-pattern
(function).
extract-matching-dimension-value
(function).
fbo-attach-array
(function).
fbo-attach-render-buffer
(function).
fbo-color-arrays
(function).
fbo-detach
(function).
fbo-gen-attach
(function).
free-fbo
(function).
free-user-fbo
(function).
fuzzy-args->arrays
(function).
gen-depth-stencil-texture
(function).
get-gl-attachment-enum
(compiler macro).
get-gl-attachment-enum
(function).
handle-empty-framebuffer
(function).
initialize-as-empty-fbo
(function).
initialize-regular-fbo
(function).
make-existing-fbo-empty
(function).
make-fbo-non-empty
(function).
make-fbo-now
(function).
post-gl-init
(function).
pre-gl-init
(function).
process-fbo-init-pattern
(function).
throw-missing-col-attrs
(function).
update-clear-mask
(function).
update-draw-buffer-map
(function).
viewport-for-array
(function).
with-fbo-slots
(macro).
cepl.gpu-arrays.buffer-backed
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.errors
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
adjust-gpu-array
(function).
free-gpu-array
(generic function).
gpu-array-access-style
(function).
gpu-array-buffer
(function).
gpu-array-buffer-id
(function).
make-gpu-array
(generic function).
make-gpu-array-from-buffer
(function).
make-gpu-array-from-buffer-id
(function).
make-gpu-arrays
(function).
make-gpu-arrays-from-buffer
(function).
make-gpu-arrays-from-buffer-id
(function).
subseq-g
(function).
subseq-g-raw
(function).
blank-gpu-array-b-object
(function).
free-gpu-array-bb
(function).
init-gpu-array-from-c-array
(function).
init-gpu-array-no-data
(function).
init-gpu-arrays-from-c-arrays
(function).
make-gpu-array-share-data
(function).
process-layout
(function).
cepl.measurements
cepl-utils
.
cepl.build
.
common-lisp
.
glsl-symbols
.
dimensions
(generic function).
(setf dimensions)
(generic function).
dimensions
(slot).
origin
(generic function).
(setf origin)
(generic function).
resolution
(generic function).
(setf resolution)
(generic function).
cepl.blending
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.internals
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
destination-alpha
(function).
(setf destination-alpha)
(function).
destination-rgb
(function).
(setf destination-rgb)
(function).
mode-alpha
(function).
(setf mode-alpha)
(function).
mode-rgb
(function).
(setf mode-rgb)
(function).
source-alpha
(function).
(setf source-alpha)
(function).
source-rgb
(function).
(setf source-rgb)
(function).
with-blending
(macro).
%blend-fbo
(function).
%blend-i
(function).
%blend-using-params
(function).
%current-blend-params
(function).
%gen-attachment-blend
(function).
%loop-setting-per-attachment-blend-params
(function).
%set-current-blend-params
(function).
%set-current-blend-params-from-fbo
(function).
%with-blending
(macro).
blend-func-namep
(function).
check-version-for-per-attachment-params
(function).
current-blend-params
(compiler macro).
current-blend-params
(function).
loop-disabling-attachments
(function).
loop-enabling-attachments
(function).
set-current-blend-params
(compiler macro).
set-current-blend-params
(function).
set-current-blend-params-from-fbo
(compiler macro).
set-current-blend-params-from-fbo
(function).
with-blending-param-slots
(macro).
cepl.documentation-functions
cepl-utils
.
cepl.build
.
common-lisp
.
glsl-symbols
.
always
(function).
keep
(function).
never
(function).
one
(function).
stencil-decf
(function).
stencil-decf-wrap
(function).
stencil-incf
(function).
stencil-incf-wrap
(function).
stencil-invert
(function).
stencil-replace
(function).
zero
(function).
cepl.scissor
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.internals
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
scissor-viewport
(compiler macro).
(setf scissor-viewport)
(compiler macro).
scissor-viewport
(function).
(setf scissor-viewport)
(function).
%scissor-viewport
(function).
%set-scissor-viewport
(function).
force-scissor-viewport
(function).
cepl.stencil
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.internals
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
current-stencil-params
(compiler macro).
(setf current-stencil-params)
(compiler macro).
current-stencil-params
(function).
(setf current-stencil-params)
(function).
make-stencil-params
(function).
stencil-params-mask
(function).
stencil-params-on-dpfail
(function).
stencil-params-on-dppass
(function).
stencil-params-on-sfail
(function).
stencil-params-on-stencil-pass-depth-test-fail
(function).
stencil-params-on-stencil-pass-depth-test-pass
(function).
stencil-params-on-stencil-test-fail
(function).
stencil-params-test
(function).
stencil-params-value
(function).
%apply-stencil-params
(function).
%current-stencil-params
(function).
+valid-stencil-tests+
(constant).
stencil-operation-enum-to-func
(function).
stencil-operation-to-enum
(function).
stencil-test-enum-to-func
(function).
stencil-test-to-enum
(function).
cepl.samplers
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.internals
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
anisotropy
(function).
(setf anisotropy)
(function).
free-sampler
(function).
sample
(function).
sampler-texture
(function).
sampler-type
(function).
with-temp-sampler
(macro).
%delete-sampler
(function).
%get-id
(function).
%set-anisotropy
(function).
%set-border-color
(function).
%set-compare
(function).
%set-lod-bias
(function).
%set-magnify-filter
(function).
%set-max-lod
(function).
%set-min-lod
(function).
%set-minify-filter
(function).
%set-wrap
(function).
*anisotropy-available*
(special variable).
*default-sampler-id-box*
(special variable).
*fake-sampler-id*
(special variable).
*fake-sampler-id-lock*
(special variable).
*samplers-available*
(special variable).
+sampler-types+
(constant).
border-color
(function).
(setf border-color)
(function).
calc-minify-filter
(function).
calc-sampler-type
(function).
check-anisotropy-feature
(function).
check-sampler-feature
(function).
get-sampler-id-box
(function).
make-default-sampler-id-box
(function).
make-sampler-now
(function).
note-change
(function).
sampler-on-context
(function).
sampler-typep
(function).
wrap-eq
(function).
cepl.types.foreign
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
cepl.memory
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
double-from-foreign
(function).
double-to-foreign
(function).
float-from-foreign
(function).
float-to-foreign
(function).
half-float-from-foreign
(function).
half-float-to-foreign
(function).
half-vec2-from-foreign
(function).
half-vec2-to-foreign
(function).
half-vec3-from-foreign
(function).
half-vec3-to-foreign
(function).
half-vec4-from-foreign
(function).
half-vec4-to-foreign
(function).
int-from-foreign
(function).
int-to-foreign
(function).
int32-from-foreign
(function).
int32-to-foreign
(function).
int8-from-foreign
(function).
int8-to-foreign
(function).
int8-vec2-from-foreign
(function).
int8-vec2-to-foreign
(function).
int8-vec3-from-foreign
(function).
int8-vec3-to-foreign
(function).
int8-vec4-from-foreign
(function).
int8-vec4-to-foreign
(function).
ivec2-from-foreign
(function).
ivec2-to-foreign
(function).
ivec3-from-foreign
(function).
ivec3-to-foreign
(function).
ivec4-from-foreign
(function).
ivec4-to-foreign
(function).
mat2-from-foreign
(function).
mat2-to-foreign
(function).
mat2x2-from-foreign
(function).
mat2x2-to-foreign
(function).
mat2x3-from-foreign
(function).
mat2x3-to-foreign
(function).
mat2x4-from-foreign
(function).
mat2x4-to-foreign
(function).
mat3-from-foreign
(function).
mat3-to-foreign
(function).
mat3x2-from-foreign
(function).
mat3x2-to-foreign
(function).
mat3x3-from-foreign
(function).
mat3x3-to-foreign
(function).
mat3x4-from-foreign
(function).
mat3x4-to-foreign
(function).
mat4-from-foreign
(function).
mat4-to-foreign
(function).
mat4x2-from-foreign
(function).
mat4x2-to-foreign
(function).
mat4x3-from-foreign
(function).
mat4x3-to-foreign
(function).
mat4x4-from-foreign
(function).
mat4x4-to-foreign
(function).
short-from-foreign
(function).
short-to-foreign
(function).
uint-from-foreign
(function).
uint-to-foreign
(function).
uint32-from-foreign
(function).
uint32-to-foreign
(function).
uint8-from-foreign
(function).
uint8-to-foreign
(function).
uint8-vec2-from-foreign
(function).
uint8-vec2-to-foreign
(function).
uint8-vec3-from-foreign
(function).
uint8-vec3-to-foreign
(function).
uint8-vec4-from-foreign
(function).
uint8-vec4-to-foreign
(function).
ushort-from-foreign
(function).
ushort-to-foreign
(function).
uvec2-from-foreign
(function).
uvec2-to-foreign
(function).
uvec3-from-foreign
(function).
uvec3-to-foreign
(function).
uvec4-from-foreign
(function).
uvec4-to-foreign
(function).
vec2-from-foreign
(function).
vec2-to-foreign
(function).
vec3-from-foreign
(function).
vec3-to-foreign
(function).
vec4-from-foreign
(function).
vec4-to-foreign
(function).
cepl
cepl-utils
.
cepl.blending
.
cepl.build
.
cepl.c-arrays
.
cepl.compute
.
cepl.context
.
cepl.documentation-functions
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.lifecycle
.
cepl.measurements
.
cepl.memory
.
cepl.pipelines
.
cepl.pixel-formats
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.types
.
cepl.types.predefined
.
cepl.ubos
.
cepl.viewports
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
cepl-describe
(function).
cls
(function).
initialize-cepl
(function).
make-project
(function).
quit
(function).
register-event-listener
(function).
repl
(function).
step-host
(function).
swap
(function).
*template-dir*
(special variable).
make-project-needs-quickproject
(condition).
make-project-no-such-dir
(condition).
process-mp-path
(function).
cepl.types.predefined
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
bi-tangent
(generic function).
(setf bi-tangent)
(generic function).
col
(generic function).
(setf col)
(generic function).
g-pc
(structure).
g-pn
(structure).
g-pnb
(structure).
g-pnc
(structure).
g-pncb
(structure).
g-pnt
(structure).
g-pntb
(structure).
g-pntc
(structure).
g-pntcb
(structure).
g-pt
(structure).
make-g-pc
(function).
make-g-pn
(function).
make-g-pnb
(function).
make-g-pnc
(function).
make-g-pncb
(function).
make-g-pnt
(function).
make-g-pntb
(function).
make-g-pntc
(function).
make-g-pntcb
(function).
make-g-pt
(function).
norm
(generic function).
(setf norm)
(generic function).
pos
(generic function).
(setf pos)
(generic function).
tangent
(generic function).
(setf tangent)
(generic function).
tex
(generic function).
(setf tex)
(generic function).
cepl.types.predefined.g-pc.foreign-tclass
(class).
cepl.types.predefined.g-pn.foreign-tclass
(class).
cepl.types.predefined.g-pnb.foreign-tclass
(class).
cepl.types.predefined.g-pnc.foreign-tclass
(class).
cepl.types.predefined.g-pncb.foreign-tclass
(class).
cepl.types.predefined.g-pnt.foreign-tclass
(class).
cepl.types.predefined.g-pntb.foreign-tclass
(class).
cepl.types.predefined.g-pntc.foreign-tclass
(class).
cepl.types.predefined.g-pntcb.foreign-tclass
(class).
cepl.types.predefined.g-pt.foreign-tclass
(class).
g-pc-p
(function).
g-pc-pointer
(function).
(setf g-pc-pointer)
(function).
g-pn-p
(function).
g-pn-pointer
(function).
(setf g-pn-pointer)
(function).
g-pnb-p
(function).
g-pnb-pointer
(function).
(setf g-pnb-pointer)
(function).
g-pnc-p
(function).
g-pnc-pointer
(function).
(setf g-pnc-pointer)
(function).
g-pncb-p
(function).
g-pncb-pointer
(function).
(setf g-pncb-pointer)
(function).
g-pnt-p
(function).
g-pnt-pointer
(function).
(setf g-pnt-pointer)
(function).
g-pntb-p
(function).
g-pntb-pointer
(function).
(setf g-pntb-pointer)
(function).
g-pntc-p
(function).
g-pntc-pointer
(function).
(setf g-pntc-pointer)
(function).
g-pntcb-p
(function).
g-pntcb-pointer
(function).
(setf g-pntcb-pointer)
(function).
g-pt-p
(function).
g-pt-pointer
(function).
(setf g-pt-pointer)
(function).
populate-g-pc
(function).
populate-g-pn
(function).
populate-g-pnb
(function).
populate-g-pnc
(function).
populate-g-pncb
(function).
populate-g-pnt
(function).
populate-g-pntb
(function).
populate-g-pntc
(function).
populate-g-pntcb
(function).
populate-g-pt
(function).
v_g-pc
(class).
v_g-pn
(class).
v_g-pnb
(class).
v_g-pnc
(class).
v_g-pncb
(class).
v_g-pnt
(class).
v_g-pntb
(class).
v_g-pntc
(class).
v_g-pntcb
(class).
v_g-pt
(class).
cepl.queries
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.internals
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
gpu-query-result-available-p
(function).
pull-all-gpu-commands-issued-time
(function).
pull-gpu-query-result
(function).
push-gpu-query-result-to-gpu-array
(function).
query-all-gpu-commands-completed-time
(function).
with-gpu-query-bound
(macro).
begin-scoped-gpu-query
(function).
calc-query-get-func-for-gpu-array
(function).
end-scoped-gpu-query
(function).
cepl.ubos
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-buffers
.
cepl.internals
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
make-ubo
(function).
make-ubo-from-array
(function).
ubo-data-type
(function).
%bind-ubo
(function).
*freed-ubo-id*
(special variable).
*lowest-unused-ubo-id*
(special variable).
*ubo-id-lock*
(special variable).
copy-c-array-to-ubo
(function).
copy-lisp-array-to-ubo
(function).
copy-lisp-list-to-ubo
(function).
copy-ubo-to-new-c-array
(function).
copy-ubo-to-new-lisp-data
(function).
get-free-ubo-id
(function).
make-ubo-from-array-bad-type
(condition).
make-ubo-from-buffer
(function).
cepl.viewports
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.context
.
cepl.errors
.
cepl.internals
.
cepl.measurements
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
current-viewport
(function).
viewport-dimensions
(function).
(setf viewport-dimensions)
(function).
viewport-eql
(function).
viewport-origin
(function).
(setf viewport-origin)
(function).
viewport-origin-i
(function).
(setf viewport-origin-i)
(function).
viewport-origin-x
(function).
viewport-origin-y
(function).
viewport-params-to-vec4
(function).
viewport-resolution
(function).
(setf viewport-resolution)
(function).
viewport-resolution-x
(function).
viewport-resolution-y
(function).
with-fbo-viewport
(macro).
with-viewport
(macro).
%current-viewport
(function).
%set-current-viewport
(function).
%set-resolution
(function).
%update-default-framebuffer-dimensions
(function).
cepl.render-buffers
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.image-formats
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.textures
.
cepl.types
.
cepl.viewports
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
make-render-buffer
(function).
render-buffer-dimensions
(function).
render-buffer-image-format
(function).
render-buffer-multisample-p
(function).
render-buffer-resolution
(function).
make-render-buffer-now
(function).
render-buffer-element-type
(function).
cepl.compute
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.internals
.
cepl.measurements
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
compute-space-as-uvec3
(function).
(setf compute-space-as-uvec3)
(function).
compute-space-dimensions
(function).
(setf compute-space-dimensions)
(function).
cepl.context
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
cepl.internals
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
+max-context-count+
(constant).
add-surface
(function).
can-bind-query-p
(function).
cepl-context
(compiler macro).
cepl-context
(function).
cepl-context
(structure).
clear-color
(function).
(setf clear-color)
(function).
color-mask
(compiler macro).
(setf color-mask)
(compiler macro).
color-mask
(function).
(setf color-mask)
(function).
color-masks
(compiler macro).
(setf color-masks)
(compiler macro).
color-masks
(function).
(setf color-masks)
(function).
context-id
(function).
context-id
(type).
cull-face
(compiler macro).
(setf cull-face)
(compiler macro).
cull-face
(function).
(setf cull-face)
(function).
current-surface
(function).
depth-clamp
(compiler macro).
(setf depth-clamp)
(compiler macro).
depth-clamp
(function).
(setf depth-clamp)
(function).
depth-mask
(compiler macro).
(setf depth-mask)
(compiler macro).
depth-mask
(function).
(setf depth-mask)
(function).
depth-range-vec2
(compiler macro).
(setf depth-range-vec2)
(compiler macro).
depth-range-vec2
(function).
(setf depth-range-vec2)
(function).
depth-test-function
(compiler macro).
(setf depth-test-function)
(compiler macro).
depth-test-function
(function).
(setf depth-test-function)
(function).
draw-fbo-bound
(function).
(setf draw-fbo-bound)
(function).
fbo-bound
(function).
(setf fbo-bound)
(function).
force-bind-query
(function).
force-unbind-query
(function).
front-face
(compiler macro).
(setf front-face)
(compiler macro).
front-face
(function).
(setf front-face)
(function).
gl-context
(class).
gl-initialized-p
(function).
gpu-buffer-bound
(compiler macro).
(setf gpu-buffer-bound)
(compiler macro).
gpu-buffer-bound
(function).
(setf gpu-buffer-bound)
(function).
has-feature
(function).
major-version
(generic reader).
make-context
(function).
make-context-shared-with-current-context
(function).
make-surface-current
(function).
minor-version
(generic reader).
pack-alignment
(compiler macro).
(setf pack-alignment)
(compiler macro).
pack-alignment
(function).
(setf pack-alignment)
(function).
read-fbo-bound
(function).
(setf read-fbo-bound)
(function).
remove-surface
(function).
split-float-version
(function).
surface-dimensions
(function).
(setf surface-dimensions)
(function).
surface-fullscreen-p
(function).
(setf surface-fullscreen-p)
(function).
surface-resolution
(function).
(setf surface-resolution)
(function).
surface-title
(function).
(setf surface-title)
(function).
surfaces
(function).
unpack-alignment
(compiler macro).
(setf unpack-alignment)
(compiler macro).
unpack-alignment
(function).
(setf unpack-alignment)
(function).
vao-bound
(function).
(setf vao-bound)
(function).
version-float
(generic function).
with-cepl-context
(macro).
with-context-state-restored
(macro).
%apply-stencil-mask
(function).
%cepl-context-array-of-bound-gpu-buffers
(reader).
(setf %cepl-context-array-of-bound-gpu-buffers)
(writer).
%cepl-context-array-of-bound-queries
(reader).
(setf %cepl-context-array-of-bound-queries)
(writer).
%cepl-context-array-of-bound-samplers
(reader).
(setf %cepl-context-array-of-bound-samplers)
(writer).
%cepl-context-array-of-gpu-buffers
(reader).
(setf %cepl-context-array-of-gpu-buffers)
(writer).
%cepl-context-array-of-ssbo-binding-ranges
(reader).
(setf %cepl-context-array-of-ssbo-binding-ranges)
(writer).
%cepl-context-array-of-ssbo-bindings-buffer-ids
(reader).
(setf %cepl-context-array-of-ssbo-bindings-buffer-ids)
(writer).
%cepl-context-array-of-textures
(reader).
(setf %cepl-context-array-of-textures)
(writer).
%cepl-context-array-of-transform-feedback-bindings-buffer-ids
(reader).
(setf %cepl-context-array-of-transform-feedback-bindings-buffer-ids)
(writer).
%cepl-context-array-of-ubo-binding-ranges
(reader).
(setf %cepl-context-array-of-ubo-binding-ranges)
(writer).
%cepl-context-array-of-ubo-bindings-buffer-ids
(reader).
(setf %cepl-context-array-of-ubo-bindings-buffer-ids)
(writer).
%cepl-context-bound-thread
(reader).
(setf %cepl-context-bound-thread)
(writer).
%cepl-context-clear-color
(reader).
(setf %cepl-context-clear-color)
(writer).
%cepl-context-color-masks
(reader).
(setf %cepl-context-color-masks)
(writer).
%cepl-context-cull-face
(reader).
(setf %cepl-context-cull-face)
(writer).
%cepl-context-current-blend-params
(reader).
(setf %cepl-context-current-blend-params)
(writer).
%cepl-context-current-draw-buffers-len
(reader).
(setf %cepl-context-current-draw-buffers-len)
(writer).
%cepl-context-current-draw-buffers-ptr
(reader).
(setf %cepl-context-current-draw-buffers-ptr)
(writer).
%cepl-context-current-program
(reader).
(setf %cepl-context-current-program)
(writer).
%cepl-context-current-scissor-viewports
(reader).
(setf %cepl-context-current-scissor-viewports)
(writer).
%cepl-context-current-stencil-mask-back
(reader).
(setf %cepl-context-current-stencil-mask-back)
(writer).
%cepl-context-current-stencil-mask-front
(reader).
(setf %cepl-context-current-stencil-mask-front)
(writer).
%cepl-context-current-stencil-params-back
(reader).
(setf %cepl-context-current-stencil-params-back)
(writer).
%cepl-context-current-stencil-params-front
(reader).
(setf %cepl-context-current-stencil-params-front)
(writer).
%cepl-context-current-surface
(reader).
(setf %cepl-context-current-surface)
(writer).
%cepl-context-current-tfs
(reader).
(setf %cepl-context-current-tfs)
(writer).
%cepl-context-current-viewport
(reader).
(setf %cepl-context-current-viewport)
(writer).
%cepl-context-default-framebuffer
(reader).
(setf %cepl-context-default-framebuffer)
(writer).
%cepl-context-default-viewport
(reader).
(setf %cepl-context-default-viewport)
(writer).
%cepl-context-depth-clamp
(reader).
(setf %cepl-context-depth-clamp)
(writer).
%cepl-context-depth-func
(reader).
(setf %cepl-context-depth-func)
(writer).
%cepl-context-depth-mask
(reader).
(setf %cepl-context-depth-mask)
(writer).
%cepl-context-depth-range
(reader).
(setf %cepl-context-depth-range)
(writer).
%cepl-context-draw-fbo-binding
(reader).
(setf %cepl-context-draw-fbo-binding)
(writer).
%cepl-context-fbos
(reader).
(setf %cepl-context-fbos)
(writer).
%cepl-context-front-face
(reader).
(setf %cepl-context-front-face)
(writer).
%cepl-context-gl-context
(reader).
(setf %cepl-context-gl-context)
(writer).
%cepl-context-gl-version-float
(reader).
(setf %cepl-context-gl-version-float)
(writer).
%cepl-context-id
(reader).
(setf %cepl-context-id)
(writer).
%cepl-context-instance-count
(reader).
(setf %cepl-context-instance-count)
(writer).
%cepl-context-max-draw-buffer-count
(reader).
(setf %cepl-context-max-draw-buffer-count)
(writer).
%cepl-context-pack-alignment
(reader).
(setf %cepl-context-pack-alignment)
(writer).
%cepl-context-read-fbo-binding
(reader).
(setf %cepl-context-read-fbo-binding)
(writer).
%cepl-context-requested-gl-version
(reader).
(setf %cepl-context-requested-gl-version)
(writer).
%cepl-context-shared
(reader).
(setf %cepl-context-shared)
(writer).
%cepl-context-surfaces
(reader).
(setf %cepl-context-surfaces)
(writer).
%cepl-context-uninitialized-resources
(reader).
(setf %cepl-context-uninitialized-resources)
(writer).
%cepl-context-unpack-alignment
(reader).
(setf %cepl-context-unpack-alignment)
(writer).
%cepl-context-vao-binding-id
(reader).
(setf %cepl-context-vao-binding-id)
(writer).
%color-mask
(function).
%color-masks
(function).
%cull-face
(function).
%depth-clamp
(function).
%depth-mask
(function).
%depth-range-vec2
(function).
%depth-test-function
(function).
%force-depth-test-function
(function).
%front-face
(function).
%inner-with-context
(function).
%make-cepl-context
(function).
%pack-alignment
(function).
%register-ssbo-id
(function).
%register-ubo-id
(function).
%set-color-mask
(function).
%set-color-masks
(function).
%set-cull-face
(function).
%set-default-fbo-and-viewport
(function).
%set-depth-clamp
(function).
%set-depth-mask
(function).
%set-depth-range-vec2
(function).
%set-depth-test-function
(function).
%set-draw-fbo-no-check
(function).
%set-fbo-bound
(function).
%set-fbo-no-check
(function).
%set-front-face
(function).
%set-pack-alignment
(function).
%set-read-fbo-no-check
(function).
%set-unpack-alignment
(function).
%stencil-mask
(function).
%unpack-alignment
(function).
%with-cepl-context-slots
(macro).
%with-context
(function).
*cepl-context*
(special variable).
*contexts*
(special variable).
*contexts-lock*
(special variable).
*free-context-ids*
(special variable).
*free-context-ids-lock*
(special variable).
*post-context-init*
(special variable).
*primary-context*
(special variable).
assert-no-other-context-is-bound-to-thread
(function).
buffer-bound-static
(function).
buffer-kind->cache-index
(function).
buffer-kind->enum
(function).
cepl-context-p
(function).
complete-unbound-context
(function).
copy-cepl-context
(function).
copy-delayed
(function).
copy-unbound-cepl-context
(function).
define-context-func
(macro).
delay-initialization
(function).
delayed
(structure).
delayed-p
(function).
delayed-thunk
(reader).
(setf delayed-thunk)
(writer).
delayed-waiting-on
(reader).
(setf delayed-waiting-on)
(writer).
discard-context-id
(function).
draw-buffer-i
(generic function).
ensure-array-of-ssbo-binding-ranges
(function).
ensure-array-of-ssbo-bindings-buffer-ids
(function).
ensure-array-of-ubo-binding-ranges
(function).
ensure-array-of-ubo-bindings-buffer-ids
(function).
ensure-cepl-compatible-setup
(function).
force-bind-vao
(function).
force-depth-test-function
(compiler macro).
force-depth-test-function
(function).
force-sampler-bound
(function).
forget-fbo
(function).
forget-gpu-buffer
(function).
forget-texture
(function).
free-context
(function).
get-best-glsl-version
(function).
get-free-context-id
(function).
handle
(generic reader).
if-gl-context
(macro).
init-gl-context
(function).
init-pending-surfaces
(function).
initialize-all-delay-items-in-context
(function).
initialize-all-delayed
(function).
initialize-delayed
(function).
l-identity
(macro).
legacy-add-surface
(function).
make-context-internals
(function).
make-delayed
(function).
make-surface-from-pending
(function).
make-unbound-cepl-context
(function).
patch-uninitialized-context-with-version
(function).
pending-surface
(class).
primary-context
(function).
primary-thread
(function).
register-fbo
(function).
register-gpu-buffer
(function).
register-texture
(function).
restore-array-of-bound-gpu-buffers
(function).
restore-array-of-bound-samplers
(function).
restore-array-of-ssbo-bindings-buffer-ids
(function).
restore-array-of-ubo-bindings-buffer-ids
(function).
restore-clear-color
(function).
restore-color-masks
(function).
restore-cull-face
(function).
restore-current-scissor-viewports
(function).
restore-depth-clamp
(function).
restore-depth-mask
(function).
restore-depth-range
(function).
restore-depth-test-function
(function).
restore-fbo-bindings
(function).
restore-front-face
(function).
restore-pack-alignment
(function).
restore-program
(function).
restore-stencil
(function).
restore-unpack-alignment
(function).
restore-vao
(function).
restore-viewport
(function).
runtime-restore-block-checks
(function).
set-buffer-bound-static
(function).
set-context-defaults
(function).
set-sampler-bound
(function).
ssbo-bind-buffer-id-range
(function).
transform-feedback-bind-buffer-id-range
(function).
ubo-bind-buffer-id-range
(function).
unbound-cepl-context
(structure).
unbound-cepl-context-consumed
(reader).
(setf unbound-cepl-context-consumed)
(writer).
unbound-cepl-context-gl-context
(reader).
(setf unbound-cepl-context-gl-context)
(writer).
unbound-cepl-context-p
(function).
unbound-cepl-context-requested-gl-version
(reader).
(setf unbound-cepl-context-requested-gl-version)
(writer).
unbound-cepl-context-shared
(reader).
(setf unbound-cepl-context-shared)
(writer).
unbound-cepl-context-surface
(reader).
(setf unbound-cepl-context-surface)
(writer).
unbound-cepl-context-surfaces
(reader).
(setf unbound-cepl-context-surfaces)
(writer).
cepl.textures
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.pixel-formats
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
*immutable-available*
(special variable).
copy-buffer-backed-gpu-array-to-texture-backed-gpu-array
(function).
copy-c-array-to-texture-backed-gpu-array
(function).
copy-lisp-data-to-texture-backed-gpu-array
(function).
copy-texture-backed-gpu-array-to-buffer-backed-gpu-array
(function).
copy-texture-backed-gpu-array-to-c-array
(function).
copy-texture-backed-gpu-array-to-new-buffer-backed-gpu-array
(function).
copy-texture-backed-gpu-array-to-new-c-array
(function).
copy-texture-backed-gpu-array-to-new-lisp-data
(function).
free-texture
(generic function).
generate-mipmaps
(function).
make-texture
(function).
make-texture-from-id
(function).
texref
(function).
texture-element-type
(function).
%calc-image-format-with-declared-format
(function).
%calc-image-format-with-lisp-type
(function).
%calc-image-format-with-pixel-format
(function).
%calc-image-format-without-declared-format
(function).
%find-tex-image-format
(function).
%make-buffer-texture
(function).
%make-cube-texture
(function).
%make-texture
(function).
%make-texture-with-lisp-data
(function).
%texture-dimensions
(function).
%upload-tex
(function).
%with-scratch-texture-bound
(macro).
+cube-face-order+
(constant).
+cube-face-order-enums+
(constant).
+valid-texture-storage-options+
(constant).
allocate-immutable-texture
(function).
allocate-mutable-texture
(function).
allocate-texture
(function).
assert-valid-args-for-buffer-backed-texture
(function).
bind-scratch-texture
(function).
blank-texture-object
(function).
(setf border-color)
(function).
calc-image-format
(function).
calc-max-num-mipmap-levels
(function).
check-immutable-feature
(function).
check-mipmap-level-count-valid
(generic function).
dimensions-at-mipmap-level
(function).
error-on-invalid-upload-formats
(function).
establish-texture-type
(function).
fallback-sampler-set
(function).
free-gpu-array-t
(function).
gen-buffer-tex-initial-contents
(function).
gen-texture
(function).
make-texture-now
(function).
multisample-texture-p
(function).
pack-pixels-from-texture
(function).
pixel-format-from-array
(generic function).
po2p
(function).
reinit-on-context
(function).
slow-query-mipmap-count
(function).
(setf tex-compare)
(function).
tex-kind->cache-index
(function).
(setf tex-lod-bias)
(function).
(setf tex-magnify-filter)
(function).
(setf tex-max-lod)
(function).
(setf tex-min-lod)
(function).
(setf tex-minify-filter)
(function).
tex-storage-1d
(function).
tex-storage-2d
(function).
tex-storage-2d-multisample
(function).
tex-storage-3d
(function).
tex-storage-3d-multisample
(function).
(setf tex-wrap)
(function).
unbind-texture-from-scratch
(function).
upload-c-array-to-gpu-array-t
(function).
upload-gpu-array-bb-to-gpu-array-t
(function).
valid-index-p
(function).
validate-pixel-format
(function).
with-gpu-array-t
(macro).
cepl.defn
alexandria
.
common-lisp
.
define-defn-declaration
(macro).
defmethod+
(macro).
defn
(macro).
defn-inline
(macro).
defun+
(macro).
locally+
(macro).
parse-body+
(function).
%defn
(function).
*standard-declarations*
(special variable).
handle-defn-declaration
(generic function).
parse-defn-args
(function).
process-defn-declares
(function).
cepl.host
alexandria
.
cepl.build
.
cepl.defn
.
common-lisp
.
api-1
(class).
api-2
(class).
destroy-surface
(function).
host-step
(function).
host-swap
(function).
init
(generic function).
initialize
(function).
make-gl-context
(function).
make-gl-context-current-on-surface
(function).
make-gl-context-shared-with-current-context
(function).
make-surface
(function).
register-host
(function).
request-context
(generic function).
set-default-swap-arg
(function).
set-make-gl-context-current-on-surface
(function).
set-register-event-callback-func
(function).
set-step-func
(function).
set-surface-fullscreen
(function).
set-surface-size
(function).
set-surface-title
(function).
set-swap-func
(function).
set-window-size-func
(function).
shutdown
(generic function).
supports-multiple-contexts-p
(function).
supports-multiple-surfaces-p
(function).
surface-fullscreen-p
(function).
surface-title
(function).
window-size
(function).
%api-0-populate-singletons
(function).
%destroy-surface
(generic function).
%init
(generic function).
%make-gl-context
(generic function).
%make-gl-context-shared-with-current-context
(generic function).
%make-surface
(generic function).
%set-surface-fullscreen
(generic function).
%set-surface-size
(generic function).
%set-surface-title
(generic function).
%shutdown
(generic function).
%supports-multiple-contexts-p
(generic function).
%supports-multiple-surfaces-p
(generic function).
%surface-fullscreen-p
(generic function).
%surface-title
(generic function).
*api-0-context-singleton*
(special variable).
*api-0-make-context-called*
(special variable).
*api-0-make-window-called*
(special variable).
*api-0-window-singleton*
(special variable).
*current-host*
(special variable).
*declared-host*
(special variable).
api-0
(class).
cepl-host-api
(class).
check-host
(generic function).
register-event-listener
(function).
replace-host
(function).
set-primary-thread-and-run
(generic function).
cepl.gpu-arrays
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.errors
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.textures
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
backed-by
(function).
copy-buffer-backed-gpu-array-to-new-c-array
(function).
copy-buffer-backed-gpu-array-to-new-lisp-data
(function).
copy-c-array-to-buffer-backed-gpu-array
(function).
copy-lisp-data-to-buffer-backed-gpu-array
(function).
gpu-array-element-type
(function).
reallocate-gpu-array
(function).
with-gpu-array-as-c-array
(macro).
with-gpu-array-as-pointer
(macro).
with-gpu-array-range-as-c-array
(macro).
with-gpu-array-range-as-pointer
(macro).
%process-with-gpu-array-range-macro-args
(function).
%process-with-gpu-array-range-runtime
(function).
with-buffer-range-mapped
(macro).
cepl.gpu-arrays.texture-backed
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.errors
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.textures
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
gpu-array-face-num
(function).
gpu-array-layer-num
(function).
gpu-array-level-num
(function).
gpu-array-texture
(function).
gpu-array-texture-type
(function).
cepl.memory
%cepl.types
.
cepl-utils
.
cepl.build
.
cffi
.
common-lisp
.
glsl-symbols
.
cepl
.
cepl.c-arrays
.
cepl.context
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.pipelines
.
cepl.render-buffers
.
cepl.samplers
.
cepl.ssbos
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.types
.
cepl.types.foreign
.
cepl.types.predefined
.
cepl.ubos
.
cepl.lifecycle
cepl-utils
.
cepl.build
.
common-lisp
.
glsl-symbols
.
cepl
.
listen-to-lifecycle-changes
(function).
shutting-down-p
(function).
stop-listening-to-lifecycle-changes
(function).
uninitialized-p
(function).
*active-listeners*
(special variable).
*lifecycle-state*
(special variable).
*shutting-down-listeners*
(special variable).
*suspended-listeners*
(special variable).
+lifecycle-states+
(constant).
active-p
(function).
call-listeners
(function).
change-state
(function).
from-active
(function).
from-suspended
(function).
from-unitialized
(function).
suspended-p
(function).
to-active
(function).
to-shutting-down
(function).
to-suspended
(function).
cepl.transform-feedback
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.internals
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
make-transform-feedback-stream
(function).
transform-feedback-stream-arrays
(function).
(setf transform-feedback-stream-arrays)
(function).
with-transform-feedback
(macro).
%bind-tfs-arrays
(function).
%unbind-tfs-arrays
(function).
cepl.streams
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.errors
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-buffers
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.types
.
cepl.vaos
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
free-buffer-stream
(function).
make-buffer-stream
(function).
make-buffer-stream-from-id-and-layouts
(function).
make-buffer-stream-sharing
(function).
blank-buffer-stream
(function).
init-buffer-stream-from-id
(function).
init-buffer-stream-from-shared
(function).
make-buffer-stream-from-id
(function).
process-stream-layout
(function).
%cepl.types
cepl-utils
.
cepl.build
.
cepl.documentation-functions
.
cepl.errors
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
float-features
.
glsl-symbols
.
varjo
.
cepl.blending
.
cepl.c-arrays
.
cepl.compute
.
cepl.context
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.memory
.
cepl.pipelines
.
cepl.pixel-formats
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.types
.
cepl.types.foreign
.
cepl.types.predefined
.
cepl.ubos
.
cepl.vaos
.
cepl.viewports
.
%%make-buffer-texture
(function).
%%make-fbo
(function).
%%make-texture
(function).
%empty-fbo-params-dimensions
(reader).
(setf %empty-fbo-params-dimensions)
(writer).
%empty-fbo-params-fbo
(reader).
(setf %empty-fbo-params-fbo)
(writer).
%empty-fbo-params-fixed-sample-locations-p
(reader).
(setf %empty-fbo-params-fixed-sample-locations-p)
(writer).
%empty-fbo-params-layer-count
(reader).
(setf %empty-fbo-params-layer-count)
(writer).
%empty-fbo-params-samples
(reader).
(setf %empty-fbo-params-samples)
(writer).
%empty-fbo-params-viewport
(reader).
(setf %empty-fbo-params-viewport)
(writer).
%fbo-attachment-count
(reader).
(setf %fbo-attachment-count)
(writer).
%fbo-blending-params
(reader).
(setf %fbo-blending-params)
(writer).
%fbo-clear-mask
(reader).
(setf %fbo-clear-mask)
(writer).
%fbo-color-arrays
(reader).
(setf %fbo-color-arrays)
(writer).
%fbo-color-arrays-fill-pointer
(reader).
(setf %fbo-color-arrays-fill-pointer)
(writer).
%fbo-depth-array
(reader).
(setf %fbo-depth-array)
(writer).
%fbo-draw-buffer-map
(reader).
(setf %fbo-draw-buffer-map)
(writer).
%fbo-empty-params
(reader).
(setf %fbo-empty-params)
(writer).
%fbo-id
(reader).
(setf %fbo-id)
(writer).
%fbo-is-default
(reader).
(setf %fbo-is-default)
(writer).
%fbo-stencil-array
(reader).
(setf %fbo-stencil-array)
(writer).
%gpu-fence-obj
(reader).
(setf %gpu-fence-obj)
(writer).
%make-c-array
(function).
%make-gpu-array
(function).
%make-gpu-array-bb
(function).
%make-gpu-array-t
(function).
%make-gpu-buffer
(function).
%make-gpu-fence
(function).
%make-render-buffer
(function).
%make-sampler
(function).
%make-ssbo
(function).
%make-stencil-params
(function).
%make-tfs
(function).
%make-ubo
(function).
%make-viewport
(function).
%render-buffer-id
(reader).
(setf %render-buffer-id)
(writer).
%render-buffer-image-format
(reader).
(setf %render-buffer-image-format)
(writer).
%render-buffer-multisample-p
(reader).
(setf %render-buffer-multisample-p)
(writer).
%render-buffer-resolution
(reader).
(setf %render-buffer-resolution)
(writer).
%sampler-anisotropy
(reader).
(setf %sampler-anisotropy)
(writer).
%sampler-border-color
(reader).
(setf %sampler-border-color)
(writer).
%sampler-compare
(reader).
(setf %sampler-compare)
(writer).
%sampler-expects-depth
(reader).
(setf %sampler-expects-depth)
(writer).
%sampler-expects-mipmap
(reader).
(setf %sampler-expects-mipmap)
(writer).
%sampler-id
(function).
(setf %sampler-id)
(function).
%sampler-id-box
(reader).
(setf %sampler-id-box)
(writer).
%sampler-lod-bias
(reader).
(setf %sampler-lod-bias)
(writer).
%sampler-magnify-filter
(reader).
(setf %sampler-magnify-filter)
(writer).
%sampler-max-lod
(reader).
(setf %sampler-max-lod)
(writer).
%sampler-min-lod
(reader).
(setf %sampler-min-lod)
(writer).
%sampler-minify-filter
(reader).
(setf %sampler-minify-filter)
(writer).
%sampler-texture
(reader).
(setf %sampler-texture)
(writer).
%sampler-type
(reader).
(setf %sampler-type)
(writer).
%sampler-wrap
(reader).
(setf %sampler-wrap)
(writer).
%stencil-params-mask
(reader).
%stencil-params-on-stencil-pass-depth-test-fail
(reader).
%stencil-params-on-stencil-pass-depth-test-pass
(reader).
%stencil-params-on-stencil-test-fail
(reader).
%stencil-params-test
(reader).
%stencil-params-value
(reader).
%tfs-arrays
(reader).
(setf %tfs-arrays)
(writer).
%tfs-bound
(reader).
(setf %tfs-bound)
(writer).
%tfs-current-prog-id
(reader).
(setf %tfs-current-prog-id)
(writer).
%tfs-pending-arrays
(reader).
(setf %tfs-pending-arrays)
(writer).
%viewport-origin-x
(reader).
(setf %viewport-origin-x)
(writer).
%viewport-origin-y
(reader).
(setf %viewport-origin-y)
(writer).
%viewport-resolution-x
(reader).
(setf %viewport-resolution-x)
(writer).
%viewport-resolution-y
(reader).
(setf %viewport-resolution-y)
(writer).
*extra-primitive-types*
(special variable).
+gl-id-bit-size+
(constant).
+null-buffer-backed-gpu-array+
(special variable).
+null-fbo+
(special variable).
+null-gl-id+
(constant).
+null-gpu-buffer+
(special variable).
+null-texture+
(special variable).
+null-texture-backed-gpu-array+
(special variable).
+null-vao+
(special variable).
+unknown-gl-id+
(constant).
active-texture-num
(function).
any-samples-passed-conservative-query
(structure).
any-samples-passed-query
(structure).
att
(structure).
att-array
(reader).
(setf att-array)
(writer).
att-blend
(reader).
(setf att-blend)
(writer).
att-bparams
(reader).
(setf att-bparams)
(writer).
att-owned-p
(reader).
(setf att-owned-p)
(writer).
att-viewport
(reader).
(setf att-viewport)
(writer).
attachment-name
(type).
attachment-num
(type).
blending-params
(function).
(setf blending-params)
(function).
blending-params
(structure).
blending-params-destination-alpha
(reader).
(setf blending-params-destination-alpha)
(writer).
blending-params-destination-rgb
(reader).
(setf blending-params-destination-rgb)
(writer).
blending-params-mode-alpha
(reader).
(setf blending-params-mode-alpha)
(writer).
blending-params-mode-rgb
(reader).
(setf blending-params-mode-rgb)
(writer).
blending-params-p
(function).
blending-params-source-alpha
(reader).
(setf blending-params-source-alpha)
(writer).
blending-params-source-rgb
(reader).
(setf blending-params-source-rgb)
(writer).
buffer-stream
(structure).
buffer-stream-%index-type-enum
(reader).
(setf buffer-stream-%index-type-enum)
(writer).
buffer-stream-%index-type-size
(reader).
(setf buffer-stream-%index-type-size)
(writer).
buffer-stream-%primitive
(reader).
(setf buffer-stream-%primitive)
(writer).
buffer-stream-%start
(reader).
(setf buffer-stream-%start)
(writer).
buffer-stream-%start-byte
(reader).
(setf buffer-stream-%start-byte)
(writer).
buffer-stream-base-vertex
(reader).
(setf buffer-stream-base-vertex)
(writer).
buffer-stream-draw-mode-val
(reader).
(setf buffer-stream-draw-mode-val)
(writer).
buffer-stream-gpu-arrays
(reader).
(setf buffer-stream-gpu-arrays)
(writer).
buffer-stream-index-type
(function).
(setf buffer-stream-index-type)
(function).
buffer-stream-length
(reader).
(setf buffer-stream-length)
(writer).
buffer-stream-managed
(reader).
(setf buffer-stream-managed)
(writer).
buffer-stream-p
(function).
buffer-stream-patch-length
(reader).
(setf buffer-stream-patch-length)
(writer).
buffer-stream-primitive
(function).
(setf buffer-stream-primitive)
(function).
buffer-stream-primitive-group-id
(reader).
(setf buffer-stream-primitive-group-id)
(writer).
buffer-stream-start
(function).
(setf buffer-stream-start)
(function).
buffer-stream-start-byte
(function).
(setf buffer-stream-start-byte)
(function).
buffer-stream-vao
(reader).
(setf buffer-stream-vao)
(writer).
buffer-texture
(structure).
buffer-texture-backing-array
(reader).
(setf buffer-texture-backing-array)
(writer).
buffer-texture-owns-array
(reader).
(setf buffer-texture-owns-array)
(writer).
buffer-texture-p
(function).
c-array
(structure).
c-array-byte-size
(reader).
(setf c-array-byte-size)
(writer).
c-array-dimensions
(reader).
(setf c-array-dimensions)
(writer).
c-array-element-byte-size
(function).
c-array-element-from-foreign
(reader).
(setf c-array-element-from-foreign)
(writer).
c-array-element-pixel-format
(reader).
(setf c-array-element-pixel-format)
(writer).
c-array-element-to-foreign
(reader).
(setf c-array-element-to-foreign)
(writer).
c-array-element-type
(reader).
(setf c-array-element-type)
(writer).
c-array-free
(reader).
(setf c-array-free)
(writer).
c-array-index
(type).
c-array-p
(function).
c-array-pointer
(reader).
(setf c-array-pointer)
(writer).
c-array-row-alignment
(reader).
(setf c-array-row-alignment)
(writer).
c-array-sizes
(reader).
(setf c-array-sizes)
(writer).
c-array-struct-element-typep
(reader).
(setf c-array-struct-element-typep)
(writer).
c-array-total-size
(reader).
(setf c-array-total-size)
(writer).
calc-block-layout
(function).
calc-struct-layout-from-name-type-pairs
(function).
can-be-shared-between-contexts-p
(generic function).
check-array-sizes-for-copy
(function).
check-array-types-for-copy
(function).
compare
(function).
(setf compare)
(function).
compute-space
(structure).
compute-space-size-x
(reader).
(setf compute-space-size-x)
(writer).
compute-space-size-y
(reader).
(setf compute-space-size-y)
(writer).
compute-space-size-z
(reader).
(setf compute-space-size-z)
(writer).
copy-blending-params
(function).
copy-viewport
(function).
draw-mode-group-id
(function).
empty-fbo-params
(function).
empty-fbo-params
(structure).
extended-attachment-num
(type).
fbo
(structure).
fbo-empty-p
(function).
fbo-p
(function).
gl-enum-value
(type).
gl-id
(type).
gl-sizei
(type).
gpu-array
(structure).
gpu-array-bb
(structure).
gpu-array-bb-access-style
(reader).
(setf gpu-array-bb-access-style)
(writer).
gpu-array-bb-buffer
(reader).
(setf gpu-array-bb-buffer)
(writer).
gpu-array-bb-byte-size
(reader).
(setf gpu-array-bb-byte-size)
(writer).
gpu-array-bb-element-byte-size
(reader).
(setf gpu-array-bb-element-byte-size)
(writer).
gpu-array-bb-element-pixel-format
(reader).
(setf gpu-array-bb-element-pixel-format)
(writer).
gpu-array-bb-element-type
(reader).
(setf gpu-array-bb-element-type)
(writer).
gpu-array-bb-offset-in-bytes-into-buffer
(reader).
(setf gpu-array-bb-offset-in-bytes-into-buffer)
(writer).
gpu-array-bb-p
(function).
gpu-array-bb-row-alignment
(reader).
(setf gpu-array-bb-row-alignment)
(writer).
gpu-array-dimensions
(reader).
(setf gpu-array-dimensions)
(writer).
gpu-array-p
(function).
gpu-array-t
(structure).
gpu-array-t-face-num
(reader).
(setf gpu-array-t-face-num)
(writer).
gpu-array-t-image-format
(reader).
(setf gpu-array-t-image-format)
(writer).
gpu-array-t-layer-num
(reader).
(setf gpu-array-t-layer-num)
(writer).
gpu-array-t-level-num
(reader).
(setf gpu-array-t-level-num)
(writer).
gpu-array-t-p
(function).
gpu-array-t-texture
(reader).
(setf gpu-array-t-texture)
(writer).
gpu-array-t-texture-type
(reader).
(setf gpu-array-t-texture-type)
(writer).
gpu-buffer
(structure).
gpu-buffer-arrays
(reader).
(setf gpu-buffer-arrays)
(writer).
gpu-buffer-cache-id
(reader).
(setf gpu-buffer-cache-id)
(writer).
gpu-buffer-id
(reader).
(setf gpu-buffer-id)
(writer).
gpu-buffer-p
(function).
gpu-fence
(structure).
gpu-query
(structure).
gpu-query-cache-id
(reader).
gpu-query-enum
(reader).
gpu-query-id
(reader).
holds-gl-object-ref-p
(function).
indexp
(function).
layout-aligned-offset
(generic reader).
layout-base-alignment
(generic reader).
layout-base-offset
(generic reader).
layout-element-layout
(generic reader).
layout-machine-unit-size
(generic reader).
layout-members
(generic reader).
layout-name
(generic reader).
layout-varjo-type
(generic reader).
lod-bias
(function).
(setf lod-bias)
(function).
magnify-filter
(function).
(setf magnify-filter)
(function).
make-any-samples-passed-conservative-query
(function).
make-any-samples-passed-query
(function).
make-att
(function).
make-blending-params
(function).
make-compute-space
(function).
make-empty-fbo-params
(function).
make-pixel-format
(function).
make-primitives-generated-query
(function).
make-raw-buffer-stream
(function).
make-sampler-id-box
(function).
make-samples-passed-query
(function).
make-time-elapsed-query
(function).
make-timestamp-query
(function).
make-transform-feedback-primitives-written-query
(function).
make-uninitialized-buffer-stream
(function).
make-uninitialized-fbo
(function).
make-uninitialized-gpu-array-bb
(function).
make-uninitialized-gpu-array-t
(function).
make-uninitialized-gpu-buffer
(function).
make-uninitialized-render-buffer
(function).
make-uninitialized-sampler
(function).
make-uninitialized-texture
(function).
make-viewport
(function).
max-lod
(function).
(setf max-lod)
(function).
min-lod
(function).
(setf min-lod)
(function).
minify-filter
(function).
(setf minify-filter)
(function).
pixel-format
(structure).
pixel-format-comp-length
(reader).
(setf pixel-format-comp-length)
(writer).
pixel-format-components
(reader).
(setf pixel-format-components)
(writer).
pixel-format-normalize
(reader).
(setf pixel-format-normalize)
(writer).
pixel-format-p
(function).
pixel-format-reversed
(reader).
(setf pixel-format-reversed)
(writer).
pixel-format-sizes
(reader).
(setf pixel-format-sizes)
(writer).
pixel-format-type
(reader).
(setf pixel-format-type)
(writer).
primitives-generated-query
(structure).
render-buffer
(structure).
render-buffer-p
(function).
sampler
(structure).
sampler-id-box
(structure).
sampler-id-box-id
(reader).
(setf sampler-id-box-id)
(writer).
sampler-id-box-shared-p
(reader).
(setf sampler-id-box-shared-p)
(writer).
sampler-p
(function).
sampler-shared-p
(function).
samples-passed-query
(structure).
scoped-gpu-query
(structure).
scoped-gpu-query-active-p
(reader).
(setf scoped-gpu-query-active-p)
(writer).
set-minify-filter
(function).
ssbo
(structure).
ssbo-data
(reader).
(setf ssbo-data)
(writer).
ssbo-id
(reader).
(setf ssbo-id)
(writer).
ssbo-index
(reader).
(setf ssbo-index)
(writer).
ssbo-owns-gpu-array
(reader).
(setf ssbo-owns-gpu-array)
(writer).
ssbo-p
(function).
std-140
(class).
std-430
(class).
stencil-mask
(compiler macro).
(setf stencil-mask)
(compiler macro).
stencil-mask
(function).
(setf stencil-mask)
(function).
stencil-mask
(type).
stencil-params
(structure).
tex-unit
(type).
texture-allocated-p
(reader).
(setf texture-allocated-p)
(writer).
texture-base-dimensions
(reader).
(setf texture-base-dimensions)
(writer).
texture-cache-id
(reader).
(setf texture-cache-id)
(writer).
texture-cubes-p
(reader).
(setf texture-cubes-p)
(writer).
texture-fixed-sample-locations-p
(reader).
(setf texture-fixed-sample-locations-p)
(writer).
texture-id
(reader).
(setf texture-id)
(writer).
texture-image-format
(reader).
(setf texture-image-format)
(writer).
texture-last-sampler-id
(reader).
(setf texture-last-sampler-id)
(writer).
texture-layer-count
(reader).
(setf texture-layer-count)
(writer).
texture-mipmap-levels
(reader).
(setf texture-mipmap-levels)
(writer).
texture-mutable-p
(reader).
(setf texture-mutable-p)
(writer).
texture-p
(function).
texture-type
(reader).
(setf texture-type)
(writer).
time-elapsed-query
(structure).
timestamp-query
(structure).
transform-feedback-primitives-written-query
(structure).
transform-feedback-stream
(structure).
ubo
(structure).
ubo-data
(reader).
(setf ubo-data)
(writer).
ubo-id
(reader).
(setf ubo-id)
(writer).
ubo-index
(reader).
(setf ubo-index)
(writer).
ubo-owns-gpu-array
(reader).
(setf ubo-owns-gpu-array)
(writer).
ubo-p
(function).
unknown-gl-id-p
(function).
vao-id
(type).
viewport
(generic function).
(setf viewport)
(generic function).
viewport
(structure).
viewport-p
(function).
wrap
(function).
(setf wrap)
(function).
%cffi-type->gl-enum
(function).
%decode-half-float
(function).
%encode-half-float
(function).
%make-buffer-stream
(function).
%sampler-context-id
(reader).
(setf %sampler-context-id)
(writer).
%valid-index-type-p
(function).
*valid-layout-specifiers*
(special variable).
+gl-color-mask-bit-size+
(constant).
+null-att+
(special variable).
+uninitialized-buffer-array+
(special variable).
+unknown-clear-mask+
(constant).
allocated-p
(slot).
any-samples-passed-conservative-query-active-p
(function).
(setf any-samples-passed-conservative-query-active-p)
(function).
any-samples-passed-conservative-query-cache-id
(reader).
any-samples-passed-conservative-query-enum
(reader).
any-samples-passed-conservative-query-id
(function).
any-samples-passed-conservative-query-p
(function).
any-samples-passed-query-active-p
(function).
(setf any-samples-passed-query-active-p)
(function).
any-samples-passed-query-cache-id
(reader).
any-samples-passed-query-enum
(reader).
any-samples-passed-query-id
(function).
any-samples-passed-query-p
(function).
att-p
(function).
base-dimensions
(slot).
buffer-texture-allocated-p
(function).
(setf buffer-texture-allocated-p)
(function).
buffer-texture-base-dimensions
(function).
(setf buffer-texture-base-dimensions)
(function).
buffer-texture-cache-id
(function).
(setf buffer-texture-cache-id)
(function).
buffer-texture-cubes-p
(function).
(setf buffer-texture-cubes-p)
(function).
buffer-texture-fixed-sample-locations-p
(function).
(setf buffer-texture-fixed-sample-locations-p)
(function).
buffer-texture-id
(function).
(setf buffer-texture-id)
(function).
buffer-texture-image-format
(function).
(setf buffer-texture-image-format)
(function).
buffer-texture-last-sampler-id
(function).
(setf buffer-texture-last-sampler-id)
(function).
buffer-texture-layer-count
(function).
(setf buffer-texture-layer-count)
(function).
buffer-texture-mipmap-levels
(function).
(setf buffer-texture-mipmap-levels)
(function).
buffer-texture-mutable-p
(function).
(setf buffer-texture-mutable-p)
(function).
buffer-texture-samples
(function).
(setf buffer-texture-samples)
(function).
buffer-texture-type
(function).
(setf buffer-texture-type)
(function).
cache-id
(slot).
calc-aligned-offset
(function).
calc-array-of-col-mat-layout
(function).
calc-array-of-scalar-or-vectors-layout
(function).
calc-array-of-structs-layout
(function).
calc-base-offset
(function).
calc-col-mat-layout
(function).
calc-layout
(function).
calc-scalar-layout
(function).
calc-struct-layout
(function).
calc-struct-member-layout
(function).
calc-vector-base-alignment
(function).
calc-vector-layout
(function).
clear-buffer-mask
(type).
compute-space-p
(function).
copy-any-samples-passed-conservative-query
(function).
copy-any-samples-passed-query
(function).
copy-att
(function).
copy-buffer-stream
(function).
copy-buffer-texture
(function).
copy-c-array
(function).
copy-compute-space
(function).
copy-empty-fbo-params
(function).
copy-fbo
(function).
copy-gpu-array
(function).
copy-gpu-array-bb
(function).
copy-gpu-array-t
(function).
copy-gpu-buffer
(function).
copy-gpu-fence
(function).
copy-gpu-query
(function).
copy-pixel-format
(function).
copy-primitives-generated-query
(function).
copy-render-buffer
(function).
copy-sampler
(function).
copy-sampler-id-box
(function).
copy-samples-passed-query
(function).
copy-scoped-gpu-query
(function).
copy-ssbo
(function).
copy-stencil-params
(function).
copy-texture
(function).
copy-time-elapsed-query
(function).
copy-timestamp-query
(function).
copy-transform-feedback-primitives-written-query
(function).
copy-transform-feedback-stream
(function).
copy-ubo
(function).
cubes-p
(slot).
decode-half-float
(function).
draw-mode-symbol-group-id
(function).
elem-byte-size
(type).
empty-fbo-params-p
(function).
encode-half-float
(function).
fixed-sample-locations-p
(slot).
gbuf-byte-size
(type).
gen-query-id
(function).
gl-layout
(class).
gpu-array-bb-dimensions
(function).
(setf gpu-array-bb-dimensions)
(function).
gpu-array-t-dimensions
(function).
(setf gpu-array-t-dimensions)
(function).
gpu-fence-p
(function).
gpu-query-p
(function).
id
(slot).
image-format
(slot).
last-sampler-id
(slot).
layer-count
(slot).
machine-unit-size
(function).
make-gpu-query
(function).
make-scoped-gpu-query
(function).
mipmap-levels
(slot).
mutable-p
(slot).
primitive-keyword-to-enum-val
(function).
primitive-vert-length
(function).
primitives-generated-query-active-p
(function).
(setf primitives-generated-query-active-p)
(function).
primitives-generated-query-cache-id
(reader).
primitives-generated-query-enum
(reader).
primitives-generated-query-id
(function).
primitives-generated-query-p
(function).
process-layout-specifier
(function).
round-to-next-multiple
(function).
sampler-id-box-p
(function).
samples
(slot).
samples-passed-query-active-p
(function).
(setf samples-passed-query-active-p)
(function).
samples-passed-query-cache-id
(reader).
samples-passed-query-enum
(reader).
samples-passed-query-id
(function).
samples-passed-query-p
(function).
scalar-type-p
(function).
scoped-gpu-query-cache-id
(function).
scoped-gpu-query-enum
(function).
scoped-gpu-query-id
(function).
scoped-gpu-query-p
(function).
set-patch-stream-primitive
(function).
stencil-params-p
(function).
time-elapsed-query-active-p
(function).
(setf time-elapsed-query-active-p)
(function).
time-elapsed-query-cache-id
(reader).
time-elapsed-query-enum
(reader).
time-elapsed-query-id
(function).
time-elapsed-query-p
(function).
timestamp-query-cache-id
(reader).
timestamp-query-enum
(reader).
timestamp-query-id
(function).
timestamp-query-p
(function).
transform-feedback-primitives-written-query-active-p
(function).
(setf transform-feedback-primitives-written-query-active-p)
(function).
transform-feedback-primitives-written-query-cache-id
(reader).
transform-feedback-primitives-written-query-enum
(reader).
transform-feedback-primitives-written-query-id
(function).
transform-feedback-primitives-written-query-p
(function).
transform-feedback-stream-p
(function).
cepl.pixel-formats
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
cepl.internals
.
cepl.types
.
common-lisp
.
editor-hints.named-readtables
.
fn
.
glsl-symbols
.
+gl-integral-pixel-types+
(constant).
+gl-pixel-to-internal-map+
(constant).
+valid-pixel-components+
(constant).
+valid-pixel-packed-sizes+
(constant).
+valid-pixel-types+
(constant).
compile-pixel-format
(function).
describe-image-format
(function).
describe-pixel-format
(function).
get-component-length
(function).
pixel-format!
(function).
process-pixel-format
(function).
valid-pixel-format-p
(function).
cepl-utils
cepl.build
.
cepl.defn
.
common-lisp
.
%cepl.types
.
cepl
.
cepl.blending
.
cepl.c-arrays
.
cepl.compute
.
cepl.context
.
cepl.documentation-functions
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.lifecycle
.
cepl.measurements
.
cepl.memory
.
cepl.pipelines
.
cepl.pixel-formats
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.types
.
cepl.types.foreign
.
cepl.types.predefined
.
cepl.ubos
.
cepl.vaos
.
cepl.viewports
.
arange
(function).
arangei
(function).
array-index
(type).
assert-lambda-list
(macro).
assoc-bind
(macro).
assocr
(compiler macro).
assocr
(function).
case=
(macro).
consecutive-integers-p
(function).
dbind
(macro).
defcondition
(macro).
deferror
(macro).
define-const
(macro).
defwarning
(macro).
ecase=
(macro).
ensure-vec-index
(compiler macro).
ensure-vec-index
(function).
file-to-string
(function).
filter-hash
(function).
find-in-tree
(function).
flatten
(function).
gl-enum
(function).
group
(function).
hash-keys
(function).
hash-values
(function).
hidden-symb
(function).
intersperse
(function).
just-ignore
(function).
kwd
(function).
last1
(function).
lispify-name
(function).
list-not-consp
(function).
listify
(function).
make-keyword
(function).
make-length-same
(generic function).
mapcat
(function).
mkstr
(function).
n-of
(function).
n-of*
(macro).
ni-call
(function).
ni-val
(function).
p->
(macro).
print-mem
(generic function).
range
(function).
rangei
(function).
read-integers
(function).
replace-nth
(function).
sn-equal
(function).
split-seq-by-seq
(function).
split-string
(function).
sub-at-index
(function).
symb
(function).
symb-name=
(function).
symb-package
(function).
symbol-name-equal
(function).
vec-bind
(macro).
walk-replace
(function).
with-hash
(macro).
with-hash*
(macro).
with-setf
(macro).
with-setf*
(macro).
%print-mem
(function).
+gl-enum-size+
(constant).
---block-doc---
(macro).
copy-boop6
(function).
defx*
(function).
with-setf-internals
(function).
cepl.errors
cepl-utils
.
cepl.build
.
cffi
.
common-lisp
.
varjo
.
%cepl.types
.
cepl
.
cepl.blending
.
cepl.c-arrays
.
cepl.compute
.
cepl.context
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.image-formats
.
cepl.internals
.
cepl.pipelines
.
cepl.pixel-formats
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.types
.
cepl.types.foreign
.
cepl.types.predefined
.
cepl.ubos
.
cepl.vaos
.
cepl.viewports
.
adjust-gpu-array-mismatched-dimensions
(condition).
adjust-gpu-array-shared-buffer
(condition).
another-query-is-active
(condition).
attachment-viewport-empty-fbo
(condition).
attachments-with-different-sizes
(condition).
bad-c-array-element
(condition).
bad-type-for-buffer-stream-data
(condition).
bake-invalid-pipeling-arg
(condition).
bake-invalid-uniform-name
(condition).
bake-uniform-invalid-values
(condition).
buffer-backed-texture-establish-image-format
(condition).
buffer-backed-texture-invalid-args
(condition).
buffer-backed-texture-invalid-image-format
(condition).
buffer-backed-texture-invalid-samplers
(condition).
buffer-stream-has-invalid-primitive-for-stream
(condition).
c-array-total-size-type-error
(condition).
cannot-extract-stream-length-from-layouts
(condition).
cannot-keep-data-when-uploading
(condition).
compile-g-missing-requested-feature
(condition).
compute-pipeline-must-be-single-stage
(condition).
could-not-layout-type
(condition).
delete-multi-func-error
(condition).
dispatch-called-outside-of-map-g
(condition).
dont-define-space-to-self
(condition).
failed-to-test-compile-gpu-func
(condition).
fbo-binding-missing
(condition).
fbo-missing-outputs
(condition).
fbo-target-not-valid-constant
(condition).
func-keyed-pipeline-not-found
(condition).
functions-in-non-uniform-args
(condition).
gfun-invalid-arg-format
(condition).
gl-context-initialized-from-incorrect-thread
(condition).
glsl-geom-stage-no-out-layout
(condition).
glsl-version-conflict
(condition).
glsl-version-conflict-in-gpu-func
(condition).
gpu-array-from-buffer-missing-args
(condition).
gpu-array-from-id-missing-args
(condition).
gpu-func-spec-not-found
(condition).
gpu-func-symbol-name
(condition).
image-format->lisp-type-failed
(condition).
image-format->pixel-format-failed
(condition).
inconsistent-struct-layout
(condition).
incorrect-number-of-arrays-in-tfs
(condition).
index-layout-with-unknown-length
(condition).
index-on-buffer-stream-with-no-gpu-arrays
(condition).
index-on-buffer-stream-with-no-gpu-layouts
(condition).
invalid-args-in-make-tfs
(condition).
invalid-attachments-for-empty-fbo
(condition).
invalid-compose-gpipe-form
(condition).
invalid-context-for-assert-gpipe
(condition).
invalid-context-for-assert-options
(condition).
invalid-cube-fbo-args
(condition).
invalid-data-layout-specifier
(condition).
invalid-defpipeline-options
(condition).
invalid-empty-fbo-declaration
(condition).
invalid-gpu-arrays-layout
(condition).
invalid-gpu-buffer-layout
(condition).
invalid-gpu-function-args
(condition).
invalid-inline-glsl-stage-arg-layout
(condition).
invalid-keywords-for-shader-gpipe-args
(condition).
invalid-layout-for-inargs
(condition).
invalid-layout-for-uniform
(condition).
invalid-options-for-texture
(condition).
invalid-sampler-wrap-value
(condition).
invalid-shader-gpipe-form
(condition).
invalid-shader-gpipe-stage-keys
(condition).
invalid-sizes-in-make-tfs
(condition).
invalid-stage-for-single-stage-pipeline
(condition).
invalid-stream-layout
(condition).
lisp-type->image-format-failed
(condition).
make-arrays-layout-count-mismatch
(condition).
make-arrays-layout-mismatch
(condition).
make-gpu-array-from-c-array-mismatched-dimensions
(condition).
make-gpu-buffer-from-id-clashing-keys
(condition).
make-tex-array-not-match-type
(condition).
make-tex-array-not-match-type2
(condition).
make-tex-no-content-no-type
(condition).
mapping-over-partial-pipeline
(condition).
max-context-count-reached
(condition).
mixed-pipelines-in-with-tb
(condition).
multi-func-error
(condition).
nested-with-transform-feedback
(condition).
no-named-stages
(condition).
non-consecutive-feedback-groups
(condition).
not-a-gpu-lambda
(condition).
not-enough-args-for-implicit-gpipe-stages
(condition).
one-stage-non-explicit
(condition).
partial-lambda-pipeline
(condition).
pipeline-invalid-null-stage
(condition).
pipeline-recompile-in-tfb-scope
(condition).
pixel-format->image-format-failed
(condition).
pixel-format-in-bb-texture
(condition).
pull*-g-not-enabled
(condition).
pull-g-not-cached
(condition).
query-is-active-bug
(condition).
query-is-already-active
(condition).
query-not-active
(condition).
quote-in-buffer-layout
(condition).
quote-symbol-found-in-fbo-dimensions
(condition).
shader-pipeline-non-null-args
(condition).
shared-context-created-from-incorrect-thread
(condition).
stage-in-context-only-valid-for-glsl-stages
(condition).
stage-not-found
(condition).
stage-not-valid-for-function-restriction
(condition).
state-restore-limitation-blending
(condition).
state-restore-limitation-transform-feedback
(condition).
struct-in-glsl-stage-args
(condition).
symbol-stage-designator
(condition).
symbol-stage-designators
(condition).
texture-dimensions-lequal-zero
(condition).
tfs-setf-arrays-whilst-bound
(condition).
tried-to-make-context-on-thread-that-already-has-one
(condition).
unknown-stage-kind
(condition).
unknown-symbols-in-pipeline-context
(condition).
gl-version-too-low-for-empty-fbos
(condition).
invalid-fbo-args
(condition).
state-restore-limitation-queries
(condition).
cepl.types
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
cepl.memory
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
cepl.blending
.
cepl.c-arrays
.
cepl.compute
.
cepl.context
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.internals
.
cepl.pipelines
.
cepl.pixel-formats
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.types.predefined
.
cepl.ubos
.
cepl.vaos
.
cepl.viewports
.
defstruct-g
(macro).
element-byte-size
(generic function).
element-type
(slot).
element-type
(slot).
element-type
(generic function).
get-typed-from-foreign
(generic function).
get-typed-to-foreign
(generic function).
image-format->lisp-type
(function).
image-format->pixel-format
(function).
lisp-type->image-format
(function).
lisp-type->pixel-format
(generic function).
pixel-format->image-format
(function).
pixel-format->lisp-type
(function).
%memcpy
(function).
*struct-slot-defs*
(special variable).
+cpu->gpu-vec-mappings+
(constant).
assert-layout-consistent
(function).
base-gstruct-wrapper
(structure).
base-gstruct-wrapper-p
(function).
base-gstruct-wrapper-pointer
(reader).
(setf base-gstruct-wrapper-pointer)
(writer).
buffer-stream-compatible-typep
(function).
cepl-struct-definition
(class).
expand-mappable-slot-to-layout
(function).
expand-slot-to-layout
(function).
expand-unmappable-slot-to-layout
(function).
format-array-slot-for-cstruct
(function).
format-slot-for-cstruct
(function).
format-slot-for-varjo
(function).
g-struct-info
(function).
(setf g-struct-info)
(function).
gl-struct-slot
(class).
make-array-slot-getter
(function).
make-array-slot-setter
(function).
make-base-gstruct-wrapper
(function).
make-eprim-slot-setter
(function).
make-instance-wrapper-def
(function).
make-make-struct
(function).
make-populate
(function).
make-pull-push
(function).
make-slot-getter
(function).
make-slot-setter
(function).
make-struct-attrib-assigner
(function).
make-struct-pixel-format
(function).
make-t-slot-getter
(function).
make-t-slot-setter
(function).
make-typed-from-foreign
(macro).
make-varjo-struct-def
(function).
make-varjo-struct-lookup
(function).
nest-simple-loops
(function).
normalize-slot-description
(function).
potential-struct-layout
(function).
s-arrayp
(generic function).
s-def
(generic function).
s-dimensions
(generic reader).
s-element-type
(generic reader).
s-foreign-name
(generic reader).
s-layout
(generic reader).
s-name
(generic reader).
s-normalizedp
(generic reader).
s-parent-ffi-name
(generic reader).
s-reader
(generic reader).
s-slot-args
(generic function).
s-slots
(generic reader).
s-type
(generic reader).
s-uses-method-p
(generic reader).
s-writer
(generic reader).
validate-defstruct-g-form
(function).
validate-varjo-type-spec
(function).
cepl.c-arrays
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
cepl.image-formats
.
cepl.internals
.
cepl.measurements
.
cepl.memory
.
cepl.pixel-formats
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
cepl.blending
.
cepl.compute
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.gpu-arrays.texture-backed
.
cepl.gpu-buffers
.
cepl.pipelines
.
cepl.queries
.
cepl.render-buffers
.
cepl.samplers
.
cepl.scissor
.
cepl.ssbos
.
cepl.stencil
.
cepl.streams
.
cepl.sync
.
cepl.textures
.
cepl.transform-feedback
.
cepl.ubos
.
cepl.vaos
.
across-c-ptr
(function).
aref-c
(compiler macro).
(setf aref-c)
(compiler macro).
aref-c
(function).
(setf aref-c)
(function).
aref-c*
(function).
(setf aref-c*)
(function).
clone-c-array
(function).
copy-c-array-to-new-lisp-data
(function).
copy-lisp-data-to-c-array
(function).
free-c-array
(function).
make-c-array
(function).
make-c-array-from-pointer
(function).
map-c
(function).
map-c-into
(function).
pointer
(generic function).
ptr-index
(compiler macro).
ptr-index
(function).
row-major-aref-c
(function).
(setf row-major-aref-c)
(function).
subseq-c
(function).
with-c-array-freed
(macro).
with-c-arrays-freed
(macro).
%across-c-1d
(function).
%across-c-2d
(function).
%across-c-3d
(function).
%across-c-4d
(function).
%across-c-ptr-1d
(function).
%across-c-ptr-2d
(function).
%across-c-ptr-3d
(function).
%across-c-ptr-4d
(function).
%gl-calc-byte-size
(function).
across-c
(function).
aref-c*-1d
(function).
(setf aref-c*-1d)
(function).
aref-c*-2d
(function).
(setf aref-c*-2d)
(function).
aref-c*-3d
(function).
(setf aref-c*-3d)
(function).
aref-c*-4d
(function).
(setf aref-c*-4d)
(function).
blank-c-array-object
(function).
c-arr-to-lisp-struct-elems
(function).
c-arr-to-lisp-val-elems
(function).
c-array-4d-limit
(condition).
c-array-4d-limit-aref
(condition).
c-array-rank
(function).
check-c-array-dimensions
(function).
check-single-element-not-list
(function).
find-compatible-c-array-type
(function).
find-suitable-type
(function).
first-elem
(function).
forgiving-list-dimension-guess
(function).
gen-c-array-sizes
(function).
gl-calc-byte-size
(function).
ptr-index-1d
(function).
ptr-index-2d
(function).
ptr-index-3d
(function).
ptr-index-4d
(function).
rm-index-to-coords
(function).
scan-array-for-type
(function).
scan-for-type
(function).
scan-list-for-type
(function).
update-data
(function).
validate-dimensions
(function).
cepl.image-formats
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.errors
.
common-lisp
.
editor-hints.named-readtables
.
fn
.
glsl-symbols
.
*bptc-compressed-formats*
(special variable).
*color-renderable-formats*
(special variable).
*depth-formats*
(special variable).
*depth-stencil-formats*
(special variable).
*floating-point-formats*
(special variable).
*image-formats*
(special variable).
*red/green-compressed-formats*
(special variable).
*regular-color-formats*
(special variable).
*s3tc/dxt-compessed-formats*
(special variable).
*signed-integral-formats*
(special variable).
*signed-normalized-integer-formats*
(special variable).
*special-color-formats*
(special variable).
*srgb-color-formats*
(special variable).
*stencil-formats*
(special variable).
*unsigned-integral-formats*
(special variable).
*unsigned-normalized-integer-formats*
(special variable).
*valid-image-formats-for-buffer-backed-texture*
(special variable).
color-renderable-formatp
(function).
depth-formatp
(function).
depth-stencil-formatp
(function).
image-formatp
(function).
stencil-formatp
(function).
valid-image-format-for-buffer-backed-texturep
(function).
cepl.sync
%cepl.types
.
cepl-utils
.
cepl.build
.
cepl.c-arrays
.
cepl.context
.
cepl.errors
.
cepl.fbos
.
cepl.gpu-arrays
.
cepl.gpu-arrays.buffer-backed
.
cepl.internals
.
cepl.memory
.
cepl.types
.
cffi
.
common-lisp
.
editor-hints.named-readtables
.
glsl-symbols
.
varjo
.
cepl
.
free-gpu-fence
(function).
gpu-fence-signalled-p
(function).
make-gpu-fence
(function).
wait-on-gpu-fence
(function).
cepl-client-wait-sync
(function).
Definitions are sorted by export status, category, package, and then by lexicographic order.
A list of all of OpenGL’s bptc compressed formats
A list of all of OpenGL’s color renderable formats
A list of all of OpenGL’s depth formats
A list of all of OpenGL’s depth stencil formats
A list of all of OpenGL’s floating point formats
A list of all of OpenGL’s image formats
After CEPL has been initialized this variable will hold t if immutable ‘texture‘
storage is available and nil if not.
Immutable texture storage does not mean that the texture’s ‘gpu-array‘ data is
immutable. It means that the underlying format of the texture data cannot be
changed. It is rare that you would want mutable storage and when you do, it is
very hard to not create ’incomplete-textures’.
https://www.opengl.org/wiki/Immutable_Storage_Texture#Texture_completeness
CEPL tries to make only complete textures so this is not a concern. If you do need this level of control, please raise a github issue as I would love to understand your usecase.
A list of all of OpenGL’s red/green compressed formats
A list of all of OpenGL’s regular color formats
A list of all of OpenGL’s s3tc/dxt compessed formats
A list of all of OpenGL’s signed integral formats
A list of all of OpenGL’s signed normalized integer formats
A list of all of OpenGL’s special color formats
A list of all of OpenGL’s srgb color formats
A list of all of OpenGL’s stencil formats
A list of all of OpenGL’s unsigned integral formats
A list of all of OpenGL’s unsigned normalized integer formats
A list of all of OpenGL’s valid image formats for buffer backed texture
def-glsl-stage is useful when you wish to define a CEPL pipeline stage in glsl
rather than lisp. This is especially useful if you want to use some
pre-exisiting glsl without rewriting it to lisp.
It is used like this:
(def-glsl-stage frag-glsl (("color_in" :vec4) &context :330 :fragment)
"void main() {
color_out = color_in;
}"
(("color_out" :vec4)))
It differs from a regular ‘defun-g‘ definition in a few ways.
- argument names are specified using strings.
- &context is mandatory. You must specify what shader stage this can be used for
and also what version/s this stage requires
- You are defining the entire stage, not just a function body. This means you
can define local shader functions etc
- You have to specify the outputs in lisp as well as the inputs. This allows CEPL
to compose this stage in pipelines with regular CEPL gpu functions.
CEPL will write all the in, out and uniform definitions for your shader so do
not specify those yourself.
This stage fully supports livecoding, so feel free to change and recomplile the text in the stage at runtime.
This lets you define a compiler-macro that only works with gpu-functions.
The &context lambda list keyword allows you to restrict this macro to only be
valid in gpu functions with compatible contexts.
&whole and &environment are not supported.
Differs from alexandrias define-context in that it wont eval the val form at all if the var is already bound. This was we are always eq.
This lets you a define a macro that only works in gpu code.
The &context lambda list keyword allows you to restrict this macro to only be
valid in gpu functions with compatible contexts.
&whole and &environment are not supported.
Define a typed function
Define a typed function and request that it be inlined
‘defpipeline-g‘ is how we define named rendering pipelines in CEPL.
Rendering pipelines are constructed by composing gpu-functions.
Rendering in OpenGL is descibed as a pipeline where a ‘buffer-stream‘ of data
usually describing geometry) is mapped over whilst a number of uniforms are
available as input and the outputs are written into an ‘FBO‘.
There are many stages to the pipeline and a full explanation of the GPU pipeline
is beyond the scope of this docstring. However it surfices to say that only
5 stages are fully programmable (and a few more customizable).
defpipeline-g lets you specify the code (shaders) to run the programmable
parts (stages) of the pipeline.
The available stages kinds are:
- :vertex
- :tessellation-control
- :tessellation-evaluation
- :geometry
- :fragment
- :compute
To define code that runs on the gpu in CEPL we use gpu functions (gfuncs). Which
are defined with ‘defun-g‘.
Here is an example pipeline:
(defun-g vert ((position :vec4) &uniform (i :float))
(values position (sin i) (cos i)))
(defun-g frag ((s :float) (c :float))
(v! s c 0.4 1.0))
(defpipeline-g prog-1 ()
(vert :vec4)
(frag :float :float))
Here we define a pipeline #’prog-1 which uses the gfunc vert as its vertex
shader and used the gfunc frag as the fragment shader.
It is also possible to specify the name of the stages
(defpipeline-g prog-1 ()
:vertex (vert :vec4)
:fragment (frag :float :float))
But this is not neccesary unless you need to distinguish between tessellation
or geometry stages.
**– Compile Context –**
The second argument to defpipeline-g is the a list of additional information that
is confusingly called the ’pipeline’s compile-context’.
Valid things that can be in this list are:
*A primitive type:*
This specifies what primitives can be passed into this pipeline.
By default all pipelines expect triangles. When you map a buffer-stream over a
pipeline the primitive kind of the stream must match the pipeline.
The valid values are:
:dynamic
:points
:lines :line-loop :line-strip
:lines-adjacency :line-strip-adjacency
:triangles :triangle-fan :triangle-strip
:triangles-adjacency :triangle-strip-adjacency
(:patch <patch-size>)
:dynamic is special, it means that the pipeline will take the primitive kind
from the buffer-stream being mapped over. This won’t work for with pipelines
with geometry or tessellation stages, but it otherwise quite useful.
*A version restriction:*
This tells CEPL to compile the stage for a specific
version of GLSL. You usually do not want to use this as CEPL will compile for
the version the user is using.
The value can be one of:
:140 :150 :330 :400 :410 :420 :430 :440 :450 :460
*The recompilation restriction*:
By adding the symbol ‘:static‘ to the list you tell CEPL that this pipeline
will not be recompiled again this session. This means CEPL will not automatically
recompile it if one of the gpu-functions that make up it’s stages are recompiled.
It also allows CEPL to perform optimizations on the generated code that it couldnt
usually due to expecting signature/type changes.
For a dryer version of the above please see the documentation for ‘compile-context‘.
**– Stage Names –**
Notice that we have to specify the typed signature of the stage. This is because
CEPL allows you to ’overload’ gpu functions. The signature for the a
gpu-function is a list which starts with the function name and whose other
elements are the types of the non-uniforms arguments. As an example we can see
above that the signature for vert is (vert :vec4), not (vert :vec4 :float).
**– Passing values from Stage to Stage –**
The return values of the gpu functions that are used as stages are passed as the
input arguments of the next. The exception to this rule is that the first return
value from the vertex stage is taken and used by GL, so only the subsequent
values are passed along.
We can see this in the example above: #’vert returns 3 values but #’frag only
receives 2.
The values from the fragment stage are writen into the current FBO. This may be
the default FBO, in which case you will likely see the result on the screen, or
it may be a FBO of your own.
By default GL only writed the fragment return value to the FBO. For handling
multiple return values please see the docstring for ‘with-fbo-bound‘.
**– Using our pipelines –**
To call a pipeline we use the ‘map-g‘ macro (or one of its siblings
‘map-g-into‘/‘map-g-into*‘). The doc-strings for those macros go into more details
but the basics are that map-g maps a buffer-stream over our pipeline and the
results of the pipeline are fed into the ’current’ fbo.
We pass our stream to map-g as the first argument after the pipeline, we then
pass the uniforms in the same style as keyword arguments. For example let’s see
our prog-1 pipeline again:
(defun-g vert ((position :vec4) &uniform (i :float))
(values position (sin i) (cos i)))
(defun-g frag ((s :float) (c :float))
(v! s c 0.4 1.0))
(defpipeline-g prog-1 ()
(vert :vec4)
(frag :float :float))
We can call this as follows:
(map-g #’prog-1 v4-stream :i game-time)
‘defstruct-g‘ defines a struct that can be used both gpu-side (in gpu functions, ‘gpu-array‘s, ‘ubos‘, etc) and also cpu-side (in ‘c-array‘s, other gstructs, etc)
You create these using defstruct-g so lets look at an example right now:
(defstruct-g our-data
(position :vec3)
(val :int :accessor val))
This should seem familiar if you have used common lisp’s structs.
You provide a name (with options if you need them) and the definitions for the
slots. The format for a slot is:
(slot-name slot-type)
-or-
(slot-name slot-type :accessor accessor-name)
– make-* –
Once defined you would create the above struct as follows:
(defvar x (make-our-data :position (v! 1 2 3) :val 5))
This will return a fully populated struct in foreign memory. if values are not
provided then the slots will be left uninitialized and the contents of the slot
are unknown (and likely unsafe)
It is rather rare to make a one-off struct like this as it is much more common
to use the type in a data-structure like a c-arrays or gpu-array.
– Accessors –
In the ’our-data’ example above, the slot named ’position’ doesnt have an
accesor but the ’val’ slot does.
Both slots will get a lisp-struct-style accessor functions however because of
the :accessor in val’s slot definition a generic function named by the symbol
after :accessor will also be created.
For the example this means the functions #’our-data-position, #’our-data-val and
the generic function #’val are available.
Whilst :accessor results in a generic function on the cpu side (with the
associated overheads) on the gpu side the function to be used is resolved
statically and so there is not performance cost.
– Options –
With the exception of :constructor the options for defstruct-g are rarely used
but are documented here for the sake of completeness.
:constructor
Setting this to nil means that you will get *no* make- function
Setting this to any other symbol will name the constructor using that symbol
The default will is that the constructor will be called make-<struct-name>
:readers
Setting this to nil means that you will get *no* functions to get the
slots’ data
:writers
Setting this to nil means that you will get *no* setf functions to set the
slots’ data
:accessors
Setting this to nil means that you will get *neither* of the above.
:pull-push
Setting this to nil means that you will get *no* ‘push-g‘ or ‘pull-g‘ methods
defined for your type
:attribs
Setting this to nil means that defstruct-g will not be able to make
buffer-streams from arrays of this type.
:populate
Setting this to nil means that you will not get a internal populate function
for this type. <DEPRECATED>
Some of the above options are redundent in combination with others.
For example the ‘push-g‘ method uses #’populate behind the scenes so with
populate disabled you can have ‘push-g‘ for this type.
CEPL currently does a poor job at communicating these conflicts to the user.
‘defun-g‘ let’s you define a function which will be run on the gpu.
Commonly refered to in CEPL as a ’gpu function’ or ’gfunc’
Gpu functions try to feel similar to regular CL functions however naturally
there are some differences.
The first and most obvious one is that gpu function should only be called
from other gpu functions and/or composed into a pipeline using ‘defpipeline-g‘.
Whilst it is actually possible to call on from a lisp function this is provided
solely for making interactive development and debugging easier. Please see the
‘EXPERIMENTAL‘ section below for more info
When a gfunc is composed into a pipeline then that function takes on the role
of one of the ’shader stages’ of the pipeline. For a proper breakdown of
pipelines see the docstring for defpipeline-g.
Let’s see a simple example of a gpu function we can then break down
;; {0} {3} {1} {2}
(defun-g example ((vert my-struct) &uniform (loop :float))
(values (v! (+ (my-struct-pos vert) ;; {4}
(v! (sin loop) (cos loop) 0))
1.0)
(my-struct-col vert)))
{0} So like the normal defun we specify a name first, and the arguments as a
list straight afterwards
{1} The &uniform lambda keyword says that arguments following it are ’uniform
arguments’. A uniform is an argument which has the same value for the entire
stage.
&optional and &key are not supported
{2} Here is our definition for the uniform value. If used in a pipeline as a
vertex shader #’example will be called once for every value in the
‘buffer-stream‘ given. That means the ’vert’ argument will have a different value
for each of the potentially millions of invocations in that ONE pipeline
call, however ’loop’ will have the same value for the entire pipeline call.
{2 & 3} All arguments must have their types declared
{4} Here we see we are using CL’s values special form. CEPL fully supports
multiple value return in your shaders. If our function #’example was called
from another gpu-function then you can use multiple-value-bind to bind the
returned values. If however our example function were used as a stage in a
pipeline then the multiple returned values will be mapped to the multiple
arguments of the next stage in the pipeline.
That’s the basics of gpu-functions. For more details on how they can be used
in pipelines please see the documentation for defpipeline-g.
*More Argument Kinds*
Along with ‘&uniform‘ there are also ‘&shared‘ & ‘&context‘.
‘&context‘ specifies restrictions on how & where the gpu-function can be used. You
can specify what versions of GLSL this function is valid for, what primtive kind it
operates on, what pipeline stage it can be used for, and how CEPL compiles the cpu
side representation.
For more info please see the documentation on ‘compile-context‘
‘&shared‘ is only valid for gpu-functions which will be used as compute stages
It lets you specify variables whos data will be shared within the ’local group’
You can use any non opaque type for the shared variable.
*EXPRERIMENTAL*
CEPL has a highly experimental feature to allow you to call gpu-functions directly
What it aims to allow you to do is to generate and run a pipeline which runs your
function once with the given arguments on the GPU.
By doing this it gives you a way to try out your gpu-functions from the REPL
without having to make a pipeline map-g over it whilst use ssbos or
transform-feedback to capture the result.
Currently this only works with functions that would work within a vertex
shader (so things like gl-frag-pos will not work) however we want to expand on
this in the future.
This is not intended to be used *anywhere* where performance matters, it was
made solely as a debugging/development aid. Every time it is run it must:
- generate a pipeline
- compile it
- map-g over it
- marshal the results back to lisp
- free the pipeline
This is *extremly* expensive, however as long as it takes less that 20ms or so
it is fast enough for use from the repl.
Defun-g-equiv let’s you define a function which will be run on the gpu.
Commonly refered to in CEPL as a ’gpu function’ or ’gfunc’
The difference between defun-g-equiv & ‘defun-g‘ is that defun-g will create
a ’dummy’ lisp function so that ’jump to definition’ and signature hits work
in your editor, defun-g-equiv does not do this.
The advantage of defun-g-equiv is that you are then free define a lisp
equivalent of your gpu-function. This means you can use the same functions in
cpu or gpu code, which is very compelling.
*- the rest of the doc-string is the same as for defun-g -*
Gpu functions try to feel similar to regular CL functions however naturally
there are some differences.
The first and most obvious one is that whilst gpu function can be called
from other gpu functions, they cannot be called from lisp functions directly.
They first must be composed into a pipeline using ‘defpipeline-g‘.
When a gfunc is composed into a pipeline then that function takes on the role of
one of the ’shader stages’ of the pipeline. For a proper breakdown of pipelines
see the docstring for defpipeline-g.
Let’s see a simple example of a gpu function we can then break down
;; {0} {3} {1} {2}
(defun-g-equiv example ((vert my-struct) &uniform (loop :float))
(values (v! (+ (my-struct-pos vert) ;; {4}
(v! (sin loop) (cos loop) 0))
1.0)
(my-struct-col vert)))
{0} So like the normal defun we specify a name first, and the arguments as a
list straight afterwards
{1} The &uniform lambda keyword says that arguments following it are ’uniform
arguments’. A uniform is an argument which has the same value for the entire
stage.
&optional and &key are not supported
{2} Here is our definition for the uniform value. If used in a pipeline as a
vertex shader #’example will be called once for every value in the
‘buffer-stream‘ given. That means the ’vert’ argument will have a different value
for each of the potentially millions of invocations in that ONE pipeline
call, however ’loop’ will have the same value for the entire pipeline call.
{2 & 3} All arguments must have their types declared
{4} Here we see we are using CL’s values special form. CEPL fully supports
multiple value return in your shaders. If our function #’example was called
from another gpu-function then you can use multiple-value-bind to bind the
returned values. If however our example function were used as a stage in a
pipeline then the multiple returned values will be mapped to the multiple
arguments of the next stage in the pipeline.
That’s the basics of gpu-functions. For more details on how they can be used
in pipelines please see the documentation for defpipeline-g.
*More Argument Kinds*
Along with ‘&uniform‘ there are also ‘&shared‘ & ‘&context‘.
‘&context‘ specifies restrictions on how & where the gpu-function can be used. You
can specify what versions of GLSL this function is valid for, what primtive kind it
operates on, what pipeline stage it can be used for, and how CEPL compiles the cpu
side representation.
For more info please see the documentation on ‘compile-context‘
‘&shared‘ is only valid for gpu-functions which will be used as compute stages
It lets you specify variables whos data will be shared within the ’local group’
You can use any non opaque type for the shared variable.
This is CEPL’s equivalent of Common Lisp’s #’function function.
It returns the object that represents the gpu-function with the specified
signature.
Currently there is no reason to use this function. It is only available for the sake of completeness and future features.
lambda-g let’s you define an anonymous function which can run on the gpu.
Commonly refered to in CEPL as a ’gpu function’ or ’gfunc’
Gpu functions try to feel similar to regular CL functions however naturally
there are some differences.
The first and most obvious one is that whilst gpu function can be called
from other gpu functions, they cannot be called from lisp functions directly.
They first must be composed into a pipeline using ‘defpipeline-g‘.
When a gfunc is composed into a pipeline then that function takes on the role
of one of the ’shader stages’ of the pipeline. For a proper breakdown of
pipelines see the docstring for defpipeline-g.
Let’s see a simple example of a gpu function we can then break down
;; {0} {3} {1} {2}
(lambda-g ((vert my-struct) &uniform (loop :float))
(values (v! (+ (my-struct-pos vert) ;; {4}
(v! (sin loop) (cos loop) 0))
1.0)
(my-struct-col vert)))
{0} So like the normal lambda we specify the arguments (as a list) first
{1} The &uniform lambda keyword says that arguments following it are ’uniform
arguments’. A uniform is an argument which has the same value for the entire
stage.
&optional and &key are not supported
{2} Here is our definition for the uniform value. If used in a pipeline as a
vertex shader #’example will be called once for every value in the
‘buffer-stream‘ given. That means the ’vert’ argument will have a different value
for each of the potentially millions of invocations in that ONE pipeline
call, however ’loop’ will have the same value for the entire pipeline call.
{2 & 3} All arguments must have their types declared
{4} Here we see we are using CL’s values special form. CEPL fully supports
multiple value return in your shaders. If our function #’example was called
from another gpu-function then you can use multiple-value-bind to bind the
returned values. If however our example function were used as a stage in a
pipeline then the multiple returned values will be mapped to the multiple
arguments of the next stage in the pipeline.
That’s the basics of gpu-functions. For more details on how they can be used
in pipelines please see the documentation for defpipeline-g.
The map-g macro maps a ‘buffer-stream‘ over our pipeline and the results of the
pipeline are fed into the ’current’ ‘fbo‘.
This is how we run our pipelines and thus is how we render in CEPL.
The arguments to map-g are going to depend on what gpu-functions were composed
in the pipeline you are calling. However the layout is always as follows.
- the pipeline function: The first argument is always the pipeline you wish to
map the data over.
- The stream: The next argument will be the buffer-stream which will be used as the
inputs to the vertex-shader of the pipeline. The type of the buffer-stream must
be mappable onto types of the non uniform args of the gpu-function being used
as the vertex-shader.
- Uniform args: Next you must provide the uniform arguments. These are passed in
the same fashion as regular &key arguments.
CEPL will then run the pipeline with the given args and the results will be fed
into the current FBO. If no FBO has been bound by the user then the current FBO
will be the default FBO which will most likely mean you are rendering into the
surface visable on your screen.
If an FBO has been bound then the value/s from the fragment shader will be
written into the attachments of the FBO. To control this please see the
doc-string for ‘with-fbo-bound‘. The default behaviour is that each of the
multiple returns values from the gpu-function used as the fragment shader will
be written into the respective attachments of the FBO (first value to first attachment, second value to second attachment, etc)
The ‘map-g-into‘ macro maps a ‘buffer-stream‘ over our pipeline and the results of the
pipeline are fed into the supplied ‘fbo‘.
This is how we run our pipelines and thus is how we render in CEPL.
The arguments to map-g-into are going to depend on what gpu-functions were
composed in the pipeline you are calling. However the layout is always as
follows:
- target fbo: This is where the results of the pipeline will be written.
- the pipeline function: The first argument is always the pipeline you wish to
map the data over.
- The stream: The next argument will be the buffer-stream which will be used as the
inputs to the vertex-shader of the pipeline. The type of the buffer-stream must
be mappable onto types of the non uniform args of the gpu-function being used
as the vertex-shader.
- Uniform args: Next you must provide the uniform arguments. These are passed in
the same fashion as regular &key arguments.
CEPL will then run the pipeline with the given args and the results will be fed
into the specified FBO. The value/s from the fragment shader will be
written into the attachments of the FBO. If you need to control this in the
fashion usualy provided by ‘with-fbo-bound‘ then please see the doc-string for
‘map-g-into*‘.
The default behaviour is that each of the multiple returns values from the
gpu-function used as the fragment shader will be written into the respective
attachments of the FBO (first value to first attachment, second value to
second attachment, etc)
Internally map-g-into wraps call to ‘map-g‘ in with-fbo-bound. The with-fbo-bound
has its default configuration which means that:
- the ‘viewport‘ being will be the dimensions of the ‘gpu-array‘ in the first fbo attachment
- and blending is enabled
If you want to use map-g-into and have control over these options please use ‘map-g-into*‘
(p-> (1 2 3) #’a #’b #’c #’d)
Calls first function with args provided and uses result as
arguments for next function. Uses multiple-value-call so you
can use (values) to specify complex lambda-args.
pipeline is how we define anonymous rendering pipelines in CEPL.
Rendering pipelines are constructed by composing gpu-functions.
Rendering in OpenGL is descibed as a pipeline where a ‘buffer-stream‘ of data
usually describing geometry) is mapped over whilst a number of uniforms are
available as input and the outputs are written into an ‘FBO‘.
There are many stages to the pipeline and a full explanation of the GPU
pipeline is beyond the scope of this docstring. However it surfices to say that
only 5 stages are fully programmable (and a few more customizable).
pipeline lets you specify the code (shaders) to run the programmable
parts (stages) of the pipeline.
The available stages kinds are:
- :vertex
- :tessellation-control
- :tessellation-evaluation
- :geometry
- :fragment
- :compute
To define code that runs on the gpu in CEPL we use gpu functions (gfuncs)
Which are defined with ‘defun-g‘ or lambda-g.
Here is an example pipeline:
(defun-g vert ((position :vec4) &uniform (i :float))
(values position (sin i) (cos i)))
(defun-g frag ((s :float) (c :float))
(v! s c 0.4 1.0))
(defun make-lambda-pipeline ()
(pipeline ()
(vert :vec4)
(frag :float :float)))
Here we define a lambda pipeline which uses the gfunc vert as its vertex
shader and used the gfunc frag as the fragment shader.
It is also possible to specify the name of the stages
(defun make-lambda-pipeline ()
(pipeline ()
:vertex (vert :vec4)
:fragment (frag :float :float)))
But this is not neccesary unless you need to distinguish between tessellation
or geometry stages.
**– Context –**
The first argument to pipeline-g is the a list of additional information that
is confusingly called the ’pipeline’s context’. We need to change this name.
Valid things that can be in this list are:
*A primitive type:*
This specifies what primitives can be passed into this pipeline.
By default all pipelines expect triangles. When you map a buffer-stream over a
pipeline the primitive kind of the stream must match the pipeline.
The valid values are:
:dynamic
:points
:lines :line-loop :line-strip
:lines-adjacency :line-strip-adjacency
:triangles :triangle-fan :triangle-strip
:triangles-adjacency :triangle-strip-adjacency
(:patch <patch-size>)
:dynamic is special, it means that the pipeline will take the primitive kind
from the buffer-stream being mapped over. This won’t work for with pipelines
with geometry or tessellation stages, but it otherwise quite useful.
*A version restriction:*
This tells CEPL to compile the stage for a specific
version of GLSL. You usually do not want to use this as CEPL will compile for
the version the user is using.
The value can be one of:
:140 :150 :330 :400 :410 :420 :430 :440 :450 :460
**– Stage Names –**
Notice that we have to specify the typed signature of the stage. This is because
CEPL allows you to ’overload’ gpu functions. The signature for the a
gpu-function is a list which starts with the function name and whose other
elements are the types of the non-uniforms arguments. As an example we can see
above that the signature for vert is (vert :vec4), not (vert :vec4 :float).
**– Passing values from Stage to Stage –**
The return values of the gpu functions that are used as stages are passed as the
input arguments of the next. The exception to this rule is that the first return
value from the vertex stage is taken and used by GL, so only the subsequent
values are passed along.
We can see this in the example above: #’vert returns 3 values but #’frag only
receives 2.
The values from the fragment stage are writen into the current FBO. This may be
the default FBO, in which case you will likely see the result on the screen, or
it may be a FBO of your own.
By default GL only writed the fragment return value to the FBO. For handling
multiple return values please see the docstring for ‘with-fbo-bound‘.
**– Using our pipelines –**
To call a pipeline we use the map-g macro (or one of its siblings
‘map-g-into‘/‘map-g-into*‘). The doc-strings for those macros go into more details
but the basics are that map-g maps a buffer-stream over our pipeline and the
results of the pipeline are fed into the ’current’ fbo.
We pass our stream to map-g as the first argument after the pipeline, we then
pass the uniforms in the same style as keyword arguments. For example let’s see
our lambda pipeline example again:
(defun-g vert ((position :vec4) &uniform (i :float))
(values position (sin i) (cos i)))
(defun-g frag ((s :float) (c :float))
(v! s c 0.4 1.0))
(defun make-lambda-pipeline ()
(pipeline ()
(vert :vec4)
(frag :float :float)))
We can call this as follows:
(setf some-var (make-lambda-pipeline))
(map-g some-var v4-stream :i game-time)
This macro will set the default blending parameters for the scope.
These values will be used unless overriden by blend settings in an ‘fbo‘.
CEPL ensures the blending settings are undone at the end of the scope.
Binds the ‘c-array‘ to the variable named by the var-name argument. Frees the c-array at the end of the scope.
Binds a list of ‘c-array‘s to the variable named by the var-name argument. Frees all of the c-arrays at the end of the scope.
This is one macro you use when you want to capture the output from a pipeline in
an ‘FBO‘.
‘with-fbo-bound‘ will capture any rendering from any map-g calls inside it body.
Also look at the docs for ‘map-g-into‘ and ‘map-g-into*‘ for a full picture of your
options
**– draw buffers –*
draw-buffers is an important argument, it allows you to direct the outputs from
the fragment-shader of the pipeline into the fbo’s color ‘attachment‘s.
This means that your pipelines can write into multiple attachments (and thus
multiple ‘texture‘s) at once.
To use it either pass in:
nil - Which means that the fbo is bound but no attachments will be draw into
(rarely used)
t - Which means the all attachments will be available to be drawn into
this will happen in order, so the first output from the fragment shader
will draw into the first attachment, the second output to the second
attachment, etc
an array produced by calling ‘attachment-pattern‘ -
This option allows you to control which attachments are bound to
which outputs. For example in the following..
(defun foo (fbo)
(with-fbo-bound (fbo :draw-buffers (attachment-pattern 0 2))
..
etc))
output 0 is bound to attachment 0 but output 1 is bound to
attachment 2.
To specify that an output is discarded use +discard-attachment+ in place of an
color attachment number.
**– with-viewport –**
If with-viewport is t then with-fbo-bound adds a ‘with-fbo-viewport‘ that uses
this fbo to this scope. This means that the ‘current-viewport‘ within this scope
will be set to the equivalent of:
(make-viewport dimensions-of-fbo ’(0 0))
See the docstruct ‘with-fbo-viewport‘ for details on this behavior.
One last detail is that you may want to take the dimensions of the viewport from
an attachment other than attachment-0. To do this use the ’attachment-for-size
argument and give the index of the color-attachment to use.
**– with-blending –**
If with-blending is t then ‘with-fbo-bound‘ adds a ‘with-blending‘ that uses
this fbo to this scope.
This means that the blending parameters from your fbo will be used while
rendering. For the details and version specific behaviours check out
the docstring for cepl.blending:with-blending
**– target –**
For target the choices are :framebuffer, :read_framebuffer and
:draw_framebuffer.
You normally dont need to worry about the target as the last two are only used
when you need certain GL read and write operations to happen to different
buffers. It remains for those who know they need this but otherwise you can
let CEPL handle it.
This macro behaves similarly to with-viewport in that is sets the
current ‘viewport‘. However rather than passing in a viewport, one is
created[0] based on the dimensions of the gpu-array bound as the specified
attachment to the given fbo.
By default color-attachment0 will be used but you can provide your own
attachment index using the :attachment argument.
It will remain as the ‘current-viewport‘ until the end of the scope.
[0] CEPL is free to reuse internal viewport objects where it makes sense instead of consing up a new viewport. This means that the viewport inside the scope may be eq to the viewport outside, but with different values in its slots for the duration of the body.
This macro takes a ‘gpu-array‘ and asks OpenGL to temporarily ’map’ it to
a ‘c-array‘. Within the scope of the body you can run any of the ‘c-array‘ commands
on it.
This macro is really helpful if you need to have random access to the data in
the gpu-array.
A simple example would be if we wanted to set the 3rd element in a gpu array to
5.0 we could do the following:
(with-gpu-array-as-c-array (tmp-c-arr my-gpu-array)
(setf (aref-c tmp-c-arr 2) 5.0))
The reason we provide this and not a function like ‘aref-c‘ for gpu-arrays is
that it would give the impression that this kind of operation is cheap, which it
is not. There are cases where using with-gpu-array-as-c-array will perform
better than ‘push-g‘ and there cases where the opposite is true.
Generally this will be to do with how much of the block of memory is being
updated, but it is best to consult current graphics programming texts to find
out the details.
The valid values for the :access argument are :read-only :write-only or :read-write.
This macro takes a ‘gpu-array‘ and asks OpenGL to temporarily ’map’ it to a pointer. Within the scope of the body you can run any cffi command on it.
This macro is really helpful if you need to have random access to the data in
the gpu-array.
The valid values for the :access argument are :read-only :write-only or :read-write.
This macro takes a ‘gpu-array‘ and asks OpenGL to temporarily ’map’ it a portion
of it to a ‘c-array‘. Within the scope of the body you can run any of the
‘c-array‘ commands on it.
This macro is really helpful if you need to have random access to the data in
the gpu-array.
A simple example would be if we wanted to set the 3rd element in a gpu array to
5.0 we could do the following:
(with-gpu-array-range-as-c-array (tmp-c-arr my-gpu-array 10 20)
(setf (aref-c tmp-c-arr 2) 5.0))
The reason we provide this and not a function like ‘aref-c‘ for gpu-arrays is
that it would give the impression that this kind of operation is cheap, which it
is not. There are cases where using with-gpu-array-as-c-array will perform
better than ‘push-g‘ and there cases where the opposite is true.
Generally this will be to do with how much of the block of memory is being
updated, but it is best to consult current graphics programming texts to find
out the details.
The valid values for the :access argument are :read-only :write-only or :read-write.
This macro takes a ‘gpu-array‘ and asks OpenGL to temporarily ’map’ a portion
ofit to a pointer. Within the scope of the body you can run any cffi command
on it.
This macro is really helpful if you need to have random access to the data in
the gpu-array.
The valid values for the :access argument are :read-only :write-only or :read-write.
The with-instances macro is used to enable instancing. You specify number number
of instances with the count argument.
An example of its usage is as follows:
(with-instances 1000
(map-g #’draw-grass grass-data :tex *grass-texture*))
This behaves kind of like you had written the following..
(dotimes (x 1000)
(map-g #’draw-grass grass-data :tex *grass-texture*))
..except MUCH more efficiently as you did not have to submit 1000 draw calls.
Another difference is that, in the pipeline, the variable gl-instance-id will contain the index of which of the 1000 instances is currently being drawn.
This macro lets you rebind which pipeline output map to which of the color
attachments in the current fbo.
To use it you must have already bound and fbo (see ‘with-fbo-bound‘), you
then pass an attachment pattern (created using ‘attachment-pattern‘) as the
primary argument.
For example:
(with-outputs-to-attachments ((attachment-pattern 2 0))
..
etc)
Here output 0 is bound to attachment 2 and output 1 is bound to attachment 0.
The :check keyword argument with ‘with-outputs-to-attachments‘ informs CEPL
whether you want to check that the attachment pattern provided is valid for the
currently bound fbo.
To specify that an output is discarded use +discard-attachment+ in place of an
color attachment number.
Note: If you want to bind the fbo and immediately set these mappings then instead
use the :gpu-buffers argument to ‘with-fbo-bound‘. For example the above mapping
can be achieved with:
(with-fbo-bound (fbo :draw-buffers (attachment-pattern 2 0))
..
etc)
Used like this:
(with-setf (aref x 0) 10
blah
blah)
Used like this:
(with-setf* ((aref a 0) 10
(foo :plinge) :narf)
(print "blarr"))
This macro takes a ‘texture‘ and creates a temporary ‘sampler‘ that is valid
within the scope.
As the sampler will be freed at the end of the scope, do not return it or assign it to any variable that outlasts the scope.
Binds the ‘vao‘ to the gl context and guarentees it will be unbound after the
body scope.
Usually you will not need to interact with the vao directly as you can simply use a ‘buffer-stream‘ and let ‘map-g‘ handle when it should be bound and unbound.
This macro sets the current ‘viewport‘ to the viewport given as the argument. It will remain as the ‘current-viewport‘ until the end of the scope.
fbo
.
obj
.
id
.
type
.
wrap
.
This function takes two arguments:
- A function that takes a pointer and a (unsigned-byte 32)
- A ‘c-array‘
‘across-c-ptr‘ will then call the given function once for every element in the c-array passing in the pointer to an element of the array and the index to that element.
Always passes
The GL spec says the following
> Anisotropic filtering is an advanced filtering technique that takes
> multiple samples, blending the results together. Exactly how this is
> done is implementation-dependent, but control over the feature is
> specific: the user provides a maximum number of samples that can be
> taken of the texture during any one texture fetch. Note that this is
> the ’maximum’ number of samples; a particular texture fetch may take
> fewer samples. Hardware generally attempts to determine the best
> number of samples to take, clamped to the user-provided maximum.
This function lets you get and set the anisotropic filtering value on the
sampler.
A value of 1f0 means no anisotropic filtering and any value higher than 1f0
counts as a use of anisotropic filtering.
The anisotropic filtering setting can also be set during creation of a sampler you can use the ‘:anisotropy‘ keyword argument to the ‘sample‘ function. The default value is 1f0.
Accesses the ‘c-array‘ element specified by the subscripts
Accesses the ‘c-array‘ element specified by the subscripts.
The difference between this and ‘aref-c‘ is that this this function takes the subscripts as a list.
This function retrieves the ‘attachment‘ named by attachment-name from the
given ‘fbo‘. The result is a ‘gpu-array‘
The attachment-name can be one of the following:
a positive integer - In which case this function returns the
nth color-attachments where (= n attachment-name)
:d - the depth-attachment is returned
:s - the stencil-attachment is returned [0]
:ds - the depth-stencil-attachment is returned [0]
You can also setf this function, the value must be a texture-backed gpu-array
with a valid element-type for that attachment.
For color attachments this means the element type must be a member of
the ‘*color-renderable-formats*‘ list
For color attachments this means the element type must be a member of
the ‘*depth-formats*‘ list
For stencil attachments this means the element type must be a member of
the ‘*stencil-formats*‘ list
For depth-stencil attachments this means the element type must be a member of
the ‘*depth-stencil-formats*‘ list
[0] *WARNING:* :s & :ds are not supported in the current version of CEPL
This function returns the blending parameters that will be used when rendering
into the specified ‘attachment‘ on the given ‘fbo‘
Blending parameters tell OpenGL how values written into a ‘gpu-array‘ should be
combined with any values that are already present.
The canonical use for this is implementing transparency.
The details of blending parameters and where they can be used is best covered in the docstring for the ‘blending-params‘ struct.
This function returns a typed simple-array with is suitable to pass as
the :draw-buffers argument in ‘with-fbo-bound‘.
The arguments must evaluate to numbers of type (unsigned-byte 16).
When called inline in a ‘with-fbo-bound‘ form there is an opportunity
for CEPL to optimize the code. For example in this case
(defun foo (fbo)
(with-fbo-bound (fbo :draw-buffers (attachment-pattern 0 2))
..
etc))
This function take an ‘fbo‘ and the name of an ‘attachment‘. It then returns
the ‘texture‘ that backs the ‘gpu-array‘ in the specified attachment.
It is equivalent to writing:
(gpu-array-texture (attachment fbo attachmnent-name))
This function takes an ‘fbo‘ and attachment-name and returns a new ‘viewport‘ whos dimensionsmatch those of the ‘gpu-array‘ connected to the ‘attachment‘.
This function takes a ‘gpu-array‘ and returns either :texture or :buffer depending on whether it is a texture-backed gpu-array or a buffer-backed gpu-array.
__WARNING__ EXPRERIMENTAL FEATURE
This allows you to create a new lambda-pipeline from existing pipeline whilst also
fixing the values for certain uniforms.
These values will be baked into the gpu-code so that they will not need to be uploaded
each time the pipeline is mapped over.
For example:
(defpipeline-g draw-cube ()
:vertex (draw-cube-vert g-pnt)
:fragment (draw-cube-frag :vec2))
(defun fix-cube-size (size)
(bake-uniforms #’draw-cube :edge-length (float size)))
This function, when passed an ‘fbo‘ or attachment will return the ‘blending-params‘
for that object.
For details on what blending-params are, see the docstring for the blending-params struct
This function returns t when the given value is a ‘blending-params‘ object, otherwise it returns nil
This function populates the ‘gpu-buffer‘ with the contents of the ‘c-array‘.
You also pass in the buffer type and the draw type this buffer is to be used
for.
The function returns a buffer object with its format slot populated with the details of the data stored within the buffer
This function populates an opengl buffer with the ’data-byte-size’ bytes of data
from the given point, optionally at the offset provided.
You also pass in the buffer type and the draw type this buffer is to be
used for.
The function returns a buffer object with its format slot populated with the details of the data stored within the buffer
This function creates an empty block of data in the opengl buffer equal in size
to:
(* length size-in-bytes-of-type).
It will remove ALL data currently in the buffer
When you construct a buffer-stream it will (by default) hold onto the
gpu-arrays that were composed.
This function when given a buffer-stream will return those stored gpu-arrays
When passed a buffer-stream with an index this function will return the element-type of the index-data.
Returns the number of elements in the buffer-stream
Returns t if the value passed is a buffer-stream
This function returns the primitive that the data pulled from buffer stream
represents.
The primitive says what the gpu will draw this data as. It can be any one of:
:points
:lines
:line-loop
:line-strip
:lines-adjacency
:line-strip-adjacency
:triangles
:triangle-fan
:triangle-strip
:triangles-adjacency
:triangle-strip-adjacency
(:patch <patch-size>)
By default the primitive-type is :triangles
Returns the OpenGL Vertex Array Object (VAO) owned by this stream.
Do not modify this unless you are sure what you are doing.
In most cases you do not need to interact with the VAO directly
vao
.
Return t if the given value is a ‘texture‘ who data is stored in a ‘gpu-buffer‘ as opposed to the usual texture memory. Returns nil otherwise
‘C-ARRAY-DIMENSIONS‘ takes a ‘c-array‘ as an argument and returns the
dimensions of the c-array
You can also use the generic function ‘DIMENSIONS‘ to get the same result.
‘C-ARRAY-POINTER‘ takes a ‘c-array‘ as an argument and returns the
type of the elements of the array.
You can also use the generic function ‘ELEMENT-TYPE‘ to get the same result.
free
.
Return t if the argument is a ‘c-array‘. Returns nil otherwise.
‘C-ARRAY-POINTER‘ takes a ‘c-array‘ as an argument and returns the
pointer to the foreign data.
You can also use the generic function ‘POINTER‘ to get the same result.
This function asks OpenGL to check the given ‘FBO‘ and ensure that it is
’complete’.
This function will either return the particular ’framebuffer complete’ flag or
will throw a condition with an explanation of the problem.
For a full rundown on what it means for a fbo to be complete see:
[glwiki- framebuffer completeness](https://www.opengl.org/wiki/Framebuffer_Object#Framebuffer_Completeness)
All fbos made in CEPL using ‘make-fbo‘ are checked for completeness before
being returned to the user.
What this function will clear depends on what is passed:
- a ‘fbo‘ - See ’clearing fbos’ below
- an ‘attachment‘ - See ’clearing a single attachment’ below
- nothing - The ’current fbo’ will be cleared
**– Clearing Fbos –**
In this case clearing means that all the elements of the attachments will be set
to a certain value. The value that the attachment’s ‘gpu-array‘s will be set to
varies based on the attachment.
- color attachments: Will be set to the value set in #’gl:clear-color
- depth attachments: Will be set to the value set in #’gl:clear-depth
- stencil attachments: Will be set to the value set in #’gl:clear-stencil
You can also use ‘clear-fbo‘ for this task
**– Clearing a single attachment –**
Not currently implemented
This function will set the elements of the ‘attachment‘s of the ‘fbo‘ to a
certain value. The value that the attachment’s ‘gpu-array‘s will be set to
varies based on the attachment.
- color attachments: Will be set to the value set in #’gl:clear-color - depth attachments: Will be set to the value set in #’gl:clear-depth - stencil attachments: Will be set to the value set in #’gl:clear-stencil
You can also perform this action by calling ‘clear‘ with an fbo
Takes a ‘c-array‘ and makes a new c-array with the same contents as the the original. The contents in foreign memory are copied.
CLS is here as it reminds me of qbasic and that makes me happy.
It calls #’clear and #’swap twice so dont use this in your actually rendering code. It can be handy though if you want to clear the screen from the repl.
cepl
.
This function returns t if the value provided is a keyword that can be found in *color-renderable-formats*
This function sets the comparison mode of the ‘texture‘ or ‘sampler‘ given
-WARNING-
This feature is currently unsupported until shadow samplers are more fully
tested in CEPL. Use at your own risk
**– Comparison –**
Depth ‘texture‘s (textures that have a depth component image format) can be
sampled in one of two ways. They can be sampled as a normal texture, which
simply retrieves the depth value (with filtering applied). This will return a
vec4 containing a single floating-point value.
They can also be fetched in comparison mode. This means that sampling from
the texture requires a value to compare to those pulled from the texture;
this value is called the reference value. The result of the comparison
depends on the comparison function set in the texture. If the function
succeeds, the resulting value is 1s0; if it fails, it is 0s0.
When linear filtering is used, the actual returned value is
implementation-defined. However, the value will be on the range 0 → 1 and
will be proportional to the number of neighboring texels that pass the
comparison based on the single given value.
If the texture is a normalized integer depth format, then the reference value
is clamped to 0 → 1, to match the values from the texture. Otherwise, the value
is not clamped.
Using this mode requires two special settings. First, the sampler used in GLSL must be a shadow sampler. Second, the texture used in that sampler must have activated depth comparison mode. Attempting to use a texture without comparison with a shadow sampler, or vice-versa, will result in an error upon rendering.
To set the texture to comparison mode, set the :texture-compare-mode
texture parameter to :compare-ref-to-texture. The comparison function to
use when comparing the reference to the texture is set with the
:texture-compare-func texture parameter. Acceptable values are:
:never (always fails)
:always (always succeeds)
:less
:lequal
:equal,
:not-equal
:gequal
:greater
The comparison works as follows:
(funcall operator ref texture)
where ref is the reference value given to the texture lookup function by GLSL, and texture is the value fetched from the texture. So :LESS will be true if the reference value is strictly less than the value pulled from the texture.
This function takes a lambda-g form and compiles it to a gpu-lambda object.
This is used for similar reasons to ‘compile‘ in Common Lisp, you have a
lambda definition as lists and you want a compiled lambda.
The result of this function is suitable for passing to pipeline-g which lets
you define a map-g’able pipeline at runtime.
Whilst this shares the same signature as CL’s #’compile in our version the ’name’ argument must be nil.
This function, when passed a ‘blending-params‘ object, will create a new blending-params object with the same settings as the one passed.
This function returns a new ‘viewport‘ with identical origin and resolution to the viewport provided.
This function returns the ‘viewport‘ that is current in this scope.
If no other code in the callstack has used ‘with-viewport‘ or ‘with-fbo-viewport‘ then the result will be the default viewport.
This function returns t if the value provided is a keyword that can be found in *depth-formats*
This function returns t if the value provided is a keyword that can be found in *depth-stencil-formats*
This function, when passed a ‘blending-params‘ object, will return the name of the
function that will be applied to the alpha value that is currently in the ‘fbo‘
and is about to be combined with the value coming from the pipeline.
The result will be one of the following:
:zero
:one
:src-color
:one-minus-src-color
:dst-color
:one-minus-dst-color
:src-alpha
:one-minus-src-alpha
:dst-alpha
:one-minus-dst-alpha
:constant-color
:one-minus-constant-color
:constant-alpha
:one-minus-constant-alpha
:src-alpha-saturate
:src1-color
:one-minus-src-color
:src1-alpha
:one-minus-src-alpha
To see more info on this subject please see the doc-string for the blending-params struct.
This function, when passed a ‘blending-params‘ object, will return the name of the
function that will be applied to the color value that is currently in the ‘fbo‘
and is about to be combined with the value coming from the pipeline.
The result will be one of the following:
:zero
:one
:src-color
:one-minus-src-color
:dst-color
:one-minus-dst-color
:src-alpha
:one-minus-src-alpha
:dst-alpha
:one-minus-dst-alpha
:constant-color
:one-minus-constant-color
:constant-alpha
:one-minus-constant-alpha
:src-alpha-saturate
:src1-color
:one-minus-src-color
:src1-alpha
:one-minus-src-alpha
To see more info on this subject please see the doc-string for the blending-params struct.
This function will return t if the given value is an ‘fbo‘, otherwise it will return nil
Sucks up an entire file from PATH into a freshly-allocated string, returning two values: the string and the number of bytes read.
map through a hash and actually return something
Walks a list tree and flattens it (returns a 1d list containing all the elements from the tree)
This function, when passed a ‘gpu-buffer‘ will free the memory on the gpu and
’blank’ the ‘gpu-buffer‘.
Blanking in this case means that the slots of the ‘gpu-buffer‘ will all be set to default values.
Calling this with a buffer-stream will free the VAO owned by this buffer-stream
and blank the buffer-stream object.
It will not free any of the gpu-data that was composed to make this stream.
Calling the generic function ‘free‘ with a buffer-stream will call this function
This function, when passed a list of gpus-buffer will free the gpu memory for
all the gpus-buffers and ’blank’ them.
Blanking in this case means that the slots of each ‘gpu-buffer‘ will all be set to default values.
Frees the foreign memory allocated with the ‘c-array‘ and ’blanks’ the c-array.
Blanking the c-array means its fields will be set to default values,
for example dimensions will be 0, the pointer will be null etc.
The generic function ‘free‘ will call ‘free-c-array‘ when passed a c-array.
This function takes a pipeline designator[0] and frees it, this releases
frees the gl-program object.
[0] either a lambda-pipeline or a symbol naming a pipeline
Calling this with a ‘sampler‘ will free the gl sampler and blank the lisp object representing it.
Calling the generic function ‘free‘ with a sampler will call this function
Takes a GL VAO and deletes it
Takes a list of GL VAOs and deletes them.
This function exists as a minor optimization.
funcall-g is an experimental function. What it aims to allow you to do is to
generate and run a pipeline which runs the requested function once with the
given arguments on the GPU.
By doing this it gives you a way to try out your gpu-functions from the REPL
without having to make a pipeline map-g over it whilst use ssbos or
transform-feedback to capture the result.
Currently this only works with functions that would work within a vertex
shader (so things like gl-frag-pos will not work) however we want to expand on
this in the future.
This is not intended to be used *anywhere* where performance matters, it was
made solely as a debugging/development aid. Every time it is run it must:
- generate a pipeline
- compile it
- map-g over it
- marshal the results back to lisp
- free the pipeline
This is *extremly* expensive, however as long as it takes less that 20ms or so it is fast enough for use from the repl.
Calling this with a ‘texture‘ asks OpenGL to generate mipmaps for the texture.
You do not normally need to use this function as you can use the :mipmaps argument on ‘make-texture‘. See ‘make-texture‘ for more details.
When passed a buffer-backed ‘gpu-array‘ this function will return the access-style
of the underlying gpu-buffer.
The access-style of a gpu-array (or ‘gpu-buffer‘) is a hint to OpenGL on how you
intend to use the array. It is optional whether your gpu manufacturer’s
implementation of GL takes any notice of this option. When they do take notice
of it, it will to optimize access to the underlying data.
There are also no repercussions for accessing the data in a way contrary to the declared access-style (other than potential performance costs).
When passed a buffer-backed ‘gpu-array‘ this function will return the ‘gpu-buffer‘
backing this array.
Note that if you made the array with ‘make-gpu-arrays‘ then there will be multiple gpu-arrays sharing this buffer, so care should be taken when modifying or freeing data.
Return a list whose elements are the dimensions of the array.
You can also use the generic function ‘dimensions‘ to get this info.
Will return the type of the elements in the ‘gpu-array‘ given.
If this is a texture-backed gpu-array then the element-type will be the same as the ’image-format’ of the ‘texture‘.
When passed a texture-backed ‘gpu-array‘ this function will return the index of the ‘texture‘’s cubeface that contains this gpu-array. This only truly applies to gpu-arrays belonging to cubemap ‘texture‘s, for all gpu-arrays this number will always be 0.
When passed a texture-backed ‘gpu-array‘ this function will return the index of the gpu-array within the array-textures. This only truly applies to gpu-arrays belonging to array-textures, for all gpu-arrays this number will always be 0.
When passed a texture-backed ‘gpu-array‘ this function will return the
mipmap level the gpu-array resides on within the ‘texture‘.
This only truly applies to gpu-arrays with mipmaps, for all gpu-arrays this number will always be 0.
Will return t if the value given is a ‘gpu-array‘.
This will return t for both texture-backed and buffer-backed gpu-arrays
When passed a texture-backed ‘gpu-array‘ this function will return the
type of the ‘texture‘ containing this gpu-array.
The result will be one of the following:
:texture-1d
:texture-2d
:texture-3d
:texture-1d-array
:texture-2d-array
:texture-cube-map
:texture-cube-map-array
:texture-rectangle
:texture-buffer
:texture-buffer
:texture-buffer
:texture-2d-multisample
:texture-2d-multisample-array
This function returns an array of the raw :uint8 ‘gpu-array‘s that make up the data in this ‘gpu-buffer‘.
This function, when passed a ‘gpu-buffer‘ will return the OpenGL buffer object
from the ‘gpu-buffer‘.
It is not recommended to modify this directly as the changes from doing so won’t be reflected in the layout of the ‘gpu-buffer‘, which may potentially put the ‘gpu-buffer‘ (and and ‘gpu-array‘ or ‘ubo‘ using it) into an invalid state.
id
.
This function returns t if the given value is a ‘gpu-buffer‘. Otherwise it returns nil.
This function returns all the signatures of the gpu-functions named ’name’.
The reason there may be many is that functions can be ’overloaded’ so you can have multiple gpu-functions with the same name as long as they can be uniquely identified by the combination of their name and argument types.
This takes a flat list and emit a list of lists, each n long containing the elements of the original list
not external
not external
This function, when given a image-format name, will attempt to find and
return the name of a lisp type that is equivalent.
If no such type is found then nil is returned
This function, when given an image-format name, will attempt to find and
return equivalent equivalent ‘pixel-format‘.
If no such type is found then nil is returned
This function returns t if the value provided is a keyword that can be found in *image-formats*
This is how we initialize CEPL. It is important to do this before using any api
that touches the gpu.
When you call this it does a few things:
- Asks the host to initialize itself
- Asks the host for an opengl context and window
- Wraps the gl-context in CEPL’s own context object
- Sets up some internals systems
And finally returns t.
CEPL is now ready to use.
cepl
.
Always returns the stored-val
This takes a list of symbols (or strings) and outputs one
keyword symbol.
If the input is symbol/s then the output is a regular keyword
If the input is string/s, then the output is
a :|keyword like this|
This function, when given a lisp type name, will attempt to find and
return the name of a GL image-format that is equivalent.
If no such type is found then nil is returned
take a string and changes it to uppercase and replaces all underscores _ with minus symbols -
This function sets the lod-bias of the given ‘texture‘ or ‘sampler‘
**– LOD –**
There is a pair of sampling parameters that affect the mipmap image selection:
:max-lod and :min-lod (floating-point values).
The way these work in mipmap selection is quite complicated; the specification
goes into full detail about it.
example:
(setf (min-lod texture-or-sampler) value)
(setf (max-lod texture-or-sampler) value)
LOD bias:
The mipmap image selection process can be adjusted coarsely by using the
:lod-bias sampling parameter. This bias will be added to the mipmap
LOD calculation (as well as added to the bias specified in one of the ‘texture‘
accessing functions in GLSL), which is used to select the image. A positive bias
means that larger mipmaps will be selected even when the texture is viewed from
farther away. This can cause visual aliasing, but in small quantities it can
make textures a bit more sharp.
(setf (lod-bias texture-or-sampler) value)
This function takes a ‘sampler‘ or ‘texture‘ and sets the approach used when the
area of the fragment in texture space is smaller than a texel.
**– The magnification filter –**
The magnification filter is controlled by the :magnify-filter texture parameter.
This value can be :linear or :nearest.
If :nearest is used, then the implementation will select the texel nearest the
texture coordinate; this is commonly called ’point sampling’).
If :linear is used, the implementation will perform a weighted linear blend
between the nearest adjacent samples.
(setf (magnify-filter tex-or-sampler) :linear)
(setf (magnify-filter tex-or-sampler) :nearest)
This function makes a new ‘blending-params‘ object.
The valid values for ‘source-rgb‘, ‘source-alpha‘, ‘destination-rgb‘
and ‘destination-alpha‘ are:
:zero
:one
:src-color
:one-minus-src-color
:dst-color
:one-minus-dst-color
:src-alpha
:one-minus-src-alpha
:dst-alpha
:one-minus-dst-alpha
:constant-color
:one-minus-constant-color
:constant-alpha
:one-minus-constant-alpha
:src-alpha-saturate
:src1-color
:one-minus-src-color
:src1-alpha
:one-minus-src-alpha
The valid values for ‘mode-rgb‘ and ‘mode-alpha‘ are:
:func-add
:func-subtract
:func-reverse-subtract
:min
:max
For details on their behaviour on the blending-params object please see the docstring for blending-params.
This function composes a number of gpu-arrays into a buffer-stream.
No data is copied, the buffer-stream simply refers to the gpu-arrays so the
gpu knows where to pull data from.
You can optionally pass a gpu-array to act as an index into the other arrays.
Usually when you map over a buffer-stream it will call the pipeline pulling 1
value from each of the composed gpu-arrays on each ’iteration’[0].
When you have an index then map-g will pull 1 value from index each ’iteration’
and use that to pick which value to use from the other arrays. This approach
gives bigs boosts in performance and memory usage when rendering.
The element-type of the index-array must be of the following:
:uint8 :ushort :uint :unsigned-short :unsigned-int
As well as an element type you also can specify the primitive-type. This says
what the gpu will draw this data as. It can be any one of:
:points
:lines
:line-loop
:line-strip
:lines-adjacency
:line-strip-adjacency
:triangles
:triangle-fan
:triangle-strip
:triangles-adjacency
:triangle-strip-adjacency
(:patch <patch-size>)
By default the primitive-type is :triangles
It is also worth noting that you can also use gpu-sub-arrays in here if you
want to limit the data you are using, for example the following is perfectly
legal code:
(make-buffer-stream
:gpu-arrays ‘(,(gpu-sub-array monster-pos-data 1000 2000)
,(gpu-sub-array monster-col-data 1000 2000))
:index-array monster-index-array
:length 1000)
[0] The use of the term ’iteration’ here is quoted as the gpu is going to be doing this work in parallel, however it makes the explanation clearer so that is why it is there. If you have a clearer way of explaining the behaviour please file it as an issue on github.
This function will make and return a new ‘c-array‘.
It can be used in a few different ways:
- with :initial-contents to nil:
In this case you need to provide dimensions and an element-type.
- with :initial-contents populated.
The initial-contents can be a (potentially nested) list or array.
When :initial-contents is an array then the dimension of the c-array
will be the same as the array passed in. CEPL currently only supports up
to 4D c-arrays.
When the :initial-contents is a flat list then each element is used as one
element in the c-array.
If the :initial-contents is a nested list then you must either:
- specify multiple dimensions and an element-type
- specify an element-type to be some struct type, then nested lists are then
used to populate the fields of the foreign structs. For an example of this
please see [this example](https://github.com/cbaggers/cepl.examples/blob/master/examples/triangle.lisp#L30).
If the :element-type is not provided then CEPL will look at every element in
the initial-contents and try and find the smallest (in bytes) foreign type
which works for every element. This mean if the array is full of single-floats
then CEPL will choose :float, not :double.
Naturally this behaviour is too slow for use in performance critical
applications however it is nice for experimentation and working from the repl.
If you need what would be called a displaced array in lisp then please see the
‘subseq-c‘ function.
Will create a CEPL ‘c-array‘ with the element-type and dimensions specified,
and will store the pointer as where the data is expected to be.
This function does allocate the memory or validate the type or dimensions so be very careful when using this function.
This, like other make-* functions in CEPL has a large variety of valid
arguments. The goal of this apparent complexity is to make exploration from the
repl easy, whilst still allowing absolutely control when it is needed.
Lets look at the behaviour when given different arguments
**– (make-fbo) –**
Empty FBOs are possible in CEPL, however they wernt added in GL until v4.3 so
please see the empty FBO section below.
**– (make-fbo 0) –**
Make an fbo with one color attachment in attachment slot 0.
CEPL with make a ‘texture‘ with dimensions equal to that of the current ‘viewport‘
and with the element-type :rgba (which is a sensible default for a color
attachment)
**– (make-fbo 0 1) –**
Make an fbo with two color attachments 1 in each of attachment slots 0 & 1.
CEPL with make the textures with dimensions equal to that of the current
viewport and with the element-type :rgba (which is a sensible default for a
color attachment)
**– (make-fbo :d) –**
Make an fbo with one depth attachment.
CEPL with make a texture with dimensions equal to that of the current viewport
and with the element-type :depth-component24 (which is a sensible default for a
depth attachment)
**– (make-fbo 0 1 :d) –**
Make an fbo with two color attachments and one depth attachment.
**– (make-fbo (list 0 some-gpu-array)) –**
Makes an fbo with one color attachment whos ‘gpu-array‘ is ’some-gpu-array’
**– (make-fbo (list 0 some-texture)) –**
Makes an fbo with one color attachment whos gpu-array is (texref some-texture)
**– (make-fbo ’(0 :dimensions (100 100) :element-type :rgba8)) –**
Makes an fbo with one color attachment whos gpu-array is taken from a new
texture created by taking the arguments after 0 and applying them to
‘make-texture‘
**– Any combination of the above –**
**– Empty FBOs –**
Empty FBOs are interesting in that you have a none of the pipeline outputs will be written to anywhere, but rendering can otherwise proceed as normal. They were only added in GL 4.3 so ‘make-fbo‘ will error if the current GL version is too low.
When defining an empty fbo there can be at most 1 attachment declaration.
When present the name must be NIL. You may also optionally specify the following
parameters as you would in ‘make-texture‘:
- :dimensions
- :layer-count
- :samples
- :fixed-sample-locations
So the following are legal:
- ‘(make-fbo ’(nil :dimensions (1024 1024)))‘
- ‘(make-fbo ’(nil))‘
- ‘(make-fbo)‘
**– Cube Texture Initialization –**
One last variant is allowed. You are allowed to pass a cube-map texture along
with and optional depth option. This will result in each face of the cube being
bound to the fbo’s attachments.
(make-fbo cube-tex)
(make-fbo cube-tex ’(:d :dimensions (32 32))
(make-fbo cube-tex :d) ;; depth attachment dimensions will match faces
This function returns a new instance of the gpu struct of type G-PC
This function returns a new instance of the gpu struct of type G-PN
This function returns a new instance of the gpu struct of type G-PNC
This function returns a new instance of the gpu struct of type G-PNT
This function returns a new instance of the gpu struct of type G-PNTC
This function returns a new instance of the gpu struct of type G-PT
This function takes a list of x ‘c-array‘s and returns a list of x buffer-backed
‘gpu-array‘s.
The reason to use this rather than:
(mapcar ‘make-gpu-array‘ c-arrays-list)
is that all of the gpu-arrays created will share the same ‘gpu-buffer‘.
Usually you will know if you need this instead of ‘make-gpu-array‘ as you will have some behaviour or performance characteristic in mind.
This function creates and returns a new ‘gpu-buffer‘.
If you wish to populate the buffer during construction you can pass a ‘c-array‘ as
the :initial-contents.
The :usage argument is a hint to OpenGL on how you intend to use the ‘gpu-buffer‘.
It is optional whether your gpu manufacturer’s implementation of GL takes any
notice of this option. When they do take notice of it, it will to optimize
access to the underlying data.
The :target argument can take any of the following binding targets:
Buffer Binding Target Purpose
————————————————————-
:array-buffer Vertex attributes
:atomic-counter-buffer Atomic counter storage
:copy-read-buffer Buffer copy source
:copy-write-buffer Buffer copy destination
:dispatch-indirect-buffer Indirect compute dispatch commands
:draw-indirect-buffer Indirect command arguments
:element-array-buffer Vertex array indices
:pixel-pack-buffer Pixel read target
:pixel-unpack-buffer Texture data source
:query-buffer Query result buffer
:shader-storage-buffer Read-write storage for shaders
:texture-buffer Texture data buffer
:transform-feedback-buffer Transform feedback buffer
:uniform-buffer Uniform block storage
Do note that the default of :array-buffer is perfectly fine for creating the
‘gpu-buffer‘ and uploading the data. It does not limit how the buffer can be used
in future parts of your program.
This function takes an existing GL Buffer Object and wraps it in a new
‘gpu-buffer‘.
If you wish to populate the buffer during construction you can pass a ‘c-array‘ as
the :initial-contents.
The :usage argument is a hint to OpenGL on how you intend to use the ‘gpu-buffer‘.
It is optional whether your gpu manufacturer’s implementation of GL takes any
notice of this option. When they do take notice of it, it will to optimize
access to the underlying data.
The :target argument can take any of the following binding targets:
Buffer Binding Target Purpose
————————————————————-
:array-buffer Vertex attributes
:atomic-counter-buffer Atomic counter storage
:copy-read-buffer Buffer copy source
:copy-write-buffer Buffer copy destination
:dispatch-indirect-buffer Indirect compute dispatch commands
:draw-indirect-buffer Indirect command arguments
:element-array-buffer Vertex array indices
:pixel-pack-buffer Pixel read target
:pixel-unpack-buffer Texture data source
:query-buffer Query result buffer
:shader-storage-buffer Read-write storage for shaders
:texture-buffer Texture data buffer
:transform-feedback-buffer Transform feedback buffer
:uniform-buffer Uniform block storage
Do note that the default of :array-buffer is perfectly fine for creating the ‘gpu-buffer‘ and uploading the data. It does not limit how the buffer can be used in future parts of your program.
This takes a list of symbols (or strings) and outputs one
keyword symbol.
If the input is symbol/s then the output is a regular keyword
If the input is string/s, then the output is
a :|keyword like this|
This function is a simple way to make a lisp project with all the
supporting libraries to get up and running with cepl quickly.
It uses the excellent quickproject project, so before starting be sure
to run the following in your repl:
(ql:quickload :quickproject)
By default it assumes you want to use sdl2, skitter and dirt, and that
you will be using slime as the communication layer between lisp and your editor.
Valid values for the :repl argument are currently :slime or :slynk.
cepl
.
This function will make and return a new ‘ssbo‘
You need only provide an element type and the lisp data to populate that type.
For example, given the following type:
(defstruct-g test
(scale :float :accessor scale)
(age :int))
You create a ssbo using this type as follows:
(make-ssbo ’(1.2 10) ’test)
You can also pass in a c-array or gpu-array and omit the optional type
specifier.
If you wish to make a ssbo from a specific element of a ‘c-array‘ or ‘gpu-array‘ please see the #’make-ssbo-from-array function
This function takes a lisp-array, ‘c-array‘ or ‘gpu-array‘ and an index.
It returns a new ‘ssbo‘ with the specified element as the data of the ssbo.
If made from a c-array or lisp-array, a fresh gpu memory is allocated to hold
the data
If made from a gpu-array the ssbo simply holds a reference to the gpu-array
and the index. No new memory is allocated. This means that if that
gpu-array is destroyed then this ssbo is in an invalid state.
This also means it is possible to do invalid things when rendering. For example say you used the ssbo as an input whilst streaming vertex data from the same array. Consult GL documentation for details on such exceptional cases.
This function allows you to make any kind of ‘texture‘ based on the arguments
provided. Whilst the signature is quite intimidating your rarely need to use
more than a few of the arguments to make a given texture.
For example:
(make-texture ’(1 2 3 4))
will give you a valid texture.
We will now go through the arguments and their behaviours:
**– :initial-contents :dimensions & :element-type –**
- with :initial-contents to nil:
In this case you need to provide dimensions and an element-type.
- with :initial-contents populated.
The initial-contents can be a (potentially nested) list, array or ‘c-array‘.
When the :initial-contents are a c-array then the dimensions and element-type
are taken from the c-array. As the data is already in foreign memory the
upload will be notable faster that from lisp-data->gpu as no type conversions
are needed
When the :initial-contents are an array then the dimension of the texture
will be the same as the array passed in. Remember OpenGL only allows up to
3 dimensions for the textures
When the :initial-contents is a flat list then each element is used as one
element in the textures ‘gpu-array‘
If the :initial-contents is a nested list then you must either:
- specify multiple dimensions and an element-type
- specify an element-type to be some struct type, then nested lists are then
used to populate the fields of the foreign structs. For an example of this
please see this example: https://github.com/cbaggers/cepl.examples/blob/master/examples/triangle.lisp#L30.
If the :element-type is not provided then CEPL will look at every element in
the initial-contents and try and find the smallest (in bytes) foreign type
which works for every element. This mean if the array is full of single-floats
then CEPL will choose :float, not :double.
Naturally this behaviour is too slow for use in performance critical
applications however it is nice for experimentation and working from the repl.
Extra element-type details:
Unlike c-array and gpu-arrays (which use foreign types for their elements)
textures have a different set of acceptable element-types. These are called
’image formats’.
If you provide a GL image-format as the :element-type CEPL will use it directly
If you provide a (foreign) lisp type then CEPL will try to find the appropriate
image-format for that type.
**– :pixel-format –**
If this optional argument is not nil, then CEPL will use the pixel format
provided when uploading the pixel data.
Usually this is not provided as CEPL can calculate a valid pixel-format to
use from the element-type.
**– :mipmap & :generate-mipmaps –**
If this is set to t then CEPL will make mipmaps for the ‘texture‘. The texture
will have (floor (log (apply #’max dimensions) 2)) levels of mipmaps
If this is set to a positive integer CEPL will check that the number of levels
is allowed for the dimensions given and make that many levels of mipmaps.
If generate-mipmaps is t CEPL will ask OpenGL to generate content for all the
mipmaps levels.
**– :layer-count –**
If this is set to a value greater than 1 then you are trying to create one of
the following:
:texture-1d-array
:texture-2d-array
:texture-cube-map-array
Which one is created depends on the dimensions provided and whether cubes is t.
**– :cubes –**
If this is t then you are trying to make a cube-map texture
**– :rectangle –**
If this is t then you are trying to make a rectangle texture.
This is different from a regular 2d texture (which can also be rectangular)
This texture only has one 2-dimensional ‘gpu-array‘. The texture cannot have
mipmapping. Texture coordinates used for these textures are not normalized.
**– :samples –**
Specify the number of samples in the texture (see the GL wiki for more details
on multisample textures)
**– :immutable –**
Set this to nil if you definitely dont want to use immutable texture storage.
See the docstring for ’texture for more details
**– :buffer-storage –**
If this is set to t you are trying to make a ‘buffer-texture‘.
If you set this to t then the ‘element-type‘ should NOT be an image-format. Use
a foreign lisp type instead. Or leave it nil if you want CEPL to take the type
from the initial-contents
See the docstring for ‘texture‘ for more details.
Wrap and existing GL Texture Object in a CEPL ‘texture‘ struct.
This function does not do ANY sanity checking on the values provided, use only
if you are 100% sure of what you are setting.
We will now go through the arguments and their behaviours:
**– :dimensions –**
It is required that you provide dimensions when calling this function.
The dimensions can be a single integer (for a 1D texture) or a list of
integers (for a multi-dimensional texture).
One differnce between make-texture and make-texture-from-id is that in this
function it is valid to pass the symbol ? in place of a dimension when it is
unknown. CEPL will not complain but will store 0 in place of the unknown dimension
which may cause issues if you try and use any function that expects to be able
to get valid size information.
**– :element-type –**
It is required that you provide an element-type when calling this function.
Unlike c-array and gpu-arrays (which use foreign types for their elements)
textures have a different set of acceptable element-types. These are called
’image formats’.
NOTES: Unlike ‘make-texture‘, ‘make-texture-from-id‘ does not attempt to
convert lisp types or pixel-formats to GLSL image-formats
**– :mipmap-levels –**
This tells CEPL the number of mipmap levels the texture has.
1 is the default.
**– :layer-count –**
If this is set to a value greater than 1 then the texture is one of
the following:
:texture-1d-array
:texture-2d-array
:texture-cube-map-array
Which one is created depends on the dimensions provided and whether cubes is t.
**– :cubes –**
If this is t then you are trying to make a cube-map texture
**– :samples –**
Specify the number of samples in the texture (see the GL wiki for more details
on multisample textures)
**– :mutable-p –**
Speicifies if the texture is using mutable storage.
See the docstring for ‘texture‘ for more details.
This function will make and return a new ‘ubo‘
You need only provide an element type and the lisp data to populate that type.
For example, given the following type:
(defstruct-g test
(scale :float :accessor scale)
(age :int))
You create a ubo using this type as follows:
(make-ubo ’(1.2 10) ’test)
You can also pass in a c-array or gpu-array and omit the optional type
specifier.
If you wish to make a ubo from a specific element of a ‘c-array‘ or ‘gpu-array‘ please see the #’make-ubo-from-array function.
This function takes a lisp-array, ‘c-array‘ or ‘gpu-array‘ and an index.
It returns a new ‘ubo‘ with the specified element as the data of the ubo.
If made from a c-array or lisp-array, a fresh gpu memory is allocated to hold
the data
If made from a gpu-array the ubo simply holds a reference to the gpu-array
and the index. No new memory is allocated. This means that if that
gpu-array is destroyed then this ubo is in an invalid state.
This also means it is possible to do invalid things when rendering. For example say you used the ubo as an input whilst streaming vertex data from the same array. Consult GL documentation for details on such exceptional cases.
This function returns a new GL VAO when given
- a list of gpu-arrays
- optionally 1 gpu-array to be used as an index
This function takes an existing OpenGL VAO and set it up to stream vertices from the given arrays.
This function returns a new ‘viewport‘ with the specified resolution and origin
When given a function and a ‘c-array‘ this function will map the function across
every element of the c-array and write the results of the function into a new
c-array with the same element-type and dimensions as the original c-array.
You may also pass in an optional foreign type that will be used as the element
type of the new array.
If, rather than making a new c-array, you wish to modify the given c-array you should use ‘map-c-into‘ instead.
When given a destination ‘c-array‘, a function and a source c-array this function will map the function across every element of the source c-array and write the results of the function destrucively into the destination c-array.
This function sets the max-lod of the given ‘texture‘ or ‘sampler‘
**– LOD –**
Together with :min-lod this sampling parameter affects the mipmap image
selection.
The way these work in mipmap selection is quite complicated; the specification
goes into full detail about it.
example:
(setf (min-lod texture-or-sampler) value)
(setf (max-lod texture-or-sampler) value)
This function sets the min-lod of the given ‘texture‘ or ‘sampler‘
**– LOD –**
Together with :max-lod this sampling parameter affects the mipmap image
selection.
The way these work in mipmap selection is quite complicated; the specification
goes into full detail about it.
example:
(setf (min-lod texture-or-sampler) value)
(setf (max-lod texture-or-sampler) value)
This function takes a ‘sampler‘ or ‘texture‘ and sets the approach used when the
area of the fragment in texture space is larger than a texel.
**– The minification filter –**
The minification filter is controlled by the :texture-min-filter texture
parameter. To understand these values better, it is important to discuss what
the particular options are. Here is the full list:
:nearest :linear
:nearest-mipmap-nearest :nearest-mipmap-linear
:linear-mipmap-nearest :linear-mipmap-linear
When doing minification, you can choose to use mipmapping or not. Using
mipmapping means selecting between multiple mipmaps based on the angle and size
of the texture relative to the screen. Whether you use mipmapping or not,
you can still select between linear blending of the particular layer or nearest.
And if you do use mipmapping, you can choose to either select a single mipmap to
sample from, or you can sample the two adjacent mipmaps and linearly blend the
resulting values to get the final result.
The OpenGL minification settings for these are as follows:
Param Setting Lin within mip-level
:nearest No
:linear Yes
:nearest-mipmap-nearest No
:linear-mipmap-nearest Yes
:nearest-mipmap-linear No
:linear-mipmap-linear Yes
Param Setting Has mipmapping
:nearest No
:linear No
:nearest-mipmap-nearest Yes
:linear-mipmap-nearest Yes
:nearest-mipmap-linear Yes
:linear-mipmap-linear Yes
Param Setting Linear between mip-levels
:nearest -
:linear -
:nearest-mipmap-nearest No
:linear-mipmap-nearest No
:nearest-mipmap-linear Yes
:linear-mipmap-linear Yes
Remembering these combinations can be annoying so CEPL provides an additional
function called #’set-minify-filter see the docstring for details
examples:
(setf (minify-filter tex-or-sampler) :linear)
(setf (minify-filter tex-or-sampler) :nearest-mipmap-nearest)
(setf-minify-filter tex-or-sampler :nearest :nearest)
Takes a list of strings or symbols and returns one string
of them concatenated together. For example:
CEPL-EXAMPLES> (cepl-utils:mkstr ’jam ’ham’)
’JAMHAM’
CEPL-EXAMPLES> (cepl-utils:mkstr ’jam’ ’ham’)
’jamham’
This function, when passed a ‘blending-params‘ object, will return the name of the
equation that will be used to compute the final alpha value from the processed
‘source-alpha‘ and ‘destination-alpha‘.
The result will be one of the following:
:func-add
:func-subtract
:func-reverse-subtract
:min
:max
To see more info on this subject please see the doc-string for the blending-params struct.
This function, when passed a ‘blending-params‘ object, will return the name of the
equation that will be used to compute the final color value from the processed
‘source-rgb‘ and ‘destination-rgb‘.
The result will be one of the following:
:func-add
:func-subtract
:func-reverse-subtract
:min
:max
To see more info on this subject please see the doc-string for the blending-params struct.
This function takes a list of ‘c-array‘s and uploads all of the data to the ‘gpu-buffer‘.
Never passes
Non-interning funcall
Non-interning get value
Always returns 0
This function will return t if you are on a version of opengl that supports setting blending parameters on framebuffer ‘attachment‘s. Otherwise it returns nil
If the result is nil then you will only be able to change blend params on the
first attachment. You can however enable blending on any number of attachments
and they will inherit their params from attachment 0
For more details see ‘cepl.blending‘
This function, when given a ‘pixel-format‘ object, will attempt to find and
return the name of a GL image-format that is equivalent.
If no such type is found then nil is returned
This function, when given a ‘pixel-format‘ object, will attempt to find and
return the name of a lisp type that is equivalent.
If no such type is found then nil is returned
This function when passed a ‘pixel-format‘ will return the number of components it has. The values will be from 1 upto 4
This function returns the components of the given ‘pixel-format‘ as a keyword
possible values are:
:r
:rg
:rgb
:rgba
:stencil-only
:depth
This function returns whether values of the components belonging to the
‘pixel-format‘ are normalized.
If t then sampling the values on the gpu will gives values in the range 0s0 → 1s0
This function returns t if the the given value is a ‘pixel-format‘. Otherwise it returns nil
Some ‘pixel-format‘s are ’reversed’ meaning the component order in the data is
reversed.
This function will return t if the pixel format provided is a reversed-type
Some ‘pixel-format‘s and image-formats are ’special’ and have specifically sized
components.
This function will return a list of sizes in bits of the components.
This function returns the lisp type of a single ’element’ of the given
‘pixel-format‘.
For example:
- the element type of a :vec3 is a :float.
- the element type of a :vec2 is a :float.
- the element type of a :int8 is a :int8
type
.
This function takes a ‘c-array‘ and some subscripts and will return the ptr to the specified element of the c-array
Call this to shutdown CEPL.
As well as its own internal work, CEPL will ask the host to shut itself down.
cepl
.
This function takes a buffer and recreates the data-store for it. All data currently in the buffer will be lost.
This function takes a ‘gpu-array‘ and reallocates the buffer that is backing it.
Register a function to be called on every event.
The function must take 1 argument, which will be the event.
cepl
.
This function is a legacy item at this stage, but is still here as it feels
nice.
It calls #’initialize-cepl to make a resizable window and prints out a message in the repl.
cepl
.
This function takes a ‘texture‘ and optionally some sampling parameters and
returns a ‘sampler‘.
The sampler is an object that is passed to a pipeline so that the shaders in the gpu-functions in the pipeline can read from the gpu-arrays in the texture.
For details on what the parameters are and mean see the docstring for the
’sampler type
**– Note about GL Versions –**
Sampler Objects were introduced in GL 3.3. So for now CEPL needs at least v3.3
in future we hope to lower the requirement to 3.1 but this will take some extra
work.
**– NOTE For those with GL experience –**
You will have noticed that in CEPL your sampler is tied to one texture which is
unlike in regular GL where a sample object can be used to override the sampling
parameters of any number of textures. At first this would seem very wasteful
however CEPL does not use 1 GL Sampler Object per CEPL sampler. The ID sharing
is done based on the parameters.
This means you get the same number of sampler objects as your would normally but with the added benefit that samplers are semantically dual with buffer-streams giving greater api consistancy.
id
.
This function returns t if the supplied value is a ‘sampler‘ and nil otherwise
This function takes a ‘sampler‘ as its only argument and returns the ‘texture‘ being sampled by the sampler.
This function takes a ‘sampler‘ as its only argument and returns the kind
of sampler it is.
The result will be one of the kinds listed in cepl.samplers::+sampler-types+
Call this and pass the function that will be called when the cepl needs to make the context current
As the naming of the values for #’minify-filter are quite confusing this
function allows you to set the minify filter for the given ‘texture‘ or ‘sampler‘
based on the following:
- for-level: what sampling should be used between texels on the current
mipmap level. The value can be :linear or :nearest
- between-level: what sampling should be used between texels on different
mipmap levels. The value can be :linear or :nearest
This argument is optional.
Call this and pass the function that will be called when the cepl needs to query the window size
Call this and pass the function that will be called every time #’cepl:step-host is called
Call this and pass the function that will be called every time #’cepl:swap is called
Call this and pass the function that will be called when the cepl needs to query the window size
This function, when passed a ‘blending-params‘ object, will return the name of the
function that will be applied to the alpha value that is coming from the
pipeline and is to be combined with the value already in the ‘fbo‘.
The result will be one of the following:
:zero
:one
:src-color
:one-minus-src-color
:dst-color
:one-minus-dst-color
:src-alpha
:one-minus-src-alpha
:dst-alpha
:one-minus-dst-alpha
:constant-color
:one-minus-constant-color
:constant-alpha
:one-minus-constant-alpha
:src-alpha-saturate
:src1-color
:one-minus-src-color
:src1-alpha
:one-minus-src-alpha
To see more info on this subject please see the doc-string for the blending-params struct.
This function, when passed a ‘blending-params‘ object, will return the name of the
function that will be applied to the color value that is coming from the
pipeline and is to be combined with the value already in the ‘fbo‘.
The result will be one of the following:
:zero
:one
:src-color
:one-minus-src-color
:dst-color
:one-minus-dst-color
:src-alpha
:one-minus-src-alpha
:dst-alpha
:one-minus-dst-alpha
:constant-color
:one-minus-constant-color
:constant-alpha
:one-minus-constant-alpha
:src-alpha-saturate
:src1-color
:one-minus-src-color
:src1-alpha
:one-minus-src-alpha
To see more info on this subject please see the doc-string for the blending-params struct.
Returns the ‘gpu-array‘ that contains the data presented by this ‘SSBO‘
data
.
This function returns the type of the data that is contained in the ‘SSBO‘
This function return the id of the GL SSBO abstracted by this CEPL ‘SSBO‘.
id
.
This function returns the index into the ssbo-data where the element defined by this ‘ssbo‘ is located
This function returns t if the ‘gpu-array‘ was created by ‘make-ssbo‘ or nil if it is using data from a gpu-array passed to make-ssbo
Decrement the stored value clamping to 0
We only show the implementation for 8bit stencil here due to strong recommendations from guides to use 8bit stencils. Not an issue as this is only a stand-in function anyway
Decrement the stored value wrapping if underflows
We only show the implementation for 8bit stencil here due to strong recommendations from guides to use 8bit stencils. Not an issue as this is only a stand-in function anyway
This function returns t if the value provided is a keyword that can be found in *stencil-formats*
Increment the stored value clamping to maximum
We only show the implementation for 8bit stencil here due to strong recommendations from guides to use 8bit stencils. Not an issue as this is only a stand-in function anyway
Increment the stored value wrapping if it overflows
We only show the implementation for 8bit stencil here due to strong recommendations from guides to use 8bit stencils. Not an issue as this is only a stand-in function anyway
Invert the stored value
We only show the implementation for 8bit stencil here due to strong recommendations from guides to use 8bit stencils. Not an issue as this function only exists as documentation anyway
Invert the stored value
We only show the implementation for 8bit stencil here due to strong recommendations from guides to use 8bit stencils. Not an issue as this function only exists as documentation anyway
Call this to ask the host update its own internals.
This description is a bit nebulous as cepl doesnt impose what the host should do when this call is made; however it is usual to call #’step-host every tick of a main-loop and so often hosts will use this to do per-tick jobs like polling for input events.
cepl
.
This function returns a ‘c-array‘ which contains a subset of the array passed into
this function.
It does not copy the foreign data, instead this array points to within the data
of the original array. This means these arrays now share data (like a displaced
array in standard CL.
Due to this you have to be very careful when freeing the underlying array as
this will affect any other array sharing that data.
If you want a copy of a subseq of a c-array then use something like:
(clone-c-array (subseq-c arr 3 10))
The reason that this arguably more dangerous behaviour is default is efficiency. CEPL tries not to allocate new memory when the function is not explicitly about that.
This function returns a ‘gpu-array‘ which contains a subset of the gpu-array
passed into this function.
It does not copy the foreign data, instead this array points to within the data
of the original array. This means these arrays now share data (like a displaced
array in standard CL.
Due to this you have to be very careful when freeing the underlying array as
this will affect any other array sharing that data.
The reason that this arguably more dangerous behaviour is default is efficiency. Mofidying gpu memory in performance critical applications should be done at specific times so as not to get blocked by rendering commands. As such CEPL tries not to allocate new memory when the function is not explicitly about that.
This function returns a ‘gpu-array‘ which contains a subset of the gpu-array
passed into this function optionally allowing you to change the element-type
of the resulting gpu-array.
It does not copy the foreign data, instead this array points to within the data
of the original array. This means these arrays now share data (like a displaced
array in standard CL.
Due to this you have to be very careful when freeing the underlying array as
this will affect any other array sharing that data.
Also you have to be careful that the new element-type you choose makes sense
given the data already in the arrays. For example taking an gpu-array of :vec4
and making an gpu-array of :float will give you sensible values, however making
a gpu-array of :int will give you garbage.
Unless you have a very specific use-case then it is best to use ‘subseq-g‘
The reason that this arguably more dangerous behaviour is default is efficiency. Mofidying gpu memory in performance critical applications should be done at specific times so as not to get blocked by rendering commands. As such CEPL tries not to allocate new memory when the function is not explicitly about that.
Call this ask the host to swap the buffers of the default framebuffer.
We usually do this when we have finished drawing a given frame.
cepl
.
This takes a list of symbols (or strings) and outputs one
symbol.
If the input is symbol/s then the output is a regular symbol
If the input is string/s, then the output is
a |symbol like this|
This function allows you to access a specific ‘gpu-array‘ from the ‘texture‘.
:mipmap-level is invalid if the texture doesnt have mipmaps
:layer is invalid if the texture-type is not a 1d,2d or cube-map array-texture.
:cube-face is invalid if the texture is not a cube-map texture
Returns the resolution of the ‘gpu-array‘ at the ’base-level’ of the mipmap chain. The base level is the largest one.
This function returns t if the ‘texture‘ is a cube texture and nil otherwise
This function returns the element-type of the given ‘texture‘.
If the texture is a ‘buffer-texture‘ then the element-type will be a foreign lisp
type.
Otherwise it will be one of the image-formats
**– Element Types Details –**
Unlike ‘c-array‘ and ‘gpu-array‘s (which use foreign types for their elements)
textures have a different set of acceptable format. These are called
’image formats’.
The name may imply that these formats are only usable for image data but this
is not the case. Most of the types we are used to are there, but under unsual
names.
This would make this a ripe candidate for CEPL to clean up the naming.. but it
doesnt, why?
Well the answer to that is image-formats are damn confusing and if we change
too much of the naming it will be even more confusing when trying to google
information. Instead CEPL provides a number of functions for converting
between (foreign) lisp types and their image-format counterparts.
This function returns the id of the GL Texture Object from the CEPL ‘texture‘.
Don’t use this unless you know what you are doing on the GL side.
id
.
When called with a ‘texture‘ with one of the following texture-types:
:texture-1d-array
:texture-2d-array
:texture-cube-map-array
then this function returns the number of ’layers’ in the texture.
For all other texture types this will return 0
When called with a ‘texture‘ with mipmaps enabled this function returns the number
of ’mipmap levels’ in the texture.
For all other texture types this will return 0
When called with a ‘texture‘ this function returns t if the texture was made with
mutable texture storage and nil otherwise.
Using immutable texture storage does not mean that the data inside the texture’s
‘gpu-array‘s cannot be mutated.
Mutable texture storage allows you to redefine the ’nature’ of the data stored
in the gpu-arrays after they are created, by that we mean things like the type
of the data, the resolution of the gpu-arrays.
As it is hard to change such things without creating an ’incomplete’ texture[0]
CEPL opts to treat all textures as immutable textures.
When the OpenGL version doesnt support immutable texture storage CEPL makes uses
immutable storage, allocates all the memory at construction, and doesnt provide
abstractions over the opengl features that would modify the storage.
[0] - https://www.opengl.org/wiki/Immutable_Storage_Texture#Texture_completeness
This function returns t if the given value is a ‘texture‘, otherwise nil is returned.
glsl-symbols.functions
.
This function will return the type of the given ‘texture‘.
The possible values are:
:texture-1d
:texture-2d
:texture-3d
:texture-rectangle
:texture-buffer
:texture-cube-map
:texture-1d-array
:texture-2d-array
:texture-cube-map-array
:texture-2d-multisample
:texture-2d-multisample-array
type
.
Returns the ‘gpu-array‘ that contains the data presented by this ‘UBO‘
data
.
This function returns the type of the data that is contained in the ‘UBO‘
This function return the id of the GL UBO abstracted by this CEPL ‘UBO‘.
id
.
This function returns the index into the ubo-data where the element defined by this ‘ubo‘ is located
This function returns t if the ‘gpu-array‘ was created by ‘make-ubo‘ or nil if it is using data from a gpu-array passed to make-ubo
This function returns t if the value provided is a keyword that can be found in *valid-image-formats-for-buffer-backed-texture*
This function returns the resolution of the ‘viewport‘ as a list of integers
If you call the generic function ‘dimensions‘ with a viewport you will get
this value.
If you need this value as a vec2 use ‘viewport-resolution‘ or just the generic function ‘resolution‘
This function returns t if the two viewports have the same resolution and origin.
This function returns the origin of the ‘viewport‘.
This is the top-left corner of the rectangle within the surface that OpenGL (and thus CEPL) will draw into
This function returns the x component of the resolution of the ‘viewport‘ as a float.
This function returns the y component of the resolution of the ‘viewport‘ as a float.
This function will return t if the value given is a ‘viewport‘, otherwise it will return nil
Will return a vec4 packed with the origin and resolution. The format is as
follows:
(v! origin-x origin-y resolution-x resolution-y)
If now viewport is provided the the ‘current-viewport‘ is used.
This function returns the resolution of the ‘viewport‘ as a vec2
If you call the generic function ‘resolution‘ with a viewport you will get
this value.
If you need this value as a list use ‘viewport-dimensions‘ or just the generic function ‘dimensions‘
This function returns the x component of the resolution of the ‘viewport‘ as a float.
This function returns the y component of the resolution of the ‘viewport‘ as a float.
This walks a list tree (’form’) replacing all occurences of ’to-replace’ with ’replace-with’. This is pretty inefficent but will be fine for macros.
When given the host-specific window handle will return the size of the window
This function sets the wrap parameter of the ‘texture‘ or ‘sampler‘ given.
When setf’ing this parameter you can provide either one approach to be used
for all 3 potential dimensions of the texture, or you can provide a vector
of the 3 approaches you want to used.
**– Wrapping –**
When using normalized texture coordinates we are used to thinking about our
coordinate being between 0s0 and 1s0 and that value dictating where we are
sampling from.
However normalized texture coordinates are not limited to values between
0s0 and 1s0. They can be any floating-point number.
When a texture coordinate is not within the 0 → 1 range, some means must be
employed to decide what the color value will be.
The different approaches are as follows:
:repeat: the texture coordinate wraps around the texture. so a texture
coordinate of -0.2 becomes the equivalent of 0.8.
:mirrored-repeat: the texture coordinate wraps around like a mirror.
-0.2 becomes 0.2, -1.2 becomes 0.8, etc.
:clamp-to-edge: the texture coordinate is clamped to the 0 → 1 range.
:clamp-to-border: the texture coordinate is clamped to the 0 → 1
range, but the edge texels are blended with a
constant border color.
:mirror-clamp-to-edge: (only available with OpenGL 4.4 or
:arb-texture-mirror-clamp-to-edge) the texture
is clamped to the -1 → 1 range, but mirrors the
negative direction with the positive. Basically,
it acts as :clamp-to-edge, except that it
takes the absolute value of the texture
coordinates before clamping.
This also applies to Rectangle Textures, except that the range at which they
apply edge sampling is based on the texel width/height of the texture, not
the normalized 0 → 1 range.
This does not apply to Buffer Textures, as they must use the texelFetch sampling
functions and thus cannot sample outside of the texel range of the texture.
example:
(setf (wrap texture-or-sampler)
#(:clamp-to-edge :repeat-to-edge :clamp-to-edge))
(setf (wrap texture-or-sampler) :clamp-to-edge)
Always returns 0
This function, returns a :vec3 which is the bi-tangent of the instance.
You can alternatively use the generic function #’bi-tangent to get this value.
This function returns t if the object you pass it can be safely used from two shared contexts. As this function cannot detect which contexts you are refering to you must ensure yourself that the contexts are shared.
This function, returns a :vec4 which is the color of the instance.
You can alternatively use the generic function #’col to get this value.
gpu-array-bb
) (destination (eql :lisp)
)) ¶gpu-array-bb
) (destination (eql :c-array)
)) ¶c-array
) (destination gpu-array-bb
)) ¶array
) (destination gpu-array-bb
)) ¶list
) (destination gpu-array-bb
)) ¶gpu-array-t
) (destination gpu-array-bb
)) ¶gpu-array-bb
) (destination gpu-array-t
)) ¶gpu-array-t
) (destination (eql :gpu-array-bb)
)) ¶gpu-array-t
) (destination (eql :lisp)
)) ¶gpu-array-t
) (destination (eql :c-array)
)) ¶gpu-array-t
) (destination c-array
)) ¶array
) (destination gpu-array-t
)) ¶list
) (destination gpu-array-t
)) ¶c-array
) (destination gpu-array-t
)) ¶This function will delete a gpu-function this will mean it can no longer be used
in new pipelines.
This function will only delete one function at a time, so if your gpu-function
is overloaded then you will want to specify the function signature exactly.
See the documentation for ‘gpu-functions‘ which will lists all the signatures
for the gpu-functions with a given name.
list
) &optional error-if-missing) ¶symbol
) &optional error-if-missing) ¶null
) &optional error-if-missing) ¶Returns the list containing the dimensions of the given value
compute-space
)) ¶Returns the size in bytes taken up by a single element of the ‘c-array‘.
Returns the type of the elements in the ‘c-array‘.
gpu-array-t
)) ¶gpu-array-bb
)) ¶The function takes a CEPL object of any one of the following types.
- ‘c-array‘
- ‘gpu-buffer‘
- ‘gpu-array‘ (texture backed or buffer backed)
- ‘buffer-stream‘
- ‘texture‘
- ‘ubo‘
- ‘fbo‘
And deletes the internal GL object, frees any associated memory and blanks the
CEPL object.
’Blanking’, in this case, means the fields of the object will be set to some default.
gpu-array-t
)) ¶function
)) ¶symbol
)) ¶buffer-stream
)) ¶gpu-buffer
)) ¶base-gstruct-wrapper
)) ¶null
)) ¶When given a buffer-backed ‘gpu-array‘ this will do one of three things:
If the gpu-array is the only gpu-array in the ‘gpu-buffer‘ then the gpu-buffer is
freed and the gpu-array is blanked.
If the gpu-array shares a gpu-buffer with other gpu-arrays and they are still
live then blank this gpu-array.
If the gpu-array shared a gpu-buffer with other gpu-buffer but they have all
been freed then free the gpu-buffer and blank the gpu-array.
Blanking the gpu-array means its fields will be set to default values,
for example dimensions will be nil, the ‘texture‘ will be null etc.
The generic function ‘free‘ will call #’free-gpu-array when passed a gpu-array.
gpu-array-t
)) ¶This function will free the ‘texture‘ and all texture-memory behind the texture’s
‘gpu-array‘s.
Be sure not to use those arrays after this function has been called.
buffer-texture
)) ¶This function, when given a foreign type name returns a function that when given
a pointer reads the named type foreign from the pointer.
For example
(get-typed-from-foreign :vec3)
returns a function that when given a pointer to a :vec3 will return a lisp vec3.
(eql cepl.types.predefined:g-pntcb)
)) ¶(eql cepl.types.predefined:g-pntb)
)) ¶(eql cepl.types.predefined:g-pncb)
)) ¶(eql cepl.types.predefined:g-pnb)
)) ¶(eql cepl.types.predefined:g-pntc)
)) ¶(eql cepl.types.predefined:g-pnt)
)) ¶(eql cepl.types.predefined:g-pnc)
)) ¶(eql cepl.types.predefined:g-pt)
)) ¶(eql cepl.types.predefined:g-pc)
)) ¶(eql cepl.types.predefined:g-pn)
)) ¶(eql cepl.pipelines:elements-indirect-command)
)) ¶(eql cepl.pipelines:arrays-indirect-command)
)) ¶(eql :unsigned-short)
)) ¶(eql :unsigned-byte)
)) ¶(eql :unsigned-int)
)) ¶(eql :int8-vec4)
)) ¶(eql :int8-vec3)
)) ¶(eql :int8-vec2)
)) ¶(eql :uint8-vec4)
)) ¶(eql :uint8-vec3)
)) ¶(eql :uint8-vec2)
)) ¶(eql :mat4x4)
)) ¶(eql :mat4x3)
)) ¶(eql :mat4x2)
)) ¶(eql :mat3x4)
)) ¶(eql :mat3x3)
)) ¶(eql :mat3x2)
)) ¶(eql :mat2x4)
)) ¶(eql :mat2x3)
)) ¶(eql :mat2x2)
)) ¶(eql :mat4)
)) ¶(eql :mat3)
)) ¶(eql :mat2)
)) ¶(eql :uvec4)
)) ¶(eql :uvec3)
)) ¶(eql :uvec2)
)) ¶(eql :ivec4)
)) ¶(eql :ivec3)
)) ¶(eql :ivec2)
)) ¶(eql :half-vec4)
)) ¶(eql :half-vec3)
)) ¶(eql :half-vec2)
)) ¶(eql :vec4)
)) ¶(eql :vec3)
)) ¶(eql :vec2)
)) ¶(eql :half-float)
)) ¶(eql :double)
)) ¶(eql :float)
)) ¶(eql :uint32)
)) ¶(eql :int32)
)) ¶(eql :uint)
)) ¶(eql :int)
)) ¶(eql :ushort)
)) ¶(eql :short)
)) ¶(eql :uint8)
)) ¶(eql :int8)
)) ¶This function, when given a foreign type name returns a function that when given
a pointer and a lisp value, converts and writes the value to the foreign
location specified by the pointer pointer.
For example:
(get-typed-to-foreign :vec3)
returns a function that when given a pointer and a lisp vec3 will write the value into foreign memory.
(eql cepl.types.predefined:g-pntcb)
)) ¶(eql cepl.types.predefined:g-pntb)
)) ¶(eql cepl.types.predefined:g-pncb)
)) ¶(eql cepl.types.predefined:g-pnb)
)) ¶(eql cepl.types.predefined:g-pntc)
)) ¶(eql cepl.types.predefined:g-pnt)
)) ¶(eql cepl.types.predefined:g-pnc)
)) ¶(eql cepl.types.predefined:g-pt)
)) ¶(eql cepl.types.predefined:g-pc)
)) ¶(eql cepl.types.predefined:g-pn)
)) ¶(eql cepl.pipelines:elements-indirect-command)
)) ¶(eql cepl.pipelines:arrays-indirect-command)
)) ¶(eql :unsigned-short)
)) ¶(eql :unsigned-byte)
)) ¶(eql :unsigned-int)
)) ¶(eql :int8-vec4)
)) ¶(eql :int8-vec3)
)) ¶(eql :int8-vec2)
)) ¶(eql :uint8-vec4)
)) ¶(eql :uint8-vec3)
)) ¶(eql :uint8-vec2)
)) ¶(eql :mat4x4)
)) ¶(eql :mat4x3)
)) ¶(eql :mat4x2)
)) ¶(eql :mat3x4)
)) ¶(eql :mat3x3)
)) ¶(eql :mat3x2)
)) ¶(eql :mat2x4)
)) ¶(eql :mat2x3)
)) ¶(eql :mat2x2)
)) ¶(eql :mat4)
)) ¶(eql :mat3)
)) ¶(eql :mat2)
)) ¶(eql :uvec4)
)) ¶(eql :uvec3)
)) ¶(eql :uvec2)
)) ¶(eql :ivec4)
)) ¶(eql :ivec3)
)) ¶(eql :ivec2)
)) ¶(eql :half-vec4)
)) ¶(eql :half-vec3)
)) ¶(eql :half-vec2)
)) ¶(eql :vec4)
)) ¶(eql :vec3)
)) ¶(eql :vec2)
)) ¶(eql :half-float)
)) ¶(eql :double)
)) ¶(eql :float)
)) ¶(eql :uint32)
)) ¶(eql :int32)
)) ¶(eql :uint)
)) ¶(eql :int)
)) ¶(eql :ushort)
)) ¶(eql :short)
)) ¶(eql :uint8)
)) ¶(eql :int8)
)) ¶(eql cepl.types.predefined:g-pntcb)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pntb)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pncb)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pnb)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pntc)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pnt)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pnc)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pt)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pc)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.types.predefined:g-pn)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.pipelines:elements-indirect-command)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶(eql cepl.pipelines:arrays-indirect-command)
) &optional attrib-offset pointer-offset stride-override normalized instance-divisor) ¶Implement this method and initialize your system inside it. This is called as the first step of cepl initializing. init-flags are host specific flags that can be passed from cepl
When given an object holding a gpu resource this function will return whether
that object has been initialized.
This will be t unless the GL context has not yet been created.
gpu-array-t
)) ¶gpu-array-bb
)) ¶gpu-buffer
)) ¶This function, when given a lisp type name, will attempt to find and
return an equivalent ‘pixel-format‘.
If no such type is found then nil is returned
(eql cepl.pipelines:arrays-indirect-command)
)) ¶(eql :int8-vec4)
)) ¶(eql :int8-vec3)
)) ¶(eql :int8-vec2)
)) ¶(eql :uint8-vec4)
)) ¶(eql :uint8-vec3)
)) ¶(eql :uint8-vec2)
)) ¶(eql :mat2x2)
)) ¶(eql :mat2)
)) ¶(eql :uvec4)
)) ¶(eql :uvec3)
)) ¶(eql :uvec2)
)) ¶(eql :ivec4)
)) ¶(eql :ivec3)
)) ¶(eql :ivec2)
)) ¶(eql :half-vec4)
)) ¶(eql :half-vec3)
)) ¶(eql :half-vec2)
)) ¶(eql :vec4)
)) ¶(eql :vec3)
)) ¶(eql :vec2)
)) ¶gl-context
)) ¶automatically generated reader method
This function creates a buffer-backed ‘gpu-array‘.
Texture-backed gpu-array can only be created via #’make-texture
‘make-gpu-array‘ is very similar to ‘make-c-array‘.
It can be used in a few different ways:
- with :initial-contents to nil:
In this case you need to provide dimensions and an element-type.
- with :initial-contents populated.
The initial-contents can be a (potentially nested) list, array or ‘c-array‘.
When the :initial-contents are a ‘c-array‘ then the dimensions and element-type
are taken from the ‘c-array‘. As the data is already in foreign memory the
upload will be notable faster that from lisp-data->gpu as no type conversions
are needed
When the :initial-contents are an array then the dimension of the gpu-array
will be the same as the array passed in. CEPL currently only supports up
to 4D gpu-arrays.
When the :initial-contents is a flat list then each element is used as one
element in the gpu-array.
If the :initial-contents is a nested list then you must either:
- specify multiple dimensions and an element-type
- specify an element-type to be some struct type, then nested lists are then
used to populate the fields of the foreign structs. For an example of this
please see [this example](https://github.com/cbaggers/cepl.examples/blob/master/examples/triangle.lisp#L30).
If the :element-type is not provided then CEPL will look at every element in
the initial-contents and try and find the smallest (in bytes) foreign type
which works for every element. This mean if the array is full of single-floats
then CEPL will choose :float, not :double.
Naturally this behaviour is too slow for use in performance critical
applications however it is nice for experimentation and working from the repl.
If you need what would be called a displaced array in lisp then please see the
‘subseq-g‘ function.
Access style is optional but if you are comfortable with
opengl, and know what type of usage pattern this array will
have, you can set this to any of the following:
The access-style argument is a hint to OpenGL on how you intend to use
the array. It is optional whether your gpu manufacturer’s implementation of GL
takes any notice of this option. When they do take notice of it, it will to
optimize access to the underlying data.
There are also no repercussions for accessing the data in a way contrary to the
declared access-style (other than potential performance costs).
:stream-draw :static-draw :dynamic-draw
:stream-read :static-read :dynamic-read
:stream-copy :static-copy :dynamic-copy
list
) (list-to-match list
) &optional fill-value error-on-shorten-p) ¶gl-context
)) ¶automatically generated reader method
This function, returns a :vec3 which is the normal of the instance.
You can alternatively use the generic function #’norm to get this value.
Returns the origin of the given value as a vec
Returns the pointer to the start of the foreign data that makes up the array
base-gstruct-wrapper
)) ¶elements-indirect-command
) data) ¶arrays-indirect-command
) data) ¶This function, returns a :vec3 which is the position of the instance.
You can alternatively use the generic function #’pos to get this value.
gpu-array-bb
) &optional size-in-bytes offset) ¶This function takes a CEPL object containing foreign or gpu data as pulls the data into lisp performing any data conversions that are required on the way.
CEPL types that can be pulled from are:
- ‘c-array‘
- ‘gpu-array‘ (both texture-backed and buffer-backed)
- ‘texture‘
- ‘ubo‘
- Any instance of a type defined using ‘defstruct-g‘
gpu-array-bb
)) ¶gpu-array-t
)) ¶elements-indirect-command
)) ¶arrays-indirect-command
)) ¶function
)) ¶symbol
)) ¶list
)) ¶This function is a varient of ‘pull-g‘ which, rather than pulling the gpu or
foreign data to lisp, will instead pull it 1 level closer to lisp.
What is meant by that is that, if the data is in foreign memory then it will be
pulled to lisp data (just like ‘pull-g‘). However if you call ‘pull1-g‘ on data
stored on the gpu, then the data will be pulled to foreign memory instead.
To clarify:
(pull1-g c-array) -> lisp list
(pull1-g gpu-array) -> c-array
You can use pull1-g on the following CEPL types.
- ‘c-array‘
- ‘gpu-array‘ (both texture-backed and buffer-backed)
- ‘texture‘
- ‘ubo‘
- Any instance of a type defined using ‘defstruct-g‘
gpu-array-bb
)) ¶gpu-array-t
)) ¶elements-indirect-command
)) ¶arrays-indirect-command
)) ¶function
)) ¶list
)) ¶symbol
)) ¶This function takes a CEPL object as a desination and some data to push to the
desination.
It will then upload that data to the destination doing any data conversions
that are required on the way.
CEPL types supported as destinations are:
- ‘c-array‘
- ‘gpu-array‘ (both texture-backed and buffer-backed)
- ‘texture‘
- ‘ubo‘
- Any instance of a type defined using ‘defstruct-g‘
c-array
) (destination gpu-array-bb
)) ¶list
) (destination gpu-array-bb
)) ¶array
) (destination gpu-array-t
)) ¶list
) (destination gpu-array-t
)) ¶c-array
) (destination gpu-array-t
)) ¶list
) (destination elements-indirect-command
)) ¶list
) (destination arrays-indirect-command
)) ¶Implement this method and return a list containing:
- gl-context as the first element
- window as the second element
Returns the resolution of the given value as a vec*
Implement this with code to shutdown the host. This will be called when cepl is shutdown
(eql cepl.types.predefined:g-pntcb)
)) ¶(eql cepl.types.predefined:g-pntb)
)) ¶(eql cepl.types.predefined:g-pncb)
)) ¶(eql cepl.types.predefined:g-pnb)
)) ¶(eql cepl.types.predefined:g-pntc)
)) ¶(eql cepl.types.predefined:g-pnt)
)) ¶(eql cepl.types.predefined:g-pnc)
)) ¶(eql cepl.types.predefined:g-pt)
)) ¶(eql cepl.types.predefined:g-pc)
)) ¶(eql cepl.types.predefined:g-pn)
)) ¶(eql cepl.pipelines:elements-indirect-command)
)) ¶(eql cepl.pipelines:arrays-indirect-command)
)) ¶This function, returns a :vec3 which is the tangent of the instance.
You can alternatively use the generic function #’tangent to get this value.
This function, returns a :vec2 which is the texture of the instance.
You can alternatively use the generic function #’tex to get this value.
cepl-context
)) ¶gl-context
)) ¶automatically generated reader method
This is a placeholder generic function for future apis.
Feel free to implement this in your own programs when yo want to get a ‘viewport‘
from some container
cepl.types.predefined.g-pncb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pnb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pc.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pnc.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pnt.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pntcb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pntb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pntc.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pn.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pt.cffi-ct-type
)) ¶cffi
.
cepl.pipelines.elements-indirect-command.cffi-ct-type
)) ¶cffi
.
cepl.pipelines.arrays-indirect-command.cffi-ct-type
)) ¶cffi
.
gpu-lambda-state
) &key) ¶compile-context
) &optional environment) ¶gpu-func-spec
) &optional environment) ¶cepl-struct-definition
) &optional environment) ¶gl-struct-slot
) &optional environment) ¶func-key
)) ¶automatically generated reader method
varjo.internals
.
name
.
arrays-indirect-command
) stream) ¶elements-indirect-command
) stream) ¶cepl-context
) stream) ¶gpu-array-t
) stream) ¶buffer-texture
) stream) ¶gpu-buffer
) stream) ¶buffer-stream
) stream) ¶transform-feedback-stream
) stream) ¶empty-fbo-params
) stream) ¶render-buffer
) stream) ¶stencil-params
) stream) ¶cepl.types.predefined.g-pncb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pnb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pc.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pnc.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pnt.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pntcb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pntb.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pntc.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pn.cffi-ct-type
)) ¶cffi
.
cepl.types.predefined.g-pt.cffi-ct-type
)) ¶cffi
.
cepl.pipelines.elements-indirect-command.cffi-ct-type
)) ¶cffi
.
cepl.pipelines.arrays-indirect-command.cffi-ct-type
)) ¶cffi
.
v_elements-indirect-command
)) ¶varjo.internals
.
v_arrays-indirect-command
)) ¶varjo.internals
.
v_elements-indirect-command
)) ¶automatically generated reader method
varjo.internals
.
v_arrays-indirect-command
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnt
)) ¶automatically generated reader method
varjo.internals
.
v_g-pncb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntc
)) ¶automatically generated reader method
varjo.internals
.
v_g-pt
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntcb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pc
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pn
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnc
)) ¶automatically generated reader method
varjo.internals
.
v_elements-indirect-command
)) ¶automatically generated reader method
varjo.internals
.
v_arrays-indirect-command
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnt
)) ¶automatically generated reader method
varjo.internals
.
v_g-pncb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntc
)) ¶automatically generated reader method
varjo.internals
.
v_g-pt
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntcb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pc
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pn
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnc
)) ¶automatically generated reader method
varjo.internals
.
gl-struct-slot
)) ¶varjo.internals
.
error
.
common-lisp
.
:array
error
.
common-lisp
.
:type
error
.
:invalid-arg
error
.
:type-name
error
.
error
.
:type-name
error
.
error
.
:layouts
error
.
:data
error
.
:form
error
.
common-lisp
.
:type
error
.
varjo.internals
.
:name
error
.
common-lisp
.
:space
error
.
:target
error
.
varjo.internals
.
:name
error
.
:glsl-body
error
.
:issue
error
.
:type-name
error
.
:type-name
error
.
:layout
error
.
error
.
error
.
:args
error
.
:args
error
.
varjo.internals
.
:context
error
.
varjo.internals
.
:context
error
.
:args
error
.
:decl
error
.
:layout
error
.
:layout
error
.
varjo.internals
.
:name
:unknown-key-arguments
:invalid-syntax
:constant-names
:incorrectly-typed-args
error
.
:buffer-storage
:cubes
:dimensions
:layer-count
:mipmap
:multisample
:rectangle
error
.
:args
error
.
:kind
error
.
:layout
error
.
:type-name
error
.
:args
error
.
error
.
common-lisp
.
:max
error
.
error
.
error
.
:stages
error
.
:groups
error
.
:thing
error
.
error
.
:partial-stages
error
.
varjo.internals
.
:name
error
.
:type-name
error
.
:pixel-format
error
.
warning
.
:asset-name
error
.
:query
error
.
:query
error
.
:query
error
.
:layout
error
.
:form
error
.
:pipeline-name
error
.
varjo.internals
.
:name
error
.
:designator
error
.
error
.
error
.
:arg-names
error
.
:designator-choice-pairs
error
.
:dimensions
warning
.
error
.
:stage
structure-object
.
common-lisp
.
(or null %cepl.types:gpu-array-t %cepl.types:render-buffer)
boolean
(or null %cepl.types:blending-params)
boolean
(or null %cepl.types:viewport)
Blending Parameters dictate how a color is written into an ‘FBO‘’s attachment if
there is already a color there.
Blending Parameters (or ‘blending-params‘) can be applied in CEPL in 3 places:
- On an FBO:
This sets the rules for all attachments in the FBO
- On an FBO Attachment:
This overrides the rules set on the FBO but only for the one attachment.
This is only supported on some versions of OpenGL.
- On a blending-params object:
This object can then be applied using with-blending
(see with-blending’s docstring for more info)
The interaction between the options in the blending-params is fairly complex
so whilst we seek to give an introduction here, some cases will be best covered
in other documentation.
**– The Parameters –**
There are 3 pairs of parameters that work together to tell GL how to compute
the final color.
In all cases below ’source’ means the color coming from the pipeline that needs
to be written into the FBO, and ’destination’ means the color already in the FBO
Conceptually what is happening is that ‘source-rgb‘, ‘source-alpha‘, ‘destination-rgb‘
and ‘destination-alpha‘ all name functions that will be called on their respective
values. This will result in new source-rgb, source-alpha, destinations-rgb and
destination-alpha values.
Those new values are then given to the ‘mode-rgb‘ and ‘mode-alpha‘ functions which
compute the final color.
So in pseudo-code it would look this this:
(defun compute-final-color (blend-params src-rgb src-alpha
dest-rgb dest-alpha)
(let ((new-src-rgb
(funcall (blend-params-source-rgb blend-params)
src-rgb
dest-rgb))
(new-dest-rgb
(funcall (blend-params-destination-rgb blend-params)
src-rgb
dest-rgb))
(new-src-alpha
(funcall (blend-params-source-alpha blend-params)
src-alpha
dest-alpha))
(new-dest-alpha
(funcall (blend-params-destination-alpha blend-params)
src-alpha
dest-alpha)))
;; compute final colors
(values (funcall (blend-params-mode-rgb blend-params)
new-src-rgb
new-dest-rgb)
(funcall (blend-params-mode-alpha blend-params)
new-src-alpha
new-dest-alpha))))
**– :source-rgb, :source-alpha, :destination-rgb & :destination-alpha –**
This is the list of operations and what they do to the *-rgb or *alpha values
given.
Parameter | RGB Factor | Alpha Factor
————————————————————————–
:zero | (v! 0 0 0) | 0
:one | (v! 1 1 1) | 1
:src-color | (v! rs0 gs0 bs0) | as0
:one-minus-src-color | (- (v! 1 1 1) (v! rs0 gs0 bs0)) | 1 - as0
:dst-color | (v! rd gd bd) | ad
:one-minus-dst-color | (- (v! 1 1 1) (v! rd gd bd)) | 1 - ad
:src-alpha | (v! as0 as0 as0) | as0
:one-minus-src-alpha | (- (v! 1 1 1) (v! as0 as0 as0)) | 1 - as0
:dst-alpha | (v! ad ad ad) | ad
:one-minus-dst-alpha | (- (v! 1 1 1) (v! ad ad ad)) | ad
:constant-color | (v! rc gc bc) | ac
:one-minus-constant-color | (- (v! 1 1 1) (v! rc gc bc)) | 1 - ac
:constant-alpha | (v! ac ac ac) | ac
:one-minus-constant-alpha | (- (v! 1 1 1) (v! ac ac ac)) | 1 - ac
:src-alpha-saturate | (v! i i i) | 1
:src1-color | (v! rs1 gs1 bs1) | as1
:one-minus-src1-color | (- (v! 1 1 1) (v! rs1 gs1 bs1)) | 1 - as1
:src1-alpha | (v! as1 as1 as1) | as1
:one-minus-src1-alpha | (- (v! 1 1 1) (v! as1 as1 as1)) | 1 - as1
**– :mode-rgb & :mode-alpha –**
As mentioned above, to compute the final color two equations are used:
one for the RGB portion of the color, and one for the alpha of the color.
This is useful if you want treat rgb and alpha differently when producing the
end result.
The equations available are:
:func-add - The source and destination colors are added to each other.
O = sS + dD. The s and d are blending parameters that are
multiplied into each of S and D before the addition.
:func-subtract - Subtracts the destination from the source. O = sS - dD.
The source and dest are again multiplied by blending
parameters.
:func-reverse-subtract - Subtracts the source from the destination.
O = sD - dS. The source and dest are multiplied by
blending parameters.
:min - The output color is the component-wise minimum value of the source
and dest colors. So performing :min in the RGB equation means that
Or = min(Sr, Dr), Og = min(Sg, Dg), and so forth.
The parameters s and d are ignored for this equation.
:max - The output color is the component-wise maximum value of the source and
dest colors. The parameters s and d are ignored for this equation.
**– Precision –**
Despite the apparent precision of the above equations, blending arithmetic is
not exactly specified, because blending operates with imprecise integer color
values.
However, a blend factor that should be equal to 1 is guaranteed not to modify
its multiplicand, and a blend factor equal to 0 reduces its multiplicand to 0.
For example, when:
- srcRGB is GL_SRC_ALPHA
- dstRGB is GL_ONE_MINUS_SRC_ALPHA,
- As0 is equal to 1
the equations reduce to simple replacement:
> todo
structure-object
.
keyword
:func-add
keyword
:func-add
keyword
:src-alpha
keyword
:src-alpha
keyword
:one-minus-src-alpha
keyword
:one-minus-src-alpha
A buffer-stream is a structure that represents stream of gpu-data composed from
gpu-array and/or gpu-buffers.
To render in CEPL we map a buffer-stream over a gpu-pipeline. The buffer-stream
contains data (usually geometry) that is passed to the vertex-shader.
A buffer-stream composes various sources of gpu-data together. So if, for example,
the vertex shader took 3 arguments of types :vec2 :vec3 :float. Then you could
make a stream that composes 3 gpu-arrays with element-types :vec2 :vec3 :float
and map this over the pipeline.
Naturally, as we are talking about buffer-stream, only buffer-backed gpu-arrays
can be composed with buffer-streams.
Info for people used to OpenGL:
A buffer-stream is basically a VAO with some extra metadata such as the ’range’
of data to draw the ’style’ of drawing & the ’primitive’ the data represents .
structure-object
.
%cepl.types:gl-id
0
(unsigned-byte 64)
0
(unsigned-byte 64)
0
(unsigned-byte 32)
0
common-lisp
.
(unsigned-byte 64)
1
%cepl.types:gl-enum-value
0
(unsigned-byte 8)
0
list
symbol
(unsigned-byte 8)
0
(unsigned-byte 32)
0
(unsigned-byte 8)
0
boolean
‘Buffer-texture‘s are a special kind of ‘texture‘ where the data resides, not in
texture memory, but in buffer memory.
This means that when you call texref on this texture you will receive a
buffer-backed texture instead of the usual texture-backed ones.
buffer-textures are created by calling ‘make-texture‘ with the :buffer key
argument set to t.
Buffer textures have limitations over regular textures:
- cannot be mipmapped
- can only only have one ‘gpu-array‘
- that gpu-array must be one dimensional
- can only be accessed in shaders with #’texel-fetch
- can have a more limited number of valid element-types[0] to choose from
see *valid-image-formats-for-buffer-backed-texture* for details
[0] OpenGL calls the element-types of textures ’image-formats’ or sometimes ’internal-formats’. Even though the name implies they are only useful for image data we keep the name as the subject of image-formats is complicated enough without us adding more things to think about
‘C-ARRAY‘ is a structure that represents an array in foreign memory.
CEPL keeps not only the pointer to the foreign data in this structure but also metadata that makes moving this data to (and from) the gpu or lisp much easier.
structure-object
.
cffi-sys:foreign-pointer
(error "cepl: c-array must be created with a pointer")
list
(error "cepl: c-array must be created with dimensions")
%cepl.types:c-array-index
(error "cepl: c-array must be created with total-size")
common-lisp
.
%cepl.types:c-array-index
(error "cepl: c-array must be created with byte-size")
symbol
(error "cepl: c-array must be created with an element-type")
(simple-array %cepl.types:c-array-index (4))
(error "cepl (bug): c-array created without internal sizes")
(integer 1 8)
(error "cepl: c-array must be created with a row-alignment")
boolean
(or null %cepl.types:pixel-format)
(function (cffi-sys:foreign-pointer) t)
(error "cepl: c-array must be created with a from-foreign function")
(function (cffi-sys:foreign-pointer t) t)
(error "cepl: c-array must be created with a to-foreign function")
function
(function cffi-sys:foreign-free)
structure-object
.
cepl.context:context-id
(error "context missing an id")
(or null cepl.context:gl-context)
single-float
0.0
(or null bordeaux-threads:thread)
list
(array cepl.context:cepl-context (*))
(error "context must be initialized via #'make-context")
list
(error "context must be initialized via #'make-context")
%cepl.types:gl-id
%cepl.types:+unknown-gl-id+
(or null %cepl.types:transform-feedback-stream)
%cepl.types:vao-id
%cepl.types:+unknown-gl-id+
(or null %cepl.types:viewport)
(or null %cepl.types:viewport)
(simple-array (or null %cepl.types:viewport) (32))
(make-array 32 :element-type (quote (or null %cepl.types:viewport)) :initial-element nil)
(or null %cepl.types:fbo)
(or null %cepl.types:fbo)
(or null %cepl.types:fbo)
cffi-sys:foreign-pointer
(cffi-sys:null-pointer)
%cepl.types:c-array-index
0
(or null %cepl.types:stencil-params)
(or null %cepl.types:stencil-params)
%cepl.types:stencil-mask
255
%cepl.types:stencil-mask
255
(or null %cepl.types:blending-params)
(simple-array %cepl.types:fbo (*))
(make-array 0 :element-type (quote %cepl.types:fbo) :initial-element %cepl.types:+null-fbo+)
(simple-array (or %cepl.types:gpu-buffer null) (12))
(make-array 12 :element-type (quote (or %cepl.types:gpu-buffer null)) :initial-element nil)
(simple-array %cepl.types:gpu-buffer (*))
(make-array 10 :element-type (quote %cepl.types:gpu-buffer) :initial-element %cepl.types:+null-gpu-buffer+)
(simple-array %cepl.types:gl-id (*))
(make-array 0 :element-type (quote %cepl.types:gl-id) :initial-element %cepl.types:+null-gl-id+)
(simple-array (unsigned-byte 32) (*))
(make-array 0 :element-type (quote (unsigned-byte 32)) :initial-element 0)
(simple-array %cepl.types:gl-id (*))
(make-array 0 :element-type (quote %cepl.types:gl-id) :initial-element %cepl.types:+null-gl-id+)
(simple-array (unsigned-byte 32) (*))
(make-array 0 :element-type (quote (unsigned-byte 32)) :initial-element 0)
(simple-array %cepl.types:gl-id (*))
(make-array 0 :element-type (quote %cepl.types:gl-id) :initial-element %cepl.types:+null-gl-id+)
%cepl-context-array-of-transform-feedback-bindings-buffer-ids
.
(setf %cepl-context-array-of-transform-feedback-bindings-buffer-ids)
.
(simple-array (or null %cepl.types:sampler) (*))
(make-array 0 :element-type (quote (or null %cepl.types:sampler)) :initial-element nil)
(simple-array (or null %cepl.types:gpu-query) (7))
(make-array 7 :element-type (quote (or null %cepl.types:gpu-query)) :initial-element nil)
(simple-array glsl-symbols.functions:texture (*))
(make-array 0 :element-type (quote glsl-symbols.functions:texture) :initial-element %cepl.types:+null-texture+)
(or symbol function)
:unknown
boolean
(simple-array (simple-array boolean (4)) (*))
(make-array 0 :element-type (quote (simple-array boolean (4))))
glsl-symbols.types:vec2
(glsl-symbols.types:vec2 0.0 1.0)
boolean
(or symbol function)
:unknown
symbol
:unknown
glsl-symbols.types:vec4
(glsl-symbols.types:vec4 0.0 0.0 0.0 0.0)
(integer 1 8)
4
(integer 1 8)
4
(unsigned-byte 16)
0
%cepl.types:c-array-index
1
In the ‘lambda-list‘ for a ‘gpu-function‘, glsl-stage or gpu lambda you can
include the ‘&context‘ symbol which indicates that the remaining forms in the
lambda-list are information about the context for the gpu-function to be
compiled in.
In pipelines (either defiend by ‘defpipeline-g‘ or ‘pipeline-g‘) there is a
context parameter which is a list of forms which represent information about
the context for the pipeline to be compiled in.
### The Data
The ‘compile-context‘ holds a few pieces of information:
- GLSL Versions
- in the case of ‘gpu-function‘s and glsl stages this is used to specify what
GLSL versions this is valid for.
- in the case of pipelines this is used to specify what version of GLSL will
be used to compile this pipeline.
- Primitive
- in the case of gpu-functions and glsl-stages this is used to specify what
primitive is valid. This can be used to ensure that a specific
‘gpu-function‘ or glsl-stage that works on ‘:lines‘ is never used in a
‘pipeline‘ processing ‘:triangles‘.
- in the case of pipelines this is used to specify what primitive this
pipeline takes. Any ‘buffer-stream‘ passed to this pipeline will be checked
to ensure it contains the correct primitive. To specify this please refer
to the :primitive argument in ‘make-buffer-stream‘ or the
‘buffer-stream-primitive‘ function.
- Stage Restrictive
- Not valid for pipelines. This lets the you declare what stage the
gpu-function or glsl stage is valid for.
- Static
- For all targets this tells CEPL that the function, glsl stage or
pipeline is never going to be modified again. This allows CEPL to statically
define some types and also elide the code that would usually cause
recompilation when a gpu-function this is used by this
pipeline/stage/function is recompiled.
Most compile-context information is optional and the following defaults are used
if the data is not provided:
- GLSL Versions
- gpu-function/glsl-stage: When checking for errors CEPL will allow
functions/types/etc from any glsl version to be used.
- pipeline: CEPL will look at the GL version of the context to determine the
most recent version of GLSL that it can used.
- Primitive
- gpu-function/glsl-stage: By default there is no restriction applied
- pipeline: By default :triangles are assumed
- Stage
- pipelines/gpu-functions: Always NIL by default
- glsl-stages: Mandatory
- Static
- Always NIL by default
### How it is specified
The context designations are:
Static:
The symbol :static can appear at most once in the context list
Versions:
0 or more of the following can appear in the context list
- :140
- :150
- :330
- :400
- :410
- :420
- :430
- :440
- :450
- :460
Stage:
At most 1 of the following:
- :vertex
- :tessellation-control
- :tessellation-evaluation
- :geometry
- :fragment
- :compute
Primitive:
At most 1 of the following can appear in the context list
- :dynamic
- :points
- :lines
- :iso-lines
- :line-loop
- :line-strip
- :lines-adjacency
- :line-strip-adjacency
- :triangles
- :triangle-fan
- :triangle-strip
- :triangles-adjacency
- :triangle-strip-adjacency
- (:patch <patch length>)
Note: :dynamic is special. It means that the pipeline will take the primitive kind from the buffer-stream being mapped over. This won’t work for with pipelines with geometry or tessellation stages, but it otherwise can be useful.
### Example
(defpipeline-g draw-sphere ((:patch 3) :440 :static)
:vertex (sphere-vert g-pnt)
:tessellation-control (sphere-tess-con (:vec3 3))
:tessellation-evaluation (sphere-tess-eval (:vec3 3))
:geometry (sphere-geom (:vec3 3) (:vec3 3))
:fragment (sphere-frag :vec3 :vec3 :vec3))
This pipeline takes 3 component patches, requires at least GLSL 440 and has
declared that it will not be recompiled (and as such will not take part in
live recompilation).
(defun-g saturate ((val :dvec4) &context :410 :420 :430 :440 :450 :460)
(clamp val 0d0 1d0))
This gpu-function is restricted to only work on version of GLSL between
410 & 460
(def-glsl-stage frag-glsl (("color_in" :vec4) &context :330 :fragment)
"void main() {
color_out = v_in.color_in;
}"
(("color_out" :vec4)))
This glsl-stage has stated it is to be used as a fragment stage as it only valid for GLSL version 330.
structure-object
.
(error "bug: context without primitive")
(error "bug: context without versions")
(error "bug: context without stage")
(error "bug: context without 'static' boolean")
structure-object
.
(or null %cepl.types:fbo)
list
%cepl.types:viewport
(%cepl.types:%make-viewport)
unsigned-byte
0
unsigned-byte
0
boolean
A framebuffer object (‘FBO‘) is a structure that can be rendered into.
When a FBO is rendered into the data from the pipeline is written into one or
more of the ‘attachment‘s of the FBO
An FBO attachment is a slot where a texture-backed ‘gpu-array‘ can be attached.
When the gpu-array is attached the data from a pipeline rendering into the fbo
is written into that gpu-array.
This is the heart of how multi-pass rendering is done in OpenGL. One pipeline writes data into ‘texture‘s that are then used as inputs to another pipeline[0].
A FBO can have:
- 0 or more ’color attachments’
- 0 or 1 ’depth attachment’
- 0 or 1 ’stencil attachment’
- 0 or 1 ’depth-stencil attachment’
Let’s look at these in more detail:
**– Color Attachments –**
Color attachments can only contain gpu-arrays whose element-type can be found in
the *color-renderable-formats* list.
Note that while OpenGL terminology mentions ’color’ and ’image’ a lot you are
not limitted to only using textures or fbos for pictures. It is perfectly
valid (and incredibly useful) to return data meaning all kinds of things other
than colors.
**– Depth Attachments –**
The depth attachment (when used) can only contain a gpu-array whos element-type
can be found in *depth-formats*
*Usage Tip:* Even if you don’t plan on reading from this depth_attachment, any
fbo that will be rendered to should have a depth attachment.
**– Stencil Attachments (NOT SUPPORTED IN CURRENT CEPL VERSION) –**
The stencil attachment (when used) can only contain a gpu-array whos
element-type can be found in *stencil-formats*
**– Depth-Stencil Attachments (NOT SUPPORTED IN CURRENT CEPL VERSION) –**
The depth-stencil attachment (when used) can only contain a gpu-array whos
element-type can be found in *depth-stencil-formats*
This attachment is shorthand for ’both depth and stencil’. The gpu-array
attached here becomes both the depth and stencil attachment.
**– Choosing which attachment to render into –**
Making these choices is done with the ‘with-fbo-bound‘ macro. See its docstring
for further details
[0] WARNING:
It is possible to bind a texture to an FBO, bind that same texture to a shader, and then try to sample from it at the same time. You will get undefined results.
This means it may do what you want, the sampler may get old data, the sampler
may get half old and half new data, or it may get garbage data. Any of these are
possible outcomes.
Do Not Do This!
structure-object
.
%cepl.types:gl-id
0
(or null %cepl.types:empty-fbo-params)
%cepl.types:c-array-index
0
(simple-array %cepl.types:att (*))
(make-array 0 :element-type (quote %cepl.types:att) :initial-element (symbol-value (quote %cepl.types::+null-att+)))
%cepl.types:att
(%cepl.types:make-att)
%cepl.types:att
(%cepl.types:make-att)
(error "draw-buffer array must be provided when initializing an fbo")
%cepl.types::clear-buffer-mask
(cffi:foreign-bitfield-value (quote cl-opengl-bindings:clearbuffermask) (quote (:color-buffer-bit)))
boolean
(unsigned-byte 8)
0
%cepl.types:blending-params
(%cepl.types:make-blending-params :mode-rgb :func-add :mode-alpha :func-add :source-rgb :one :source-alpha :one :destination-rgb :zero :destination-alpha :zero)
g-pc is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos color: of type vec4 with an accessor method: col
(setf col)
.
col
.
populate
.
(setf pos)
.
pos
.
print-object
.
pull-g
.
pull1-g
.
push-g
.
g-pn is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm
(setf norm)
.
norm
.
populate
.
(setf pos)
.
pos
.
print-object
.
pull-g
.
pull1-g
.
push-g
.
g-pnb is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm tangent: of type vec3 with an accessor method: tangent bi-tangent: of type vec3 with an accessor method: bi-tangent
g-pnc is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm color: of type vec4 with an accessor method: col
(setf col)
.
col
.
(setf norm)
.
norm
.
populate
.
(setf pos)
.
pos
.
print-object
.
pull-g
.
pull1-g
.
push-g
.
g-pncb is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm tangent: of type vec3 with an accessor method: tangent bi-tangent: of type vec3 with an accessor method: bi-tangent color: of type vec4 with an accessor method: col
g-pnt is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm texture: of type vec2 with an accessor method: tex
(setf norm)
.
norm
.
populate
.
(setf pos)
.
pos
.
print-object
.
pull-g
.
pull1-g
.
push-g
.
(setf tex)
.
tex
.
g-pntb is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm tangent: of type vec3 with an accessor method: tangent bi-tangent: of type vec3 with an accessor method: bi-tangent texture: of type vec2 with an accessor method: tex
g-pntc is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm texture: of type vec2 with an accessor method: tex color: of type vec4 with an accessor method: col
(setf col)
.
col
.
(setf norm)
.
norm
.
populate
.
(setf pos)
.
pos
.
print-object
.
pull-g
.
pull1-g
.
push-g
.
(setf tex)
.
tex
.
g-pntcb is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos normal: of type vec3 with an accessor method: norm tangent: of type vec3 with an accessor method: tangent bi-tangent: of type vec3 with an accessor method: bi-tangent texture: of type vec2 with an accessor method: tex color: of type vec4 with an accessor method: col
g-pt is a CEPL gpu struct with the following slots:
position: of type vec3 with an accessor method: pos texture: of type vec2 with an accessor method: tex
populate
.
(setf pos)
.
pos
.
print-object
.
pull-g
.
pull1-g
.
push-g
.
(setf tex)
.
tex
.
‘GPU-ARRAY‘ is a structure that represents an array in gpu-memory.
Depending on how the array was created it is said that the gpu-array is either
’buffer-backed’ or ’texture-backed’.
- buffer-backed: Means it was created with ‘make-gpu-array‘ or ‘make-gpu-arrays‘
The data is stored in a gpu-buffer.
- texture-backed: Means it was created along with a ‘texture‘. ‘Texture‘s are
structures that contain some number of gpu-arrays.
The data is stored in ‘texture‘ memory.
See ‘texture‘ for more details.
Both have different use cases and allow different element types, however they
are both an ordered block of typed data. They can have multiple dimensions and
you can ‘push-g‘ and ‘pull-g‘ data to and from them.
Note for folks who are used to OpenGL:
texture-backed gpu-arrays are what opengl would normally call ’images’. This is
a pretty terrible name for them as it implies they only can hold image data, or
that they are 2d only. In fact ’images’ can have 1 to 3 dimensions, can have
elements that are single bytes, floats, vectors of either or a large number of
other types.
’image’ belies this nature and so CEPL chooses ’array’
This also matches how the GLWiki chooses to explain them:
> an image is defined as a single array of pixels of a certain
> dimensionality (1D, 2D, or 3D), with a particular size, and a specific format.
structure-object
.
list
%cepl.types:gpu-buffer
(error "")
symbol
:static-draw
symbol
common-lisp
.
%cepl.types::gbuf-byte-size
0
%cepl.types::elem-byte-size
0
%cepl.types::gbuf-byte-size
0
(or null %cepl.types:pixel-format)
(integer 1 8)
1
copy-g
.
copy-g
.
copy-g
.
copy-g
.
copy-g
.
copy-g
.
copy-g
.
copy-g
.
copy-g
.
element-type
.
free
.
free-gpu-array
.
initialized-p
.
print-object
.
pull-g
.
pull1-g
.
push-g
.
push-g
.
push-g
.
resolution
.
glsl-symbols.functions
.
glsl-symbols.functions:texture
(error "")
symbol
(error "")
(unsigned-byte 16)
0
(unsigned-byte 16)
0
(integer 0 5)
0
symbol
‘gpu-buffer‘ is a struct that abstracts a OpenGL ’Buffer Object’
Along with the the ID of the GL Object itself it stores the unformatted data
as an array of ‘gpu-array‘s.
Every ‘gpu-array‘ in the buffer will have an element-type of :uint8, even if this
buffer was created for a ‘gpu-array‘ with a different element-type.
For example:
(make-gpu-array ’(.1 .2 .3 .4))
will make a ‘gpu-array‘ of 4 floats. However the buffer backing this ‘gpu-array‘
will contain a single array with element-type :uint8 and a length of 16.
It is not expected that users will be using ‘gpu-buffer‘s directly. Instead they are ususal interacted with via CEPL’s ‘gpu-array‘ and ubo features.
structure-object
.
%cepl.types:gl-id
(%cepl.types::gen-query-id)
This slot is read-only.
(signed-byte 32)
0
This slot is read-only.
(integer 0 7)
7
This slot is read-only.
‘pixel-format‘s exist to aid the handling and conversion of types in CEPL.
OpenGL does not make it easy to understand the types involved with textures.
First there is the name of the type you would use in lisp (or C)
Then there is the image-format (sometimes called internal-format) which
specifies the format on the GPU
Then there are the types and formats that must be specified when uploading or
downloading data to/from a texture (or rather a texture-backed gpu-array).
CEPL’s pixel-fromat pulls together enough metadata that conversions to and from
these various representations is easy.
Technically you shouldnt need to use this directly as it will be handled by CEPL
however if you ever have to deal with the formats directly, this type can be a
boon.
It doesnt cover every combination yet, but will in time. Anything missing is
considered a bug, so please report it on Github so it can be added to the todo
list.
structure-object
.
symbol
(error "")
common-lisp
.
symbol
(error "")
glsl-symbols.functions
.
boolean
t
list
boolean
(unsigned-byte 8)
0
structure-object
.
%cepl.types:gl-id
0
symbol
(error "bug")
glsl-symbols.types:vec2
(error "bug: render-buffer resolution not provided")
boolean
As ‘sampler‘ is a structure which we pass to the a gpu-pipeline to specify how the
pipeline should read from a particular ‘texture‘ (also known as sampling the
texture).
They are created by calling ‘sample‘ on a texture. You can then modify the
various parameters and the pass the sampler to a pipeline as a uniform.
Sampling Parameters cover five main aspects of how the values are read:
- Wrapping
- Filtering
- LOD
- Comparison
- Anisotropy
We will dive into these topics below.
**– Note for beginners –**
This area of GL can be incredibly confusing so don’t worry if you don’t grasp
it immediately. Lots can be done without messing with these values, tackle each
one when you have a usecase for it.
**– Wrapping –**
When using normalized texture coordinates we are used to thinking about our
coordinate being between 0s0 and 1s0 and that value dictating where we are
sampling from.
However normalized texture coordinates are not limited to values between
0s0 and 1s0. They can be any floating-point number.
When a texture coordinate is not within the 0 → 1 range, some means must be
employed to decide what the color value will be.
The different approaches are as follows:
:repeat: the texture coordinate wraps around the texture. so a texture
coordinate of -0.2 becomes the equivalent of 0.8.
:mirrored-repeat: the texture coordinate wraps around like a mirror.
-0.2 becomes 0.2, -1.2 becomes 0.8, etc.
:clamp-to-edge: the texture coordinate is clamped to the 0 → 1 range.
:clamp-to-border: the texture coordinate is clamped to the 0 → 1
range, but the edge texels are blended with a
constant border color.
:mirror-clamp-to-edge: (only available with OpenGL 4.4 or
:arb-texture-mirror-clamp-to-edge) the texture
is clamped to the -1 → 1 range, but mirrors the
negative direction with the positive. Basically,
it acts as :clamp-to-edge, except that it
takes the absolute value of the texture
coordinates before clamping.
This also applies to Rectangle Textures, except that the range at which they
apply edge sampling is based on the texel width/height of the texture, not
the normalized 0 → 1 range.
This does not apply to Buffer Textures, as they must use the texelFetch sampling
functions and thus cannot sample outside of the texel range of the texture.
example:
(setf (wrap texture-or-sampler)
#(:clamp-to-edge :repeat-to-edge :clamp-to-edge))
(setf (wrap texture-or-sampler) :clamp-to-edge)
**– Filtering –**
Filtering is the process of accessing a particular sample from a ‘texture‘.
There are two cases when filtering is relevant: minification and magnification.
Magnification means that the area of the fragment in texture space is smaller
than a texel, and minification means that the area of the fragment in texture
space is larger than a texel.
Filtering for these two cases can be set independently.
The magnification filter is controlled by the :magnify-filter texture parameter.
This value can be :linear or :nearest.
If :nearest is used, then the implementation will select the texel nearest the
texture coordinate; this is commonly called ’point sampling’).
If :linear is used, the implementation will perform a weighted linear blend
between the nearest adjacent samples.
(setf (magnify-filter tex-or-sampler) :linear)
(setf (magnify-filter tex-or-sampler) :nearest)
The minification filter is controlled by the :texture-min-filter texture
parameter. To understand these values better, it is important to discuss what
the particular options are. Here is the full list:
:nearest :linear
:nearest-mipmap-nearest :nearest-mipmap-linear
:linear-mipmap-nearest :linear-mipmap-linear
When doing minification, you can choose to use mipmapping or not. Using
mipmapping means selecting between multiple mipmaps based on the angle and size
of the texture relative to the screen. Whether you use mipmapping or not,
you can still select between linear blending of the particular layer or nearest.
And if you do use mipmapping, you can choose to either select a single mipmap to
sample from, or you can sample the two adjacent mipmaps and linearly blend the
resulting values to get the final result.
The OpenGL minification settings for these are as follows:
Param Setting Lin within mip-level
:nearest No
:linear Yes
:nearest-mipmap-nearest No
:linear-mipmap-nearest Yes
:nearest-mipmap-linear No
:linear-mipmap-linear Yes
Param Setting Has mipmapping
:nearest No
:linear No
:nearest-mipmap-nearest Yes
:linear-mipmap-nearest Yes
:nearest-mipmap-linear Yes
:linear-mipmap-linear Yes
Param Setting Linear between mip-levels
:nearest -
:linear -
:nearest-mipmap-nearest No
:linear-mipmap-nearest No
:nearest-mipmap-linear Yes
:linear-mipmap-linear Yes
Remembering these combinations can be annoying so CEPL provides an additional
function called #’set-minify-filter see the docstring for details
examples:
(setf (minify-filter tex-or-sampler) :linear)
(setf (minify-filter tex-or-sampler) :nearest-mipmap-nearest)
(setf-minify-filter tex-or-sampler :nearest :nearest)
**– LOD –**
There is a pair of sampling parameters that affect the mipmap image selection:
:max-lod and :min-lod (floating-point values).
The way these work in mipmap selection is quite complicated; the specification
goes into full detail about it.
example:
(setf (min-lod texture-or-sampler) value)
(setf (max-lod texture-or-sampler) value)
LOD bias:
The mipmap image selection process can be adjusted coarsely by using the
:lod-bias sampling parameter. This bias will be added to the mipmap
LOD calculation (as well as added to the bias specified in one of the ‘texture‘
accessing functions in GLSL), which is used to select the image. A positive bias
means that larger mipmaps will be selected even when the texture is viewed from
farther away. This can cause visual aliasing, but in small quantities it can
make textures a bit more sharp.
(setf (lod-bias texture-or-sampler) value)
**– Comparison –**
-WARNING-
This feature is currently unsupported until shadow samplers are more fully
tested in CEPL. Use at your own risk
Depth ‘texture‘s (textures that have a depth component image format) can be
sampled in one of two ways. They can be sampled as a normal texture, which
simply retrieves the depth value (with filtering applied). This will return a
vec4 containing a single floating-point value.
They can also be fetched in comparison mode. This means that sampling from
the texture requires a value to compare to those pulled from the texture;
this value is called the reference value. The result of the comparison
depends on the comparison function set in the texture. If the function
succeeds, the resulting value is 1s0; if it fails, it is 0s0.
When linear filtering is used, the actual returned value is
implementation-defined. However, the value will be on the range 0 → 1 and
will be proportional to the number of neighboring texels that pass the
comparison based on the single given value.
If the texture is a normalized integer depth format, then the reference value
is clamped to 0 → 1, to match the values from the texture. Otherwise, the value
is not clamped.
Using this mode requires two special settings. First, the ‘sampler‘ used in GLSL
must be a shadow sampler. Second, the texture used in that sampler must have
activated depth comparison mode. Attempting to use a texture without comparison
with a shadow sampler, or vice-versa, will result in an error upon rendering.
To set the texture to comparison mode, set the :texture-compare-mode
texture parameter to :compare-ref-to-texture. The comparison function to
use when comparing the reference to the texture is set with the
:texture-compare-func texture parameter. Acceptable values are:
:never (always fails)
:always (always succeeds)
:less
:lequal
:equal,
:not-equal
:gequal
:greater
The comparison works as follows:
(funcall operator ref texture)
Where ref is the reference value given to the texture lookup function by
GLSL, and texture is the value fetched from the texture. So :LESS will be
true if the reference value is strictly less than the value pulled from the
texture.
**– Anisotropy –*
The GL spec says the following
> Anisotropic filtering is an advanced filtering technique that takes
> multiple samples, blending the results together. Exactly how this is
> done is implementation-dependent, but control over the feature is
> specific: the user provides a maximum number of samples that can be
> taken of the texture during any one texture fetch. Note that this is
> the ’maximum’ number of samples; a particular texture fetch may take
> fewer samples. Hardware generally attempts to determine the best
> number of samples to take, clamped to the user-provided maximum.
To enable anisotropic filtering on creation of a sampler you can use
the ‘:anisotropy‘ keyword argument to the ‘sample‘ function. The default value
is 1f0.
To set the value after creation you can use the following:
(setf (anisotropy sampler) new-value)
Where ’new-value’ must be a ‘single-float‘
To get the current anisotropic filtering setting of a sampler simply pass it to
the ‘anisotropy‘ function.
In all of the above cases a value of 1f0 means no anisotropic filtering and any value higher than 1f0 counts as a use of anisotropic filtering.
structure-object
.
%cepl.types:gl-id
0
%cepl.types:sampler-id-box
(%cepl.types:make-sampler-id-box)
common-lisp
.
symbol
(error "")
glsl-symbols.functions
.
glsl-symbols.functions:texture
(error "")
single-float
0.0
single-float
-1000.0
single-float
1000.0
glsl-symbols.types:vec4
(glsl-symbols.types:vec4 0.0 0.0 0.0 0.0)
boolean
keyword
:linear
keyword
:linear
vector
#(:repeat :repeat :repeat)
boolean
symbol
single-float
1.0
structure-object
.
(signed-byte 32)
-1
boolean
‘SSBO‘ is a structure that abstracts an OpenGL Shader Storage Buffer Object
An SSBO is chunk of data stored in a ‘gpu-buffer‘, which can be used in shader
pipelines. They are very similar to UBOs and are used in pretty much the same
way. The big differences between them are:
- SSBOs can be much larger. The OpenGL spec guarantees that UBOs can
be up to 16KB in size (implementations can allow them to be
bigger). The spec guarantees that SSBOs can be up to 128MB. Most
implementations will let you allocate a size up to the limit of GPU
memory.
- SSBOs are writable (even atomically) whereas UBOs are not.
Be aware that SSBOs reads and writes use incoherent memory accesses,
so they need the appropriate barriers.
- SSBO access, all things being equal, will likely be slower than UBO
access. SSBOs generally are accesses like buffer textures, while UBO
data is accessed through internal shader-accessible memory reads. At
the very least, UBOs will be no slower than SSBOs.
- *Not yet supported in CEPL*
SSBOs can have variable storage, up to whatever buffer range was
bound for that particular buffer; UBOs must have a specific, fixed
storage size. This means that you can have an array of arbitrary
length in an SSBO (at the end, rather). The actual size of the
array, based on the range of the buffer bound, can be queried at
runtime in the shader using the length function on the unbounded
array variable.
structure-object
.
%cepl.types:gl-id
0
%cepl.types:gpu-array-bb
(error "gpu-array must be provided when making ssbo")
%cepl.types:c-array-index
0
boolean
structure-object
.
(signed-byte 32)
512
This slot is read-only.
%cepl.types:stencil-mask
0
This slot is read-only.
%cepl.types:stencil-mask
0
This slot is read-only.
(signed-byte 32)
7680
This slot is read-only.
(signed-byte 32)
7680
This slot is read-only.
(signed-byte 32)
7680
This slot is read-only.
‘Texture‘s are structures that hold a number of ‘gpu-array‘s that all have the same
element-type.
Textures can be used as a source of data or can be attached to an fbo, which
means you can render into them instead of to the screen[0].
These texture-backed arrays cannot contain arbitrary data, they are specific
formats that are allowed in specific circumstances. CEPL makes working with
these as smooth as possible, but the details are confusing and the best sources
of information for the nitty-gritty are the GL-Wiki and the GL-Specification.
**– Texture Types –**
The textures themselves have a number of configurations (known from here on as
’texture-types’) that are allowed:
:texture-1d
Gpu-Arrays in this texture all are 1-dimensional.
:texture-2d
Gpu-Arrays in this texture all are 2-dimensional.
:texture-3d
Gpu-Arrays in this texture all are 3-dimensional.
:texture-rectangle
This texture only has one 2-dimensional gpu-array. The texture cannot have
mipmapping. Texture coordinates used for these textures are not normalized.
:texture-buffer
See the documentation for ‘buffer-texture‘ for details
:texture-cube-map
There are exactly 6 distinct sets of 2D gpu-arrays, all of the same size.
They act as 6 faces of a cube.
:texture-1d-array
Gpu-Arrays in this texture all are 1-dimensional. However, it contains
multiple sets of 1-dimensional gpu-arrays, all within one texture.
:texture-2d-array
Gpu-Arrays in this texture all are 2-dimensional. However, it contains
multiple sets of 2-dimensional gpu-arrays, all within one texture.
:texture-cube-map-array
Gpu-Arrays in this texture are all cube maps. It contains multiple sets of
cube maps, all within one texture.
:texture-2d-multisample & :texture-2d-multisample-array
Not currently supported in CEPL
**– Element Types –**
Unlike ‘c-array‘ and ‘gpu-array‘s (which use foreign types for their elements)
textures have a different set of acceptable format. These are called
’image formats’.
The name may imply that these formats are only usable for image data but this
is not the case. Most of the types we are used to are there, but under unsual
names.
This would make this a ripe candidate for CEPL to clean up the naming.. but it
doesnt, why?
Well the answer to that is image-formats are damn confusing and if we change
too much of the naming it will be even more confusing when trying to google
information. Instead CEPL provides a number of functions for converting
between (foreign) lisp types and their image-format counterparts.
**– Mip Maps –**
When a texture is applied to a surface, the number of the texture’s
pixels (commonly called ’texels’) that are used depends on the angle at which
that surface is rendered. For example if we were rendering a TV then when it is
almost side on we will use much less pixels that if we were rendering it from
the front. At that point the gpu has to pick which texels from the texture to
use.
When an object is moving (or the camera is) the texels that are chosen to be
drawn each frame will not be the same, this causes nasty visual artifacts.
To get around this, gpus employ mip maps. These are pre-shrunk versions of the
full-sized ‘gpu-array‘. Each mipmap is half the size of the previous one in the
chain. So a 64x16 2D texture can have 6 mip-maps: 32x8, 16x4, 8x2, 4x1,
2x1, and 1x1.
OpenGL does not require that the entire mipmap chain is complete; you can
specify what range of mipmaps in a texture are available.
Some texture types have multiple independent sets of mipmaps. Each face of a
cubemap has its own set of mipmaps, as does each entry in an array texture.
When sampling a texture (see below), the implementation will automatically
select which mipmap to use based on the viewing angle, size of texture,
and various other factors.
**– Mutable or Immutable Storage –**
First we will explain what this is not, this is not about whether you can change
the contents of the ‘gpu-array‘s after the texture is created. It is about whether
you can redefine the ’nature’ of the data stored in the gpu-arrays after they
are created, by that we mean things like the type of the data, the resolution of
the gpu-arrays.
It is hard to do without creating an ’incomplete’ texture [1] and so CEPL opts
to treat all textures as immutable textures. When the OpenGL version doesnt
support immutable texture storage CEPL makes uses immutable storage,
allocates all the memory at construction, and doesnt provide abstractions over
the opengl features that would modify the storage.
**– Sampling –**
Sampling is the process of fetching a value from a texture at a given position.
It is interesting as, because of things like mipmaping, the usual case is that
reading a single value from a texture involves reading from more than one of
its gpu-arrays and combining the resultson some fashion.
To control this process GL (and thus CEPL) have a special object called a
sampler. Samplers have a number of values that can be tweaked that affect how
the sampling is done.
To find out more see the cepl.samplers section.
[0] - more correctly the default-fbo
[1] - [glwiki: texture completeness](https://www.opengl.org/wiki/Immutable_Storage_Texture#Texture_completeness)
glsl-symbols.functions
.
structure-object
.
%cepl.types:gl-id
0
(signed-byte 32)
0
list
common-lisp
.
symbol
(error "")
symbol
(error "")
(unsigned-byte 16)
0
(unsigned-byte 16)
0
boolean
boolean
boolean
(unsigned-byte 32)
0
boolean
(signed-byte 32)
0
structure-object
.
(or null (simple-array %cepl.types:gpu-array-bb (*)))
(or null (simple-array %cepl.types:gpu-array-bb (*)))
boolean
%cepl.types:gl-id
%cepl.types:+unknown-gl-id+
A ‘UBO‘ is a structure that abstracts an OpenGL Uniform Buffer Object
A Ubo is chunk of data stored in a ‘gpu-buffer‘, which can be used as a uniform
in shader pipelines.
The advantage of using a UBO over just passing the data as regular unforms is
that UBOs can be used to share uniforms between different programs, as well as
quickly change between sets of uniforms for the same pipeline.
Let’s expand on that a little:
Switching between uniform buffer bindings is typically faster than switching
dozens of uniforms in a pipeline.
Also, uniform buffer objects can typically store more data than non-buffered
uniforms. So they can be used to store and access larger blocks of data than
unbuffered uniform values.
Lastly, they can be used to share information between different programs.
So modifying a single buffer can effectively allow uniforms in multiple programs
to be updated.
structure-object
.
%cepl.types:gl-id
0
%cepl.types:gpu-array-bb
(error "gpu-array must be provided when making ubo")
%cepl.types:c-array-index
0
boolean
‘Viewport‘ is a structure that represents a retangular region of the surface
that CEPL can draw into.
There is always a viewport current when rendering. If one of your own is not
current then CEPL will use its default viewport, the resolution of which is the
same as that of the surface when it was created.
The default viewport can be modified, so feel free to update the resolution if the surface size changes.
structure-object
.
(unsigned-byte 16)
320
(unsigned-byte 16)
240
(unsigned-byte 16)
0
(unsigned-byte 16)
0
:version-major
This slot is read-only.
:version-minor
This slot is read-only.
:version-float
This slot is read-only.
This simple encodes a pattern I was writing too many times.
Basically we want to have the call to #’cepl-context inline
at the callsite as then a surrounding with-cepl-context block
will be able to replace it with a local version (improving performance)
the way we have taken to doing this
An identity macro. Exists so it can be shadowed in certain contexts
The ‘map-g-into*‘ macro is a variant of ‘map-g-into‘ which differs in that you have
more control over how the ‘fbo‘ is bound.
Like map-g-into, map-g-into* maps a ‘buffer-stream‘ over our pipeline and the
results of the pipeline are fed into the supplied fbo.
This is how we run our pipelines and thus is how we render in CEPL.
The arguments to map-g-into* are going to depend on what gpu-functions were
composed in the pipeline you are calling. However the layout is always as
follows.
- fbo: This is where the results of the pipeline will be written.
- with-viewport: If with-viewport is t then ‘with-fbo-bound‘ adds a
‘with-fbo-viewport‘ that uses this fbo to this scope. This means
that the ‘current-viewport‘ within this scope will be set to the
equivalent of:
(make-viewport dimensions-of-fbo ’(0 0))
See the docstruct with-fbo-viewport for details on this
behavior.
One last detail is that you may want to take the ‘dimensions‘ of
the ‘viewport‘ from an attachment other than attachment-0.
To do this use the ’attachment-for-size argument and give the
index of the color-attachment to use.
- with-blending: If with-blending is t then with-fbo-bound adds a with-blending
that uses this fbo to this scope.
This means that the blending parameters from your fbo will be
used while rendering. For the details and version specific
behaviours check out the docstring for with-blending
- attachment-for-size: see above
- the pipeline function: The first argument is always the pipeline you wish to
map the data over.
- The stream: The next argument will be the buffer-stream which will be used as the
inputs to the vertex-shader of the pipeline. The type of the buffer-stream must
be mappable onto types of the non uniform args of the gpu-function being used
as the vertex-shader.
- Uniform args: Next you must provide the uniform arguments. These are passed in
the same fashion as regular &key arguments.
CEPL will then run the pipeline with the given args and the results will be fed
into the specified FBO. The value/s from the fragment shader will be
written into the attachments of the FBO. If you need to control this in the
fashion usualy provided by with-fbo-bound then please see the doc-string for
‘map-g-into*‘.
The default behaviour is that each of the multiple returns values from the
gpu-function used as the fragment shader will be written into the respective
attachments of the ‘FBO‘ (first value to first attachment, second value to
second attachment, etc)
Internally map-g-into* wraps call to ‘map-g‘ in with-fbo-bound. The with-fbo-bound has its default configuration which means that:
Convert the lisp type to an internal format and delegate to %calc-image-format
Convert the pixel-format to an internal format and delegate to %calc-image-format
fbos
.
id
.
This is the meat of defun-g. it is broken down as follows:
[0] makes a gpu-func-spec that will be populated a stored later.
[1] Adds a external function definition to varjo also make sure it will be
called on load
[2] %test-&-process-spec compiles the code to check for errors and log
dependencies. (this is called at runtime)
[3] %make-gpu-func-spec is called at expand time to write a lisp function
with the same signature as the gpu-function. This gives code hinting and
also a decent error message if you try calling it from the cpu.
We don’t do this when using defun-g-equiv as we want to shadow the lisp
function.
[4] the purpose of %recompile-gpu-function-and-pipelines is to recompile and
functions or pipelines that depend on this gpu function. It does this
by calling %recompile-gpu-function-and-pipelines on all the gpu function
that depend on this func and then the recompile-function for all
pipelines that depend on this gpu function. To this end it walks depth
first too all affected pipelines.
[5] At runtime this looks for any gpu function that listed this function as one of its missing dependencies and calls %test-&-process-spec on them. Note that this will (possibly) update the spec but will not trigger a recompile in the pipelines.
Makes a regular lisp function with the same names and arguments
(where possible) as the glsl-stage who’s spec is provided.
If called the function will throw an error saying that the function can’t currently be used from the cpu.
Use varjo to compile the code.
[0] If the compilation throws a could-not-find-function error, then record
that missing function’s name as a missing dependency.
[1] If it succeeds then look at the list of used external-functions, and
check which of the names of the macros match the names of a gpu function.
The ones that match are the dependencies.
[2] We also record the uniforms in the compiled result. The uniforms in the definition are the public interface, but the compiler may have removed or modified the uniforms. To this end we store the final uniforms and the forms that transform between the public uniform arguments and the internal ones.
[3] We call ’add-layout-to-struct-uniforms’ here to ensure that the ubo/ssbo arguments have the correct layout information. This is not important for the test compilation, but instead for the uniform information that is gathered from this test compile (actual-uniforms).
[0] Add or update the spec
[0] Add or update the spec
[1] (re)subscribe to all the dependencies
[2] cache the compile result so we can retrieve it with #’pull1-g or the code with #’pull-g
Compile the gpu functions for a pipeline
The argument to this function is a list of pairs.
Each pair contains:
- the shader stage (e.g. vertex fragment etc)
- the name of the gpu function to use for this stage
The reason we need to aggregate uniforms is as follows:
- pipelines are made of composed gpu functions
- each gpu function may introduce uniforms
- to this end we need to make sure the different functions’ uniforms are
compatible and then return a final list of aggregated uniforms.
The way we do this is:
[0] Remove all duplicates, this handles all cases where the same uniform is
in different gpu-functions
[1] Now if there is any more than one instance of each uniform name then
there is a clash
Sidenote:
[X] We call ’add-layout-to-struct-uniforms’ here to ensure that the ubo/ssbo
arguments have the correct layout information. This is not important for
the test compilation, but instead for the uniform information that is
gathered from this test compile (actual-uniforms).
This function creates an empty block of data in the opengl buffer.
It will remove ALL data currently in the buffer.
It also will not update the format of the buffer so you must be sure to handle this yourself. It is much safer to use this as an assistant function to one which takes care of these issues
returns the mode, the var names & the number of streams
Makes the keyword that names the sampler-type for the given texture-type and format
This runs the compute function over the provided space using the
currently bound program. Please note: It Does Not bind the program so
this function should only be used from another function which
is handling the binding.
Define a function that runs on the gpu.
This draws the single stream provided using the currently bound program. Please note: It Does Not bind the program so this function should only be used from another function which is handling the binding.
Returns the number of gpu-arrays that should be bound in the transform-feedback-stream
The are 4 kinds of valid argument:
- keyword naming an attachment: This makes a new texture
with size of (current-viewport) and attaches
- (keyword texarray): attaches the tex-array
- (keyword texture): attaches the root tex-array
- (keyword some-type) any types that supports the generic dimensions function
creates a new texture at the framesize of the object
and attaches it to attachment named by keyword
Recursivly searches for functions by this function.
Sorts the list of function names by dependency so the earlier
names are depended on by the functions named later in the list
Used when uploading from a foreign data source (like a c-array) This lets your uploading from an offset the source
Used when uploading lisp data
spec
.
Links all the shaders into the program provided
This makes a new opengl shader object by compiling the text in the specified file and, unless specified, establishing the shader type from the file extension
Makes a regular lisp function with the same names and arguments
(where possible) as the gpu function who’s spec is provided.
If called the function will throw an error saying that the function
can’t currently be used from the cpu.
This means we get function arg hints, doc-string and also we have the opportunity to provide a cpu implementation one day we want to.
Gets the stage pairs and context for the given gpipe form.
If there are only two gpu functions named and no explicit stages then
it is assumed that the first is the vertex stage and the second the fragment
stage.
Otherwise you are expected to name the stages. You can name one and then let
this function fill in the rest, but I think that’s a bit hairy and will
probably be removed.
stage pairs are of the form (stage-name . gpu-function-name)
parsed-gpipe-args->v-translate-args processed the (stage . gfunc-name) pairs
that %compile-link-and-upload want to call v-rolling-translate on.
To do this we need to look up the gpu function spec and turn them into valid
arguments for the rolling-translate function.
It also:
[0] if it’s a glsl-stage then it is already compiled. Pass the
compile-result and let varjo handle it
[1] is what handles the transformation of func (including gpu-lambdas)
[2] ’replacements’ specifies uniforms to replace in the stage.
Returns the number of attributes used by the shader
Returns a list of details of the attributes used by the program. Each element in the list is a list in the format: (attribute-name attribute-type attribute-size)
Returns the number of uniforms used by the shader
Returns a list of details of the uniforms used by
the program. Each element in the list is a list in the
format: (uniform-name uniform-type uniform-size)
Register a function to be called on each event from the host
This uses the extension to return the type of the shader. Currently it only recognises .vert or .frag files
This is a hack, never use it in production code.
GL has no function for querying the number of mipmap levels
so what we do is get the maxiumum possible count and iterate through checking
the width to see at what point the width reaches 0 or GL throws an error.
enum
.
This function is provided to varjo to allow inference of the types of implicit uniforms.
uint
.
api-1
) &key width height title fullscreen no-frame alpha-size red-size green-size blue-size depth-size stencil-size buffer-size double-buffer hidden resizable &allow-other-keys) ¶func-key
)) ¶Recompile all pipelines that depend on the named gpu function or any other
gpu function that depends on the named gpu function. It does this by doing
the following:
[0] Recursively call this function on all gpu functions that use the
gpu function named in the argument
[1] Trigger a recompile on all pipelines that depend on this gpu function
As the name would suggest this makes one function dependent on another It is used by #’%test-&-process-spec via #’%update-gpu-function-data
assigner-let-form
)) ¶automatically generated reader method
body
.
assigner-let-form
)) ¶automatically generated writer method
body
.
assigner-let-form
)) ¶automatically generated reader method
assigner-let-form
)) ¶automatically generated writer method
assigner-let-form
)) ¶automatically generated reader method
name
.
assigner-let-form
)) ¶automatically generated writer method
name
.
assigner-let-form
)) ¶automatically generated reader method
type
.
assigner-let-form
)) ¶automatically generated writer method
type
.
integer
) (dimensions list
)) ¶gl-context
) (buffer-num integer
)) ¶external-function
)) ¶gpu-func-spec
)) ¶gpu-func-spec
) &optional error-if-missing) ¶gl-context
)) ¶automatically generated reader method
function
)) ¶pipeline-spec-base
)) ¶pipeline-spec-base
)) ¶gpu-array-bb
)) ¶gl-struct-slot
)) ¶gl-struct-slot
)) ¶gl-struct-slot
)) ¶automatically generated reader method
gl-struct-slot
)) ¶automatically generated reader method
cepl-struct-definition
)) ¶automatically generated reader method
gl-struct-slot
)) ¶automatically generated reader method
cepl-struct-definition
)) ¶automatically generated reader method
gl-struct-slot
)) ¶automatically generated reader method
name
.
cepl-struct-definition
)) ¶automatically generated reader method
name
.
gl-struct-slot
)) ¶automatically generated reader method
gl-struct-slot
)) ¶automatically generated reader method
gl-struct-slot
)) ¶automatically generated reader method
gl-struct-slot
) (args list
)) ¶cepl-struct-definition
)) ¶automatically generated reader method
gl-struct-slot
)) ¶automatically generated reader method
type
.
gl-struct-slot
)) ¶automatically generated reader method
gl-struct-slot
)) ¶automatically generated reader method
This will be called from the UI thread (if required by the OS) Implement and use this if you need to do some setup from that thread
gpu-func-spec
)) ¶v_elements-indirect-command
)) ¶automatically generated writer method
varjo.internals
.
v_elements-indirect-command
)) ¶automatically generated reader method
varjo.internals
.
v_arrays-indirect-command
)) ¶automatically generated writer method
varjo.internals
.
v_arrays-indirect-command
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnt
)) ¶automatically generated writer method
varjo.internals
.
v_g-pnt
)) ¶automatically generated reader method
varjo.internals
.
v_g-pncb
)) ¶automatically generated writer method
varjo.internals
.
v_g-pncb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnb
)) ¶automatically generated writer method
varjo.internals
.
v_g-pnb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntc
)) ¶automatically generated writer method
varjo.internals
.
v_g-pntc
)) ¶automatically generated reader method
varjo.internals
.
v_g-pt
)) ¶automatically generated writer method
varjo.internals
.
v_g-pt
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntcb
)) ¶automatically generated writer method
varjo.internals
.
v_g-pntcb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pc
)) ¶automatically generated writer method
varjo.internals
.
v_g-pc
)) ¶automatically generated reader method
varjo.internals
.
v_g-pntb
)) ¶automatically generated writer method
varjo.internals
.
v_g-pntb
)) ¶automatically generated reader method
varjo.internals
.
v_g-pn
)) ¶automatically generated writer method
varjo.internals
.
v_g-pn
)) ¶automatically generated reader method
varjo.internals
.
v_g-pnc
)) ¶automatically generated writer method
varjo.internals
.
v_g-pnc
)) ¶automatically generated reader method
varjo.internals
.
error
.
:dimensions
error
.
:version
error
.
:args
error
.
structure-object
.
cffi-sys:foreign-pointer
(cffi-sys:null-pointer)
structure-object
.
(unsigned-byte 16)
0
(simple-array %cepl.types:gl-id (8))
(make-array cepl.context:+max-context-count+ :initial-element %cepl.types:+unknown-gl-id+ :element-type (quote %cepl.types:gl-id))
function
(function cepl.pipelines::fallback-iuniform-func)
symbol
(unsigned-byte 8)
0
boolean
t
(array (signed-byte 32) (*))
(make-array 100 :element-type (quote (signed-byte 32)) :initial-element cepl.pipelines::+unknown-uniform-int-id+)
(array (unsigned-byte 32) (*))
(make-array 100 :element-type (quote (unsigned-byte 32)) :initial-element cepl.pipelines::+unknown-uniform-uint-id+)
structure-object
.
boolean
cepl.context:gl-context
list
:let-forms
:uploaders
:pointer-arg
:arg-name
:local-arg-name
:cleanup
:always-uploadp
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.pipelines.arrays-indirect-command.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.pipelines.elements-indirect-command.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pc.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pn.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pnb.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pnc.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pncb.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pnt.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pntb.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pntc.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pntcb.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
enhanced-foreign-type
.
Initarg | Value |
---|---|
:actual-type | (quote (struct cepl.types.predefined.g-pt.foreign)) |
foreign-struct-type
.
translatable-foreign-type
.
%funcs-this-func-uses
.
%recompile-gpu-function-and-pipelines
.
%unsubscibe-from-all
.
delete-gpu-function
.
func-key
.
func-key->name
.
func-key=
.
func-key=
.
func-key=
.
(setf funcs-that-use-this-func)
.
funcs-that-use-this-func
.
(setf gpu-func-spec)
.
gpu-func-spec
.
in-args
.
make-load-form
.
name
.
print-object
.
recompile-pipelines-that-use-this-as-a-stage
.
spec->func-key
.
varjo.internals
.
:name
This slot is read-only.
:type
This slot is read-only.
:base-offset
This slot is read-only.
:base-alignment
This slot is read-only.
:aligned-offset
This slot is read-only.
:machine-unit-size
This slot is read-only.
:members
This slot is read-only.
:element-layout
This slot is read-only.
varjo.internals
.
:name
This slot is read-only.
:element-type
This slot is read-only.
1
:dimensions
This slot is read-only.
:normalized
This slot is read-only.
:uses-method-p
This slot is read-only.
:parent-ffi-name
This slot is read-only.
varjo.internals
.
:name
:in-args
:uniforms
:actual-uniforms
varjo.internals
.
:context
:body
:equivalent-inargs
:equivalent-uniforms
:doc-string
:declarations
:missing-dependencies
:compiled
:diff-tag
:in-args
:uniforms
:body
:doc-string
:declarations
varjo.internals
.
:context
:func-spec
:prog-ids
:cached-compile-results
varjo.internals
.
:vertex-stage
varjo.internals
.
:tessellation-control-stage
varjo.internals
.
:tessellation-evaluation-stage
varjo.internals
.
:geometry-stage
varjo.internals
.
:fragment-stage
varjo.internals
.
:compute-stage
v-user-struct
.
varjo.internals
.
(quote cepl.pipelines::v_arrays-indirect-command)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"arrays_indirect_command"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct arrays_indirect_command {
uint count;
uint instance_count;
uint first;
uint base_instance;
};"
:signature
varjo.internals
.
(quote ((count #<vari.types:v-uint {1009d02f53}> cepl.pipelines:arrays-indirect-command-count "~a.count") (cepl.pipelines:instance-count #<vari.types:v-uint {1009d02f63}> cepl.pipelines:arrays-indirect-command-instance-count "~a.instance_count") (first #<vari.types:v-uint {1009d02f73}> cepl.pipelines:arrays-indirect-command-first "~a.first") (cepl.pipelines:base-instance #<vari.types:v-uint {1009d02f83}> cepl.pipelines:arrays-indirect-command-base-instance "~a.base_instance")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.pipelines::v_elements-indirect-command)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"elements_indirect_command"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct elements_indirect_command {
uint count;
uint instance_count;
uint first_index;
uint base_vertex;
uint base_instance;
};"
:signature
varjo.internals
.
(quote ((count #<vari.types:v-uint {1009d02f93}> cepl.pipelines:elements-indirect-command-count "~a.count") (cepl.pipelines:instance-count #<vari.types:v-uint {1009d02fa3}> cepl.pipelines:elements-indirect-command-instance-count "~a.instance_count") (cepl.pipelines:first-index #<vari.types:v-uint {1009d02fb3}> cepl.pipelines:elements-indirect-command-first-index "~a.first_index") (cepl.pipelines:base-vertex #<vari.types:v-uint {1009d02fc3}> cepl.pipelines:elements-indirect-command-base-vertex "~a.base_vertex") (cepl.pipelines:base-instance #<vari.types:v-uint {1009d02fd3}> cepl.pipelines:elements-indirect-command-base-instance "~a.base_instance")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pc)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pc"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pc {
vec3 position;
vec4 color;
};"
:signature
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pn)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pn"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pn {
vec3 position;
vec3 normal;
};"
:signature
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pnb)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pnb"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pnb {
vec3 position;
vec3 normal;
vec3 tangent;
vec3 bi_tangent;
};"
:signature
varjo.internals
.
(quote ((position #<vari.types:v-vec3 {10029e21c3}> cepl.types.predefined:pos "~a.position") (cepl.types.predefined::normal #<vari.types:v-vec3 {10029e21d3}> cepl.types.predefined:norm "~a.normal") (cepl.types.predefined:tangent #<vari.types:v-vec3 {10029e21e3}> cepl.types.predefined:tangent "~a.tangent") (cepl.types.predefined:bi-tangent #<vari.types:v-vec3 {10029e21f3}> cepl.types.predefined:bi-tangent "~a.bi_tangent")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pnc)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pnc"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pnc {
vec3 position;
vec3 normal;
vec4 color;
};"
:signature
varjo.internals
.
(quote ((position #<vari.types:v-vec3 {10029e2273}> cepl.types.predefined:pos "~a.position") (cepl.types.predefined::normal #<vari.types:v-vec3 {10029e2283}> cepl.types.predefined:norm "~a.normal") (cepl.types.predefined::color #<vari.types:v-vec4 {10029e2293}> cepl.types.predefined:col "~a.color")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pncb)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pncb"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pncb {
vec3 position;
vec3 normal;
vec3 tangent;
vec3 bi_tangent;
vec4 color;
};"
:signature
varjo.internals
.
(quote ((position #<vari.types:v-vec3 {10029e2173}> cepl.types.predefined:pos "~a.position") (cepl.types.predefined::normal #<vari.types:v-vec3 {10029e2183}> cepl.types.predefined:norm "~a.normal") (cepl.types.predefined:tangent #<vari.types:v-vec3 {10029e2193}> cepl.types.predefined:tangent "~a.tangent") (cepl.types.predefined:bi-tangent #<vari.types:v-vec3 {10029e21a3}> cepl.types.predefined:bi-tangent "~a.bi_tangent") (cepl.types.predefined::color #<vari.types:v-vec4 {10029e21b3}> cepl.types.predefined:col "~a.color")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pnt)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pnt"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pnt {
vec3 position;
vec3 normal;
vec2 texture;
};"
:signature
varjo.internals
.
(quote ((position #<vari.types:v-vec3 {10029e2243}> cepl.types.predefined:pos "~a.position") (cepl.types.predefined::normal #<vari.types:v-vec3 {10029e2253}> cepl.types.predefined:norm "~a.normal") (glsl-symbols.functions:texture #<vari.types:v-vec2 {10029e2263}> cepl.types.predefined:tex "~a.texture")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pntb)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pntb"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pntb {
vec3 position;
vec3 normal;
vec3 tangent;
vec3 bi_tangent;
vec2 texture;
};"
:signature
varjo.internals
.
(quote ((position #<vari.types:v-vec3 {10029e2123}> cepl.types.predefined:pos "~a.position") (cepl.types.predefined::normal #<vari.types:v-vec3 {10029e2133}> cepl.types.predefined:norm "~a.normal") (cepl.types.predefined:tangent #<vari.types:v-vec3 {10029e2143}> cepl.types.predefined:tangent "~a.tangent") (cepl.types.predefined:bi-tangent #<vari.types:v-vec3 {10029e2153}> cepl.types.predefined:bi-tangent "~a.bi_tangent") (glsl-symbols.functions:texture #<vari.types:v-vec2 {10029e2163}> cepl.types.predefined:tex "~a.texture")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pntc)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pntc"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pntc {
vec3 position;
vec3 normal;
vec2 texture;
vec4 color;
};"
:signature
varjo.internals
.
(quote ((position #<vari.types:v-vec3 {10029e2203}> cepl.types.predefined:pos "~a.position") (cepl.types.predefined::normal #<vari.types:v-vec3 {10029e2213}> cepl.types.predefined:norm "~a.normal") (glsl-symbols.functions:texture #<vari.types:v-vec2 {10029e2223}> cepl.types.predefined:tex "~a.texture") (cepl.types.predefined::color #<vari.types:v-vec4 {10029e2233}> cepl.types.predefined:col "~a.color")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pntcb)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pntcb"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pntcb {
vec3 position;
vec3 normal;
vec3 tangent;
vec3 bi_tangent;
vec2 texture;
vec4 color;
};"
:signature
varjo.internals
.
(quote ((position #<vari.types:v-vec3 {10029e20c3}> cepl.types.predefined:pos "~a.position") (cepl.types.predefined::normal #<vari.types:v-vec3 {10029e20d3}> cepl.types.predefined:norm "~a.normal") (cepl.types.predefined:tangent #<vari.types:v-vec3 {10029e20e3}> cepl.types.predefined:tangent "~a.tangent") (cepl.types.predefined:bi-tangent #<vari.types:v-vec3 {10029e20f3}> cepl.types.predefined:bi-tangent "~a.bi_tangent") (glsl-symbols.functions:texture #<vari.types:v-vec2 {10029e2103}> cepl.types.predefined:tex "~a.texture") (cepl.types.predefined::color #<vari.types:v-vec4 {10029e2113}> cepl.types.predefined:col "~a.color")))
This slot is read-only.
v-user-struct
.
varjo.internals
.
(quote cepl.types.predefined::v_g-pt)
varjo.internals
.
(quote vari.types:v-user-struct)
varjo.internals
.
"g_pt"
:glsl-string
This slot is read-only.
varjo.internals
.
"struct g_pt {
vec3 position;
vec2 texture;
};"
:signature
Jump to: | %
(
-
1
A B C D E F G H I J K L M N O P Q R S T U V W X Z |
---|
Jump to: | %
(
-
1
A B C D E F G H I J K L M N O P Q R S T U V W X Z |
---|
Jump to: | %
*
+
A B C D E F G H I K L M N O P Q R S T U V W |
---|
Jump to: | %
*
+
A B C D E F G H I K L M N O P Q R S T U V W |
---|
Jump to: | %
A B C D E F G H I L M N O P Q R S T U V |
---|
Jump to: | %
A B C D E F G H I L M N O P Q R S T U V |
---|