- added workaround for GLSL noise functions on macOS

There is no chance that Apple will fix their OpenGL drivers
The only viable solution is to preprocess these functions out, and put zeroes instead of them
This commit is contained in:
alexey.lysiuk 2020-01-10 13:52:17 +02:00
parent 1bc67cf7b9
commit 3185e359b9

View file

@ -321,6 +321,16 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char *
i_data += "#define brighttexture texture2\n";
i_data += "#endif\n";
#ifdef __APPLE__
// The noise functions are completely broken in macOS OpenGL drivers
// Garbage values are returned, and their infrequent usage causes extreme slowdown
// Also, these functions must return zeroes since GLSL 4.4
i_data += "#define noise1(unused) 0.0\n";
i_data += "#define noise2(unused) vec2(0)\n";
i_data += "#define noise3(unused) vec3(0)\n";
i_data += "#define noise4(unused) vec4(0)\n";
#endif // __APPLE__
int vp_lump = Wads.CheckNumForFullName(vert_prog_lump, 0);
if (vp_lump == -1) I_Error("Unable to load '%s'", vert_prog_lump);
FMemLump vp_data = Wads.ReadLump(vp_lump);
@ -824,4 +834,4 @@ void gl_DestroyUserShaders()
// todo
}
}
}