The shadow Reference Manual

This is the shadow Reference Manual, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 17:52:19 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 shadow

A management system for OpenGL shader programs and associated buffer objects.

Author

Michael Fiano <>

Home Page

https://git.mfiano.net/mfiano/shadow

License

MIT

Dependencies
  • cffi (system).
  • cl-opengl (system).
  • glsl-packing (system).
  • mfiano-utils (system).
  • static-vectors (system).
  • varjo (system).
Source

shadow.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 shadow/shadow.asd

Source

shadow.asd.

Parent Component

shadow (system).

ASDF Systems

shadow.


3.1.2 shadow/package.lisp

Source

shadow.asd.

Parent Component

shadow (system).

Packages

3.1.3 shadow/shadow.lisp

Dependency

package.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Public Interface
Internals

3.1.4 shadow/common.lisp

Dependency

shadow.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Internals

3.1.5 shadow/functions.lisp

Dependency

common.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Internals

3.1.6 shadow/stages.lisp

Dependency

functions.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Internals

3.1.7 shadow/program.lisp

Dependency

stages.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Public Interface
Internals

3.1.8 shadow/packing.lisp

Dependency

program.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Internals

3.1.9 shadow/attributes.lisp

Dependency

packing.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Internals

3.1.10 shadow/uniforms.lisp

Dependency

attributes.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Public Interface
Internals

3.1.11 shadow/layout.lisp

Dependency

uniforms.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Internals

3.1.12 shadow/blocks.lisp

Dependency

layout.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Public Interface
Internals

3.1.13 shadow/buffers.lisp

Dependency

blocks.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Public Interface
Internals

3.1.14 shadow/glsl.lisp

Dependency

buffers.lisp (file).

Source

shadow.asd.

Parent Component

shadow (system).

Public Interface

4 Packages

Packages are listed by definition order.


4.1 shadow

Source

package.lisp.

Use List

common-lisp.

Public Interface
Internals

4.2 shadow.glsl

Source

package.lisp.

Use List
  • common-lisp.
  • vari.
Public Interface

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Macros

Macro: define-shader (name (&key version primitive) &body body)

Create a new shader program using the stage-specs defined in BODY.

VERSION: The default version shader stages use, and can be overridden on a per-function basis.

PRIMITIVE: The drawing primitive to use for the vertex stage.

Package

shadow.glsl.

Source

glsl.lisp.

Macro: defmacro (name lambda-list &body body)

Define a GPU macro.

Package

shadow.glsl.

Source

glsl.lisp.

Macro: defstruct (name &body slots)

Define a GPU structure.

Package

shadow.glsl.

Source

glsl.lisp.

Macro: defun (name args &body body)

Define a GPU function.

Package

shadow.glsl.

Source

glsl.lisp.

Macro: with-shader (name &body body)

Run a body of code which uses (as in glUseProgram) the program identified by NAME.

Package

shadow.

Source

program.lisp.


5.1.2 Ordinary functions

Function: bind-block (block-alias binding-point)

Bind a block referenced by BLOCK-ALIAS to a binding point.

Package

shadow.

Source

blocks.lisp.

Function: bind-buffer (buffer-name binding-point)

Bind a buffer with name BUFFER-NAME to BINDING-POINT.

Package

shadow.

Source

buffers.lisp.

Function: build-shader-dictionary ()

Compile all shader programs defined with MAKE-SHADER-PROGRAM.

Package

shadow.

Source

program.lisp.

Function: build-shader-program (name)

Compile the shader stages of NAME, linking them into a program. NAME refers to a previously defined shader program using MAKE-SHADER-PROGRAM.

Package

shadow.

Source

program.lisp.

Function: clear-buffer (buffer-name)
Package

shadow.

Source

buffers.lisp.

Function: create-block-alias (block-type block-id program-name block-alias)
Package

shadow.

Source

blocks.lisp.

Function: create-buffer (buffer-name block-alias)

Create a buffer of the given TYPE and NAME, using the block BLOCK-ID of PROGRAM-NAME.

Package

shadow.

Source

buffers.lisp.

Function: delete-buffer (buffer-name)

Delete the buffer having a name of BUFFER-NAME.

Package

shadow.

Source

buffers.lisp.

Function: find-block (block-alias)
Package

shadow.

Source

blocks.lisp.

Function: find-buffer (buffer-name)
Package

shadow.

Source

buffers.lisp.

Function: find-program (program-name)
Package

shadow.

Source

program.lisp.

Function: find-shader-definition (program-name)
Package

shadow.

Source

shadow.lisp.

Function: get-program-id (program-name)
Package

shadow.

Source

program.lisp.

Function: load-shaders (modify-hook)
Package

shadow.

Source

shadow.lisp.

Function: read-buffer-path (buffer-name &key path index count)
Package

shadow.

Source

buffers.lisp.

Function: recompile-shaders (programs-list)
Package

shadow.

Source

shadow.lisp.

Function: unbind-block (block-alias)

Unbind a block with the alias BLOCK-ALIAS.

Package

shadow.

Source

blocks.lisp.

Function: unbind-buffer (buffer-name)

Unbind a buffer with name BUFFER-NAME.

Package

shadow.

Source

buffers.lisp.

