The net.mfiano.lisp.shadow Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The net.mfiano.lisp.shadow Reference Manual

This is the net.mfiano.lisp.shadow Reference Manual, generated automatically by Declt version 3.0 "Montgomery Scott" on Fri Jun 26 12:13:14 2020 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

shadow

A lispy system for defining OpenGL shader programs and associated buffer objects.

Overview

Under the hood, Shadow is just a wrapper around the Varjo library used for writing shader programs, and some fluff to allow referencing shader programs by name, querying for basic information about them, modifying uniform variables throughout the lifecycle of an OpenGL application, and managing certain OpenGL buffer object types (UBO, SSBO currently).

The goal of Shadow is to be a simple solution to ease the task of writing and managing OpenGL shader programs and associated buffers.

Install

(ql:quickload :net.mfiano.lisp.shadow)

Usage

Basic Usage

Using Shadow is not very straightforward, mostly due to the borrowing of the "Vari" language used to write shader programs, which does not have much documentation. It does however try to stay familiar and resembles Common Lisp. Additionally, there are several videos of Vari's usage created by its author.

Shader programs are written using a series of DEFUN and DEFSTRUCT forms representing GPU functions and structures respectively. DEFUN and DEFSTRUCT are special CL-like macros that live in the SHADOW.GLSL package. As mentioned, their bodies follow the language rules of "Vari", which is not documented here. All shaders written should be in a dedicated package you create that :USEs :SHADOW.GLSL. This is a special package that takes care of shadowing the CL symbols and exporting all the required symbols for writing shaders. It is not recommended to mix CL code and shader code in the same package, to prevent having to fully-qualify CL:DEFUN everywhere. Please use a dedicated package for writing your shaders which :USEs :SHADOW.GLSL.

Each DEFUN defines a shader stage or auxillary function thereof. It takes in input arguments and uniform variables, and sends its return values to the next stage of the shader pipeline as input arguments. The vertex stage's input arguments correspond to your Vertex Array Object attributes.

A simple OpenGL shader program:

(defun foo-vert ((position :vec3) (uv :vec2) &uniforms (mvp :mat4))
  (values (* mvp (vec4 position 1))
          (vec4 1 0 0 1)))

(defun foo-frag ((color :vec4))
  (values color))

This defines 2 GPU functions, foo-vert and foo-frag that will serve as a very simple program once translated and compiled.

To use this program it first must be translated from the Lisp-like "Vari" language, into GLSL. This is done with the DEFINE-SHADER macro:

(define-shader example-program (:version 330 :primitive :points)
  (:vertex (foo-vert :vec3 :vec2))
  (:fragment (foo-frag :vec4)))

Above, we call DEFINE-SHADER with a name to call our program, EXAMPLE-PROGRAM, the default stage version to use, :version 330, and the OpenGL drawing primitive the vertex stage should use, :primitive :points, followed by a sequence of "stage-specs" of the form: (stage-type function-spec):

stage-type may be one of: :vertex, :tessellation-control, :tessellation-evaluation, :geometry, :fragment, or :compute.

func-spec specifies which DEFUN function to use for this stage, and is a list consisting of the function name followed by the types of all of its input arguments. The types are important because the "Vari" shader language allows the same function name to exist with different signatures, so you must be explicit in which function you want to translate to GLSL.

Issuing the call to DEFINE-SHADER produces a PROGRAM object, which includes some useful information:

The VIEW-SOURCE function can be used to retrieve the translated Varo -> GLSL source for a given program and stage type:

(define-shader ...)

(view-source * :vertex)

#|
"#version 330

layout(location = 0)  in vec3 POSITION;
layout(location = 1)  in vec2 UV;

out _FROM_VERTEX_STAGE_
{
     out vec4 _VERTEX_STAGE_OUT_1;
} v_out;

uniform mat4 MVP;

void main()
{
    gl_Position = (MVP * vec4(POSITION,float(1)));
    v_out._VERTEX_STAGE_OUT_1 = vec4(float(1),float(0),float(0),float(1));
    return;
}"
T
|#

