VuoShader C type definition.
- Copyright
- Copyright © 2012–2014 Kosada Incorporated. This code may be modified and distributed under the terms of the MIT License. For more information, see http://vuo.org/license.
|
#define | VUOSHADER_GLSL_SOURCE(version, source) "#version " #version "\n" #source |
| A macro to facilitate defining a GLSL shader in a C source file.
|
|
#define | VUOSHADER_GLSL_FRAGMENT_COLOR_CONVERSION_SOURCE " \ vec3 RgbToHsl(vec3 color) \ { \ vec3 hsl; \ \ float fmin = min(min(color.r, color.g), color.b); \ float fmax = max(max(color.r, color.g), color.b); \ float delta = fmax - fmin; \ \ hsl.z = (fmax + fmin) / 2.0; \ \ if (delta == 0.0) \ { \ hsl.x = 0.0; \ hsl.y = 0.0; \ } \ else \ { \ if (hsl.z < 0.5) \ hsl.y = delta / (fmax + fmin); \ else \ hsl.y = delta / (2.0 - fmax - fmin); \ \ float deltaR = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta; \ float deltaG = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta; \ float deltaB = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta; \ \ if (color.r == fmax ) \ hsl.x = deltaB - deltaG; \ else if (color.g == fmax) \ hsl.x = (1.0 / 3.0) + deltaR - deltaB; \ else if (color.b == fmax) \ hsl.x = (2.0 / 3.0) + deltaG - deltaR; \ \ if (hsl.x < 0.0) \ hsl.x += 1.0; \ else if (hsl.x > 1.0) \ hsl.x -= 1.0; \ } \ \ return hsl; \ } \ \ float HueToRGB(float f1, float f2, float hue) \ { \ if (hue < 0.0) \ hue += 1.0; \ else if (hue > 1.0) \ hue -= 1.0; \ float res; \ if ((6.0 * hue) < 1.0) \ res = f1 + (f2 - f1) * 6.0 * hue; \ else if ((2.0 * hue) < 1.0) \ res = f2; \ else if ((3.0 * hue) < 2.0) \ res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; \ else \ res = f1; \ return res; \ } \ \ vec3 HslToRgb(vec3 hsl) \ { \ vec3 rgb; \ \ if (hsl.y == 0.0) \ rgb = vec3(hsl.z); \ else \ { \ float f2; \ \ if (hsl.z < 0.5) \ f2 = hsl.z * (1.0 + hsl.y); \ else \ f2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); \ \ float f1 = 2.0 * hsl.z - f2; \ \ rgb.r = HueToRGB(f1, f2, hsl.x + (1.0/3.0)); \ rgb.g = HueToRGB(f1, f2, hsl.x); \ rgb.b = HueToRGB(f1, f2, hsl.x - (1.0/3.0)); \ } \ \ return rgb; \ } \" |
| Provides a GLSL method which converts rgb to hsl.
|
|
#define | VUOSHADER_GLSL_FRAGMENT_SOURCE_WITH_COLOR_CONVERSIONS(source) "#version 120\n" VUOSHADER_GLSL_FRAGMENT_COLOR_CONVERSION_SOURCE "\n" #source |
| Provides the template for a glsl shader with hsl to rgb conversion methods defined (RgbToHsl(vec3 rgb), HslToRgb(vec3 hs))
|
|
|
VuoShader | VuoShader_make (const char *summary, const char *vertexShaderSource, const char *fragmentShaderSource) |
| Compiles, links, and uploads the specified shader sources.
|
|
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.
|
|
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.
|
|
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 vec2 uniform value on the specified shader .
|
|
void | VuoShader_setUniformPoint3d (VuoShader shader, VuoGlContext glContext, const char *uniformIdentifier, VuoPoint3d value) |
| Sets a vec3 uniform value on the specified shader .
|
|
void | VuoShader_setUniformPoint4d (VuoShader shader, VuoGlContext glContext, const char *uniformIdentifier, VuoPoint4d value) |
| Sets a vec4 uniform value on the specified shader .
|
|
void | VuoShader_setUniformFloatArray (VuoShader shader, VuoGlContext glContext, const char *uniformIdentifier, const float *value, int length) |
| 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_makeColorShader (VuoColor color) |
| Returns a shader that renders a solid color .
|
|
VuoShader | VuoShader_makeLitColorShader (VuoColor diffuseColor, VuoColor highlightColor, VuoReal shininess) |
| Returns a shader that renders a color with lighting.
|
|
VuoShader | VuoShader_makeLitImageShader (VuoImage image, VuoReal alpha, VuoColor highlightColor, VuoReal shininess) |
| Returns a shader that renders an image with lighting.
|
|
VuoShader | VuoShader_makeLitImageDetailsShader (VuoImage image, VuoReal alpha, VuoImage specularImage, VuoImage normalImage) |
| Returns a shader that renders an image with lighting and surface details.
|
|
VuoShader | VuoShader_makeLinearGradientShader (VuoList_VuoColor colors, VuoPoint2d start, VuoPoint2d end) |
| Returns a shader that renders a linear gradient using the provided colors and start and end coordinates.
|
|
VuoShader | VuoShader_makeRadialGradientShader (VuoList_VuoColor colors, VuoPoint2d center, VuoReal radius, VuoReal width, VuoReal height) |
| Returns a shader that renders a radial gradient using the provided colors, center point, and radius.
|
|
|
VuoShader | VuoShader_valueFromString (const char *str) |
| Automatically generated function.
|
|
char * | VuoShader_stringFromValue (const VuoShader value) |
| Automatically generated function.
|
|