Vuo  0.4.4
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Typedefs | Functions

Description

A graphics shader program, specifying how to render a 3D object.

Classes

struct  _VuoShader
 A graphics shader program, specifying how to render a 3D object. More...
 

Macros

#define VUOSHADER_GLSL_SOURCE(version, source)   "#version " #version "\n" #source
 A macro to facilitate defining a GLSL shader in a C source file.
 

Typedefs

typedef struct _VuoShaderVuoShader
 A graphics shader program, specifying how to render a 3D object.
 

Functions

void VuoShader_free (void *shader)
 Decrements the retain count of the OpenGL Texture Object associated with the specified VuoImage, and frees the texture VuoImage struct.
 
void VuoShader_printShaderInfoLog (GLuint obj)
 Prints GLSL debug information to the console.
 
void VuoShader_printProgramInfoLog (GLuint obj)
 Prints GLSL debug information to the console.
 
VuoShader VuoShader_make (const char *summary, const char *vertexShaderSource, const char *fragmentShaderSource)
 Compiles, links, and uploads the specified shader sources.
 
VuoShader VuoShader_valueFromString (const char *initializer)
 Parses the C string initializer to create a new value.
 
char * VuoShader_stringFromValue (const VuoShader value)
 Serializes value as a C string.
 
VuoShader VuoShader_valueFromJson (json_object *js)
 Decodes the JSON object js, expected to contain a 64-bit integer (memory address or 0), to create a new VuoShader.
 
json_object * VuoShader_jsonFromValue (const VuoShader value)
 Encodes value as a JSON object.
 
char * VuoShader_summaryFromValue (const VuoShader value)
 Returns a summary of the shader: the text description provided to VuoShader_make(), and the number of textures associated with the shader.
 
void VuoShader_setUniformFloat (VuoShader shader, const char *uniformIdentifier, float value)
 Sets a float uniform value on the specified shader.
 
void VuoShader_setUniformPoint2d (VuoShader shader, const char *uniformIdentifier, VuoPoint2d value)
 Sets a float uniform value on the specified shader.
 
const char * VuoShader_getDefaultVertexShader (void)
 Returns the default vertex shader, which projects verties and passes through texture coordinates.
 
VuoShader VuoShader_makeImageShader (void)
 Returns a shader that renders objects with an image (ignoring lighting), specified by uniform texture.
 
void VuoShader_resetTextures (VuoShader shader)
 Empties the list of textures associated with shader.
 
void VuoShader_addTexture (VuoShader shader, VuoImage texture, const char *uniformIdentifier)
 Adds to shader an association between texture and uniformIdentifier.
 
void VuoShader_activateTextures (VuoShader shader)
 Assigns each of the shader's textures to a texture unit, and passes the texture unit number along to the shader.
 
void VuoShader_deactivateTextures (VuoShader shader)
 Unbinds the texture units used by this shader.
 

Class Documentation

struct _VuoShader
Class Members
unsigned int glFragmentShaderName
unsigned int glProgramName
VuoList_VuoInteger glTextureUniformLocations
unsigned int glVertexShaderName
char * summary Text describing the shader, displayed in port popovers.
VuoList_VuoImage textures

Typedef Documentation

typedef struct _VuoShader * VuoShader

A graphics shader program, specifying how to render a 3D object.

The struct is typedef'd to a pointer so that VuoShaders are reference-counted, enabling us to automatically delete the GL Program Objects when the last reference is released.

Function Documentation

void VuoShader_activateTextures ( VuoShader  shader)

Assigns each of the shader's textures to a texture unit, and passes the texture unit number along to the shader.

Must be called from a thread with an active GL Context.

void VuoShader_addTexture ( VuoShader  shader,
VuoImage  texture,
const char *  uniformIdentifier 
)

Adds to shader an association between texture and uniformIdentifier.

May be called from any thread (doesn't require an existing GL Context).

void VuoShader_deactivateTextures ( VuoShader  shader)

Unbinds the texture units used by this shader.

Must be called from a thread with an active GL Context.

void VuoShader_free ( void *  shader)

Decrements the retain count of the OpenGL Texture Object associated with the specified VuoImage, and frees the texture VuoImage struct.

May be called from any thread (doesn't require an existing GL Context).

struct json_object * VuoShader_jsonFromValue ( const VuoShader  value)
read

Encodes value as a JSON object.

Serializes the pointer to the VuoShader object, since we need to preserve its reference count.

VuoShader VuoShader_make ( const char *  summary,
const char *  vertexShaderSource,
const char *  fragmentShaderSource 
)

Compiles, links, and uploads the specified shader sources.

The vertex shader must define:

uniform mat4 projectionMatrix;
uniform mat4 modelviewMatrix;
attribute vec4 position;
attribute vec4 normal;
attribute vec4 tangent;
attribute vec4 bitangent;
attribute vec4 textureCoordinate;

May be called from any thread (doesn't require an existing GL Context).

void VuoShader_printProgramInfoLog ( GLuint  obj)

Prints GLSL debug information to the console.

Must be called from a thread with an active GL Context.

void VuoShader_printShaderInfoLog ( GLuint  obj)

Prints GLSL debug information to the console.

Must be called from a thread with an active GL Context.

void VuoShader_setUniformFloat ( VuoShader  shader,
const char *  uniformIdentifier,
float  value 
)

Sets a float uniform value on the specified shader.

May be called from any thread (automatically uses and disuses a GL Context).

void VuoShader_setUniformPoint2d ( VuoShader  shader,
const char *  uniformIdentifier,
VuoPoint2d  value 
)

Sets a float uniform value on the specified shader.

May be called from any thread (automatically uses and disuses a GL Context).

char * VuoShader_stringFromValue ( const VuoShader  value)

Serializes value as a C string.

VuoShader VuoShader_valueFromString ( const char *  initializer)

Parses the C string initializer to create a new value.