Browse Source

gl2shim: make shaders code more portable

pull/2/head
mittorn 9 months ago committed by Alibek Omarov
parent
commit
96127c6eb0
  1. 134
      ref/gl/gl2_shim/fragment.glsl.inc
  2. 109
      ref/gl/gl2_shim/vertex.glsl.inc

134
ref/gl/gl2_shim/fragment.glsl.inc

@ -1,69 +1,65 @@ @@ -1,69 +1,65 @@
R"(
#if VER <= 300
#define layout(x)
#endif
#if VER < 300
#define out attribute
#define in varying
#define texture texture2D
#endif
#if VER >= 130
precision mediump float;
#endif
#if ATTR_TEXCOORD0
uniform sampler2D uTex0;
#endif
#if ATTR_TEXCOORD1
uniform sampler2D uTex1;
#endif
#if FEAT_ALPHA_TEST
uniform float uAlphaTest;
#endif
#if FEAT_FOG
uniform vec4 uFog;
#endif
uniform vec4 uColor;
#if ATTR_COLOR
in vec4 vColor;
#endif
#if ATTR_TEXCOORD0
in vec2 vTexCoord0;
#endif
#if ATTR_TEXCOORD1
in vec2 vTexCoord1;
#endif
#if ATTR_NORMAL
in vec2 vNormal;
#endif
#if VER >= 300
out vec4 oFragColor;
#else
#define oFragColor gl_FragColor
#endif
void main()
{
#if ATTR_COLOR
vec4 c = vColor;
#else
vec4 c = uColor;
#endif
#if ATTR_TEXCOORD0
c = c * texture(uTex0, vTexCoord0);
#endif
#if ATTR_TEXCOORD1
c = c * texture(uTex1, vTexCoord1);
#endif
#if FEAT_ALPHA_TEST
if(c.a <= uAlphaTest)
discard;
#endif
#if FEAT_FOG
float fogDist = gl_FragCoord.z / gl_FragCoord.w;
float fogRate = clamp(exp(-uFog.w * fogDist), 0.f, 1.f);
c.rgb = mix(uFog.rgb, c.rgb, fogRate);
#endif
oFragColor = c;
}
)"
"#if VER <= 300\n"
"#define layout(x)\n"
"#endif\n"
"#if VER < 300\n"
"#define out attribute\n"
"#define in varying\n"
"#define texture texture2D\n"
"#endif\n"
"#if VER >= 130\n"
"precision mediump float;\n"
"#endif\n"
"#if ATTR_TEXCOORD0\n"
"uniform sampler2D uTex0;\n"
"#endif\n"
"#if ATTR_TEXCOORD1\n"
"uniform sampler2D uTex1;\n"
"#endif\n"
"#if FEAT_ALPHA_TEST\n"
"uniform float uAlphaTest;\n"
"#endif\n"
"#if FEAT_FOG\n"
"uniform vec4 uFog;\n"
"#endif\n"
"uniform vec4 uColor;\n"
"#if ATTR_COLOR\n"
"in vec4 vColor;\n"
"#endif\n"
"#if ATTR_TEXCOORD0\n"
"in vec2 vTexCoord0;\n"
"#endif\n"
"#if ATTR_TEXCOORD1\n"
"in vec2 vTexCoord1;\n"
"#endif\n"
"#if ATTR_NORMAL\n"
"in vec2 vNormal;\n"
"#endif\n"
"#if VER >= 300\n"
"out vec4 oFragColor;\n"
"#else\n"
"#define oFragColor gl_FragColor\n"
"#endif\n"
"void main()\n"
"{\n"
"#if ATTR_COLOR\n"
"vec4 c = vColor;\n"
"#else\n"
"vec4 c = uColor;\n"
"#endif\n"
"#if ATTR_TEXCOORD0\n"
"c = c * texture(uTex0, vTexCoord0);\n"
"#endif\n"
"#if ATTR_TEXCOORD1\n"
"c = c * texture(uTex1, vTexCoord1);\n"
"#endif\n"
"#if FEAT_ALPHA_TEST\n"
"if(c.a <= uAlphaTest)\n"
"discard;\n"
"#endif\n"
"#if FEAT_FOG\n"
"float fogDist = gl_FragCoord.z / gl_FragCoord.w;\n"
"float fogRate = clamp(exp(-uFog.w * fogDist), 0.f, 1.f);\n"
"c.rgb = mix(uFog.rgb, c.rgb, fogRate);\n"
"#endif\n"
"oFragColor = c;\n"
"}\n"

