Remove references to unused "GI" graphics effect

Assumedly abbreviation of "global illumination", some kind of alternative to the current way of drawing the shadows. Doesn't work very well when enabled, remove it.
This commit is contained in:
ROllerozxa 2025-03-09 20:55:04 +01:00
commit 958f4f5056
20 changed files with 30 additions and 211 deletions

View file

@ -5,9 +5,6 @@ varying lowp float FS_diffuse; /* LOWP IMPORTANT */
varying lowp vec2 FS_texcoord; /* LOWP IMPORTANT */
VARYINGS
GI_FUN
#ifdef ENABLE_AO
#define AO (1.0 - texture2D (tex_4, FS_ao).r*AMBIENT_OCCL_FACTOR)
#else
@ -19,6 +16,6 @@ void main(void)
lowp vec4 tmpvar_1;
tmpvar_1 = texture2D (tex_0, FS_texcoord);
gl_FragColor = (((tmpvar_1 * FS_diffuse) * SHADOW)
+ (tmpvar_1 * (_AMBIENT * AO))) GI;
+ (tmpvar_1 * (_AMBIENT * AO)));
}

View file

@ -20,7 +20,6 @@ void main(void)
FS_texcoord = _pos.xy*vec2(0.066);
SET_SHADOW
SET_GI
#ifdef ENABLE_AO
#ifdef SHADOW_AO_COMBINE

View file

@ -6,8 +6,6 @@ varying lowp float FS_diffuse; /* LOWP IMPORTANT */
varying lowp vec2 FS_texcoord; /* LOWP IMPORTANT */
VARYINGS
GI_FUN
#ifdef ENABLE_AO
#define AO (1.0 - texture2D (tex_4, FS_ao).r*AMBIENT_OCCL_FACTOR)
#else
@ -17,6 +15,6 @@ GI_FUN
void main(void)
{
gl_FragColor = (((color * FS_diffuse) * SHADOW)
+ (color * (_AMBIENT * AO))) GI;
+ (color * (_AMBIENT * AO)));
}

View file

@ -18,7 +18,6 @@ void main(void)
FS_diffuse = dot(LIGHT, normalize(normal))*_DIFFUSE;
SET_SHADOW
SET_GI
#ifdef ENABLE_AO
#ifdef SHADOW_AO_COMBINE

View file

@ -4,11 +4,9 @@ varying lowp float FS_diffuse;
varying lowp vec4 FS_color;
VARYINGS
GI_FUN
void main(void)
{
gl_FragColor = SHADOW * FS_color * FS_diffuse
+ FS_color * (_AMBIENT) * AMBIENT_OCCL GI;
+ FS_color * (_AMBIENT) * AMBIENT_OCCL;
}

View file

@ -17,7 +17,6 @@ void main(void)
vec4 pos = MVP*vec4(position, 1.);
SET_SHADOW
SET_AMBIENT_OCCL
SET_GI
FS_diffuse = max(dot(LIGHT, nor)*_DIFFUSE, 0.);
gl_Position = pos;
}

View file

@ -5,8 +5,6 @@ varying mediump vec3 FS_eye;
varying mediump vec3 FS_normal;
VARYINGS
GI_FUN
void main(void)
{
vec3 n = normalize(FS_normal);
@ -20,6 +18,6 @@ void main(void)
float shadow = clamp(SHADOW, .5, 1.);
gl_FragColor = specular*vec4(.7) + shadow * color * diffuse + color * ambient GI;
gl_FragColor = specular*vec4(.7) + shadow * color * diffuse + color * ambient;
}

View file

@ -18,7 +18,6 @@ void main(void)
SET_SHADOW
SET_AMBIENT_OCCL
SET_GI
FS_eye = (MV*vec4(position, 1.)).xyz;
gl_Position = pos;

View file

@ -2,10 +2,6 @@ varying float z;
void main(void)
{
#ifdef ENABLE_GI
gl_FragColor = vec4(0., z+SHADOW_BIAS, 0., 0.);
#else
gl_FragColor = vec4(z+SHADOW_BIAS);
#endif
}

