Make uShaderFlagsEnabled

This commit is contained in:
EmeraldLockdown 2026-07-03 10:11:35 -05:00
parent 98cc5f70c2
commit 2da23114e4
2 changed files with 8 additions and 1 deletions

View file

@ -1166,7 +1166,7 @@ static void OPTIMIZE_O3 gfx_sp_tri1(uint8_t vtx1_idx, uint8_t vtx2_idx, uint8_t
cm->use_fog = (rdp.other_mode_l >> 30) == G_BL_CLR_FOG;
cm->light_map = (rsp.geometry_mode & G_LIGHT_MAP_EXT) == G_LIGHT_MAP_EXT;
cm->tex_persp = (rdp.other_mode_h & G_TP_PERSP) == G_TP_PERSP;
cm->world_geometry = gShaderFlagsEnabled && (v1->world_geometry && v2->world_geometry && v3->world_geometry);
cm->world_geometry = (v1->world_geometry && v2->world_geometry && v3->world_geometry);
if (cm->texture_edge) {
cm->use_alpha = true;
@ -2430,6 +2430,8 @@ void gfx_set_builtin_uniforms(void) {
gfx_rapi->set_uniform(NULL, "uAspectRatio", SHADER_UNIFORM_TYPE_FLOAT, &aspectRatio, 1);
gfx_rapi->set_uniform(NULL, "uXAdjustRatio", SHADER_UNIFORM_TYPE_FLOAT, &xAdjustRatio, 1);
int shaderFlagEnabled = gShaderFlagsEnabled ? 1 : 0;
gfx_rapi->set_uniform(NULL, "uShaderFlagsEnabled", SHADER_UNIFORM_TYPE_BOOL, &shaderFlagEnabled, 1);
gfx_rapi->set_uniform(NULL, "uShaderFlags", SHADER_UNIFORM_TYPE_INT, gShaderFlags, SHADER_FLAG_MAX);
gfx_rapi->set_uniform(NULL, "uShaderFlagValues", SHADER_UNIFORM_TYPE_FLOAT, gShaderFlagValues, SHADER_FLAG_MAX);
gfx_update_matrices();

View file

@ -349,6 +349,7 @@ char *gfx_get_default_fragment_shader_from_cc(struct ColorCombiner *cc) {
}
if (world_geometry) {
append_line(fs_buf, &fs_len, "uniform bool uShaderFlagsEnabled;");
fs_len += sprintf(fs_buf + fs_len, "uniform int uShaderFlags[%d];\n", SHADER_FLAG_MAX);
fs_len += sprintf(fs_buf + fs_len, "uniform float uShaderFlagValues[%d];\n", SHADER_FLAG_MAX);
}
@ -404,6 +405,8 @@ char *gfx_get_default_fragment_shader_from_cc(struct ColorCombiner *cc) {
// TODO discard if alpha is 0?
if (world_geometry) {
append_line(fs_buf, &fs_len, "if (uShaderFlagsEnabled == true) {");
// hue
append_line(fs_buf, &fs_len, "if (uShaderFlags[0] == 1) {");
append_line(fs_buf, &fs_len, "vec3 hsv = rgb2hsv(texel.rgb);");
@ -450,6 +453,8 @@ char *gfx_get_default_fragment_shader_from_cc(struct ColorCombiner *cc) {
append_line(fs_buf, &fs_len, "float scan = sin(gl_FragCoord.y * 1.5) * 0.04;");
append_line(fs_buf, &fs_len, "texel.rgb -= scan * uShaderFlagValues[7];");
append_line(fs_buf, &fs_len, "}");
append_line(fs_buf, &fs_len, "}");
}
if (opt_fog) {