Vuo
0.4.4
|
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 _VuoShader * | VuoShader |
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. | |
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 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.
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.
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).
|
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.