diff options
author | Ton Roosendaal <ton@blender.org> | 2004-05-15 22:13:42 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-05-15 22:13:42 +0400 |
commit | 1c93da1478a33af1321d617d052bdb1335d760e0 (patch) | |
tree | 1a5832931764a534ad8e20427fd9addf456a0de4 /source | |
parent | a4861c37bee39d201423dd9d44a116b60bdd3298 (diff) |
Removed obsolete file
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/render/intern/source/outerRenderLoop.c | 496 |
1 files changed, 0 insertions, 496 deletions
diff --git a/source/blender/render/intern/source/outerRenderLoop.c b/source/blender/render/intern/source/outerRenderLoop.c deleted file mode 100644 index 3c5c56dd1ed..00000000000 --- a/source/blender/render/intern/source/outerRenderLoop.c +++ /dev/null @@ -1,496 +0,0 @@ -/** - * The outer loop for rendering, but only for calling the - * unified renderer :) - * - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ - -#include <stdlib.h> -#include <string.h> - -#include "MEM_guardedalloc.h" -#include "BLI_blenlib.h" -#include "BLI_rand.h" - -#include "BKE_global.h" -#include "BKE_object.h" - -#include "render.h" -#include "render_intern.h" -#include "outerRenderLoop.h" -#include "renderPreAndPost.h" -#include "vanillaRenderPipe.h" -#include "renderHelp.h" -#include "RE_callbacks.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -extern short pa; /* can move to inside the outer loop */ -/* should make a gamtab module, just like the jitter... */ -extern unsigned short *mask1[9], *mask2[9], *igamtab2; - - -/* Parts bookkeeping: done on this level, because it seems appropriate to me.*/ -static short partsCoordinates[65][4]; -short setPart(short nr);/* return 0 if this is a bad part. Sets data in R....*/ -void initParts(void); -void addPartToRect(short nr, Part *part); -void addToBlurBuffer(int blur); - -/* ------------------------------------------------------------------------- */ -void addToBlurBuffer(int blur) -{ - static unsigned int *blurrect= 0; - int tot, gamval; - short facr, facb; - char *rtr, *rtb; - - if(blur<0) { - if(blurrect) { - if(R.rectot) MEM_freeN(R.rectot); - R.rectot= blurrect; - blurrect= 0; - } - } - else if(blur==R.osa-1) { - /* first time */ - blurrect= MEM_mallocN(R.rectx*R.recty*sizeof(int), "rectblur"); - if(R.rectot) memcpy(blurrect, R.rectot, R.rectx*R.recty*4); - } - else if(blurrect) { - /* accumulate */ - - facr= 256/(R.osa-blur); - facb= 256-facr; - - if(R.rectot) { - rtr= (char *)R.rectot; - rtb= (char *)blurrect; - tot= R.rectx*R.recty; - while(tot--) { - if( *((unsigned int *)rtb) != *((unsigned int *)rtr) ) { - - if(R.r.mode & R_GAMMA) { - gamval= (facr* igamtab2[ rtr[0]<<8 ] + facb* igamtab2[ rtb[0]<<8 ])>>8; - rtb[0]= gamtab[ gamval ]>>8; - gamval= (facr* igamtab2[ rtr[1]<<8 ] + facb* igamtab2[ rtb[1]<<8 ])>>8; - rtb[1]= gamtab[ gamval ]>>8; - gamval= (facr* igamtab2[ rtr[2]<<8 ] + facb* igamtab2[ rtb[2]<<8 ])>>8; - rtb[2]= gamtab[ gamval ]>>8; - gamval= (facr* igamtab2[ rtr[3]<<8 ] + facb* igamtab2[ rtb[3]<<8 ])>>8; - rtb[3]= gamtab[ gamval ]>>8; - } - else { - rtb[0]= (facr*rtr[0] + facb*rtb[0])>>8; - rtb[1]= (facr*rtr[1] + facb*rtb[1])>>8; - rtb[2]= (facr*rtr[2] + facb*rtb[2])>>8; - rtb[3]= (facr*rtr[3] + facb*rtb[3])>>8; - } - } - rtr+= 4; - rtb+= 4; - } - } - if(blur==0) { - /* last time */ - if(R.rectot) MEM_freeN(R.rectot); - R.rectot= blurrect; - blurrect= 0; - } - } -} - - -/* ------------------------------------------------------------------------- */ - -void addPartToRect(short nr, Part *part) -{ - unsigned int *rt, *rp; - short y, heigth, len; - - /* the correct offset in rectot */ - - rt= R.rectot+ (partsCoordinates[nr][1]*R.rectx+ partsCoordinates[nr][0]); - rp= part->rect; - len= (partsCoordinates[nr][2]-partsCoordinates[nr][0]); - heigth= (partsCoordinates[nr][3]-partsCoordinates[nr][1]); - - for(y=0;y<heigth;y++) { - memcpy(rt, rp, 4*len); - rt+=R.rectx; - rp+= len; - } -} - -/* ------------------------------------------------------------------------- */ - -void initParts() -{ - short nr, xd, yd, xpart, ypart, xparts, yparts; - short a, xminb, xmaxb, yminb, ymaxb; - - if(R.r.mode & R_BORDER) { - xminb= R.r.border.xmin*R.rectx; - xmaxb= R.r.border.xmax*R.rectx; - - yminb= R.r.border.ymin*R.recty; - ymaxb= R.r.border.ymax*R.recty; - - if(xminb<0) xminb= 0; - if(xmaxb>R.rectx) xmaxb= R.rectx; - if(yminb<0) yminb= 0; - if(ymaxb>R.recty) ymaxb= R.recty; - } - else { - xminb=yminb= 0; - xmaxb= R.rectx; - ymaxb= R.recty; - } - - xparts= R.r.xparts; /* for border */ - yparts= R.r.yparts; - - for(nr=0;nr<xparts*yparts;nr++) - partsCoordinates[nr][0]= -1; /* clear array */ - - xpart= R.rectx/xparts; - ypart= R.recty/yparts; - - /* if border: test if amount of parts can be reduced */ - if(R.r.mode & R_BORDER) { - a= (xmaxb-xminb-1)/xpart+1; /* amount of parts in border */ - if(a<xparts) xparts= a; - a= (ymaxb-yminb-1)/ypart+1; /* amount of parts in border */ - if(a<yparts) yparts= a; - - xpart= (xmaxb-xminb)/xparts; - ypart= (ymaxb-yminb)/yparts; - } - - for(nr=0; nr<xparts*yparts; nr++) { - - if(R.r.mode & R_PANORAMA) { - partsCoordinates[nr][0]= 0; - partsCoordinates[nr][1]= 0; - partsCoordinates[nr][2]= R.rectx; - partsCoordinates[nr][3]= R.recty; - } - else { - xd= (nr % xparts); - yd= (nr-xd)/xparts; - - partsCoordinates[nr][0]= xminb+ xd*xpart; - partsCoordinates[nr][1]= yminb+ yd*ypart; - if(xd<R.r.xparts-1) partsCoordinates[nr][2]= partsCoordinates[nr][0]+xpart; - else partsCoordinates[nr][2]= xmaxb; - if(yd<R.r.yparts-1) partsCoordinates[nr][3]= partsCoordinates[nr][1]+ypart; - else partsCoordinates[nr][3]= ymaxb; - - if(partsCoordinates[nr][2]-partsCoordinates[nr][0]<=0) partsCoordinates[nr][0]= -1; - if(partsCoordinates[nr][3]-partsCoordinates[nr][1]<=0) partsCoordinates[nr][0]= -1; - } - } -} - -short setPart(short nr) /* return 0 if incorrect part */ -{ - - if(partsCoordinates[nr][0]== -1) return 0; - - R.xstart= partsCoordinates[nr][0]-R.afmx; - R.ystart= partsCoordinates[nr][1]-R.afmy; - R.xend= partsCoordinates[nr][2]-R.afmx; - R.yend= partsCoordinates[nr][3]-R.afmy; - R.rectx= R.xend-R.xstart; - R.recty= R.yend-R.ystart; - - return 1; -} - -/* ------------------------------------------------------------------------- */ - -void unifiedRenderingLoop(void) /* here the PART en FIELD loops */ -{ - Part *part; - unsigned int *rt, *rt1, *rt2; - int len; - short blur, a,fields,fi,parts; /* pa is global because of print */ - - if (R.rectz) MEM_freeN(R.rectz); - R.rectz = 0; - - /* FIELD LOOP */ - fields= 1; - parts= R.r.xparts*R.r.yparts; - - if(R.r.mode & R_FIELDS) { - fields= 2; - R.rectf1= R.rectf2= 0; /* field rects */ - R.r.ysch/= 2; - R.afmy/= 2; - R.r.yasp*= 2; - R.ycor= ( (float)R.r.yasp)/( (float)R.r.xasp); - } - - for(fi=0; fi<fields; fi++) { - - /* INIT */ - BLI_srand( 2*(G.scene->r.cfra)+fi); - - R.flag|= R_RENDERING; - if(fi==1) R.flag |= R_SEC_FIELD; - - /* MOTIONBLUR loop */ - if(R.r.mode & R_MBLUR) blur= R.osa; - else blur= 1; - - while(blur--) { - - /* WINDOW */ - R.rectx= R.r.xsch; - R.recty= R.r.ysch; - R.xstart= -R.afmx; - R.ystart= -R.afmy; - R.xend= R.xstart+R.rectx-1; - R.yend= R.ystart+R.recty-1; - - - if(R.r.mode & R_MBLUR) set_mblur_offs(R.osa-blur); - - initParts(); /* always do because of border */ - setPart(0); - - RE_local_init_render_display(); - RE_local_clear_render_display(R.win); - RE_local_timecursor((G.scene->r.cfra)); - - prepareScene(); - - /* PARTS */ - R.parts.first= R.parts.last= 0; - for(pa=0; pa<parts; pa++) { - - if(RE_local_test_break()) break; - - if(pa) { /* because pa==0 has been done */ - if(setPart(pa)==0) break; - } - - if(R.r.mode & R_MBLUR) RE_setwindowclip(0, blur); - else RE_setwindowclip(0,-1); - - if(R.r.mode & R_PANORAMA) setPanoRot(pa); - - /* HOMOGENIC COORDINATES AND ZBUF AND CLIP OPTIMISATION (per part) */ - /* There may be some interference with z-coordinate */ - /* calculation here? */ - - doClipping(RE_projectverto); - if(RE_local_test_break()) break; - - - /* ZBUFFER & SHADE: zbuffer stores int distances, int face indices */ - R.rectot= (unsigned int *)MEM_callocN(sizeof(int)*R.rectx*R.recty, "rectot"); - - if(R.r.mode & R_MBLUR) RE_local_printrenderinfo(0.0, R.osa - blur); - else RE_local_printrenderinfo(0.0, -1); - - /* The inner loop */ - zBufShadeAdvanced(); - - if(RE_local_test_break()) break; - - /* exception */ - if( (R.r.mode & R_BORDER) && (R.r.mode & R_MOVIECROP)); - else { - /* HANDLE PARTS OR BORDER */ - if(parts>1 || (R.r.mode & R_BORDER)) { - - part= MEM_callocN(sizeof(Part), "part"); - BLI_addtail(&R.parts, part); - part->rect= R.rectot; - R.rectot= 0; - - if (R.rectz) { - MEM_freeN(R.rectz); - R.rectz= 0; - } - } - } - } - - /* JOIN PARTS OR INSERT BORDER */ - - /* exception: crop */ - if( (R.r.mode & R_BORDER) && (R.r.mode & R_MOVIECROP)) ; - else { - R.rectx= R.r.xsch; - R.recty= R.r.ysch; - - if(R.r.mode & R_PANORAMA) R.rectx*= R.r.xparts; - - if(parts>1 || (R.r.mode & R_BORDER)) { - if(R.rectot) MEM_freeN(R.rectot); - - R.rectot=(unsigned int *)MEM_mallocN(sizeof(int)*R.rectx*R.recty, "rectot"); - - part= R.parts.first; - for(pa=0; pa<parts; pa++) { - if(partsCoordinates[pa][0]== -1) break; - if(part==0) break; - - if(R.r.mode & R_PANORAMA) { - if(pa) { - partsCoordinates[pa][0] += pa*R.r.xsch; - partsCoordinates[pa][2] += pa*R.r.xsch; - } - } - addPartToRect(pa, part); - - part= part->next; - } - - part= R.parts.first; - while(part) { - MEM_freeN(part->rect); - part= part->next; - } - BLI_freelistN(&R.parts); - } - } - - /* don't do this for unified renderer? */ -/* if( (R.flag & R_HALO) && !G.magic) { */ -/* add_halo_flare(); */ -/* } */ - - if(R.r.mode & R_MBLUR) { - addToBlurBuffer(blur); - } - - /* END (blur loop) */ - finalizeScene(); - - if(RE_local_test_break()) break; - } - - /* definite free */ - addToBlurBuffer(-1); - - /* HANDLE FIELD */ - if(R.r.mode & R_FIELDS) { - if(R.flag & R_SEC_FIELD) R.rectf2= R.rectot; - else R.rectf1= R.rectot; - R.rectot= 0; - } - - if(RE_local_test_break()) break; - } - - /* JOIN FIELDS */ - if(R.r.mode & R_FIELDS) { - R.r.ysch*= 2; - R.afmy*= 2; - R.recty*= 2; - R.r.yasp/=2; - - if(R.rectot) MEM_freeN(R.rectot); /* happens when break */ - R.rectot=(unsigned int *)MEM_mallocN(sizeof(int)*R.rectx*R.recty, "rectot"); - - if(RE_local_test_break()==0) { - rt= R.rectot; - - if(R.r.mode & R_ODDFIELD) { - rt2= R.rectf1; - rt1= R.rectf2; - } - else { - rt1= R.rectf1; - rt2= R.rectf2; - } - - len= 4*R.rectx; - - for(a=0; a<R.recty; a+=2) { - memcpy(rt, rt1, len); - rt+= R.rectx; - rt1+= R.rectx; - memcpy(rt, rt2, len); - rt+= R.rectx; - rt2+= R.rectx; - } - } - } - - /* R.rectx= R.r.xsch; */ - /* if(R.r.mode & R_PANORAMA) R.rectx*= R.r.xparts; */ - /* R.recty= R.r.ysch; */ - - /* - This may be tricky - */ -/* if(R.r.mode & R_BORDER) { */ -/* if( (R.r.mode & R_MOVIECROP)==0) { */ -/* if(R.r.bufflag & 1) { */ -/* R.xstart= -R.afmx; */ -/* R.ystart= -R.afmy; */ -/* rt= R.rectot; */ -/* for(y=0; y<R.recty; y++, rt+= R.rectx) scanLineSkyFloat((char *)rt, y); */ -/* } */ -/* } */ -/* } */ - - set_mblur_offs(0); - - /* FREE */ - - /* zbuf test */ - - /* don't free R.rectz, only when its size is not the same as R.rectot */ - - if (R.rectz && parts == 1 && (R.r.mode & R_FIELDS) == 0); - else { - if(R.rectz) MEM_freeN(R.rectz); - R.rectz= 0; - } - - if(R.rectf1) MEM_freeN(R.rectf1); - R.rectf1= 0; - if(R.rectf2) MEM_freeN(R.rectf2); - R.rectf2= 0; -} /* End of void unifiedRenderingLoop()*/ - -/* ------------------------------------------------------------------------- */ - -/* eof */ - |