View file

@ -8,4 +8,3 @@ void main(void)
z = (pos.z + 1.) / 2.;
gl_Position = pos;
}

View file

@ -1,17 +0,0 @@
varying float z;
#ifdef ENABLE_GI
varying float nor;
#endif
uniform vec4 color;
void main(void)
{
#ifdef ENABLE_GI
vec3 col = color.rgb;
gl_FragColor = vec4(col.r*nor, z+.02, col.g*nor, col.b*nor);
#else
gl_FragColor = vec4(z+.02);
#endif
}

View file

@ -1,17 +0,0 @@
attribute vec3 position;
uniform mat4 MVP;
uniform mat3 N;
varying float z;
#ifdef ENABLE_GI
attribute vec3 normal;
varying float nor;
#endif
void main(void)
{
vec4 pos = MVP*vec4(position, 1.);
z = (pos.z + 1.) / 2.;
nor = clamp((N*normal).y, 0., 1.);
gl_Position = pos;
}

View file

@ -1,17 +0,0 @@
varying float z;
#ifdef ENABLE_GI
uniform lowp sampler2D tex_0;
varying vec2 FS_texcoord;
varying float nor;
#endif
void main(void)
{
#ifdef ENABLE_GI
vec3 col = texture2D(tex_0, FS_texcoord).rgb;
gl_FragColor = vec4(col.r*nor, z+.02, col.g*nor, col.b*nor);
#else
gl_FragColor = vec4(z+.02);
#endif
}

View file

@ -1,22 +0,0 @@
attribute vec3 position;
uniform mat4 MVP;
uniform mat3 N;
varying float z;
#ifdef ENABLE_GI
attribute vec3 normal;
attribute vec2 texcoord;
varying vec2 FS_texcoord;
varying float nor;
#endif
void main(void)
{
vec4 pos = MVP*vec4(position, 1.);
z = (pos.z + 1.) / 2.;
nor = clamp((N*normal).y, 0., 1.);
#ifdef ENABLE_GI
FS_texcoord = texcoord;
#endif
gl_Position = pos;
}

View file

@ -4,11 +4,9 @@ UNIFORMS
varying lowp float FS_diffuse;
VARYINGS
GI_FUN
void main(void)
{
gl_FragColor = SHADOW * color * FS_diffuse
+ color * (_AMBIENT) * AMBIENT_OCCL GI;
+ color * (_AMBIENT) * AMBIENT_OCCL;
}

View file

@ -15,7 +15,6 @@ void main(void)
vec4 pos = MVP*vec4(position, 1.);
SET_SHADOW
SET_AMBIENT_OCCL
SET_GI
FS_diffuse = max(dot(LIGHT, nor)*_DIFFUSE, 0.);
gl_Position = pos;
}

View file

@ -5,12 +5,10 @@ varying lowp float FS_diffuse;
varying lowp vec2 FS_texcoord;
VARYINGS
GI_FUN
void main(void)
{
lowp vec4 albedo = texture2D(tex_0, FS_texcoord);
gl_FragColor = SHADOW*albedo*FS_diffuse +
albedo*(_AMBIENT)*AMBIENT_OCCL GI;
albedo*(_AMBIENT)*AMBIENT_OCCL;
}

View file

@ -17,7 +17,6 @@ void main(void)
SET_SHADOW
SET_AMBIENT_OCCL
SET_GI
FS_texcoord = texcoord;
FS_diffuse = max(dot(LIGHT, nor)*_DIFFUSE, 0.);

View file

