mirror of https://github.com/bjornbytes/lovr.git
Better boolean shader flags; Multicanvas flag;
Instead of boolean shader flags turning into actual booleans defines in the shader source, for GLSL they turn into defines. This lets you use ifdef, which is the more common intended usage. Also MULTICANVAS is now a boolean shader flag. The old MULTICANVAS define is deprecated.
This commit is contained in:
parent
f564444641
commit
4b9e6849c8
|
@ -2035,13 +2035,11 @@ static char* lovrShaderGetFlagCode(ShaderFlag* flags, uint32_t flagCount) {
|
|||
// Figure out how much space we need
|
||||
size_t length = 0;
|
||||
for (uint32_t i = 0; i < flagCount; i++) {
|
||||
if (flags[i].name) {
|
||||
if (flags[i].name && !(flags[i].type == FLAG_BOOL && flags[i].value.b32 == false)) {
|
||||
length += strlen("#define FLAG_");
|
||||
length += strlen(flags[i].name) + 1;
|
||||
if (flags[i].type == FLAG_BOOL) {
|
||||
length += flags[i].value.b32 ? strlen("true") : strlen("false");
|
||||
} else {
|
||||
length += snprintf(NULL, 0, "%d", flags[i].value.i32);
|
||||
length += strlen(flags[i].name);
|
||||
if (flags[i].type == FLAG_INT) {
|
||||
length += snprintf(NULL, 0, " %d", flags[i].value.i32);
|
||||
}
|
||||
length += strlen("\n");
|
||||
}
|
||||
|
@ -2053,11 +2051,9 @@ static char* lovrShaderGetFlagCode(ShaderFlag* flags, uint32_t flagCount) {
|
|||
char* s = code;
|
||||
for (uint32_t i = 0; i < flagCount; i++) {
|
||||
if (flags[i].name) {
|
||||
s += sprintf(s, "#define FLAG_%s ", flags[i].name);
|
||||
if (flags[i].type == FLAG_BOOL) {
|
||||
s += sprintf(s, "%s\n", flags[i].value.b32 ? "true" : "false");
|
||||
} else {
|
||||
s += sprintf(s, "%d\n", flags[i].value.i32);
|
||||
s += sprintf(s, "#define FLAG_%s", flags[i].name);
|
||||
if (flags[i].type == FLAG_INT) {
|
||||
s += sprintf(s, " %d\n", flags[i].value.i32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,9 +4,6 @@ const char* lovrShaderVertexPrefix = ""
|
|||
"#define VERTEX VERTEX \n"
|
||||
"#define MAX_BONES 48 \n"
|
||||
"#define MAX_DRAWS 256 \n"
|
||||
"#ifndef FLAG_skinned \n"
|
||||
"#define FLAG_skinned 0 \n"
|
||||
"#endif \n"
|
||||
"#define lovrView lovrViews[lovrViewID] \n"
|
||||
"#define lovrProjection lovrProjections[lovrViewID] \n"
|
||||
"#define lovrModel lovrModels[lovrDrawID] \n"
|
||||
|
@ -57,7 +54,7 @@ const char* lovrShaderVertexSuffix = ""
|
|||
"#endif \n"
|
||||
" gl_PointSize = lovrPointSize; \n"
|
||||
" vec4 vertexPosition = vec4(lovrPosition, 1.); \n"
|
||||
"#if FLAG_skinned \n"
|
||||
"#ifdef FLAG_skinned \n"
|
||||
" vertexPosition = lovrPoseMatrix * vertexPosition; \n"
|
||||
"#endif \n"
|
||||
" gl_Position = position(lovrProjection, lovrTransform, vertexPosition); \n"
|
||||
|
@ -93,7 +90,7 @@ const char* lovrShaderFragmentPrefix = ""
|
|||
|
||||
const char* lovrShaderFragmentSuffix = ""
|
||||
"void main() { \n"
|
||||
"#ifdef MULTICANVAS \n"
|
||||
"#if defined(MULTICANVAS) || defined(FLAG_multicanvas) \n"
|
||||
" colors(lovrColor, lovrDiffuseTexture, texCoord); \n"
|
||||
"#else \n"
|
||||
" lovrCanvas[0] = color(lovrColor, lovrDiffuseTexture, texCoord); \n"
|
||||
|
|
Loading…
Reference in New Issue