109
ref/gl/gl2_shim/vertex.glsl.inc

@ -1,56 +1,53 @@ @@ -1,56 +1,53 @@
R"(
#if VER <= 300
#define layout(x)
#endif
#if VER < 300
#define in attribute
#define out varying
#endif
layout(location = LOC_ATTR_POSITION) in vec3 inPosition;
#if ATTR_COLOR
layout(location = LOC_ATTR_COLOR) in vec4 inColor;
#endif
#if ATTR_TEXCOORD0
layout(location = LOC_ATTR_TEXCOORD0) in vec2 inTexCoord0;
#endif
#if ATTR_TEXCOORD1
layout(location = LOC_ATTR_TEXCOORD1) in vec2 inTexCoord1;
#endif
#if ATTR_NORMAL
in vec3 inNormal;
#endif
#if ATTR_COLOR
out vec4 vColor;
#endif
#if ATTR_TEXCOORD0
out vec2 vTexCoord0;
#endif
#if ATTR_TEXCOORD1
out vec2 vTexCoord1;
#endif
#if ATTR_NORMAL
out vec3 vNormal;
#endif
uniform mat4 uMVP;
void main()
{
gl_Position = uMVP * vec4(inPosition,1.0f);
#if ATTR_COLOR
vColor = inColor;
#endif
#if ATTR_NORMAL
vNormal = inNormal;
#endif
#if ATTR_TEXCOORD0
vTexCoord0 = inTexCoord0;
#endif
#if ATTR_TEXCOORD1
vTexCoord1 = inTexCoord1;
#endif
}
)"
"#if VER <= 300\n"
"#define layout(x)\n"
"#endif\n"
"#if VER < 300\n"
"#define in attribute\n"
"#define out varying\n"
"#endif\n"
"\n"
"layout(location = LOC_ATTR_POSITION) in vec3 inPosition;\n"
"#if ATTR_COLOR\n"
"layout(location = LOC_ATTR_COLOR) in vec4 inColor;\n"
"#endif\n"
"#if ATTR_TEXCOORD0\n"
"layout(location = LOC_ATTR_TEXCOORD0) in vec2 inTexCoord0;\n"
"#endif\n"
"#if ATTR_TEXCOORD1\n"
"layout(location = LOC_ATTR_TEXCOORD1) in vec2 inTexCoord1;\n"
"#endif\n"
"\n"
"#if ATTR_NORMAL\n"
"in vec3 inNormal;\n"
"#endif\n"
"#if ATTR_COLOR\n"
"out vec4 vColor;\n"
"#endif\n"
"#if ATTR_TEXCOORD0\n"
"out vec2 vTexCoord0;\n"
"#endif\n"
"#if ATTR_TEXCOORD1\n"
"out vec2 vTexCoord1;\n"
"#endif\n"
"#if ATTR_NORMAL\n"
"out vec3 vNormal;\n"
"#endif\n"
"\n"
"uniform mat4 uMVP;\n"
"\n"
"void main()\n"
"{\n"
"gl_Position = uMVP * vec4(inPosition,1.0f);\n"
"#if ATTR_COLOR\n"
"vColor = inColor;\n"
"#endif\n"
"#if ATTR_NORMAL\n"
"vNormal = inNormal;\n"
"#endif\n"
"#if ATTR_TEXCOORD0\n"
"vTexCoord0 = inTexCoord0;\n"
"#endif\n"
"#if ATTR_TEXCOORD1\n"
"vTexCoord1 = inTexCoord1;\n"
"#endif\n"
"}\n"

Loading…
Cancel
Save