mirror of
https://github.com/aap/librw.git
synced 2025-12-20 01:19:51 +00:00
implemented im3d for gl3 and d3d
This commit is contained in:
@@ -1,20 +1,24 @@
|
||||
all: im2d_gl3.inc simple_gl3.inc matfx_gl3.inc skin_gl3.inc
|
||||
all: im2d_gl3.inc im3d_gl3.inc simple_vs_gl3.inc simple_fs_gl3.inc matfx_gl3.inc skin_gl3.inc
|
||||
|
||||
im2d_gl3.inc: im2d.frag im2d.vert
|
||||
im2d_gl3.inc: im2d.vert
|
||||
(echo 'const char *im2d_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' im2d.vert;\
|
||||
echo ';';\
|
||||
echo 'const char *im2d_frag_src =';\
|
||||
sed 's/..*/"&\\n"/' im2d.frag;\
|
||||
echo ';') >im2d_gl3.inc
|
||||
|
||||
simple_gl3.inc: simple.frag simple.vert
|
||||
im3d_gl3.inc: im3d.vert
|
||||
(echo 'const char *im3d_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' im3d.vert;\
|
||||
echo ';') >im3d_gl3.inc
|
||||
|
||||
simple_vs_gl3.inc: simple.vert
|
||||
(echo 'const char *simple_vert_src =';\
|
||||
sed 's/..*/"&\\n"/' simple.vert;\
|
||||
echo ';';\
|
||||
echo 'const char *simple_frag_src =';\
|
||||
echo ';') >simple_vs_gl3.inc
|
||||
|
||||
simple_fs_gl3.inc: simple.frag
|
||||
(echo 'const char *simple_frag_src =';\
|
||||
sed 's/..*/"&\\n"/' simple.frag;\
|
||||
echo ';') >simple_gl3.inc
|
||||
echo ';') >simple_fs_gl3.inc
|
||||
|
||||
matfx_gl3.inc: matfx_env.frag matfx_env.vert
|
||||
(echo 'const char *matfx_env_vert_src =';\
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
#version 330
|
||||
|
||||
uniform sampler2D tex;
|
||||
|
||||
in vec4 v_color;
|
||||
in vec2 v_tex0;
|
||||
|
||||
out vec4 color;
|
||||
|
||||
void
|
||||
main(void)
|
||||
{
|
||||
color = v_color*texture(tex, vec2(v_tex0.x, v_tex0.y));
|
||||
}
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
#version 330
|
||||
|
||||
//layout(std140) uniform Im2DState
|
||||
//{
|
||||
// int u_alphaTest;
|
||||
// float u_alphaRef;
|
||||
// mat4 u_xform;
|
||||
//};
|
||||
layout(std140) uniform State
|
||||
{
|
||||
int u_alphaTest;
|
||||
float u_alphaRef;
|
||||
|
||||
int u_fogEnable;
|
||||
float u_fogStart;
|
||||
float u_fogEnd;
|
||||
vec4 u_fogColor;
|
||||
};
|
||||
|
||||
uniform vec4 u_xform;
|
||||
|
||||
@@ -15,6 +19,7 @@ layout(location = 3) in vec2 in_tex0;
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_tex0;
|
||||
out float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
@@ -24,4 +29,5 @@ main(void)
|
||||
gl_Position.xyz *= gl_Position.w;
|
||||
v_color = in_color;
|
||||
v_tex0 = in_tex0;
|
||||
v_fog = clamp((gl_Position.z - u_fogEnd)/(u_fogStart - u_fogEnd), 0.0, 1.0);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
const char *im2d_vert_src =
|
||||
"#version 330\n"
|
||||
|
||||
"//layout(std140) uniform Im2DState\n"
|
||||
"//{\n"
|
||||
"// int u_alphaTest;\n"
|
||||
"// float u_alphaRef;\n"
|
||||
"// mat4 u_xform;\n"
|
||||
"//};\n"
|
||||
"layout(std140) uniform State\n"
|
||||
"{\n"
|
||||
" int u_alphaTest;\n"
|
||||
" float u_alphaRef;\n"
|
||||
|
||||
" int u_fogEnable;\n"
|
||||
" float u_fogStart;\n"
|
||||
" float u_fogEnd;\n"
|
||||
" vec4 u_fogColor;\n"
|
||||
"};\n"
|
||||
|
||||
"uniform vec4 u_xform;\n"
|
||||
|
||||
@@ -16,6 +20,7 @@ const char *im2d_vert_src =
|
||||
|
||||
"out vec4 v_color;\n"
|
||||
"out vec2 v_tex0;\n"
|
||||
"out float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
@@ -25,22 +30,6 @@ const char *im2d_vert_src =
|
||||
" gl_Position.xyz *= gl_Position.w;\n"
|
||||
" v_color = in_color;\n"
|
||||
" v_tex0 = in_tex0;\n"
|
||||
" v_fog = clamp((gl_Position.z - u_fogEnd)/(u_fogStart - u_fogEnd), 0.0, 1.0);\n"
|
||||
"}\n"
|
||||
;
|
||||
const char *im2d_frag_src =
|
||||
"#version 330\n"
|
||||
|
||||
"uniform sampler2D tex;\n"
|
||||
|
||||
"in vec4 v_color;\n"
|
||||
"in vec2 v_tex0;\n"
|
||||
|
||||
"out vec4 color;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" color = v_color*texture(tex, vec2(v_tex0.x, v_tex0.y));\n"
|
||||
"}\n"
|
||||
|
||||
;
|
||||
|
||||
42
src/gl/shaders/im3d.vert
Normal file
42
src/gl/shaders/im3d.vert
Normal file
@@ -0,0 +1,42 @@
|
||||
#version 330
|
||||
|
||||
layout(std140) uniform State
|
||||
{
|
||||
int u_alphaTest;
|
||||
float u_alphaRef;
|
||||
|
||||
int u_fogEnable;
|
||||
float u_fogStart;
|
||||
float u_fogEnd;
|
||||
vec4 u_fogColor;
|
||||
};
|
||||
|
||||
layout(std140) uniform Scene
|
||||
{
|
||||
mat4 u_proj;
|
||||
mat4 u_view;
|
||||
};
|
||||
|
||||
layout(std140) uniform Object
|
||||
{
|
||||
mat4 u_world;
|
||||
};
|
||||
|
||||
layout(location = 0) in vec3 in_pos;
|
||||
layout(location = 2) in vec4 in_color;
|
||||
layout(location = 3) in vec2 in_tex0;
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_tex0;
|
||||
out float v_fog;
|
||||
|
||||
void
|
||||
main(void)
|
||||
{
|
||||
vec4 V = u_world * vec4(in_pos, 1.0);
|
||||
vec4 cV = u_view * V;
|
||||
gl_Position = u_proj * cV;
|
||||
v_color = in_color;
|
||||
v_tex0 = in_tex0;
|
||||
v_fog = clamp((cV.z - u_fogEnd)/(u_fogStart - u_fogEnd), 0.0, 1.0);
|
||||
}
|
||||
44
src/gl/shaders/im3d_gl3.inc
Normal file
44
src/gl/shaders/im3d_gl3.inc
Normal file
@@ -0,0 +1,44 @@
|
||||
const char *im3d_vert_src =
|
||||
"#version 330\n"
|
||||
|
||||
"layout(std140) uniform State\n"
|
||||
"{\n"
|
||||
" int u_alphaTest;\n"
|
||||
" float u_alphaRef;\n"
|
||||
|
||||
" int u_fogEnable;\n"
|
||||
" float u_fogStart;\n"
|
||||
" float u_fogEnd;\n"
|
||||
" vec4 u_fogColor;\n"
|
||||
"};\n"
|
||||
|
||||
"layout(std140) uniform Scene\n"
|
||||
"{\n"
|
||||
" mat4 u_proj;\n"
|
||||
" mat4 u_view;\n"
|
||||
"};\n"
|
||||
|
||||
"layout(std140) uniform Object\n"
|
||||
"{\n"
|
||||
" mat4 u_world;\n"
|
||||
"};\n"
|
||||
|
||||
"layout(location = 0) in vec3 in_pos;\n"
|
||||
"layout(location = 2) in vec4 in_color;\n"
|
||||
"layout(location = 3) in vec2 in_tex0;\n"
|
||||
|
||||
"out vec4 v_color;\n"
|
||||
"out vec2 v_tex0;\n"
|
||||
"out float v_fog;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" vec4 V = u_world * vec4(in_pos, 1.0);\n"
|
||||
" vec4 cV = u_view * V; \n"
|
||||
" gl_Position = u_proj * cV;\n"
|
||||
" v_color = in_color;\n"
|
||||
" v_tex0 = in_tex0;\n"
|
||||
" v_fog = clamp((cV.z - u_fogEnd)/(u_fogStart - u_fogEnd), 0.0, 1.0);\n"
|
||||
"}\n"
|
||||
;
|
||||
43
src/gl/shaders/simple_fs_gl3.inc
Normal file
43
src/gl/shaders/simple_fs_gl3.inc
Normal file
@@ -0,0 +1,43 @@
|
||||
const char *simple_frag_src =
|
||||
"#version 330\n"
|
||||
|
||||
"layout(std140) uniform State\n"
|
||||
"{\n"
|
||||
" int u_alphaTest;\n"
|
||||
" float u_alphaRef;\n"
|
||||
|
||||
" int u_fogEnable;\n"
|
||||
" float u_fogStart;\n"
|
||||
" float u_fogEnd;\n"
|
||||
" vec4 u_fogColor;\n"
|
||||
"};\n"
|
||||
|
||||
"uniform sampler2D tex;\n"
|
||||
|
||||
"in vec4 v_color;\n"
|
||||
"in vec2 v_tex0;\n"
|
||||
"in float v_fog;\n"
|
||||
|
||||
"out vec4 color;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" color = v_color*texture(tex, vec2(v_tex0.x, v_tex0.y));\n"
|
||||
" if(u_fogEnable != 0)\n"
|
||||
" color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);\n"
|
||||
" switch(u_alphaTest){\n"
|
||||
" default:\n"
|
||||
" case 0: break;\n"
|
||||
" case 1:\n"
|
||||
" if(color.a < u_alphaRef)\n"
|
||||
" discard;\n"
|
||||
" break;\n"
|
||||
" case 2:\n"
|
||||
" if(color.a >= u_alphaRef)\n"
|
||||
" discard;\n"
|
||||
" break;\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
|
||||
;
|
||||
@@ -70,46 +70,3 @@ const char *simple_vert_src =
|
||||
" v_fog = clamp((cV.z - u_fogEnd)/(u_fogStart - u_fogEnd), 0.0, 1.0);\n"
|
||||
"}\n"
|
||||
;
|
||||
const char *simple_frag_src =
|
||||
"#version 330\n"
|
||||
|
||||
"layout(std140) uniform State\n"
|
||||
"{\n"
|
||||
" int u_alphaTest;\n"
|
||||
" float u_alphaRef;\n"
|
||||
|
||||
" int u_fogEnable;\n"
|
||||
" float u_fogStart;\n"
|
||||
" float u_fogEnd;\n"
|
||||
" vec4 u_fogColor;\n"
|
||||
"};\n"
|
||||
|
||||
"uniform sampler2D tex;\n"
|
||||
|
||||
"in vec4 v_color;\n"
|
||||
"in vec2 v_tex0;\n"
|
||||
"in float v_fog;\n"
|
||||
|
||||
"out vec4 color;\n"
|
||||
|
||||
"void\n"
|
||||
"main(void)\n"
|
||||
"{\n"
|
||||
" color = v_color*texture(tex, vec2(v_tex0.x, v_tex0.y));\n"
|
||||
" if(u_fogEnable != 0)\n"
|
||||
" color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);\n"
|
||||
" switch(u_alphaTest){\n"
|
||||
" default:\n"
|
||||
" case 0: break;\n"
|
||||
" case 1:\n"
|
||||
" if(color.a < u_alphaRef)\n"
|
||||
" discard;\n"
|
||||
" break;\n"
|
||||
" case 2:\n"
|
||||
" if(color.a >= u_alphaRef)\n"
|
||||
" discard;\n"
|
||||
" break;\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
|
||||
;
|
||||
Reference in New Issue
Block a user