@ -46,7 +46,6 @@ tms::shader *shader_pv_sticky;
tms::shader *shader_textured;
tms::shader *shader_gi;
tms::shader *shader_gi_col;
tms::shader *shader_gi_tex;
tms::shader *shader_ao;
tms::shader *shader_ao_norot;
tms::shader *shader_ao_clear;
@ -268,11 +267,6 @@ static const char *menu_bgsources[] = {
static void
read_shader(struct shader_load_data *sld, GLenum type, uint32_t global_flags, char **out)
{
if (!(global_flags & GF_ENABLE_GI) && (sld->flags & SL_REQUIRE_GI)) {
*out = 0;
return;
}
char path[1024];
snprintf(path, 1023, "data/shaders/%s.%s",
@ -315,18 +309,6 @@ struct shader_load_data shaders[] = {
{ SL_SHARED, "grass", &shader_grass },
{ SL_SHARED, "wheel", &shader_wheel },
{ SL_SHARED, "gi", &shader_gi },
{
SL_SHARED | SL_REQUIRE_GI,
"gi_tex",
&shader_gi_tex,
&shader_gi
},
{
SL_SHARED | SL_REQUIRE_GI,
"gi_col",
&shader_gi_col,
&shader_gi
},
{ SL_SHARED, "ao", &shader_ao },
{ SL_SHARED, "ao_norot", &shader_ao_norot },
{ SL_SHARED, "ao_clear", &shader_ao_clear },
@ -406,7 +388,6 @@ GLSL(
vec4 pos = MVP*vec4(position, 1.);
SET_SHADOW
SET_AMBIENT_OCCL
SET_GI
FS_diffuse = vec2(clamp(dot(LIGHT, nor)*_DIFFUSE, 0., 1.), .05*nor.z);
gl_Position = pos;
}
@ -417,12 +398,10 @@ GLSL(
varying lowp vec2 FS_diffuse;
VARYINGS
GI_FUN
void main(void)
{
gl_FragColor = SHADOW * COLOR * FS_diffuse.x
+ COLOR * (_AMBIENT + FS_diffuse.y) * AMBIENT_OCCL GI;
+ COLOR * (_AMBIENT + FS_diffuse.y) * AMBIENT_OCCL;
}
)
};
@ -528,16 +507,6 @@ material_factory::free_shaders()
delete shader_shiny;
delete shader_pv_sticky;
delete shader_textured;
if (shader_gi_tex == shader_gi) {
shader_gi_tex = 0;
} else {
delete shader_gi_tex;
}
if (shader_gi_col == shader_gi) {
shader_gi_col = 0;
} else {
delete shader_gi_col;
}
delete shader_gi;
delete shader_ao;
delete shader_ao_norot;
@ -995,7 +964,6 @@ material_factory::init()
material_factory::background_id = 0;
int ierr;
bool enable_gi = false; // settings["enable_gi"]->v.b
/* XXX: a gl error occurs when a gtk dialog is shown */
tms_assertf((ierr = glGetError()) == 0, "gl error %d at material factory init", ierr);
@ -1083,11 +1051,10 @@ material_factory::init_shaders()
int ierr;
char tmp[512];
bool enable_gi = false; // settings["enable_gi"]->v.b
tms_shader_global_clear_defines();
#ifndef TMS_BACKEND_ANDROID
#ifndef TMS_USE_GLES
tms_shader_global_define_vs("lowp", "");
tms_shader_global_define_fs("lowp", "");
tms_shader_global_define_vs("mediump", "");
@ -1096,11 +1063,10 @@ material_factory::init_shaders()
tms_shader_global_define_fs("highp", "");
#endif
if (settings["shadow_map_precision"]->v.i == 0 && !settings["shadow_map_depth_texture"]->is_true()) {
if (settings["shadow_map_precision"]->v.i == 0 && !settings["shadow_map_depth_texture"]->is_true())
tms_shader_global_define("SHADOW_BIAS", ".15");
} else {
else
tms_shader_global_define("SHADOW_BIAS", ".005");
}
tvec3 light = P.get_light_normal();
sprintf(tmp, "vec3(%f,%f,%f)", light.x, light.y, light.z);
@ -1122,9 +1088,8 @@ material_factory::init_shaders()
}
tms_shader_global_define_vs("SET_SHADOW", set_shadow);
} else {
} else
tms_shader_global_define_vs("SET_SHADOW", "");
}
if (settings["enable_ao"]->v.b) {
if (!settings["shadow_ao_combine"]->v.b) {
@ -1139,15 +1104,6 @@ material_factory::init_shaders()
tms_shader_global_define_vs("SET_AMBIENT_OCCL2", "");
}
if (enable_gi) {
tms_shader_global_define_vs("SET_GI", "FS_gi = (SMVP * (pos + vec4(0.,-2.25,0.,0.))).xy;");
tms_shader_global_define("ENABLE_GI","1");
tms_shader_global_define_fs("GI","+ get_gi()");
} else {
tms_shader_global_define_vs("SET_GI", "");
tms_shader_global_define_fs("GI","");
}
if (settings["enable_shadows"]->v.b || settings["enable_ao"]->v.b) {
if (settings["shadow_ao_combine"]->v.b) {
tms_shader_global_define_vs("UNIFORMS", "uniform mat4 SMVP; uniform lowp vec2 _AMBIENTDIFFUSE;");
@ -1162,10 +1118,8 @@ material_factory::init_shaders()
tms_shader_global_define_vs("UNIFORMS", tmp);
}
} else {
tms_debugf("sao=0 ");
} else
tms_shader_global_define_vs("UNIFORMS", "uniform lowp vec2 _AMBIENTDIFFUSE;");
}
strcpy(tmp, "uniform lowp vec2 _AMBIENTDIFFUSE;");
if (settings["enable_ao"]->v.b)
@ -1176,41 +1130,16 @@ material_factory::init_shaders()
tms_shader_global_define_fs("UNIFORMS", tmp);
tms_shader_global_define_fs("GI_FUN",
enable_gi ?
"vec4 get_gi(){"
"vec4 r = vec4(0.,0.,0.,0.);"
"vec2 offs[16];"
"float xx = .004;"
"offs[0] = vec2(0.0, 0.0);"
"offs[1] = vec2(xx, 0.0);"
"offs[2] = vec2(xx, xx);"
"offs[3] = vec2(0., xx);"
"offs[4] = vec2(-xx, xx);"
"offs[5] = vec2(-xx, 0.);"
"offs[6] = vec2(-xx, -xx);"
"offs[7] = vec2(0., -xx);"
"offs[8] = vec2(0.0, 0.0);"
"offs[9] = vec2(xx*2., 0.0);"
"offs[10] = vec2(xx*2., xx*2.);"
"offs[11] = vec2(0., xx*2.);"
"offs[12] = vec2(-xx*2., xx*2.);"
"offs[13] = vec2(-xx*2., 0.);"
"offs[14] = vec2(-xx*2., -xx*2.);"
"offs[15] = vec2(0., -xx*2.);"
"for (int x=0; x<16; x++){"
"vec4 s = texture2D(tex_3, FS_gi + offs[x]);"
"float d = FS_shadow_z-.1 - s.g;"
"r+=vec4(s.rba*.2, 0.)*float(d > 0. && d < .2);"
"}return clamp(r / 16., 0, .2);}" : "");
tmp[0] = '\0';
if (settings["enable_shadows"]->v.b)
strcat(tmp, "varying lowp float FS_shadow_z; varying lowp vec2 FS_shadow;");
if (settings["shadow_quality"]->v.u8 == 1)
strcat(tmp, "varying lowp vec2 FS_shadow_dither;");
if (settings["enable_ao"]->v.b)
strcat(tmp, "varying lowp vec2 FS_ao;");
sprintf(tmp, "%s%s%s%s%s",
settings["enable_shadows"]->v.b ? "varying lowp float FS_shadow_z;" : "",
settings["enable_shadows"]->v.b ? "varying lowp vec2 FS_shadow;" : "",
settings["shadow_quality"]->v.u8 == 1 ? "varying lowp vec2 FS_shadow_dither;" : "",
settings["enable_ao"]->v.b ? "varying lowp vec2 FS_ao;" : "",
enable_gi ? "varying lowp vec2 FS_gi;" : ""
);
tms_shader_global_define("VARYINGS", tmp);
// Small shadow bias to prevent shadow acne
@ -1272,10 +1201,6 @@ material_factory::init_shaders()
uint32_t global_flags = 0;
if (enable_gi) {
global_flags |= GF_ENABLE_GI;
}
for (int x=0; x<num_shaders; ++x) {
struct shader_load_data *sld = &shaders[x];
@ -1475,7 +1400,6 @@ material_factory::init_materials()
_tms.gamma_correct = settings["gamma_correct"]->v.b;
bool shadow_ao_combine = settings["shadow_ao_combine"]->v.b;
bool enable_gi = false; // settings["enable_gi"]->v.b
m_bg.pipeline[0].program = shader_bg->get_program(0);
m_bg.pipeline[1].program = 0;
@ -1575,7 +1499,7 @@ material_factory::init_materials()
m_cavemask.pipeline[3].program = shader_ao_clear->get_program(3);
m_pv_colored.pipeline[0].program = shader_pv_colored->get_program(0);
m_pv_colored.pipeline[1].program = shader_gi_col->get_program(1);
m_pv_colored.pipeline[1].program = shader_gi->get_program(1);
m_pv_colored.pipeline[2].program = shader_pv_colored_m->get_program(2);
if (shadow_ao_combine) {
m_pv_colored.pipeline[3].program = shader_ao->get_program(3);
@ -1703,7 +1627,6 @@ material_factory::init_materials()
m_wood.pipeline[1].program = shader_gi->get_program(1);
m_wood.pipeline[2].program = shader_pv_textured_m->get_program(2);
m_wood.pipeline[0].texture[0] = static_cast<tms_texture*>(tex_wood);
if (enable_gi) m_wood.pipeline[1].texture[0] = static_cast<tms_texture*>(tex_wood);
m_wood.pipeline[2].texture[0] = static_cast<tms_texture*>(tex_wood);
if (shadow_ao_combine) {
m_wood.pipeline[3].program = shader_ao->get_program(3);
@ -1716,10 +1639,9 @@ material_factory::init_materials()
m_wood.type = TYPE_WOOD;
m_tpixel.pipeline[0].program = shader_pv_textured->get_program(0);
m_tpixel.pipeline[1].program = shader_gi_tex->get_program(1);
m_tpixel.pipeline[1].program = shader_gi->get_program(1);
m_tpixel.pipeline[2].program = shader_pv_textured_m->get_program(2);
m_tpixel.pipeline[0].texture[0] = static_cast<tms_texture*>(tex_tpixel);
if (enable_gi) m_tpixel.pipeline[1].texture[0] = static_cast<tms_texture*>(tex_tpixel);
m_tpixel.pipeline[2].texture[0] = static_cast<tms_texture*>(tex_tpixel);
if (shadow_ao_combine) {
m_tpixel.pipeline[3].program = shader_ao->get_program(3);
@ -1739,7 +1661,7 @@ material_factory::init_materials()
m_grass.pipeline[0].blend_mode = TMS_BLENDMODE__SRC_ALPHA__ONE_MINUS_SRC_ALPHA;
m_weight.pipeline[0].program = shader_pv_colored->get_program(0);
m_weight.pipeline[1].program = shader_gi_col->get_program(1);
m_weight.pipeline[1].program = shader_gi->get_program(1);
m_weight.pipeline[2].program = shader_pv_colored_m->get_program(2);
if (shadow_ao_combine) {
m_weight.pipeline[3].program = shader_ao->get_program(3);
@ -1883,7 +1805,7 @@ material_factory::init_materials()
m_rocket.type = TYPE_METAL;
m_plastic.pipeline[0].program = shader_pv_colored->get_program(0);
m_plastic.pipeline[1].program = shader_gi_col->get_program(1);
m_plastic.pipeline[1].program = shader_gi->get_program(1);
m_plastic.pipeline[2].program = shader_pv_colored_m->get_program(2);
if (shadow_ao_combine) {
m_plastic.pipeline[3].program = shader_ao->get_program(3);
@ -2300,11 +2222,10 @@ material_factory::init_materials()
if (!(m_rackhouse.pipeline[0].program = shader_shiny->get_program(0)))
m_rackhouse.pipeline[0].program = shader_pv_textured->get_program(0);
m_rackhouse.pipeline[1].program = shader_gi_tex->get_program(1);
m_rackhouse.pipeline[1].program = shader_gi->get_program(1);
m_rackhouse.pipeline[2].program = shader_pv_textured_m->get_program(2);
m_rackhouse.pipeline[0].texture[0] = static_cast<tms_texture*>(tex_rackhouse);
m_rackhouse.pipeline[0].texture[1] = static_cast<tms_texture*>(tex_reflection);
if (enable_gi) m_rackhouse.pipeline[1].texture[0] = static_cast<tms_texture*>(tex_rackhouse);
m_rackhouse.pipeline[2].texture[0] = static_cast<tms_texture*>(tex_rackhouse);
if (shadow_ao_combine) {
m_rackhouse.pipeline[3].program = shader_ao->get_program(3);
@ -2435,7 +2356,7 @@ material_factory::init_materials()
m_charbuf2.pipeline[2].program = 0;
m_conveyor.pipeline[0].program = shader_pv_colored->get_program(0);
m_conveyor.pipeline[1].program = shader_gi_col->get_program(1);
m_conveyor.pipeline[1].program = shader_gi->get_program(1);
m_conveyor.pipeline[2].program = shader_pv_colored->get_program(2);
if (shadow_ao_combine) {
m_conveyor.pipeline[3].program = shader_ao->get_program(3);
@ -2535,10 +2456,9 @@ material_factory::init_materials()
m_robot2.type = TYPE_SHEET_METAL;
m_stone.pipeline[0].program = shader_pv_textured->get_program(0);
m_stone.pipeline[1].program = shader_gi_tex->get_program(1);
m_stone.pipeline[1].program = shader_gi->get_program(1);
m_stone.pipeline[2].program = shader_pv_textured_m->get_program(2);
m_stone.pipeline[0].texture[0] = static_cast<tms_texture*>(tex_tpixel);
if (enable_gi) m_stone.pipeline[1].texture[0] = static_cast<tms_texture*>(tex_tpixel);
m_stone.pipeline[2].texture[0] = static_cast<tms_texture*>(tex_tpixel);
if (shadow_ao_combine) {
m_stone.pipeline[3].program = shader_ao->get_program(3);
@ -2551,10 +2471,9 @@ material_factory::init_materials()
m_stone.type = TYPE_STONE;
m_decoration.pipeline[0].program = shader_pv_textured->get_program(0);
m_decoration.pipeline[1].program = shader_gi_tex->get_program(1);
m_decoration.pipeline[1].program = shader_gi->get_program(1);
m_decoration.pipeline[2].program = shader_pv_textured_m->get_program(2);
m_decoration.pipeline[0].texture[0] = static_cast<tms_texture*>(tex_decoration);
if (enable_gi) m_decoration.pipeline[1].texture[0] = static_cast<tms_texture*>(tex_decoration);
m_decoration.pipeline[2].texture[0] = static_cast<tms_texture*>(tex_decoration);
if (shadow_ao_combine) {
m_decoration.pipeline[3].program = shader_ao->get_program(3);

View file

@ -68,9 +68,6 @@
#define C_STONE_STONE (TYPE_STONE | TYPE_STONE_STONE)
#define SL_SHARED (1UL << 0)
#define SL_REQUIRE_GI (1UL << 4)
#define GF_ENABLE_GI (1UL << 1)
struct shader_load_data {
uint32_t flags;