Vuo 2.4.4
Loading...
Searching...
No Matches
VuoShader.h
Go to the documentation of this file.
1
10#ifndef VuoShader_h
11#define VuoShader_h
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#include "VuoColor.h"
18#include "VuoImage.h"
19#include "VuoInteger.h"
20#include "VuoMesh.h"
21#include "VuoPoint2d.h"
22#include "VuoPoint3d.h"
23#include "VuoPoint4d.h"
24#include "VuoReal.h"
25#include "VuoText.h"
26#include "VuoGlContext.h"
27#include "VuoList_VuoInteger.h"
28#include "VuoList_VuoImage.h"
29#include "VuoList_VuoColor.h"
30#include "VuoList_VuoPoint4d.h"
31#include "VuoList_VuoText.h"
32#include "VuoGlPool.h"
33
34#ifdef __cplusplus
35class VuoShaderFile;
36#else
37typedef void *VuoShaderFile;
38#endif
39
94typedef struct
95{
97 unsigned int glVertexShaderName;
98
100 unsigned int glGeometryShaderName;
101 unsigned int expectedOutputPrimitiveCount;
102 bool mayChangeOutputPrimitiveCount;
103
105 unsigned int glFragmentShaderName;
106
107 VuoGlProgram program;
108
111
117typedef struct
118{
121 union
122 {
123 VuoImage image;
124 VuoBoolean boolean;
125 VuoInteger integer;
126 VuoReal real;
127 VuoPoint2d point2d;
128 VuoPoint3d point3d;
129 VuoPoint4d point4d;
130 VuoColor color;
131 VuoList_VuoBoolean booleans;
132 VuoList_VuoInteger integers;
133 VuoList_VuoReal reals;
134 VuoList_VuoPoint2d point2ds;
135 VuoList_VuoPoint3d point3ds;
136 VuoList_VuoPoint4d point4ds;
137 VuoList_VuoColor colors;
138 float *mat2;
139 float *mat3;
140 float *mat4;
141 } value;
142
150
156typedef struct _VuoShader
157{
158 VuoText name;
159
160 VuoSubshader pointProgram;
161 VuoSubshader lineProgram;
162 VuoSubshader triangleProgram;
163
164 VuoShaderUniform *uniforms;
165 unsigned int uniformsCount;
166
167 float objectScale;
168
176 bool isTransparent;
177
190 bool useAlphaAsCoverage;
191
192 VuoImage colorBuffer;
193 VuoImage depthBuffer;
194
195 uint64_t activationCount;
196 VuoReal lastActivationTime;
197
198 void *lock;
200
201#define VuoShader_OVERRIDES_INTERPROCESS_SERIALIZATION
202
205VuoShader VuoShader_make(const char *name);
207void VuoShader_addSource(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode, const char *vertexShaderSource, const char *geometryShaderSource, const char *fragmentShaderSource);
208void VuoShader_setExpectedOutputPrimitiveCount(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode, const unsigned int expectedOutputPrimitiveCount);
209void VuoShader_setMayChangeOutputPrimitiveCount(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode, const bool mayChangeOutputPrimitiveCount);
210void VuoShader_setTransparent(VuoShader shader, const bool isTransparent);
211
213#define VUOSHADER_GLSL_SOURCE(version,source) "#version " #version "\n" #source
215
216
224
228VuoShader VuoShader_makeUnlitRoundedRectangleTrackShader(VuoColor background, VuoColor active, VuoReal sharpness, VuoReal roundness, VuoReal aspect, VuoBoolean isHorizontal, VuoReal value);
229VuoShader VuoShader_makeUnlitCheckmarkShader(VuoColor color, VuoColor outline, float thickness);
230
231VuoShader VuoShader_makeLitColorShader(VuoColor diffuseColor, VuoColor highlightColor, VuoReal shininess);
232VuoShader VuoShader_makeLitImageShader(VuoImage image, VuoReal alpha, VuoColor highlightColor, VuoReal shininess);
233VuoShader VuoShader_makeLitImageDetailsShader(VuoImage image, VuoReal alpha, VuoImage specularImage, VuoImage normalImage);
234
236void VuoShader_setLinearGradientShaderValues(VuoShader shader, VuoList_VuoColor colors, VuoPoint2d start, VuoPoint2d end, VuoReal aspect, VuoReal noiseAmount);
237
239void VuoShader_setRadialGradientShaderValues(VuoShader shader, VuoList_VuoColor colors, VuoPoint2d center, VuoReal radius, VuoReal width, VuoReal height, VuoReal noiseAmount);
240
242void VuoShader_setFrostedGlassShaderValues(VuoShader shader, VuoColor color, VuoReal brightness, VuoPoint2d noisePosition, VuoReal noiseTime, VuoReal noiseAmount, VuoReal noiseScale, VuoReal chromaticAberration, VuoInteger levels, VuoReal roughness, VuoReal spacing, VuoInteger iterations, float aspectRatio);
244
245
249unsigned int VuoShader_getExpectedOutputPrimitiveCount(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode);
251
252bool VuoShader_upload(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode, VuoGlContext glContext, void *outIssues) VuoWarnUnusedResult;
253bool VuoShader_getAttributeLocations(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode, VuoGlContext glContext, int *positionLocation, int *normalLocation, int *textureCoordinateLocation, int *colorLocation) VuoWarnUnusedResult;
254bool VuoShader_activate(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode, VuoGlContext glContext, VuoGlProgram *outputProgram) VuoWarnUnusedResult;
255void VuoShader_deactivate(VuoShader shader, const VuoMesh_ElementAssemblyMethod inputPrimitiveMode, VuoGlContext glContext);
257
258void VuoShader_setUniform_VuoImage (VuoShader shader, const char *uniformIdentifier, const VuoImage image);
259void VuoShader_setUniform_VuoBoolean(VuoShader shader, const char *uniformIdentifier, const VuoBoolean boolean);
260void VuoShader_setUniform_VuoInteger(VuoShader shader, const char *uniformIdentifier, const VuoInteger integer);
261void VuoShader_setUniform_VuoReal (VuoShader shader, const char *uniformIdentifier, const VuoReal real);
262void VuoShader_setUniform_VuoPoint2d(VuoShader shader, const char *uniformIdentifier, const VuoPoint2d point2d);
263void VuoShader_setUniform_VuoPoint3d(VuoShader shader, const char *uniformIdentifier, const VuoPoint3d point3d);
264void VuoShader_setUniform_VuoPoint4d(VuoShader shader, const char *uniformIdentifier, const VuoPoint4d point4d);
265void VuoShader_setUniform_VuoColor (VuoShader shader, const char *uniformIdentifier, const VuoColor color);
266void VuoShader_setUniform_VuoList_VuoBoolean(VuoShader shader, const char *uniformIdentifier, const VuoList_VuoBoolean booleans);
267void VuoShader_setUniform_VuoList_VuoInteger(VuoShader shader, const char *uniformIdentifier, const VuoList_VuoInteger integers);
268void VuoShader_setUniform_VuoList_VuoReal (VuoShader shader, const char *uniformIdentifier, const VuoList_VuoReal reals);
269void VuoShader_setUniform_VuoList_VuoPoint2d(VuoShader shader, const char *uniformIdentifier, const VuoList_VuoPoint2d point2ds);
270void VuoShader_setUniform_VuoList_VuoPoint3d(VuoShader shader, const char *uniformIdentifier, const VuoList_VuoPoint3d point3ds);
271void VuoShader_setUniform_VuoList_VuoPoint4d(VuoShader shader, const char *uniformIdentifier, const VuoList_VuoPoint4d point4ds);
272void VuoShader_setUniform_VuoList_VuoColor (VuoShader shader, const char *uniformIdentifier, const VuoList_VuoColor colors);
273void VuoShader_setUniform_mat2 (VuoShader shader, const char *uniformIdentifier, float *mat2);
274void VuoShader_setUniform_mat3 (VuoShader shader, const char *uniformIdentifier, float *mat3);
275void VuoShader_setUniform_mat4 (VuoShader shader, const char *uniformIdentifier, float *mat4);
276
280
281VuoImage VuoShader_getUniform_VuoImage(VuoShader shader, const char *uniformIdentifier);
283
284VuoPoint2d VuoShader_samplerCoordinatesFromVuoCoordinates(VuoPoint2d vuoCoordinates, VuoImage image);
286VuoPoint2d VuoShader_samplerRectCoordinatesFromNormalizedCoordinates(VuoPoint2d normalizedCoordinates, VuoInteger imageWidth, VuoInteger imageHeight);
287
288bool VuoShader_isOpaque(VuoShader shader);
291
292
295char * VuoShader_getSummary(const VuoShader value);
296VuoShader VuoShader_makeFromJson(struct json_object * js);
297struct json_object * VuoShader_getJson(const VuoShader value);
298struct json_object * VuoShader_getInterprocessJson(const VuoShader value);
299
301char * VuoShader_getString(const VuoShader value);
307
308
313#ifdef __cplusplus
314}
315#endif
316
317#endif