(view-source ** :fragment)

#|
"#version 330

in _FROM_VERTEX_STAGE_
{
     in vec4 _VERTEX_STAGE_OUT_1;
} v_in;

layout(location = 0)  out vec4 _FRAGMENT_STAGE_OUT_0;

void main()
{
    _FRAGMENT_STAGE_OUT_0 = v_in._VERTEX_STAGE_OUT_1;
    return;
}"
T
|#

As can be seen by the GLSL source, our vertex stage function is properly making use of the VALUES form. It takes the first value for itself, setting gl_Position, and passes all subsequent values as input arguments to the fragment stage, (vec4 1 0 0 1), which takes that for itself as the final fragment color of the pipeline.

So far, we have only translated the "Vari" shader language into the GLSL language understood by OpenGL. We still have to compile the shader stages and link the final program object on the GPU.

At this point, a valid OpenGL context is needed to continue.

To compile a program's stages and link them into a program, you can use the BUILD-SHADER-PROGRAM function:

(build-shader-program 'example-program)

This will compile all of the stages previously translated to GLSL in our EXAMPLE-PROGRAM program, and link it into a program object on the GPU. This returns a non-zero integer on success.

Alternatively, you can compile and link all GLSL translated programs in one shot, by using the BUILD-SHADER-DICTIONARY function, which takes no arguments and returns a hash table of all program objects keyed by name.

LOAD-SHADERS can be used to automatically build all shader programs in Shadow's registry as well. With LOAD-SHADERS, it takes 1 argument, which is a function. This user-supplied function, which can be a LAMBDA takes a single argument which when called will be the list of shader programs affected when a function is recompiled with C-c C-c. You can use this to automatically update shaders while your program is running to see visual changes instantly. However, this requires some effort on your part, because SLIME (and the Sly fork) recompiles forms in a separate compilation thread when you C-c C-c. This is problematic because you must recompile shader programs on the same thread as your OpenGL context. To get around this, you can do something like the following:

In your project's initialization step, load all shaders passing in a custom function which pushes things to a thread-safe queue:

(defun initialize-my-shaders (my-queue)
  (let ((modify-hook (lambda (queue-enqueue my-queue x))))
    (shadow:load-shaders modify-hook)))

Then periodically, you can dequeue items off of this queue. An item on the queue is a list of programs that need to be recompiled, and the RECOMPILE-SHADERS function expects such a list of program names and does the recompiling:

(defun recompile-my-shaders (my-queue)
  (loop :while (queue-peek my-queue)
        :for programs = (queue-dequeue my-queue)
        :do (shadow:recompile-shaders programs)))

Shadow itself does not do this, nor does it have a thread-safe queue implementation. You'll have to use a library such as queues or lparallel for that. However, it's pretty easy as you can see above, and doing this will be extremely valuable, as you'll be able to see your GPU modifications instantly while your project is running without the downtime of having to restart after every minor change.

After compiling shaders, the only thing left to do, is make use of the shader program to do your rendering. This is done by issuing calls to the various UNIFORM-* functions within the body of the WITH-SHADER macro:

(with-shader 'example-program
  (uniform-mat4 :mvp *matrix*))

Here, we specify that we want to use EXAMPLE-PROGRAM during rendering, modifying a single 4x4 matrix uniform value. Here *matrix* refers to an imaginary matrix that you should have created for the object you wish to render. There are quite a few UNIFORM-* functions, and the full list can be viewed in the package's exported symbols. Note that each uniform function takes the name of a uniform variable as a keyword symbol, followed by the value to modify it with.

UBO/SSBO Support

Shadow also includes support for uniform buffer objects (UBO's) and shader storage buffer objects (SSBO's).

A buffer-backed interface block in Shadow is implemented as a struct with DEFSTRUCT. Anytime a particular shader function wishes to read or write to this buffer, it must be specified in that function's signature using the &uniforms part of its lambda list. To do this, you must know the name of the struct, whether you want to access a UBO or SSBO buffer, and the packing layout of that buffer (std140 or std430). For example, this function binds the symbol var using the previously defined struct, foo-block, which will be later filled as an SSBO using the layout rules of the std430 specification:

(defun foo (&uniforms (var foo-block :ssbo :std430)
  ...))

This special uniform syntax must be present for each function that needs to access a buffer.

Creating block aliases

On the CPU side, we can create aliases for blocks. This is useful, because the same block name can refer to multiple blocks, even in the context of the same shader program. To create a block alias, use CREATE-BLOCK-ALIAS:

(create-block-alias <block-type> <block-id> <program-name> <block-alias>)

Deleting block aliases

It may be useful to delete a block alias. You can do so using DELETE-BLOCK-ALIAS:

(delete-block-alias <block-alias> &key unbind-block)

Referencing Blocks

To find a block object in Shadow's state, you can use FIND-BLOCK:

(find-block <block-alias>)

Binding Blocks

A block must be bound to a "binding point" for use. A buffer is then bound to this same binding point to associate them with each other. To bind a block to a binding point, use BIND-BLOCK:

(bind-block <block-alias> <binding-point>)

Unbinding Blocks

To disassociate a block from a binding point, use UNBIND-BLOCK:

(unbind-block <block-alias>)

Creating Buffers

To create a buffer, you first need to create a block alias as per the above instructions. You can then create a buffer which uses the layout of a particular block, using CREATE-BUFFER:

(create-buffer <buffer-name> <block-alias>)

Binding Buffers

To bind a buffer to a binding point, use BIND-BUFFER:

(bind-buffer <buffer-name> <binding-point>)

Unbinding Buffers

To disassociate a buffer from a binding point, use UNBIND-BUFFER:

(unbind-buffer <buffer-name>)

Deleting Buffers

(delete-buffer <buffer-name>)

License

Copyright © 2018-2020 Michael Fiano mail@mfiano.net.

Licensed under the MIT License.


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

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


Previous: , Up: Systems   [Contents][Index]

2.1 net.mfiano.lisp.shadow

Author

Michael Fiano <mail@mfiano.net>

Home Page

https://mfiano.net/projects/shadow

Source Control

(:git "https://github.com/mfiano/shadow")

Bug Tracker

https://github.com/mfiano/shadow/issues

License

MIT

Description

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

Dependencies
Source

net.mfiano.lisp.shadow.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

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


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 net.mfiano.lisp.shadow.asd

Location

/home/quickref/quicklisp/dists/quicklisp/software/shadow-20200610-git/net.mfiano.lisp.shadow.asd

Systems

net.mfiano.lisp.shadow (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 net.mfiano.lisp.shadow/package.lisp

Parent

net.mfiano.lisp.shadow (system)

Location

package.lisp

Packages

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 net.mfiano.lisp.shadow/shadow.lisp

Dependency

package.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

shadow.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 net.mfiano.lisp.shadow/common.lisp

Dependency

shadow.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

common.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 net.mfiano.lisp.shadow/functions.lisp

Dependency

common.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

functions.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 net.mfiano.lisp.shadow/stages.lisp

Dependency

functions.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

stages.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.7 net.mfiano.lisp.shadow/program.lisp

Dependency

stages.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

program.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.8 net.mfiano.lisp.shadow/packing.lisp

Dependency

program.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

packing.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.9 net.mfiano.lisp.shadow/attributes.lisp

Dependency

packing.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

attributes.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.10 net.mfiano.lisp.shadow/uniforms.lisp

Dependency

attributes.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

uniforms.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.11 net.mfiano.lisp.shadow/layout.lisp

Dependency

uniforms.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

layout.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.12 net.mfiano.lisp.shadow/blocks.lisp

Dependency

layout.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

blocks.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.13 net.mfiano.lisp.shadow/buffers.lisp

Dependency

blocks.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

buffers.lisp

Exported Definitions
Internal Definitions

Previous: , Up: Lisp files   [Contents][Index]

3.1.14 net.mfiano.lisp.shadow/glsl.lisp

Dependency

buffers.lisp (file)

Parent

net.mfiano.lisp.shadow (system)

Location

glsl.lisp

Exported Definitions

Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

4.1 net.mfiano.lisp.shadow.glsl

Source

package.lisp (file)

Use List
Exported Definitions

Previous: , Up: Packages   [Contents][Index]

4.2 net.mfiano.lisp.shadow

Source

package.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

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


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

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

net.mfiano.lisp.shadow.glsl

Source

glsl.lisp (file)

Macro: defmacro NAME LAMBDA-LIST &body BODY

Define a GPU macro.

Package

net.mfiano.lisp.shadow.glsl

Source

glsl.lisp (file)

Macro: defstruct NAME &body SLOTS

Define a GPU structure.

Package

net.mfiano.lisp.shadow.glsl

Source

glsl.lisp (file)

Macro: defun NAME ARGS &body BODY

Define a GPU function.

Package

net.mfiano.lisp.shadow.glsl

Source

glsl.lisp (file)

Macro: with-shader NAME &body BODY

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

Package

net.mfiano.lisp.shadow

Source

program.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Functions

Function: bind-block BLOCK-ALIAS BINDING-POINT

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

Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: bind-buffer BUFFER-NAME BINDING-POINT

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

Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: clear-buffer BUFFER-NAME
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: create-block-alias BLOCK-TYPE BLOCK-ID PROGRAM-NAME BLOCK-ALIAS
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

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

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: delete-buffer BUFFER-NAME

Delete the buffer having a name of BUFFER-NAME.

Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: find-block BLOCK-ALIAS
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: find-buffer BUFFER-NAME
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: find-program PROGRAM-NAME
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: get-program-id PROGRAM-NAME
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: load-shaders MODIFY-HOOK
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: read-buffer-path BUFFER-NAME PATH &optional COUNT
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: recompile-shaders PROGRAMS-LIST
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: unbind-block BLOCK-ALIAS

Unbind a block with the alias BLOCK-ALIAS.

Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: unbind-buffer BUFFER-NAME

Unbind a buffer with name BUFFER-NAME.

Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: uniform-bool PROGRAM-NAME UNIFORM VALUE
Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-bool-array PROGRAM-NAME UNIFORM VALUE
Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-float PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-float-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-int PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-int-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-mat2 PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-mat2-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-mat3 PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-mat3-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-mat4 PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-mat4-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-vec2 PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-vec2-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-vec3 PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-vec3-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-vec4 PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: uniform-vec4-array PROGRAM-NAME UNIFORM VALUE

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

Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: unload-shaders ()
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: view-source PROGRAM-NAME STAGE
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: write-buffer-path BUFFER-NAME PATH 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

net.mfiano.lisp.shadow

Source

buffers.lisp (file)


Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Generic functions

Generic Function: buffer-name OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: buffer-name (SHADER-BUFFER shader-buffer)

automatically generated reader method

Source

buffers.lisp (file)

Generic Function: uniforms OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: uniforms (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Special variables

Special Variable: *metadata*
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Macros

Macro: %uniform-array LOCATION FUNC COMPONENT-COUNT ELEMENT-TYPE SEQUENCE
Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Functions

Function: %find-block PROGRAM-NAME BLOCK-TYPE BLOCK-ID
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: %make-buffer NAME TARGET LAYOUT
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: %make-shader-program NAME VERSION PRIMITIVE STAGE-SPECS
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: %read-buffer-member TARGET MEMBER &optional COUNT
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: %read-buffer-member/matrix MEMBER DATA COUNT
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: %read-buffer-member/scalar MEMBER DATA COUNT
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: %read-buffer-member/vector MEMBER DATA COUNT
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: %write-buffer-member TARGET MEMBER VALUE
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: %write-buffer-member/matrix TARGET MEMBER VALUE
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: block-binding-valid-p BLOCK BINDING-POINT
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: block-type->buffer-type BLOCK-TYPE
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: buffer-type->block-type TYPE
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: buffer-type->target BUFFER-TYPE
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Function: build-shader-dictionary ()

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

Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

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.
See MAKE-SHADER-PROGRAM

Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: build-shader-programs PROGRAM-LIST

Recompile a collection of shader programs.

Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: collect-layout-structs LAYOUT
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Function: collect-layouts STAGE
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Function: compile-stages PROGRAM
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: compute-outdated-programs SPEC
Package

net.mfiano.lisp.shadow

Source

functions.lisp (file)

Function: delete-block-alias BLOCK-ALIAS &key UNBIND-BLOCK
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: disable-dependency-tracking ()
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: enable-dependency-tracking ()
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: ensure-function-dependency-tables SPEC FN-DEPS DEP-FNS
Package

net.mfiano.lisp.shadow

Source

functions.lisp (file)

Function: ensure-keyword X
Package

net.mfiano.lisp.shadow

Source

common.lisp (file)

Function: find-gpu-function FUNC-SPEC
Package

net.mfiano.lisp.shadow

Source

functions.lisp (file)

Function: get-block-type STRUCT
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: get-function-spec FUNCTION
Package

net.mfiano.lisp.shadow

Source

functions.lisp (file)

Function: get-layout-type STRUCT
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Function: get-uniform-location PROGRAM-NAME UNIFORM
Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: has-qualifier-p TYPE QUALIFIER
Package

net.mfiano.lisp.shadow

Source

common.lisp (file)

Function: layout-struct-p STRUCT
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: lisp-constant->glsl-constant CONSTANT
Package

net.mfiano.lisp.shadow

Source

common.lisp (file)

Function: lisp-symbol->glsl-type SYMBOL
Package

net.mfiano.lisp.shadow

Source

common.lisp (file)

Function: make-block PROGRAM LAYOUT
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: make-layout UNIFORM
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Function: make-layout-member LAYOUT DATA
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Function: make-stage VERSION PRIMITIVE STAGE-SPEC
Package

net.mfiano.lisp.shadow

Source

stages.lisp (file)

Function: meta KEY
Function: (setf meta) VALUE KEY
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: pack-block LAYOUT
Package

net.mfiano.lisp.shadow

Source

packing.lisp (file)

Function: pack-container TYPE
Package

net.mfiano.lisp.shadow

Source

packing.lisp (file)

Function: pack-layout LAYOUT
Package

net.mfiano.lisp.shadow

Source

packing.lisp (file)

Function: pack-struct STRUCT
Package

net.mfiano.lisp.shadow

Source

packing.lisp (file)

Function: pack-type TYPE
Package

net.mfiano.lisp.shadow

Source

packing.lisp (file)

Function: parts->string PARTS &optional FILTER
Package

net.mfiano.lisp.shadow

Source

common.lisp (file)

Function: rebind-blocks PROGRAMS

Rebind all blocks that are members of PROGRAMS.

Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: reset-program-state ()
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: set-modify-hook FUNCTION

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

Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: stage-type STAGE
Package

net.mfiano.lisp.shadow

Source

stages.lisp (file)

Function: stage-type->shader-type STAGE-TYPE
Package

net.mfiano.lisp.shadow

Source

stages.lisp (file)

Function: store-attribute-locations PROGRAM
Package

net.mfiano.lisp.shadow

Source

attributes.lisp (file)

Function: store-attributes PROGRAM
Package

net.mfiano.lisp.shadow

Source

attributes.lisp (file)

Function: store-blocks PROGRAM STAGE
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Function: store-function-dependencies SPEC DEPENDENCIES
Package

net.mfiano.lisp.shadow

Source

functions.lisp (file)

Function: store-source PROGRAM STAGE
Package

net.mfiano.lisp.shadow

Source

shadow.lisp (file)

Function: store-stage-program-dependencies PROGRAM
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: store-uniform-locations PROGRAM
Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: store-uniforms PROGRAM
Package

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

Function: translate-program PROGRAM
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: translate-shader-programs PROGRAM-LIST

Re-translate a collection of shader programs.

Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Function: translate-stages VERSION PRIMITIVE STAGE-SPECS
Package

net.mfiano.lisp.shadow

Source

stages.lisp (file)

Function: unpack-type LAYOUT-TYPE TYPE
Package

net.mfiano.lisp.shadow

Source

packing.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.4 Generic functions

Generic Function: %bind-block BLOCK-TYPE BLOCK BINDING-POINT
Package

net.mfiano.lisp.shadow

Methods
Method: %bind-block (BLOCK-TYPE (eql buffer)) BLOCK BINDING-POINT
Source

blocks.lisp (file)

Method: %bind-block (BLOCK-TYPE (eql uniform)) BLOCK BINDING-POINT
Source

blocks.lisp (file)

Generic Function: attributes OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: attributes (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: binding-point OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: binding-point (SHADER-BLOCK shader-block)

automatically generated reader method

Source

blocks.lisp (file)

Generic Function: block-type OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: block-type (SHADER-BLOCK shader-block)

automatically generated reader method

Source

blocks.lisp (file)

Generic Function: blocks OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: blocks (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: byte-stride OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: byte-stride (LAYOUT-MEMBER layout-member)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: dimensions OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: dimensions (LAYOUT-MEMBER layout-member)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: element-count OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: element-count (LAYOUT-MEMBER layout-member)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: element-stride OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: element-stride (LAYOUT-MEMBER layout-member)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: element-type OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: element-type (LAYOUT-MEMBER layout-member)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: get-qualifiers TYPE
Package

net.mfiano.lisp.shadow

Source

common.lisp (file)

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

net.mfiano.lisp.shadow

Source

uniforms.lisp (file)

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 Function: id OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: id (SHADER-BUFFER shader-buffer)

automatically generated reader method

Source

buffers.lisp (file)

Method: id (SHADER-BLOCK shader-block)

automatically generated reader method

Source

blocks.lisp (file)

Method: id (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: layout OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: layout (SHADER-BUFFER shader-buffer)

automatically generated reader method

Source

buffers.lisp (file)

Method: layout (SHADER-BLOCK shader-block)

automatically generated reader method

Source

blocks.lisp (file)

Generic Function: layout-type OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: layout-type (LAYOUT layout)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: members OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: members (LAYOUT layout)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: name OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: name (SHADER-BLOCK shader-block)

automatically generated reader method

Source

blocks.lisp (file)

Method: name (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: object-type OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: object-type (LAYOUT-MEMBER layout-member)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: offset OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: offset (LAYOUT-MEMBER layout-member)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: primitive OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: primitive (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: program OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: program (SHADER-BLOCK shader-block)

automatically generated reader method

Source

blocks.lisp (file)

Generic Function: size OBJECT
Generic Function: (setf size) NEW-VALUE OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: size (LAYOUT layout)

automatically generated reader method

Source

layout.lisp (file)

Method: (setf size) NEW-VALUE (LAYOUT layout)

automatically generated writer method

Source

layout.lisp (file)

Generic Function: source OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: source (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: stage-specs OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: stage-specs (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: target OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: target (SHADER-BUFFER shader-buffer)

automatically generated reader method

Source

buffers.lisp (file)

Generic Function: translated-stages OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: translated-stages (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)

Generic Function: uniform OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: uniform (LAYOUT layout)

automatically generated reader method

Source

layout.lisp (file)

Generic Function: version OBJECT
Package

net.mfiano.lisp.shadow

Methods
Method: version (PROGRAM program)

automatically generated reader method

Source

program.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.5 Classes

Class: layout ()
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %type
Initargs

:type

Readers

layout-type (generic function)

Slot: %size
Readers

size (generic function)

Writers

(setf size) (generic function)

Slot: %members
Initform

(net.mfiano.lisp.golden-utils:dict)

Readers

members (generic function)

Slot: %uniform
Initargs

:uniform

Readers

uniform (generic function)

Class: layout-member ()
Package

net.mfiano.lisp.shadow

Source

layout.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %element-type
Initargs

:element-type

Readers

element-type (generic function)

Slot: %element-stride
Initargs

:element-stride

Readers

element-stride (generic function)

Slot: %byte-stride
Initargs

:byte-stride

Readers

byte-stride (generic function)

Slot: %dimensions
Initargs

:dimensions

Readers

dimensions (generic function)

Slot: %offset
Initargs

:offset

Readers

offset (generic function)

Slot: %count
Initargs

:count

Readers

element-count (generic function)

Slot: %type
Initargs

:type

Readers

object-type (generic function)

Class: program ()
Package

net.mfiano.lisp.shadow

Source

program.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %id
Initform

0

Readers

id (generic function)

Slot: %name
Initargs

:name

Readers

name (generic function)

Slot: %version
Initargs

:version

Readers

version (generic function)

Slot: %translated-stages
Readers

translated-stages (generic function)

Slot: %source
Initform

(net.mfiano.lisp.golden-utils:dict)

Readers

source (generic function)

Slot: %primitive
Initargs

:primitive

Readers

primitive (generic function)

Slot: %stage-specs
Initargs

:stage-specs

Readers

stage-specs (generic function)

Slot: %attributes
Initform

(net.mfiano.lisp.golden-utils:dict)

Readers

attributes (generic function)

Slot: %uniforms
Initform

(net.mfiano.lisp.golden-utils:dict)

Readers

uniforms (generic function)

Slot: %blocks
Initform

(net.mfiano.lisp.golden-utils:dict (function equal))

Readers

blocks (generic function)

Class: shader-block ()
Package

net.mfiano.lisp.shadow

Source

blocks.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %id
Initargs

:id

Readers

id (generic function)

Slot: %name
Initargs

:name

Readers

name (generic function)

Slot: %type
Initargs

:type

Readers

block-type (generic function)

Slot: %layout
Initargs

:layout

Readers

layout (generic function)

Slot: %program
Initargs

:program

Readers

program (generic function)

Slot: %binding-point
Initform

0

Readers

binding-point (generic function)

Class: shader-buffer ()
Package

net.mfiano.lisp.shadow

Source

buffers.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %id
Initform

(cl-opengl:gen-buffer)

Readers

id (generic function)

Slot: %name
Initargs

:name

Readers

buffer-name (generic function)

Slot: %target
Initargs

:target

Readers

target (generic function)

Slot: %layout
Initargs

:layout

Readers

layout (generic function)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L   N  
Index Entry  Section

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

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

N
net.mfiano.lisp.shadow.asd: The net․mfiano․lisp․shadow․asd file
net.mfiano.lisp.shadow/attributes.lisp: The net․mfiano․lisp․shadow/attributes․lisp file
net.mfiano.lisp.shadow/blocks.lisp: The net․mfiano․lisp․shadow/blocks․lisp file
net.mfiano.lisp.shadow/buffers.lisp: The net․mfiano․lisp․shadow/buffers․lisp file
net.mfiano.lisp.shadow/common.lisp: The net․mfiano․lisp․shadow/common․lisp file
net.mfiano.lisp.shadow/functions.lisp: The net․mfiano․lisp․shadow/functions․lisp file
net.mfiano.lisp.shadow/glsl.lisp: The net․mfiano․lisp․shadow/glsl․lisp file
net.mfiano.lisp.shadow/layout.lisp: The net․mfiano․lisp․shadow/layout․lisp file
net.mfiano.lisp.shadow/package.lisp: The net․mfiano․lisp․shadow/package․lisp file
net.mfiano.lisp.shadow/packing.lisp: The net․mfiano․lisp․shadow/packing․lisp file
net.mfiano.lisp.shadow/program.lisp: The net․mfiano․lisp․shadow/program․lisp file
net.mfiano.lisp.shadow/shadow.lisp: The net․mfiano․lisp․shadow/shadow․lisp file
net.mfiano.lisp.shadow/stages.lisp: The net․mfiano․lisp․shadow/stages․lisp file
net.mfiano.lisp.shadow/uniforms.lisp: The net․mfiano․lisp․shadow/uniforms․lisp file

Jump to:   F   L   N  

Next: , Previous: , Up: Indexes   [Contents][Index]

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: Internal generic functions
%bind-block: Internal generic functions
%bind-block: Internal generic functions
%find-block: Internal functions
%make-buffer: Internal functions
%make-shader-program: Internal functions
%read-buffer-member: Internal functions
%read-buffer-member/matrix: Internal functions
%read-buffer-member/scalar: Internal functions
%read-buffer-member/vector: Internal functions
%uniform-array: Internal macros
%write-buffer-member: Internal functions
%write-buffer-member/matrix: Internal functions

(
(setf meta): Internal functions
(setf size): Internal generic functions
(setf size): Internal generic functions

A
attributes: Internal generic functions
attributes: Internal generic functions

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

C
clear-buffer: Exported functions
collect-layout-structs: Internal functions
collect-layouts: Internal functions
compile-stages: Internal functions
compute-outdated-programs: Internal functions
create-block-alias: Exported functions
create-buffer: Exported functions

D
define-shader: Exported macros
defmacro: Exported macros
defstruct: Exported macros
defun: Exported macros
delete-block-alias: Internal functions
delete-buffer: Exported functions
dimensions: Internal generic functions
dimensions: Internal generic functions
disable-dependency-tracking: Internal functions

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

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

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

H
has-qualifier-p: Internal functions

I
id: Internal generic functions
id: Internal generic functions
id: Internal generic functions
id: Internal generic functions

L
layout: Internal generic functions
layout: Internal generic functions
layout: Internal generic functions
layout-struct-p: Internal functions
layout-type: Internal generic functions
layout-type: Internal generic functions
link-program: Internal functions
lisp-constant->glsl-constant: Internal functions
lisp-symbol->glsl-type: Internal functions
load-shaders: Exported functions

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

N
name: Internal generic functions
name: Internal generic functions
name: Internal generic functions

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

P
pack-block: Internal functions
pack-container: Internal functions
pack-layout: Internal functions
pack-struct: Internal functions
pack-type: Internal functions
parts->string: Internal functions
primitive: Internal generic functions
primitive: Internal generic functions
program: Internal generic functions
program: Internal generic functions

R
read-buffer-path: Exported functions
rebind-blocks: Internal functions
recompile-shaders: Exported functions
reset-program-state: Internal functions

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

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

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

V
version: Internal generic functions
version: Internal generic functions
view-source: Exported functions

W
with-shader: Exported macros
write-buffer-path: Exported functions

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

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   %   *  
S  
Index Entry  Section

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

*
*metadata*: Internal special variables

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

Jump to:   %   *  
S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   C   L   N   P   S  
Index Entry  Section

C
Class, layout: Internal classes
Class, layout-member: Internal classes
Class, program: Internal classes
Class, shader-block: Internal classes
Class, shader-buffer: Internal classes

L
layout: Internal classes
layout-member: Internal classes

N
net.mfiano.lisp.shadow: The net․mfiano․lisp․shadow system
net.mfiano.lisp.shadow: The net․mfiano․lisp․shadow package
net.mfiano.lisp.shadow.glsl: The net․mfiano․lisp․shadow․glsl package

P
Package, net.mfiano.lisp.shadow: The net․mfiano․lisp․shadow package
Package, net.mfiano.lisp.shadow.glsl: The net․mfiano․lisp․shadow․glsl package
program: Internal classes

S
shader-block: Internal classes
shader-buffer: Internal classes
System, net.mfiano.lisp.shadow: The net․mfiano․lisp․shadow system

Jump to:   C   L   N   P   S