Function: uniform-bool (program uniform value)
Package

shadow.

Source

uniforms.lisp.

Function: uniform-bool-array (program uniform value)
Package

shadow.

Source

uniforms.lisp.

Function: uniform-float (program uniform value)

Specify a float as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-float-array (program uniform value)

Specify an array of floats as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-int (program uniform value)

Specify an integer as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-int-array (program uniform value)

Specify an array of integers as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-mat2 (program uniform value)

Specify a mat2 as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-mat2-array (program uniform value)

Specify an array of mat2’s as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-mat3 (program uniform value)

Specify a mat3 as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-mat3-array (program uniform value)

Specify an array of mat3’s as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-mat4 (program uniform value)

Specify a mat4 as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-mat4-array (program uniform value)

Specify an array of mat4’s as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-vec2 (program uniform value)

Specify a vec2 as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-vec2-array (program uniform value)

Specify an array of vec2’s as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-vec3 (program uniform value)

Specify a vec3 as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-vec3-array (program uniform value)

Specify an array of vec3’s as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-vec4 (program uniform value)

Specify a vec4 as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: uniform-vec4-array (program uniform value)

Specify an array of vec4’s as the VALUE for the uniform variable, UNIFORM.

Package

shadow.

Source

uniforms.lisp.

Function: unload-shaders ()
Package

shadow.

Source

shadow.lisp.

Function: view-source (program-name stage)
Package

shadow.

Source

program.lisp.

Function: write-buffer-path (buffer-name &key path index value)

Write VALUE to the buffer with the name BUFFER-NAME, starting at the given PATH.

PATH: A "dot-separated" keyword symbol, where each part denotes a member in the buffer’s block layout.

VALUE: A value to write, such as a scalar or matrix depending on the type of the member PATH refers to. To write to an array, use a sequence of values.

Note: Writing to arrays which contain other aggregate types (other arrays or structures) is not possible. This is a design decision to allow this library to have a simple "path-based" buffer writing interface.

Package

shadow.

Source

buffers.lisp.


5.1.3 Generic functions

Generic Reader: buffer-name (object)
Package

shadow.

Methods
Reader Method: buffer-name ((shader-buffer shader-buffer))

automatically generated reader method

Source

buffers.lisp.

Target Slot

%name.

Generic Reader: program (object)
Package

shadow.

Methods
Reader Method: program ((shader-block shader-block))

automatically generated reader method

Source

blocks.lisp.

Target Slot

%program.

Generic Reader: uniforms (object)
Package

shadow.

Methods
Reader Method: uniforms ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%uniforms.


5.1.4 Standalone methods

Method: print-object ((shader-block shader-block) stream)
Source

blocks.lisp.


5.1.5 Classes

Class: program
Package

shadow.

Source

program.lisp.

Direct methods
Direct slots
Slot: %id
Initform

0

Readers

id.

Writers

This slot is read-only.

Slot: %name
Initargs

:name

Readers

name.

Writers

This slot is read-only.

Slot: %version
Initargs

:version

Readers

version.

Writers

This slot is read-only.

Slot: %translated-stages
Readers

translated-stages.

Writers

This slot is read-only.

Slot: %source
Initform

(mfiano-utils:dict (function eq))

Readers

source.

Writers

This slot is read-only.

Slot: %primitive
Initargs

:primitive

Readers

primitive.

Writers

This slot is read-only.

Slot: %stage-specs
Initargs

:stage-specs

Readers

stage-specs.

Writers

This slot is read-only.

Slot: %attributes
Initform

(mfiano-utils:dict (function eq))

Readers

attributes.

Writers

This slot is read-only.

Slot: %uniforms
Initform

(mfiano-utils:dict (function eq))

Readers

uniforms.

Writers

This slot is read-only.

Slot: %blocks
Initform

(mfiano-utils:dict (function equal))

Readers

blocks.

Writers

This slot is read-only.


5.2 Internals


5.2.1 Special variables

Special Variable: *metadata*
Package

shadow.

Source

shadow.lisp.


5.2.2 Macros

Macro: %uniform-array (location func component-count element-type sequence)
Package

shadow.

Source

uniforms.lisp.


5.2.3 Ordinary functions

Function: %bind-block/buffer (block binding-point)
Package

shadow.

Source

blocks.lisp.

Function: %bind-block/uniform (block binding-point)
Package

shadow.

Source

blocks.lisp.

Function: %find-block (program-name block-type block-id)
Package

shadow.

Source

blocks.lisp.

Function: %make-buffer (name target layout)
Package

shadow.

Source

buffers.lisp.

Function: %make-shader-program (name version primitive stage-specs)
Package

shadow.

Source

program.lisp.

Function: %read-buffer-member (target member index count)
Package

shadow.

Source

buffers.lisp.

Function: %read-buffer-member/matrix (member data count)
Package

shadow.

Source

buffers.lisp.

Function: %read-buffer-member/scalar (member data count)
Package

shadow.

Source

buffers.lisp.

Function: %read-buffer-member/vector (member data count)
Package

shadow.

Source

buffers.lisp.

Function: %write-buffer-member (target member index value)
Package

shadow.

Source

buffers.lisp.

Function: %write-buffer-member/matrix (target member index value)
Package

shadow.

Source

buffers.lisp.

Function: block-binding-valid-p (block binding-point)
Package

shadow.

Source

blocks.lisp.

Function: block-type->buffer-type (block-type)
Package

shadow.

Source

buffers.lisp.

Function: buffer-type->block-type (type)
Package

shadow.

Source

buffers.lisp.

Function: buffer-type->target (buffer-type)
Package

shadow.

Source

buffers.lisp.

Function: build-shader-programs (program-list)

Recompile a collection of shader programs.

Package

shadow.

Source

program.lisp.

Function: collect-layout-structs (layout)
Package

shadow.

Source

layout.lisp.

Function: collect-layouts (stage)
Package

shadow.

Source

layout.lisp.

Function: compile-stages (program)
Package

shadow.

Source

program.lisp.

Function: compute-outdated-programs (spec)
Package

shadow.

Source

functions.lisp.

Function: delete-block-alias (block-alias &key unbind-block)
Package

shadow.

Source

blocks.lisp.

Function: disable-dependency-tracking ()
Package

shadow.

Source

shadow.lisp.

Function: enable-dependency-tracking ()
Package

shadow.

Source

shadow.lisp.

Function: ensure-function-dependency-tables (spec fn-deps dep-fns)
Package

shadow.

Source

functions.lisp.

Function: ensure-keyword (x)
Package

shadow.

Source

common.lisp.

Function: find-gpu-function (func-spec)
Package

shadow.

Source

functions.lisp.

Function: get-block-type (struct)
Package

shadow.

Source

blocks.lisp.

Function: get-function-spec (function)
Package

shadow.

Source

functions.lisp.

Function: get-layout-type (struct)
Package

shadow.

Source

layout.lisp.

Function: get-uniform-location (program uniform)
Package

shadow.

Source

uniforms.lisp.

Function: has-qualifier-p (type qualifier)
Package

shadow.

Source

common.lisp.

Function: layout-struct-p (struct)
Package

shadow.

Source

layout.lisp.

Package

shadow.

Source

program.lisp.

Function: lisp-constant->glsl-constant (constant)
Package

shadow.

Source

common.lisp.

Function: lisp-symbol->glsl-type (symbol)
Package

shadow.

Source

common.lisp.

Function: make-block (program layout)
Package

shadow.

Source

blocks.lisp.

Function: make-layout (uniform)
Package

shadow.

Source

layout.lisp.

Function: make-layout-member (layout data)
Package

shadow.

Source

layout.lisp.

Function: make-stage (version primitive stage-spec)
Package

shadow.

Source

stages.lisp.

Function: maybe-load-shaders (programs-list)
Package

shadow.

Source

shadow.lisp.

Function: meta (key)
Package

shadow.

Source

shadow.lisp.

Function: (setf meta) (key)
Package

shadow.

Source

shadow.lisp.

Function: pack-block (layout)
Package

shadow.

Source

packing.lisp.

Function: pack-container (type)
Package

shadow.

Source

packing.lisp.

Function: pack-layout (layout)
Package

shadow.

Source

packing.lisp.

Function: pack-struct (struct)
Package

shadow.

Source

packing.lisp.

Function: pack-type (type)
Package

shadow.

Source

packing.lisp.

Function: parts->string (parts &optional filter)
Package

shadow.

Source

common.lisp.

Function: rebind-blocks (programs)

Rebind all blocks that are members of PROGRAMS.

Package

shadow.

Source

blocks.lisp.

Function: reset-program-state ()
Package

shadow.

Source

shadow.lisp.

Function: set-modify-hook (function)

Specify a function to be called when shader programs need to be updated.

Package

shadow.

Source

program.lisp.

Function: stage-type (stage)
Package

shadow.

Source

stages.lisp.

Function: stage-type->shader-type (stage-type)
Package

shadow.

Source

stages.lisp.

Function: store-attribute-locations (program)
Package

shadow.

Source

attributes.lisp.

Function: store-attributes (program)
Package

shadow.

Source

attributes.lisp.

Function: store-blocks (program stage)
Package

shadow.

Source

blocks.lisp.

Function: store-function-dependencies (spec dependencies)
Package

shadow.

Source

functions.lisp.

Function: store-source (program stage)
Package

shadow.

Source

shadow.lisp.

Function: store-stage-program-dependencies (program)
Package

shadow.

Source

program.lisp.

Function: store-uniform-locations (program)
Package

shadow.

Source

uniforms.lisp.

Function: store-uniforms (program)
Package

shadow.

Source

uniforms.lisp.

Function: translate-program (program)
Package

shadow.

Source

program.lisp.

Function: translate-shader-programs (program-list)

Re-translate a collection of shader programs.

Package

shadow.

Source

program.lisp.

Function: translate-stages (version primitive stage-specs)
Package

shadow.

Source

stages.lisp.

Function: unpack-type (layout-type type)
Package

shadow.

Source

packing.lisp.


5.2.4 Generic functions

Generic Reader: attributes (object)
Package

shadow.

Methods
Reader Method: attributes ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%attributes.

Generic Reader: binding-point (object)
Package

shadow.

Methods
Reader Method: binding-point ((shader-block shader-block))

automatically generated reader method

Source

blocks.lisp.

