Vuo
0.5.3
|
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 (CGLContextObj cgl_ctx, GLuint obj) |
Prints GLSL debug information to the console. | |
void | VuoShader_printProgramInfoLog (CGLContextObj cgl_ctx, 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_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, VuoGlContext glContext, const char *uniformIdentifier, float value) |
Sets a float uniform value on the specified shader . | |
void | VuoShader_setUniformPoint2d (VuoShader shader, VuoGlContext glContext, 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. | |
VuoPoint2d | VuoShader_samplerCoordinatesFromVuoCoordinates (VuoPoint2d vuoCoordinates, VuoImage image) |
Converts the provided vuoCoordinates into GLSL Sampler Coordinates relative to the provided image. | |
VuoReal | VuoShader_samplerSizeFromVuoSize (VuoReal vuoSize) |
Converts an x-axis distance in Vuo Coordinates into GLSL Sampler 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, VuoGlContext glContext, const char *uniformIdentifier, VuoImage texture) |
Adds to shader an association between texture and uniformIdentifier . | |
void | VuoShader_activateTextures (VuoShader shader, VuoGlContext glContext) |
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, VuoGlContext glContext) |
Unbinds the texture units used by this shader. | |
VuoShader | VuoShader_valueFromString (const char *str) |
Automatically generated function. | |
char * | VuoShader_stringFromValue (const VuoShader value) |
Automatically generated function. | |
struct _VuoShader |
Class Members | ||
---|---|---|
unsigned int | glFragmentShaderName | |
unsigned int | glProgramName | |
VuoList_VuoInteger | glTextureUniformLocations | |
unsigned int | glVertexShaderName | |
dispatch_semaphore_t | lock | Serializes operations that modify the state of this GL program object. |
char * | summary | Text describing the shader, displayed in port popovers. |
VuoList_VuoImage | textures |
#define VUOSHADER_GLSL_SOURCE | ( | version, | |
source | |||
) | "#version " #version "\n" #source |
A macro to facilitate defining a GLSL shader in a C source file.
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, |
VuoGlContext | glContext | ||
) |
Assigns each of the shader's textures to a texture unit, and passes the texture unit number along to the shader.
This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)
void VuoShader_addTexture | ( | VuoShader | shader, |
VuoGlContext | glContext, | ||
const char * | uniformIdentifier, | ||
VuoImage | texture | ||
) |
Adds to shader
an association between texture
and uniformIdentifier
.
This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)
void VuoShader_deactivateTextures | ( | VuoShader | shader, |
VuoGlContext | glContext | ||
) |
Unbinds the texture units used by this shader.
This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)
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.
This function may be called from any thread.
const char* VuoShader_getDefaultVertexShader | ( | void | ) |
Returns the default vertex shader, which projects verties and passes through texture coordinates.
This function may be called from any thread.
|
read |
Encodes value
as a JSON object.
Serializes the pointer to the VuoShader object, since we need to preserve its reference count.
This function may be called from any thread.
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;
This function may be called from any thread.
VuoShader VuoShader_makeImageShader | ( | void | ) |
Returns a shader that renders objects with an image (ignoring lighting), specified by uniform texture
.
This function may be called from any thread.
void VuoShader_printProgramInfoLog | ( | CGLContextObj | cgl_ctx, |
GLuint | obj | ||
) |
Prints GLSL debug information to the console.
This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)
void VuoShader_printShaderInfoLog | ( | CGLContextObj | cgl_ctx, |
GLuint | obj | ||
) |
Prints GLSL debug information to the console.
This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)
void VuoShader_resetTextures | ( | VuoShader | shader | ) |
Empties the list of textures associated with shader
.
This function may be called from any thread.
VuoPoint2d VuoShader_samplerCoordinatesFromVuoCoordinates | ( | VuoPoint2d | vuoCoordinates, |
VuoImage | image | ||
) |
Converts the provided vuoCoordinates into GLSL Sampler Coordinates relative to the provided image.
Vuo Coordinates range from (-1,-1/aspectRatio) in the bottom left to (1,1/aspectRatio) in the top right.
GLSL Sampler Coordinates range from (0,0) to (1,1).
If image is rendered in a scene, centered at (0,0,0), width 2, at its correct aspect ratio, this function will transform 2D coordinates along the XY plane (at Z=0) into correct sampler coordinates for that image.
This function may be called from any thread.
Converts an x-axis distance in Vuo Coordinates into GLSL Sampler Coordinates.
(Divides by 2.)
This function may be called from any thread.
void VuoShader_setUniformFloat | ( | VuoShader | shader, |
VuoGlContext | glContext, | ||
const char * | uniformIdentifier, | ||
float | value | ||
) |
Sets a float
uniform value on the specified shader
.
This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)
void VuoShader_setUniformPoint2d | ( | VuoShader | shader, |
VuoGlContext | glContext, | ||
const char * | uniformIdentifier, | ||
VuoPoint2d | value | ||
) |
Sets a float
uniform value on the specified shader
.
This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)
char* VuoShader_stringFromValue | ( | const VuoShader | value | ) |
Automatically generated function.
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.
This function may be called from any thread.
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
.
This function may be called from any thread.
VuoShader VuoShader_valueFromString | ( | const char * | str | ) |
Automatically generated function.