]> git.rm.cloudns.org Git - xonotic/netradiant.git/commitdiff
Revert "Fix netradiant#182"
authorThomas Debesse <dev@illwieckz.net>
Thu, 15 Feb 2024 14:43:44 +0000 (15:43 +0100)
committerThomas Debesse <dev@illwieckz.net>
Thu, 15 Feb 2024 14:43:44 +0000 (15:43 +0100)
This reverts commit f88482a4806e19b0df5117d6cb17249ccd967940.

tools/quake3/q3map2/light_bounce.c
tools/quake3/q3map2/light_ydnar.c

index 67230851a786696695f9f55ec8b607250e605782..b0b838b8ccea11094e34b50f3dc1745e0dc64384 100644 (file)
@@ -268,8 +268,7 @@ static void RadSample( int lightmapNum, bspDrawSurface_t *ds, rawLightmap_t *lm,
        vec4_t textureColor;
        float alpha, alphaI, bf;
        vec3_t blend;
-       float st[ 2 ], lightmap[ 2 ];
-       const float *radLuxel;
+       float st[ 2 ], lightmap[ 2 ], *radLuxel;
        radVert_t   *rv[ 3 ];
 
        if (!bouncing)
@@ -337,14 +336,12 @@ static void RadSample( int lightmapNum, bspDrawSurface_t *ds, rawLightmap_t *lm,
                                                blend[ 0 ] = i;
                                                blend[ 1 ] = j;
                                                blend[ 2 ] = k;
-                                               /* Make blend inner sum = 1 */
                                                bf = ( 1.0f / ( blend[ 0 ] + blend[ 1 ] + blend[ 2 ] ) );
                                                VectorScale( blend, bf, blend );
 
                                                /* create a blended sample */
                                                st[ 0 ] = st[ 1 ] = 0.0f;
                                                lightmap[ 0 ] = lightmap[ 1 ] = 0.0f;
-                                               /* alpha and alphaI don't seem to be used anywhere*/
                                                alphaI = 0.0f;
                                                for ( l = 0; l < 3; l++ )
                                                {
@@ -377,8 +374,7 @@ static void RadSample( int lightmapNum, bspDrawSurface_t *ds, rawLightmap_t *lm,
                                                radLuxel = RAD_LUXEL( lightmapNum, x, y );
 
                                                /* ignore unlit/unused luxels */
-                                               if ( radLuxel[ 0 ] <= 0.0f || radLuxel[ 1 ] <= 0.0f || radLuxel[ 2 ] <= 0.0f ) {
-                                                       /* FIXME: not really sure which element of radLuxel should be checked */
+                                               if ( radLuxel[ 0 ] < 0.0f ) {
                                                        continue;
                                                }
 
@@ -391,8 +387,16 @@ static void RadSample( int lightmapNum, bspDrawSurface_t *ds, rawLightmap_t *lm,
                                                        textureColor[ 3 ] = 255;
                                                }
                                                avgcolor = ( textureColor[ 0 ] + textureColor[ 1 ] + textureColor[ 2 ] ) / 3;
-                                               for ( l = 0; l < 3; l++ ){
+                                               for ( i = 0; i < 3; i++ ){
+                                                       color[ i ] = ( ( textureColor[ i ] * bounceColorRatio + ( avgcolor * ( 1 - bounceColorRatio ) ) ) / 255 ) * ( radLuxel[ i ] / 255 );
+                                               /*
+                                                  Workaround for https://gitlab.com/xonotic/netradiant/-/issues/182
+                                                  This loop normally uses the l iterator instead of i:
+                                                  for ( l = 0; l < 3; l++ ){
                                                        color[ l ] = ( ( textureColor[ l ] * bounceColorRatio + ( avgcolor * ( 1 - bounceColorRatio ) ) ) / 255 ) * ( radLuxel[ l ] / 255 );
+                                                       }
+                                               */
+                                               //Sys_Printf( "%i %i %i %i %i \n", (int) textureColor[ 0 ], (int) textureColor[ 1 ], (int) textureColor[ 2 ], (int) avgcolor, (int) color[ i ] );
                                                }
                                                AddPointToBounds( color, mins, maxs );
                                                VectorAdd( average, color, average );
index 380ed24353e8ca4885abb35831d770d69e2d9fe2..eee4a17362c7ddf71d218aca2de8a4a9be6c73d4 100644 (file)
@@ -829,12 +829,6 @@ static qboolean MapTriangle( rawLightmap_t *lm, surfaceInfo_t *info, bspDrawVert
                return qfalse;
        }
 
-       /* prevent division by zero */
-       if ( plane[ lm->axisNum ] == 0 ) {
-               Sys_FPrintf( SYS_WRN, "WARNING: plane[lm->axisNum] == 0\n" );
-               return qfalse;
-       }
-
        /* check to see if we need to calculate texture->world tangent vectors */
        if ( info->si->normalImage != NULL && CalcTangentVectors( 3, dv, stvStatic, ttvStatic ) ) {
                stv = stvStatic;
@@ -1006,12 +1000,6 @@ static qboolean MapQuad( rawLightmap_t *lm, surfaceInfo_t *info, bspDrawVert_t *
                return qfalse;
        }
 
-       /* prevent division by zero */
-       if ( plane[ lm->axisNum ] == 0 ) {
-               Sys_FPrintf( SYS_WRN, "WARNING: plane[lm->axisNum] == 0\n" );
-               return qfalse;
-       }
-
        /* 4th point must fall on the plane */
        dist = DotProduct( plane, dv[ 3 ]->xyz ) - plane[ 3 ];
        if ( fabs( dist ) > QUAD_PLANAR_EPSILON ) {
@@ -3682,7 +3670,6 @@ void SetupEnvelopes( qboolean forGrid, qboolean fastFlag ){
                                /* clear light envelope */
                                light->envelope = 0;
 
-                               /* FIXME: radius may be undefined */
                                /* handle area lights */
                                if ( exactPointToPolygon && light->type == EMIT_AREA && light->w != NULL ) {
                                        light->envelope = MAX_WORLD_COORD * 8.0f;