Target Slot

%binding-point.

Generic Reader: block-type (object)
Package

shadow.

Methods
Reader Method: block-type ((shader-block shader-block))

automatically generated reader method

Source

blocks.lisp.

Target Slot

%type.

Generic Reader: blocks (object)
Package

shadow.

Methods
Reader Method: blocks ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%blocks.

Generic Reader: byte-stride (object)
Package

shadow.

Methods
Reader Method: byte-stride ((layout-member layout-member))

automatically generated reader method

Source

layout.lisp.

Target Slot

%byte-stride.

Generic Reader: dimensions (object)
Package

shadow.

Methods
Reader Method: dimensions ((layout-member layout-member))

automatically generated reader method

Source

layout.lisp.

Target Slot

%dimensions.

Generic Reader: element-count (object)
Package

shadow.

Methods
Reader Method: element-count ((layout-member layout-member))

automatically generated reader method

Source

layout.lisp.

Target Slot

%count.

Generic Reader: element-stride (object)
Package

shadow.

Methods
Reader Method: element-stride ((layout-member layout-member))

automatically generated reader method

Source

layout.lisp.

Target Slot

%element-stride.

Generic Reader: element-type (object)
Package

shadow.

Methods
Reader Method: element-type ((layout-member layout-member))

automatically generated reader method

Source

layout.lisp.

Target Slot

%element-type.

Generic Function: get-qualifiers (type)
Package

shadow.

Source

common.lisp.

Methods
Method: get-qualifiers ((type v-type))
Method: get-qualifiers ((type shader-variable))
Generic Function: get-uniform-data (type parts)
Package

shadow.

Source

uniforms.lisp.

Methods
Method: get-uniform-data ((type v-array) parts)
Method: get-uniform-data ((type v-user-struct) parts)
Method: get-uniform-data (type parts)
Generic Reader: id (object)
Package

shadow.

Methods
Reader Method: id ((shader-buffer shader-buffer))

automatically generated reader method

Source

buffers.lisp.

Target Slot

%id.

Reader Method: id ((shader-block shader-block))

automatically generated reader method

Source

blocks.lisp.

Target Slot

%id.

Reader Method: id ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%id.

Generic Reader: layout (object)
Package

shadow.

Methods
Reader Method: layout ((shader-buffer shader-buffer))

automatically generated reader method

Source

buffers.lisp.

Target Slot

%layout.

Reader Method: layout ((shader-block shader-block))

automatically generated reader method

Source

blocks.lisp.

Target Slot

%layout.

Generic Reader: layout-type (object)
Package

shadow.

Methods
Reader Method: layout-type ((layout layout))

automatically generated reader method

Source

layout.lisp.

Target Slot

%type.

Generic Reader: members (object)
Package

shadow.

Methods
Reader Method: members ((layout layout))

automatically generated reader method

Source

layout.lisp.

Target Slot

%members.

Generic Reader: name (object)
Package

shadow.

Methods
Reader Method: name ((shader-block shader-block))

automatically generated reader method

Source

blocks.lisp.

Target Slot

%name.

Reader Method: name ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%name.

Generic Reader: object-type (object)
Package

shadow.

Methods
Reader Method: object-type ((layout-member layout-member))

automatically generated reader method

Source

layout.lisp.

Target Slot

%type.

Generic Reader: offset (object)
Package

shadow.

Methods
Reader Method: offset ((layout-member layout-member))

automatically generated reader method

Source

layout.lisp.

Target Slot

%offset.

Generic Reader: primitive (object)
Package

shadow.

Methods
Reader Method: primitive ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%primitive.

Generic Reader: size (object)
Package

shadow.

Methods
Reader Method: size ((layout layout))

automatically generated reader method

Source

layout.lisp.

Target Slot

%size.

Generic Writer: (setf size) (object)
Package

shadow.

Methods
Writer Method: (setf size) ((layout layout))

automatically generated writer method

Source

layout.lisp.

Target Slot

%size.

Generic Reader: source (object)
Package

shadow.

Methods
Reader Method: source ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%source.

Generic Reader: stage-specs (object)
Package

shadow.

Methods
Reader Method: stage-specs ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%stage-specs.

Generic Reader: target (object)
Package

shadow.

Methods
Reader Method: target ((shader-buffer shader-buffer))

automatically generated reader method

Source

buffers.lisp.

Target Slot

%target.

Generic Reader: translated-stages (object)
Package

shadow.

Methods
Reader Method: translated-stages ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%translated-stages.

Generic Reader: uniform (object)
Package

shadow.

Methods
Reader Method: uniform ((layout layout))

automatically generated reader method

Source

layout.lisp.

Target Slot

%uniform.

Generic Reader: version (object)
Package

shadow.

Methods
Reader Method: version ((program program))

automatically generated reader method

Source

program.lisp.

Target Slot

%version.


5.2.5 Classes

Class: layout
Package

shadow.

Source

layout.lisp.

Direct methods
Direct slots
Slot: %type
Initargs

:type

Readers

layout-type.

Writers

This slot is read-only.

Slot: %size
Readers

size.

Writers

(setf size).

Slot: %members
Initform

(mfiano-utils:dict (function eq))

Readers

members.

Writers

