mirror of
https://github.com/aap/librw.git
synced 2025-12-20 01:19:51 +00:00
made GLES runtime option; also broke opengl txd format again
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
all: header_vs.inc header_fs.inc im2d_gl3.inc im3d_gl3.inc default_vs_gl3.inc simple_fs_gl3.inc matfx_gl3.inc skin_gl3.inc
|
||||
all: header_vs.inc header_fs.inc im2d_gl.inc im3d_gl.inc default_vs_gl.inc simple_fs_gl.inc matfx_gl.inc skin_gl.inc
|
||||
|
||||
header_vs.inc: header.vert
|
||||
(echo 'const char *header_vert_src =';\
|
||||
@@ -10,36 +10,36 @@ header_fs.inc: header.frag
|
||||
sed 's/..*/"&\\n"/' header.frag;\
|
||||
echo ';') >header_fs.inc
|
||||
|
||||
im2d_gl3.inc: im2d.vert
|
||||
im2d_gl.inc: im2d.vert
|
||||
(echo 'const char *im2d_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' im2d.vert;\
|
||||
echo ';') >im2d_gl3.inc
|
||||
echo ';') >im2d_gl.inc
|
||||
|
||||
im3d_gl3.inc: im3d.vert
|
||||
im3d_gl.inc: im3d.vert
|
||||
(echo 'const char *im3d_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' im3d.vert;\
|
||||
echo ';') >im3d_gl3.inc
|
||||
echo ';') >im3d_gl.inc
|
||||
|
||||
default_vs_gl3.inc: default.vert
|
||||
default_vs_gl.inc: default.vert
|
||||
(echo 'const char *default_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' default.vert;\
|
||||
echo ';') >default_vs_gl3.inc
|
||||
echo ';') >default_vs_gl.inc
|
||||
|
||||
simple_fs_gl3.inc: simple.frag
|
||||
simple_fs_gl.inc: simple.frag
|
||||
(echo 'const char *simple_frag_src =';\
|
||||
sed 's/..*/"&\\n"/' simple.frag;\
|
||||
echo ';') >simple_fs_gl3.inc
|
||||
echo ';') >simple_fs_gl.inc
|
||||
|
||||
matfx_gl3.inc: matfx_env.frag matfx_env.vert
|
||||
matfx_gl.inc: matfx_env.frag matfx_env.vert
|
||||
(echo 'const char *matfx_env_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' matfx_env.vert;\
|
||||
echo ';';\
|
||||
echo 'const char *matfx_env_frag_src =';\
|
||||
sed 's/..*/"&\\n"/' matfx_env.frag;\
|
||||
echo ';') >matfx_gl3.inc
|
||||
echo ';') >matfx_gl.inc
|
||||
|
||||
skin_gl3.inc: skin.vert
|
||||
skin_gl.inc: skin.vert
|
||||
(echo 'const char *skin_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' skin.vert;\
|
||||
echo ';') >skin_gl3.inc
|
||||
echo ';') >skin_gl.inc
|
||||
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
layout(location = 0) in vec3 in_pos;
|
||||
layout(location = 1) in vec3 in_normal;
|
||||
layout(location = 2) in vec4 in_color;
|
||||
layout(location = 3) in vec2 in_tex0;
|
||||
VSIN(ATTRIB_POS) vec3 in_pos;
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_tex0;
|
||||
out float v_fog;
|
||||
VSOUT vec4 v_color;
|
||||
VSOUT vec2 v_tex0;
|
||||
VSOUT float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
|
||||
25
src/gl/shaders/default_vs_gl.inc
Normal file
25
src/gl/shaders/default_vs_gl.inc
Normal file
@@ -0,0 +1,25 @@
|
||||
const char *default_vert_src =
|
||||
"VSIN(ATTRIB_POS) vec3 in_pos;\n"
|
||||
|
||||
"VSOUT vec4 v_color;\n"
|
||||
"VSOUT vec2 v_tex0;\n"
|
||||
"VSOUT float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n"
|
||||
" gl_Position = u_proj * u_view * Vertex;\n"
|
||||
" vec3 Normal = mat3(u_world) * in_normal;\n"
|
||||
|
||||
" v_tex0 = in_tex0;\n"
|
||||
|
||||
" v_color = in_color;\n"
|
||||
" v_color.rgb += u_ambLight.rgb*surfAmbient;\n"
|
||||
" v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;\n"
|
||||
" v_color = clamp(v_color, 0.0, 1.0);\n"
|
||||
" v_color *= u_matColor;\n"
|
||||
|
||||
" v_fog = DoFog(gl_Position.w);\n"
|
||||
"}\n"
|
||||
;
|
||||
@@ -17,6 +17,10 @@ uniform vec4 u_fogColor;
|
||||
#define u_fogRange (u_fogData.z)
|
||||
#define u_fogDisable (u_fogData.w)
|
||||
|
||||
#ifndef GL2
|
||||
out vec4 fragColor;
|
||||
#endif
|
||||
|
||||
void DoAlphaTest(float a)
|
||||
{
|
||||
if(a < u_alphaRef.x || a >= u_alphaRef.y)
|
||||
|
||||
@@ -3,6 +3,23 @@
|
||||
//#define POINTLIGHTS
|
||||
//#define SPOTLIGHTS
|
||||
|
||||
#define ATTRIB_POS 0
|
||||
#define ATTRIB_NORMAL 1
|
||||
#define ATTRIB_COLOR 2
|
||||
#define ATTRIB_WEIGHTS 3
|
||||
#define ATTRIB_INDICES 4
|
||||
#define ATTRIB_TEXCOORDS0 5
|
||||
#define ATTRIB_TEXCOORDS1 6
|
||||
|
||||
|
||||
VSIN(ATTRIB_NORMAL) vec3 in_normal;
|
||||
VSIN(ATTRIB_COLOR) vec4 in_color;
|
||||
VSIN(ATTRIB_WEIGHTS) vec4 in_weights;
|
||||
VSIN(ATTRIB_INDICES) vec4 in_indices;
|
||||
VSIN(ATTRIB_TEXCOORDS0) vec2 in_tex0;
|
||||
VSIN(ATTRIB_TEXCOORDS1) vec2 in_tex1;
|
||||
|
||||
|
||||
#ifdef USE_UBOS
|
||||
layout(std140) uniform State
|
||||
{
|
||||
|
||||
@@ -18,6 +18,10 @@ const char *header_frag_src =
|
||||
"#define u_fogRange (u_fogData.z)\n"
|
||||
"#define u_fogDisable (u_fogData.w)\n"
|
||||
|
||||
"#ifndef GL2\n"
|
||||
"out vec4 fragColor;\n"
|
||||
"#endif\n"
|
||||
|
||||
"void DoAlphaTest(float a)\n"
|
||||
"{\n"
|
||||
" if(a < u_alphaRef.x || a >= u_alphaRef.y)\n"
|
||||
|
||||
@@ -4,6 +4,23 @@ const char *header_vert_src =
|
||||
"//#define POINTLIGHTS\n"
|
||||
"//#define SPOTLIGHTS\n"
|
||||
|
||||
"#define ATTRIB_POS 0\n"
|
||||
"#define ATTRIB_NORMAL 1\n"
|
||||
"#define ATTRIB_COLOR 2\n"
|
||||
"#define ATTRIB_WEIGHTS 3\n"
|
||||
"#define ATTRIB_INDICES 4\n"
|
||||
"#define ATTRIB_TEXCOORDS0 5\n"
|
||||
"#define ATTRIB_TEXCOORDS1 6\n"
|
||||
|
||||
|
||||
"VSIN(ATTRIB_NORMAL) vec3 in_normal;\n"
|
||||
"VSIN(ATTRIB_COLOR) vec4 in_color;\n"
|
||||
"VSIN(ATTRIB_WEIGHTS) vec4 in_weights;\n"
|
||||
"VSIN(ATTRIB_INDICES) vec4 in_indices;\n"
|
||||
"VSIN(ATTRIB_TEXCOORDS0) vec2 in_tex0;\n"
|
||||
"VSIN(ATTRIB_TEXCOORDS1) vec2 in_tex1;\n"
|
||||
|
||||
|
||||
"#ifdef USE_UBOS\n"
|
||||
"layout(std140) uniform State\n"
|
||||
"{\n"
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
uniform vec4 u_xform;
|
||||
|
||||
layout(location = 0) in vec4 in_pos;
|
||||
layout(location = 2) in vec4 in_color;
|
||||
layout(location = 3) in vec2 in_tex0;
|
||||
VSIN(ATTRIB_POS) vec4 in_pos;
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_tex0;
|
||||
out float v_fog;
|
||||
VSOUT vec4 v_color;
|
||||
VSOUT vec2 v_tex0;
|
||||
VSOUT float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
|
||||
21
src/gl/shaders/im2d_gl.inc
Normal file
21
src/gl/shaders/im2d_gl.inc
Normal file
@@ -0,0 +1,21 @@
|
||||
const char *im2d_vert_src =
|
||||
"uniform vec4 u_xform;\n"
|
||||
|
||||
"VSIN(ATTRIB_POS) vec4 in_pos;\n"
|
||||
|
||||
"VSOUT vec4 v_color;\n"
|
||||
"VSOUT vec2 v_tex0;\n"
|
||||
"VSOUT float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" gl_Position = in_pos;\n"
|
||||
" gl_Position.w = 1.0;\n"
|
||||
" gl_Position.xy = gl_Position.xy * u_xform.xy + u_xform.zw;\n"
|
||||
" v_fog = DoFog(gl_Position.z);\n"
|
||||
" gl_Position.xyz *= gl_Position.w;\n"
|
||||
" v_color = in_color;\n"
|
||||
" v_tex0 = in_tex0;\n"
|
||||
"}\n"
|
||||
;
|
||||
@@ -1,10 +1,8 @@
|
||||
layout(location = 0) in vec3 in_pos;
|
||||
layout(location = 2) in vec4 in_color;
|
||||
layout(location = 3) in vec2 in_tex0;
|
||||
VSIN(ATTRIB_POS) vec3 in_pos;
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_tex0;
|
||||
out float v_fog;
|
||||
VSOUT vec4 v_color;
|
||||
VSOUT vec2 v_tex0;
|
||||
VSOUT float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
|
||||
18
src/gl/shaders/im3d_gl.inc
Normal file
18
src/gl/shaders/im3d_gl.inc
Normal file
@@ -0,0 +1,18 @@
|
||||
const char *im3d_vert_src =
|
||||
"VSIN(ATTRIB_POS) vec3 in_pos;\n"
|
||||
|
||||
"VSOUT vec4 v_color;\n"
|
||||
"VSOUT vec2 v_tex0;\n"
|
||||
"VSOUT float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n"
|
||||
" vec4 CamVertex = u_view * Vertex;\n"
|
||||
" gl_Position = u_proj * CamVertex;\n"
|
||||
" v_color = in_color;\n"
|
||||
" v_tex0 = in_tex0;\n"
|
||||
" v_fog = DoFog(gl_Position.w);\n"
|
||||
"}\n"
|
||||
;
|
||||
@@ -7,12 +7,10 @@ uniform vec4 u_colorClamp;
|
||||
#define shininess (u_fxparams.x)
|
||||
#define disableFBA (u_fxparams.y)
|
||||
|
||||
in vec4 v_color;
|
||||
in vec2 v_tex0;
|
||||
in vec2 v_tex1;
|
||||
in float v_fog;
|
||||
|
||||
out vec4 color;
|
||||
FSIN vec4 v_color;
|
||||
FSIN vec2 v_tex0;
|
||||
FSIN vec2 v_tex1;
|
||||
FSIN float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
@@ -27,8 +25,11 @@ main(void)
|
||||
pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog);
|
||||
|
||||
float fba = max(pass1.a, disableFBA);
|
||||
vec4 color;
|
||||
color.rgb = pass1.rgb*pass1.a + pass2.rgb*fba;
|
||||
color.a = pass1.a;
|
||||
|
||||
DoAlphaTest(color.a);
|
||||
|
||||
FRAGCOLOR(color);
|
||||
}
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
uniform mat4 u_texMatrix;
|
||||
|
||||
layout(location = 0) in vec3 in_pos;
|
||||
layout(location = 1) in vec3 in_normal;
|
||||
layout(location = 2) in vec4 in_color;
|
||||
layout(location = 3) in vec2 in_tex0;
|
||||
VSIN(ATTRIB_POS) vec3 in_pos;
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_tex0;
|
||||
out vec2 v_tex1;
|
||||
out float v_fog;
|
||||
VSOUT vec4 v_color;
|
||||
VSOUT vec2 v_tex0;
|
||||
VSOUT vec2 v_tex1;
|
||||
VSOUT float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
|
||||
66
src/gl/shaders/matfx_gl.inc
Normal file
66
src/gl/shaders/matfx_gl.inc
Normal file
@@ -0,0 +1,66 @@
|
||||
const char *matfx_env_vert_src =
|
||||
"uniform mat4 u_texMatrix;\n"
|
||||
|
||||
"VSIN(ATTRIB_POS) vec3 in_pos;\n"
|
||||
|
||||
"VSOUT vec4 v_color;\n"
|
||||
"VSOUT vec2 v_tex0;\n"
|
||||
"VSOUT vec2 v_tex1;\n"
|
||||
"VSOUT float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n"
|
||||
" gl_Position = u_proj * u_view * Vertex;\n"
|
||||
" vec3 Normal = mat3(u_world) * in_normal;\n"
|
||||
|
||||
" v_tex0 = in_tex0;\n"
|
||||
" v_tex1 = (u_texMatrix * vec4(Normal, 1.0)).xy;\n"
|
||||
|
||||
" v_color = in_color;\n"
|
||||
" v_color.rgb += u_ambLight.rgb*surfAmbient;\n"
|
||||
" v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;\n"
|
||||
" v_color = clamp(v_color, 0.0, 1.0);\n"
|
||||
" v_color *= u_matColor;\n"
|
||||
|
||||
" v_fog = DoFog(gl_Position.w);\n"
|
||||
"}\n"
|
||||
;
|
||||
const char *matfx_env_frag_src =
|
||||
"uniform sampler2D tex0;\n"
|
||||
"uniform sampler2D tex1;\n"
|
||||
|
||||
"uniform vec2 u_fxparams;\n"
|
||||
"uniform vec4 u_colorClamp;\n"
|
||||
|
||||
"#define shininess (u_fxparams.x)\n"
|
||||
"#define disableFBA (u_fxparams.y)\n"
|
||||
|
||||
"FSIN vec4 v_color;\n"
|
||||
"FSIN vec2 v_tex0;\n"
|
||||
"FSIN vec2 v_tex1;\n"
|
||||
"FSIN float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec4 pass1 = v_color;\n"
|
||||
" vec4 envColor = max(pass1, u_colorClamp);\n"
|
||||
" pass1 *= texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n"
|
||||
|
||||
" vec4 pass2 = envColor*shininess*texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y));\n"
|
||||
|
||||
" pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog);\n"
|
||||
" pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog);\n"
|
||||
|
||||
" float fba = max(pass1.a, disableFBA);\n"
|
||||
" vec4 color;\n"
|
||||
" color.rgb = pass1.rgb*pass1.a + pass2.rgb*fba;\n"
|
||||
" color.a = pass1.a;\n"
|
||||
|
||||
" DoAlphaTest(color.a);\n"
|
||||
|
||||
" FRAGCOLOR(color);\n"
|
||||
"}\n"
|
||||
;
|
||||
@@ -1,16 +1,15 @@
|
||||
uniform sampler2D tex0;
|
||||
|
||||
in vec4 v_color;
|
||||
in vec2 v_tex0;
|
||||
in float v_fog;
|
||||
|
||||
out vec4 color;
|
||||
FSIN vec4 v_color;
|
||||
FSIN vec2 v_tex0;
|
||||
FSIN float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
{
|
||||
color = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));
|
||||
vec4 color = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));
|
||||
color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);
|
||||
DoAlphaTest(color.a);
|
||||
FRAGCOLOR(color);
|
||||
}
|
||||
|
||||
|
||||
17
src/gl/shaders/simple_fs_gl.inc
Normal file
17
src/gl/shaders/simple_fs_gl.inc
Normal file
@@ -0,0 +1,17 @@
|
||||
const char *simple_frag_src =
|
||||
"uniform sampler2D tex0;\n"
|
||||
|
||||
"FSIN vec4 v_color;\n"
|
||||
"FSIN vec2 v_tex0;\n"
|
||||
"FSIN float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec4 color = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n"
|
||||
" color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);\n"
|
||||
" DoAlphaTest(color.a);\n"
|
||||
" FRAGCOLOR(color);\n"
|
||||
"}\n"
|
||||
|
||||
;
|
||||
@@ -1,15 +1,10 @@
|
||||
uniform mat4 u_boneMatrices[64];
|
||||
|
||||
layout(location = 0) in vec3 in_pos;
|
||||
layout(location = 1) in vec3 in_normal;
|
||||
layout(location = 2) in vec4 in_color;
|
||||
layout(location = 3) in vec2 in_tex0;
|
||||
layout(location = 11) in vec4 in_weights;
|
||||
layout(location = 12) in vec4 in_indices;
|
||||
VSIN(ATTRIB_POS) vec3 in_pos;
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_tex0;
|
||||
out float v_fog;
|
||||
VSOUT vec4 v_color;
|
||||
VSOUT vec2 v_tex0;
|
||||
VSOUT float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
|
||||
34
src/gl/shaders/skin_gl.inc
Normal file
34
src/gl/shaders/skin_gl.inc
Normal file
@@ -0,0 +1,34 @@
|
||||
const char *skin_vert_src =
|
||||
"uniform mat4 u_boneMatrices[64];\n"
|
||||
|
||||
"VSIN(ATTRIB_POS) vec3 in_pos;\n"
|
||||
|
||||
"VSOUT vec4 v_color;\n"
|
||||
"VSOUT vec2 v_tex0;\n"
|
||||
"VSOUT float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec3 SkinVertex = vec3(0.0, 0.0, 0.0);\n"
|
||||
" vec3 SkinNormal = vec3(0.0, 0.0, 0.0);\n"
|
||||
" for(int i = 0; i < 4; i++){\n"
|
||||
" SkinVertex += (u_boneMatrices[int(in_indices[i])] * vec4(in_pos, 1.0)).xyz * in_weights[i];\n"
|
||||
" SkinNormal += (mat3(u_boneMatrices[int(in_indices[i])]) * in_normal) * in_weights[i];\n"
|
||||
" }\n"
|
||||
|
||||
" vec4 Vertex = u_world * vec4(SkinVertex, 1.0);\n"
|
||||
" gl_Position = u_proj * u_view * Vertex;\n"
|
||||
" vec3 Normal = mat3(u_world) * SkinNormal;\n"
|
||||
|
||||
" v_tex0 = in_tex0;\n"
|
||||
|
||||
" v_color = in_color;\n"
|
||||
" v_color.rgb += u_ambLight.rgb*surfAmbient;\n"
|
||||
" v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;\n"
|
||||
" v_color = clamp(v_color, 0.0, 1.0);\n"
|
||||
" v_color *= u_matColor;\n"
|
||||
|
||||
" v_fog = DoFog(gl_Position.z);\n"
|
||||
"}\n"
|
||||
;
|
||||
Reference in New Issue
Block a user