X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=gl_rmain.c;h=bd002566bcbb9253aee75fb0d8659bcb7da513c9;hb=e948a0f3bad7d2b3f86175630c8e67a5f634c099;hp=280cedfb0fcc215253d26655dceaf8b1f26e795c;hpb=b05865224ecfe710b5d77681de7e46a6b9870e5e;p=xonotic%2Fdarkplaces.git diff --git a/gl_rmain.c b/gl_rmain.c index 280cedfb..bd002566 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -248,12 +248,12 @@ void FOG_clear(void) } r_refdef.fog_density = r_refdef.fog_red = r_refdef.fog_green = r_refdef.fog_blue = 0.0f; r_refdef.fog_start = 0; - r_refdef.fog_end = 1000000000; + r_refdef.fog_alpha = 1; } float FogForDistance(vec_t dist) { - unsigned int fogmasktableindex = (unsigned int)(bound(0, dist - r_refdef.fog_start, r_refdef.fog_end - r_refdef.fog_start) * r_refdef.fogmasktabledistmultiplier); + unsigned int fogmasktableindex = (unsigned int)(dist * r_refdef.fogmasktabledistmultiplier); return r_refdef.fogmasktable[min(fogmasktableindex, FOGMASKTABLEWIDTH - 1)]; } @@ -610,8 +610,6 @@ static const char *builtinshaderstring = "uniform float OffsetMapping_Scale;\n" "uniform float OffsetMapping_Bias;\n" "uniform float FogRangeRecip;\n" -"uniform float FogStart;\n" -"uniform float FogLength;\n" "\n" "uniform myhalf AmbientScale;\n" "uniform myhalf DiffuseScale;\n" @@ -863,8 +861,7 @@ static const char *builtinshaderstring = "\n" "#ifdef USEFOG\n" " // apply fog\n" -" color.rgb = mix(FogColor, color.rgb, myhalf(texture2D(Texture_FogMask, myhvec2(max(0.0, min(length(EyeVectorModelSpace) - FogStart, FogLength))*FogRangeRecip, 0.0))));\n" -//" color.rgb = mix(FogColor, color.rgb, myhalf(texture2D(Texture_FogMask, myhvec2(length(EyeVectorModelSpace)*FogRangeRecip, 0.0))));\n" +" color.rgb = mix(FogColor, color.rgb, myhalf(texture2D(Texture_FogMask, myhvec2(length(EyeVectorModelSpace)*FogRangeRecip, 0.0))));\n" "#endif\n" "\n" " gl_FragColor = vec4(color);\n" @@ -959,8 +956,6 @@ typedef struct r_glsl_permutation_s int loc_Color_Pants; int loc_Color_Shirt; int loc_FogRangeRecip; - int loc_FogStart; - int loc_FogLength; int loc_AmbientScale; int loc_DiffuseScale; int loc_SpecularScale; @@ -1092,8 +1087,6 @@ static void R_GLSL_CompilePermutation(const char *filename, int permutation, int p->loc_Color_Pants = qglGetUniformLocationARB(p->program, "Color_Pants"); p->loc_Color_Shirt = qglGetUniformLocationARB(p->program, "Color_Shirt"); p->loc_FogRangeRecip = qglGetUniformLocationARB(p->program, "FogRangeRecip"); - p->loc_FogStart = qglGetUniformLocationARB(p->program, "FogStart"); - p->loc_FogLength = qglGetUniformLocationARB(p->program, "FogLength"); p->loc_AmbientScale = qglGetUniformLocationARB(p->program, "AmbientScale"); p->loc_DiffuseScale = qglGetUniformLocationARB(p->program, "DiffuseScale"); p->loc_SpecularPower = qglGetUniformLocationARB(p->program, "SpecularPower"); @@ -1424,8 +1417,6 @@ int R_SetupSurfaceShader(const vec3_t lightcolorbase, qboolean modellighting, fl qglUniform3fARB(r_glsl_permutation->loc_Color_Shirt, 0, 0, 0); } if (r_glsl_permutation->loc_FogRangeRecip >= 0) qglUniform1fARB(r_glsl_permutation->loc_FogRangeRecip, r_refdef.fograngerecip); - if (r_glsl_permutation->loc_FogStart >= 0) qglUniform1fARB(r_glsl_permutation->loc_FogStart, r_refdef.fog_start); - if (r_glsl_permutation->loc_FogLength >= 0) qglUniform1fARB(r_glsl_permutation->loc_FogLength, r_refdef.fog_end - r_refdef.fog_start); if (r_glsl_permutation->loc_SpecularPower >= 0) qglUniform1fARB(r_glsl_permutation->loc_SpecularPower, rsurface.texture->specularpower); if (r_glsl_permutation->loc_OffsetMapping_Scale >= 0) qglUniform1fARB(r_glsl_permutation->loc_OffsetMapping_Scale, r_glsl_offsetmapping_scale.value); if (r_glsl_permutation->loc_DistortScaleRefractReflect >= 0) qglUniform4fARB(r_glsl_permutation->loc_DistortScaleRefractReflect, r_water_refractdistort.value * rsurface.texture->refractfactor, r_water_refractdistort.value * rsurface.texture->refractfactor, r_water_reflectdistort.value * rsurface.texture->reflectfactor, r_water_reflectdistort.value * rsurface.texture->reflectfactor); @@ -3256,12 +3247,8 @@ void R_UpdateVariables(void) } } - if (r_refdef.fog_start >= r_refdef.fog_end || r_refdef.fog_start < 0) - { - r_refdef.fog_start = 0; - r_refdef.fog_end = 1000000000; - // TODO update fog cvars here too - } + r_refdef.fog_alpha = min(1, r_refdef.fog_alpha); + r_refdef.fog_start = max(0, r_refdef.fog_start); R_UpdateFogColor();