This slot is read-only.

Slot: %uniform
Initargs

:uniform

Readers

uniform.

Writers

This slot is read-only.

Class: layout-member
Package

shadow.

Source

layout.lisp.

Direct methods
Direct slots
Slot: %element-type
Initargs

:element-type

Readers

element-type.

Writers

This slot is read-only.

Slot: %element-stride
Initargs

:element-stride

Readers

element-stride.

Writers

This slot is read-only.

Slot: %byte-stride
Initargs

:byte-stride

Readers

byte-stride.

Writers

This slot is read-only.

Slot: %dimensions
Initargs

:dimensions

Readers

dimensions.

Writers

This slot is read-only.

Slot: %offset
Initargs

:offset

Readers

offset.

Writers

This slot is read-only.

Slot: %count
Initargs

:count

Readers

element-count.

Writers

This slot is read-only.

Slot: %type
Initargs

:type

Readers

object-type.

Writers

This slot is read-only.

Class: shader-block
Package

shadow.

Source

blocks.lisp.

Direct methods
Direct slots
Slot: %id
Initargs

:id

Readers

id.

Writers

This slot is read-only.

Slot: %name
Initargs

:name

Readers

name.

Writers

This slot is read-only.

Slot: %type
Initargs

:type

Readers

block-type.

Writers

This slot is read-only.

Slot: %layout
Initargs

:layout

Readers

layout.

Writers

This slot is read-only.

Slot: %program
Initargs

:program

Readers

program.

Writers

This slot is read-only.

Slot: %binding-point
Initform

0

Readers

binding-point.

Writers

This slot is read-only.

Class: shader-buffer
Package

shadow.

Source

buffers.lisp.

Direct methods
Direct slots
Slot: %id
Initform

(cl-opengl:gen-buffer)

Readers

id.

Writers

This slot is read-only.

Slot: %name
Initargs

:name

Readers

buffer-name.

Writers

This slot is read-only.

Slot: %target
Initargs

:target

Readers

target.

Writers

This slot is read-only.

Slot: %layout
Initargs

:layout

Readers

layout.

Writers

This slot is read-only.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   E   F   G   H   I   L   M   N   O   P   R   S   T   U   V   W  
Index Entry  Section

%
%bind-block/buffer: Private ordinary functions
%bind-block/uniform: Private ordinary functions
%find-block: Private ordinary functions
%make-buffer: Private ordinary functions
%make-shader-program: Private ordinary functions
%read-buffer-member: Private ordinary functions
%read-buffer-member/matrix: Private ordinary functions
%read-buffer-member/scalar: Private ordinary functions
%read-buffer-member/vector: Private ordinary functions
%uniform-array: Private macros
%write-buffer-member: Private ordinary functions
%write-buffer-member/matrix: Private ordinary functions

