50 lines
1.4 KiB
C
50 lines
1.4 KiB
C
|
#pragma once
|
||
|
#ifndef GLSL_OPTIMIZER_H
|
||
|
#define GLSL_OPTIMIZER_H
|
||
|
|
||
|
/*
|
||
|
Main GLSL optimizer interface.
|
||
|
See ../../README.md for more instructions.
|
||
|
|
||
|
General usage:
|
||
|
|
||
|
ctx = glslopt_initialize();
|
||
|
for (lots of shaders) {
|
||
|
shader = glslopt_optimize (ctx, shaderType, shaderSource, options);
|
||
|
if (glslopt_get_status (shader)) {
|
||
|
newSource = glslopt_get_output (shader);
|
||
|
} else {
|
||
|
errorLog = glslopt_get_log (shader);
|
||
|
}
|
||
|
glslopt_shader_delete (shader);
|
||
|
}
|
||
|
glslopt_cleanup (ctx);
|
||
|
*/
|
||
|
|
||
|
struct glslopt_shader;
|
||
|
struct glslopt_ctx;
|
||
|
|
||
|
enum glslopt_shader_type {
|
||
|
kGlslOptShaderVertex = 0,
|
||
|
kGlslOptShaderFragment,
|
||
|
};
|
||
|
|
||
|
// Options flags for glsl_optimize
|
||
|
enum glslopt_options {
|
||
|
kGlslOptionSkipPreprocessor = (1<<0), // Skip preprocessing shader source. Saves some time if you know you don't need it.
|
||
|
kGlslOptionNotFullShader = (1<<1), // Passed shader is not the full shader source. This makes some optimizations weaker.
|
||
|
};
|
||
|
|
||
|
glslopt_ctx* glslopt_initialize (bool openglES);
|
||
|
void glslopt_cleanup (glslopt_ctx* ctx);
|
||
|
|
||
|
glslopt_shader* glslopt_optimize (glslopt_ctx* ctx, glslopt_shader_type type, const char* shaderSource, unsigned options);
|
||
|
bool glslopt_get_status (glslopt_shader* shader);
|
||
|
const char* glslopt_get_output (glslopt_shader* shader);
|
||
|
const char* glslopt_get_raw_output (glslopt_shader* shader);
|
||
|
const char* glslopt_get_log (glslopt_shader* shader);
|
||
|
void glslopt_shader_delete (glslopt_shader* shader);
|
||
|
|
||
|
|
||
|
#endif /* GLSL_OPTIMIZER_H */
|