ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/ranimove1.c
(Generate patch)

Comparing ray/src/util/ranimove1.c (file contents):
Revision 3.8 by schorsch, Fri Mar 26 21:36:20 2004 UTC vs.
Revision 3.9 by greg, Thu May 13 15:45:43 2004 UTC

# Line 745 | Line 745 | filter_frame(void)                     /* interpolation, motion-blur, an
745                  printf("\tFiltering frame\n");
746                  fflush(stdout);
747          }
748 <        /* normalize samples */
749 <        for (y = vres; y--; ) {
750 <                for (x = hres; x--; ) {
751 <                        n = fndx(x, y);
752 <                        if (sbuffer[n] <= 1)
753 <                                continue;
754 <                        w = 1.0/(double)sbuffer[n];
748 >                                        /* normalize samples */
749 >        for (y = vres; y--; )
750 >            for (x = hres; x--; ) {
751 >                n = fndx(x, y);
752 >                if (sbuffer[n] <= 1)
753 >                        continue;
754 >                w = 1.0/(double)sbuffer[n];
755 >                scalecolor(cbuffer[n], w);
756 >            }
757 >                                        /* interpolate samples */
758 >        for (y = vres; y--; )
759 >            for (x = hres; x--; ) {
760 >                n = fndx(x, y);
761 >                if (sbuffer[n])
762 >                        continue;
763 >                nc = getclosest(neigh, NPINTERP, x, y);
764 >                setcolor(cbuffer[n], 0., 0., 0.);
765 >                wsum = 0.;
766 >                while (nc-- > 0) {
767 >                        copycolor(cval, cbuffer[neigh[nc]]);
768 >                        w = sample_wt((neigh[nc]%hres) - x,
769 >                                        (neigh[nc]/hres) - y);
770 >                        scalecolor(cval, w);
771 >                        addcolor(cbuffer[n], cval);
772 >                        wsum += w;
773 >                }
774 >                if (wsum > FTINY) {
775 >                        w = 1.0/wsum;
776                          scalecolor(cbuffer[n], w);
777                  }
778 <        }
779 <        /* interpolate samples */
759 <        for (y = vres; y--; ) {
760 <                for (x = hres; x--; ) {
761 <                        n = fndx(x, y);
762 <                        if (sbuffer[n])
763 <                                continue;
764 <                        nc = getclosest(neigh, NPINTERP, x, y);
765 <                        setcolor(cbuffer[n], 0., 0., 0.);
766 <                        wsum = 0.;
767 <                        while (nc-- > 0) {
768 <                                copycolor(cval, cbuffer[neigh[nc]]);
769 <                                w = sample_wt((neigh[nc]%hres) - x,
770 <                                                (neigh[nc]/hres) - y);
771 <                                scalecolor(cval, w);
772 <                                addcolor(cbuffer[n], cval);
773 <                                wsum += w;
774 <                        }
775 <                        if (wsum > FTINY) {
776 <                                w = 1.0/wsum;
777 <                                scalecolor(cbuffer[n], w);
778 <                        }
779 <                }
780 <        }
781 <        /* motion blur if requested */
778 >            }
779 >                                        /* motion blur if requested */
780          if (mblur > .02) {
781 <            int xs, ys, xl, yl;
782 <            int rise, run;
783 <            long        rise2, run2;
784 <            int n2;
785 <            int cnt;
786 <            /* sum in motion streaks */
787 <            memset(outbuffer, '\0', sizeof(COLOR)*hres*vres);
788 <            memset(wbuffer, '\0', sizeof(float)*hres*vres);
789 <            for (y = vres; y--; ) {
790 <                for (x = hres; x--; ) {
781 >                int     xs, ys, xl, yl;
782 >                int     rise, run;
783 >                long    rise2, run2;
784 >                int     n2;
785 >                int     cnt;
786 >                                        /* sum in motion streaks */
787 >                memset(outbuffer, '\0', sizeof(COLOR)*hres*vres);
788 >                memset(wbuffer, '\0', sizeof(float)*hres*vres);
789 >                for (y = vres; y--; )
790 >                    for (x = hres; x--; ) {
791                          n = fndx(x, y);
792                          if (xmbuffer[n] == MO_UNK) {
793                                  run = rise = 0;
# Line 810 | Line 808 | filter_frame(void)                     /* interpolation, motion-blur, an
808                          else ys = 1;
809                          rise2 = run2 = 0L;
810                          if (rise > run) {
811 <                            cnt = rise + 1;
812 <                            w = 1./cnt;
813 <                            copycolor(cval, cbuffer[n]);
814 <                            scalecolor(cval, w);
815 <                            while (cnt) {
816 <                                if (rise2 >= run2) {
817 <                                    if ((xl >= 0) & (xl < hres) &
811 >                                cnt = rise + 1;
812 >                                w = 1./cnt;
813 >                                copycolor(cval, cbuffer[n]);
814 >                                scalecolor(cval, w);
815 >                                while (cnt)
816 >                                        if (rise2 >= run2) {
817 >                                                if ((xl >= 0) & (xl < hres) &
818                                                      (yl >= 0) & (yl < vres)) {
819 <                                            n2 = fndx(xl, yl);
820 <                                            addcolor(outbuffer[n2], cval);
821 <                                            wbuffer[n2] += w;
822 <                                    }
823 <                                    yl += ys;
824 <                                    run2 += run;
825 <                                    cnt--;
826 <                                } else {
827 <                                        xl += xs;
828 <                                        rise2 += rise;
829 <                                }
830 <                            }
819 >                                                        n2 = fndx(xl, yl);
820 >                                                        addcolor(outbuffer[n2],
821 >                                                                        cval);
822 >                                                        wbuffer[n2] += w;
823 >                                                }
824 >                                                yl += ys;
825 >                                                run2 += run;
826 >                                                cnt--;
827 >                                        } else {
828 >                                                xl += xs;
829 >                                                rise2 += rise;
830 >                                        }
831                          } else {
832                                  cnt = run + 1;
833                                  w = 1./cnt;
834                                  copycolor(cval, cbuffer[n]);
835                                  scalecolor(cval, w);
836 <                                while (cnt) {
837 <                                    if (run2 >= rise2) {
838 <                                        if ((xl >= 0) & (xl < hres) &
836 >                                while (cnt)
837 >                                        if (run2 >= rise2) {
838 >                                                if ((xl >= 0) & (xl < hres) &
839                                                      (yl >= 0) & (yl < vres)) {
840 <                                                n2 = fndx(xl, yl);
841 <                                                addcolor(outbuffer[n2],
842 <                                                                cval);
843 <                                                wbuffer[n2] += w;
840 >                                                        n2 = fndx(xl, yl);
841 >                                                        addcolor(outbuffer[n2],
842 >                                                                        cval);
843 >                                                        wbuffer[n2] += w;
844 >                                                }
845 >                                                xl += xs;
846 >                                                rise2 += rise;
847 >                                                cnt--;
848 >                                        } else {
849 >                                                yl += ys;
850 >                                                run2 += run;
851                                          }
847                                        xl += xs;
848                                        rise2 += rise;
849                                        cnt--;
850                                    } else {
851                                            yl += ys;
852                                            run2 += run;
853                                    }
854                                }
852                          }
853 <                }
854 <                /* compute final results */
855 <                for (y = vres; y--; ) {
856 <                        for (x = hres; x--; ) {
857 <                                n = fndx(x, y);
858 <                                if (wbuffer[n] <= FTINY)
859 <                                        continue;
860 <                                w = 1./wbuffer[n];
861 <                                scalecolor(outbuffer[n], w);
862 <                        }
863 <                }
864 <            }
868 <        } else {
869 <                for (n = hres*vres; n--; ) {
853 >                    }
854 >                                        /* compute final results */
855 >                for (y = vres; y--; )
856 >                    for (x = hres; x--; ) {
857 >                        n = fndx(x, y);
858 >                        if (wbuffer[n] <= FTINY)
859 >                                continue;
860 >                        w = 1./wbuffer[n];
861 >                        scalecolor(outbuffer[n], w);
862 >                    }
863 >        } else
864 >                for (n = hres*vres; n--; )
865                          copycolor(outbuffer[n], cbuffer[n]);
871                }
872        }
866          /*
867             for (n = hres*vres; n--; )
868 <           if (!sbuffer[n])
869 <           setcolor(outbuffer[n], 0., 0., 0.);
868 >                   if (!sbuffer[n])
869 >                           setcolor(outbuffer[n], 0., 0., 0.);
870           */
871          /* adjust exposure */
872          if ((expval < 0.99) | (expval > 1.01))
873                  for (n = hres*vres; n--; )
874                          scalecolor(outbuffer[n], expval);
875 <        return;
875 > #if 0
876          {
877                  float   *sbuf = (float *)malloc(sizeof(float)*hres*vres);
878                  char    fnm[256];
# Line 890 | Line 883 | filter_frame(void)                     /* interpolation, motion-blur, an
883                  write_map(sbuf, fnm);
884                  free((void *)sbuf);
885          }
886 + #endif
887   }
888  
889  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines