mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
try to use 1.30 shader first and use 1.10 shader as fallback solution
This commit is contained in:
parent
29478d6e25
commit
848f996f9b
@ -27,28 +27,12 @@ static const char *PaletteFragShader110Src =
|
|||||||
// new
|
// new
|
||||||
|
|
||||||
static const char *PassthroughVertShaderSrc =
|
static const char *PassthroughVertShaderSrc =
|
||||||
"#if __VERSION__ >= 130\n"
|
"#version 130\n"
|
||||||
"#define COMPAT_VARYING out\n"
|
"in vec4 VertexCoord;\n"
|
||||||
"#define COMPAT_ATTRIBUTE in\n"
|
"in vec4 COLOR;\n"
|
||||||
"#define COMPAT_TEXTURE texture\n"
|
"in vec4 TexCoord;\n"
|
||||||
"#else\n"
|
"out vec4 COL0;\n"
|
||||||
"#define COMPAT_VARYING varying \n"
|
"out vec4 TEX0;\n"
|
||||||
"#define COMPAT_ATTRIBUTE attribute \n"
|
|
||||||
"#define COMPAT_TEXTURE texture2D\n"
|
|
||||||
"#endif\n"
|
|
||||||
"\n"
|
|
||||||
"#ifdef GL_ES\n"
|
|
||||||
"#define COMPAT_PRECISION mediump\n"
|
|
||||||
"#else\n"
|
|
||||||
"#define COMPAT_PRECISION\n"
|
|
||||||
"#endif\n"
|
|
||||||
"\n"
|
|
||||||
"COMPAT_ATTRIBUTE vec4 VertexCoord;\n"
|
|
||||||
"COMPAT_ATTRIBUTE vec4 COLOR;\n"
|
|
||||||
"COMPAT_ATTRIBUTE vec4 TexCoord;\n"
|
|
||||||
"COMPAT_VARYING vec4 COL0;\n"
|
|
||||||
"COMPAT_VARYING vec4 TEX0;\n"
|
|
||||||
"\n"
|
|
||||||
"uniform mat4 MVPMatrix;\n"
|
"uniform mat4 MVPMatrix;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"void main()\n"
|
"void main()\n"
|
||||||
@ -60,35 +44,16 @@ static const char *PassthroughVertShaderSrc =
|
|||||||
|
|
||||||
|
|
||||||
static const char *PaletteFragShaderSrc =
|
static const char *PaletteFragShaderSrc =
|
||||||
"#if __VERSION__ >= 130\n"
|
"#version 130\n"
|
||||||
"#define COMPAT_VARYING in\n"
|
|
||||||
"#define COMPAT_TEXTURE texture\n"
|
|
||||||
"out vec4 FragColor;\n"
|
"out vec4 FragColor;\n"
|
||||||
"#else\n"
|
|
||||||
"#define COMPAT_VARYING varying\n"
|
|
||||||
"#define FragColor gl_FragColor\n"
|
|
||||||
"#define COMPAT_TEXTURE texture2D\n"
|
|
||||||
"#endif\n"
|
|
||||||
"\n"
|
|
||||||
"#ifdef GL_ES\n"
|
|
||||||
"#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
|
|
||||||
"precision highp float;\n"
|
|
||||||
"#else\n"
|
|
||||||
"precision mediump float;\n"
|
|
||||||
"#endif\n"
|
|
||||||
"#define COMPAT_PRECISION mediump\n"
|
|
||||||
"#else\n"
|
|
||||||
"#define COMPAT_PRECISION\n"
|
|
||||||
"#endif\n"
|
|
||||||
"\n"
|
|
||||||
"uniform sampler2D SurfaceTex;\n"
|
"uniform sampler2D SurfaceTex;\n"
|
||||||
"uniform sampler2D PaletteTex;\n"
|
"uniform sampler2D PaletteTex;\n"
|
||||||
"COMPAT_VARYING vec4 TEX0;\n"
|
"in vec4 TEX0;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"void main()\n"
|
"void main()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" vec4 paletteIndex = COMPAT_TEXTURE(SurfaceTex, TEX0.xy);\n"
|
" vec4 paletteIndex = texture(SurfaceTex, TEX0.xy);\n"
|
||||||
" vec4 outTexel = COMPAT_TEXTURE(PaletteTex, vec2(paletteIndex.r, 0));\n"
|
" vec4 outTexel = texture(PaletteTex, vec2(paletteIndex.r, 0));\n"
|
||||||
" FragColor = outTexel;\n"
|
" FragColor = outTexel;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
|
@ -171,9 +171,14 @@ static void BuildPrograms()
|
|||||||
if (OpenGL_GotVersion3)
|
if (OpenGL_GotVersion3)
|
||||||
{
|
{
|
||||||
PaletteProgram = OpenGL_BuildProgram(PassthroughVertShaderSrc, PaletteFragShaderSrc);
|
PaletteProgram = OpenGL_BuildProgram(PassthroughVertShaderSrc, PaletteFragShaderSrc);
|
||||||
ScaleProgram = OpenGL_BuildProgramFromFile(ddraw->shader);
|
|
||||||
|
if (PaletteProgram)
|
||||||
|
ScaleProgram = OpenGL_BuildProgramFromFile(ddraw->shader);
|
||||||
|
else
|
||||||
|
OpenGL_GotVersion3 = FALSE;
|
||||||
}
|
}
|
||||||
else if (OpenGL_GotVersion2)
|
|
||||||
|
if (OpenGL_GotVersion2 && !PaletteProgram)
|
||||||
{
|
{
|
||||||
PaletteProgram = OpenGL_BuildProgram(PassthroughVertShader110Src, PaletteFragShader110Src);
|
PaletteProgram = OpenGL_BuildProgram(PassthroughVertShader110Src, PaletteFragShader110Src);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user