]> git.xonotic.org Git - xonotic/xonotic.git/commitdiff
Merge branch 'master' of ssh://git.xonotic.org/xonotic
authorRudolf Polzer <divverent@alientrap.org>
Thu, 7 Oct 2010 12:17:54 +0000 (14:17 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 7 Oct 2010 12:17:54 +0000 (14:17 +0200)
all
misc/tools/fft-normalmap-to-heightmap.c

diff --git a/all b/all
index e9098393b09b2e0df91e7d3d49449a246018ecfe..282a69033a903d5c1672866fbb02b1c6bd489149 100755 (executable)
--- a/all
+++ b/all
@@ -573,38 +573,46 @@ case "$cmd" in
                done
                ;;
        compile)
+               cleandp=false
+               cleanqcc=false
+               cleanqc=false
+               debug=debug
+               while :; do
+                       case "$1" in
+                               -c)
+                                       cleandp=true
+                                       cleanqcc=true
+                                       cleanqc=true
+                                       shift
+                                       ;;
+                               -r)
+                                       debug=release
+                                       shift
+                                       ;;
+                               *)
+                                       break
+                                       ;;
+                       esac
+               done
                if [ -z "$CC" ]; then
                        export CC="gcc -DSUPPORTIPV6"
                fi
                if [ -n "$WE_HATE_OUR_USERS" ]; then
-                       TARGETS="sv-debug cl-debug"
+                       TARGETS="sv-$debug cl-$debug"
                elif [ x"`uname`" = x"Darwin" ]; then
                        case "`uname -r`" in
                                ?.*)
-                                       TARGETS="sv-debug cl-debug sdl-debug"
+                                       TARGETS="sv-$debug cl-$debug sdl-$debug"
                                        ;;
                                *)
                                        # AGL cannot be compiled on systems with a kernel > 10.x (Snow Leopard)
-                                       TARGETS="sv-debug sdl-debug"
+                                       TARGETS="sv-$debug sdl-$debug"
                                        ;;
                        esac
                        export CC="$CC -I$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks/SDL.framework/Headers -F$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks"
                else
-                       TARGETS="sv-debug cl-debug sdl-debug"
+                       TARGETS="sv-$debug cl-$debug sdl-$debug"
                fi
-               case "$1" in
-                       -c)
-                               cleandp=true
-                               cleanqcc=true
-                               cleanqc=true
-                               shift
-                               ;;
-                       *)
-                               cleandp=false
-                               cleanqcc=false
-                               cleanqc=false
-                               ;;
-               esac
                if [ $# -gt 0 ] && [ x"$1" = x"" ]; then
                        # if we give the command make the arg "", it will surely fail (invalid filename),
                        # so better handle it as an empty client option
index 7b72fcbd8808a4678ed1e868e5ed1bbf8a3c0ecc..2143407ae30acc23ea3f0f21f4008c79f1e005bf 100644 (file)
@@ -122,7 +122,31 @@ void nmap_to_hmap(unsigned char *map, const unsigned char *refmap, int w, int h,
                        else
                                freqspace1[(w*y+x)] = 0;
 #else
-                       // not yet implemented
+                       fftw_complex response_x = {0, 0};
+                       fftw_complex response_y = {0, 0};
+                       double sum;
+                       for(i = -filterh / 2; i <= filterh / 2; ++i)
+                               for(j = -filterw / 2; j <= filterw / 2; ++j)
+                               {
+                                       response_x[0] += filter[(i + filterh / 2) * filterw + j + filterw / 2] * cos(TWO_PI * (j * fx + i * fy));
+                                       response_x[1] += filter[(i + filterh / 2) * filterw + j + filterw / 2] * sin(TWO_PI * (j * fx + i * fy));
+                                       response_y[0] += filter[(i + filterh / 2) * filterw + j + filterw / 2] * cos(TWO_PI * (i * fx + j * fy));
+                                       response_y[1] += filter[(i + filterh / 2) * filterw + j + filterw / 2] * sin(TWO_PI * (i * fx + j * fy));
+                               }
+
+                       sum = response_x[0] * response_x[0] + response_x[1] + response_x[1]
+                           + response_y[0] * response_y[0] + response_y[1] + response_y[1];
+
+                       if(sum > 0)
+                       {
+                               freqspace1[(w*y+x)][0] = (response_x[0] * freqspace1[(w*y+x)][0] + response_x[1] * freqspace1[(w*y+x)][1] + response_y[0] * freqspace2[(w*y+x)][0] + response_y[1] * freqspace2[(w*y+x)][1]) / sum;
+                               freqspace1[(w*y+x)][1] = (response_x[0] * freqspace1[(w*y+x)][1] - response_x[1] * freqspace1[(w*y+x)][0] + response_y[0] * freqspace2[(w*y+x)][1] - response_y[1] * freqspace2[(w*y+x)][0]) / sum;
+                       }
+                       else
+                       {
+                               freqspace1[(w*y+x)][0] = 0;
+                               freqspace1[(w*y+x)][1] = 0;
+                       }
 #endif
                }
                else