(
(setf meta): Private ordinary functions
(setf size): Private generic functions
(setf size): Private generic functions

A
attributes: Private generic functions
attributes: Private generic functions

B
bind-block: Public ordinary functions
bind-buffer: Public ordinary functions
binding-point: Private generic functions
binding-point: Private generic functions
block-binding-valid-p: Private ordinary functions
block-type: Private generic functions
block-type: Private generic functions
block-type->buffer-type: Private ordinary functions
blocks: Private generic functions
blocks: Private generic functions
buffer-name: Public generic functions
buffer-name: Public generic functions
buffer-type->block-type: Private ordinary functions
buffer-type->target: Private ordinary functions
build-shader-dictionary: Public ordinary functions
build-shader-program: Public ordinary functions
build-shader-programs: Private ordinary functions
byte-stride: Private generic functions
byte-stride: Private generic functions

C
clear-buffer: Public ordinary functions
collect-layout-structs: Private ordinary functions
collect-layouts: Private ordinary functions
compile-stages: Private ordinary functions
compute-outdated-programs: Private ordinary functions
create-block-alias: Public ordinary functions
create-buffer: Public ordinary functions

D
define-shader: Public macros
defmacro: Public macros
defstruct: Public macros
defun: Public macros
delete-block-alias: Private ordinary functions
delete-buffer: Public ordinary functions
dimensions: Private generic functions
dimensions: Private generic functions
disable-dependency-tracking: Private ordinary functions

E
element-count: Private generic functions
element-count: Private generic functions
element-stride: Private generic functions
element-stride: Private generic functions
element-type: Private generic functions
element-type: Private generic functions
enable-dependency-tracking: Private ordinary functions
ensure-function-dependency-tables: Private ordinary functions
ensure-keyword: Private ordinary functions

F
find-block: Public ordinary functions
find-buffer: Public ordinary functions
find-gpu-function: Private ordinary functions
find-program: Public ordinary functions
find-shader-definition: Public ordinary functions
Function, %bind-block/buffer: Private ordinary functions
Function, %bind-block/uniform: Private ordinary functions
Function, %find-block: Private ordinary functions
Function, %make-buffer: Private ordinary functions
Function, %make-shader-program: Private ordinary functions
Function, %read-buffer-member: Private ordinary functions
Function, %read-buffer-member/matrix: Private ordinary functions
Function, %read-buffer-member/scalar: Private ordinary functions
Function, %read-buffer-member/vector: Private ordinary functions
Function, %write-buffer-member: Private ordinary functions
Function, %write-buffer-member/matrix: Private ordinary functions
Function, (setf meta): Private ordinary functions
Function, bind-block: Public ordinary functions
Function, bind-buffer: Public ordinary functions
Function, block-binding-valid-p: Private ordinary functions
Function, block-type->buffer-type: Private ordinary functions
Function, buffer-type->block-type: Private ordinary functions
Function, buffer-type->target: Private ordinary functions
Function, build-shader-dictionary: Public ordinary functions
Function, build-shader-program: Public ordinary functions
Function, build-shader-programs: Private ordinary functions
Function, clear-buffer: Public ordinary functions
Function, collect-layout-structs: Private ordinary functions
Function, collect-layouts: Private ordinary functions
Function, compile-stages: Private ordinary functions
Function, compute-outdated-programs: Private ordinary functions
Function, create-block-alias: Public ordinary functions
Function, create-buffer: Public ordinary functions
Function, delete-block-alias: Private ordinary functions
Function, delete-buffer: Public ordinary functions
Function, disable-dependency-tracking: Private ordinary functions
Function, enable-dependency-tracking: Private ordinary functions
Function, ensure-function-dependency-tables: Private ordinary functions
Function, ensure-keyword: Private ordinary functions
Function, find-block: Public ordinary functions
Function, find-buffer: Public ordinary functions
Function, find-gpu-function: Private ordinary functions
Function, find-program: Public ordinary functions
Function, find-shader-definition: Public ordinary functions
Function, get-block-type: Private ordinary functions
Function, get-function-spec: Private ordinary functions
Function, get-layout-type: Private ordinary functions
Function, get-program-id: Public ordinary functions
Function, get-uniform-location: Private ordinary functions
Function, has-qualifier-p: Private ordinary functions
Function, layout-struct-p: Private ordinary functions
Function, link-program: Private ordinary functions
Function, lisp-constant->glsl-constant: Private ordinary functions
Function, lisp-symbol->glsl-type: Private ordinary functions
Function, load-shaders: Public ordinary functions
Function, make-block: Private ordinary functions
Function, make-layout: Private ordinary functions
Function, make-layout-member: Private ordinary functions
Function, make-stage: Private ordinary functions
Function, maybe-load-shaders: Private ordinary functions
Function, meta: Private ordinary functions
Function, pack-block: Private ordinary functions
Function, pack-container: Private ordinary functions
Function, pack-layout: Private ordinary functions
Function, pack-struct: Private ordinary functions
Function, pack-type: Private ordinary functions
Function, parts->string: Private ordinary functions
Function, read-buffer-path: Public ordinary functions
Function, rebind-blocks: Private ordinary functions
Function, recompile-shaders: Public ordinary functions
Function, reset-program-state: Private ordinary functions
Function, set-modify-hook: Private ordinary functions
Function, stage-type: Private ordinary functions
Function, stage-type->shader-type: Private ordinary functions
Function, store-attribute-locations: Private ordinary functions
Function, store-attributes: Private ordinary functions
Function, store-blocks: Private ordinary functions
Function, store-function-dependencies: Private ordinary functions
Function, store-source: Private ordinary functions
Function, store-stage-program-dependencies: Private ordinary functions
Function, store-uniform-locations: Private ordinary functions
Function, store-uniforms: Private ordinary functions
Function, translate-program: Private ordinary functions
Function, translate-shader-programs: Private ordinary functions
Function, translate-stages: Private ordinary functions
Function, unbind-block: Public ordinary functions
Function, unbind-buffer: Public ordinary functions
Function, uniform-bool: Public ordinary functions
Function, uniform-bool-array: Public ordinary functions
Function, uniform-float: Public ordinary functions
Function, uniform-float-array: Public ordinary functions
Function, uniform-int: Public ordinary functions
Function, uniform-int-array: Public ordinary functions
Function, uniform-mat2: Public ordinary functions
Function, uniform-mat2-array: Public ordinary functions
Function, uniform-mat3: Public ordinary functions
Function, uniform-mat3-array: Public ordinary functions
Function, uniform-mat4: Public ordinary functions
Function, uniform-mat4-array: Public ordinary functions
Function, uniform-vec2: Public ordinary functions
Function, uniform-vec2-array: Public ordinary functions
Function, uniform-vec3: Public ordinary functions
Function, uniform-vec3-array: Public ordinary functions
Function, uniform-vec4: Public ordinary functions
Function, uniform-vec4-array: Public ordinary functions
Function, unload-shaders: Public ordinary functions
Function, unpack-type: Private ordinary functions
Function, view-source: Public ordinary functions
Function, write-buffer-path: Public ordinary functions

G
Generic Function, (setf size): Private generic functions
Generic Function, attributes: Private generic functions
Generic Function, binding-point: Private generic functions
Generic Function, block-type: Private generic functions
Generic Function, blocks: Private generic functions
Generic Function, buffer-name: Public generic functions
Generic Function, byte-stride: Private generic functions
Generic Function, dimensions: Private generic functions
Generic Function, element-count: Private generic functions
Generic Function, element-stride: Private generic functions
Generic Function, element-type: Private generic functions
Generic Function, get-qualifiers: Private generic functions
Generic Function, get-uniform-data: Private generic functions
Generic Function, id: Private generic functions
Generic Function, layout: Private generic functions
Generic Function, layout-type: Private generic functions
Generic Function, members: Private generic functions
Generic Function, name: Private generic functions
Generic Function, object-type: Private generic functions
Generic Function, offset: Private generic functions
Generic Function, primitive: Private generic functions
Generic Function, program: Public generic functions
Generic Function, size: Private generic functions
Generic Function, source: Private generic functions
Generic Function, stage-specs: Private generic functions
Generic Function, target: Private generic functions
Generic Function, translated-stages: Private generic functions
Generic Function, uniform: Private generic functions
Generic Function, uniforms: Public generic functions
Generic Function, version: Private generic functions
get-block-type: Private ordinary functions
get-function-spec: Private ordinary functions
get-layout-type: Private ordinary functions
get-program-id: Public ordinary functions
get-qualifiers: Private generic functions
get-qualifiers: Private generic functions
get-qualifiers: Private generic functions
get-uniform-data: Private generic functions
get-uniform-data: Private generic functions
get-uniform-data: Private generic functions
get-uniform-data: Private generic functions
get-uniform-location: Private ordinary functions

H
has-qualifier-p: Private ordinary functions

I
id: Private generic functions
id: Private generic functions
id: Private generic functions
id: Private generic functions

L
layout: Private generic functions
layout: Private generic functions
layout: Private generic functions
layout-struct-p: Private ordinary functions
layout-type: Private generic functions
layout-type: Private generic functions
link-program: Private ordinary functions
lisp-constant->glsl-constant: Private ordinary functions
lisp-symbol->glsl-type: Private ordinary functions
load-shaders: Public ordinary functions

M
Macro, %uniform-array: Private macros
Macro, define-shader: Public macros
Macro, defmacro: Public macros
Macro, defstruct: Public macros
Macro, defun: Public macros
Macro, with-shader: Public macros
make-block: Private ordinary functions
make-layout: Private ordinary functions
make-layout-member: Private ordinary functions
make-stage: Private ordinary functions
maybe-load-shaders: Private ordinary functions
members: Private generic functions
members: Private generic functions
meta: Private ordinary functions
Method, (setf size): Private generic functions
Method, attributes: Private generic functions
Method, binding-point: Private generic functions
Method, block-type: Private generic functions
Method, blocks: Private generic functions
Method, buffer-name: Public generic functions
Method, byte-stride: Private generic functions
Method, dimensions: Private generic functions
Method, element-count: Private generic functions
Method, element-stride: Private generic functions
Method, element-type: Private generic functions
Method, get-qualifiers: Private generic functions
Method, get-qualifiers: Private generic functions
Method, get-uniform-data: Private generic functions
Method, get-uniform-data: Private generic functions
Method, get-uniform-data: Private generic functions
Method, id: Private generic functions
Method, id: Private generic functions
Method, id: Private generic functions
Method, layout: Private generic functions
Method, layout: Private generic functions
Method, layout-type: Private generic functions
Method, members: Private generic functions
Method, name: Private generic functions
Method, name: Private generic functions
Method, object-type: Private generic functions
Method, offset: Private generic functions
Method, primitive: Private generic functions
Method, print-object: Public standalone methods
Method, program: Public generic functions
Method, size: Private generic functions
Method, source: Private generic functions
Method, stage-specs: Private generic functions
Method, target: Private generic functions
Method, translated-stages: Private generic functions
Method, uniform: Private generic functions
Method, uniforms: Public generic functions
Method, version: Private generic functions

N
name: Private generic functions
name: Private generic functions
name: Private generic functions

O
object-type: Private generic functions
object-type: Private generic functions
offset: Private generic functions
offset: Private generic functions

P
pack-block: Private ordinary functions
pack-container: Private ordinary functions
pack-layout: Private ordinary functions
pack-struct: Private ordinary functions
pack-type: Private ordinary functions
parts->string: Private ordinary functions
primitive: Private generic functions
primitive: Private generic functions
print-object: Public standalone methods
program: Public generic functions
program: Public generic functions

R
read-buffer-path: Public ordinary functions
rebind-blocks: Private ordinary functions
recompile-shaders: Public ordinary functions
reset-program-state: Private ordinary functions

S
set-modify-hook: Private ordinary functions
size: Private generic functions
size: Private generic functions
source: Private generic functions
source: Private generic functions
stage-specs: Private generic functions
stage-specs: Private generic functions
stage-type: Private ordinary functions
stage-type->shader-type: Private ordinary functions
store-attribute-locations: Private ordinary functions
store-attributes: Private ordinary functions
store-blocks: Private ordinary functions
store-function-dependencies: Private ordinary functions
store-source: Private ordinary functions
store-stage-program-dependencies: Private ordinary functions
store-uniform-locations: Private ordinary functions
store-uniforms: Private ordinary functions

T
target: Private generic functions
target: Private generic functions
translate-program: Private ordinary functions
translate-shader-programs: Private ordinary functions
translate-stages: Private ordinary functions
translated-stages: Private generic functions
translated-stages: Private generic functions

U
unbind-block: Public ordinary functions
unbind-buffer: Public ordinary functions
uniform: Private generic functions
uniform: Private generic functions
uniform-bool: Public ordinary functions
uniform-bool-array: Public ordinary functions
uniform-float: Public ordinary functions
uniform-float-array: Public ordinary functions
uniform-int: Public ordinary functions
uniform-int-array: Public ordinary functions
uniform-mat2: Public ordinary functions
uniform-mat2-array: Public ordinary functions
uniform-mat3: Public ordinary functions
uniform-mat3-array: Public ordinary functions
uniform-mat4: Public ordinary functions
uniform-mat4-array: Public ordinary functions
uniform-vec2: Public ordinary functions
uniform-vec2-array: Public ordinary functions
uniform-vec3: Public ordinary functions
uniform-vec3-array: Public ordinary functions
uniform-vec4: Public ordinary functions
uniform-vec4-array: Public ordinary functions
uniforms: Public generic functions
uniforms: Public generic functions
unload-shaders: Public ordinary functions
unpack-type: Private ordinary functions

V
version: Private generic functions
version: Private generic functions
view-source: Public ordinary functions

W
with-shader: Public macros
write-buffer-path: Public ordinary functions


A.3 Variables

Jump to:   %   *  
S  
Index Entry  Section

%
%attributes: Public classes
%binding-point: Private classes
%blocks: Public classes
%byte-stride: Private classes
%count: Private classes
%dimensions: Private classes
%element-stride: Private classes
%element-type: Private classes
%id: Public classes
%id: Private classes
%id: Private classes
%layout: Private classes
%layout: Private classes
%members: Private classes
%name: Public classes
%name: Private classes
%name: Private classes
%offset: Private classes
%primitive: Public classes
%program: Private classes
%size: Private classes
%source: Public classes
%stage-specs: Public classes
%target: Private classes
%translated-stages: Public classes
%type: Private classes
%type: Private classes
%type: Private classes
%uniform: Private classes
%uniforms: Public classes
%version: Public classes

*
*metadata*: Private special variables

S
Slot, %attributes: Public classes
Slot, %binding-point: Private classes
Slot, %blocks: Public classes
Slot, %byte-stride: Private classes
Slot, %count: Private classes
Slot, %dimensions: Private classes
Slot, %element-stride: Private classes
Slot, %element-type: Private classes
Slot, %id: Public classes
Slot, %id: Private classes
Slot, %id: Private classes
Slot, %layout: Private classes
Slot, %layout: Private classes
Slot, %members: Private classes
Slot, %name: Public classes
Slot, %name: Private classes
Slot, %name: Private classes
Slot, %offset: Private classes
Slot, %primitive: Public classes
Slot, %program: Private classes
Slot, %size: Private classes
Slot, %source: Public classes
Slot, %stage-specs: Public classes
Slot, %target: Private classes
Slot, %translated-stages: Public classes
Slot, %type: Private classes
Slot, %type: Private classes
Slot, %type: Private classes
Slot, %uniform: Private classes
Slot, %uniforms: Public classes
Slot, %version: Public classes
Special Variable, *metadata*: Private special variables


A.4 Data types

Jump to:   A   B   C   F   G   L   P   S   U  
Index Entry  Section

A
attributes.lisp: The shadow/attributes․lisp file

B
blocks.lisp: The shadow/blocks․lisp file
buffers.lisp: The shadow/buffers․lisp file

C
Class, layout: Private classes
Class, layout-member: Private classes
Class, program: Public classes
Class, shader-block: Private classes
Class, shader-buffer: Private classes
common.lisp: The shadow/common․lisp file

F
File, attributes.lisp: The shadow/attributes․lisp file
File, blocks.lisp: The shadow/blocks․lisp file
File, buffers.lisp: The shadow/buffers․lisp file
File, common.lisp: The shadow/common․lisp file
File, functions.lisp: The shadow/functions․lisp file
File, glsl.lisp: The shadow/glsl․lisp file
File, layout.lisp: The shadow/layout․lisp file
File, package.lisp: The shadow/package․lisp file
File, packing.lisp: The shadow/packing․lisp file
File, program.lisp: The shadow/program․lisp file
File, shadow.asd: The shadow/shadow․asd file
File, shadow.lisp: The shadow/shadow․lisp file
File, stages.lisp: The shadow/stages․lisp file
File, uniforms.lisp: The shadow/uniforms․lisp file
functions.lisp: The shadow/functions․lisp file

G
glsl.lisp: The shadow/glsl․lisp file

L
layout: Private classes
layout-member: Private classes
layout.lisp: The shadow/layout․lisp file

P
Package, shadow: The shadow package
Package, shadow.glsl: The shadow․glsl package
package.lisp: The shadow/package․lisp file
packing.lisp: The shadow/packing․lisp file
program: Public classes
program.lisp: The shadow/program․lisp file

S
shader-block: Private classes
shader-buffer: Private classes
shadow: The shadow system
shadow: The shadow package
shadow.asd: The shadow/shadow․asd file
shadow.glsl: The shadow․glsl package
shadow.lisp: The shadow/shadow․lisp file
stages.lisp: The shadow/stages․lisp file
System, shadow: The shadow system

U
uniforms.lisp: The shadow/uniforms․lisp file