~ubuntu-branches/ubuntu/gutsy/blender/gutsy-security

« back to all changes in this revision

Viewing changes to source/blender/render/intern/source/pipeline.c

  • Committer: Bazaar Package Importer
  • Author(s): Florian Ernst
  • Date: 2007-05-17 11:47:59 UTC
  • mfrom: (1.2.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20070517114759-yp4ybrnhp2u7pk66
Tags: 2.44-1
* New upstream release.
* Drop debian/patches/01_64bits_stupidity, not needed anymore: as of this
  version blender is 64 bits safe again. Adjust README.Debian accordingly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
544
544
                        render_layer_add_pass(rr, rl, 1, SCE_PASS_INDEXOB);
545
545
                
546
546
        }
547
 
        /* previewrender and envmap don't do layers, so we make a default one */
 
547
        /* sss, previewrender and envmap don't do layers, so we make a default one */
548
548
        if(rr->layers.first==NULL) {
549
549
                rl= MEM_callocN(sizeof(RenderLayer), "new render layer");
550
550
                BLI_addtail(&rr->layers, rl);
551
551
                
552
 
                rl->rectf= MEM_mapallocN(rectx*recty*sizeof(float)*4, "prev/env float rgba");
 
552
                /* duplicate code... */
 
553
                if(rr->exrhandle) {
 
554
                        IMB_exr_add_channel(rr->exrhandle, rl->name, "Combined.R", 0, 0, NULL);
 
555
                        IMB_exr_add_channel(rr->exrhandle, rl->name, "Combined.G", 0, 0, NULL);
 
556
                        IMB_exr_add_channel(rr->exrhandle, rl->name, "Combined.B", 0, 0, NULL);
 
557
                        IMB_exr_add_channel(rr->exrhandle, rl->name, "Combined.A", 0, 0, NULL);
 
558
                }
 
559
                else
 
560
                        rl->rectf= MEM_mapallocN(rectx*recty*sizeof(float)*4, "Combined rgba");
553
561
                
554
562
                /* note, this has to be in sync with scene.c */
555
563
                rl->lay= (1<<20) -1;
1157
1165
 
1158
1166
/* *************************************** */
1159
1167
 
 
1168
static int render_display_draw_enabled(Render *re)
 
1169
{
 
1170
        /* don't show preprocess for previewrender sss */
 
1171
        if(re->sss_points)
 
1172
                return !(re->r.scemode & R_PREVIEWBUTS);
 
1173
        else
 
1174
                return 1;
 
1175
}
 
1176
 
1160
1177
static void *do_part_thread(void *pa_v)
1161
1178
{
1162
1179
        RenderPart *pa= pa_v;
1163
1180
        
1164
1181
        /* need to return nicely all parts on esc */
1165
1182
        if(R.test_break()==0) {
1166
 
                
1167
1183
                pa->result= new_render_result(&R, &pa->disprect, pa->crop, RR_USEMEM);
1168
 
                
1169
 
                if(R.osa)
 
1184
 
 
1185
                if(R.sss_points)
 
1186
                        zbufshade_sss_tile(pa);
 
1187
                else if(R.osa)
1170
1188
                        zbufshadeDA_tile(pa);
1171
1189
                else
1172
1190
                        zbufshade_tile(pa);
1174
1192
                /* merge too on break! */
1175
1193
                if(R.result->exrhandle)
1176
1194
                        save_render_result_tile(&R, pa);
1177
 
                else
 
1195
                else if(render_display_draw_enabled(&R))
1178
1196
                        merge_render_result(R.result, pa->result);
1179
1197
        }
1180
1198
        
1217
1235
                        
1218
1236
                        if(pa->result) {
1219
1237
                                if(!re->test_break()) {
1220
 
                                        re->display_draw(pa->result, NULL);
 
1238
                                        if(render_display_draw_enabled(re))
 
1239
                                                re->display_draw(pa->result, NULL);
1221
1240
                                        
1222
1241
                                        re->i.partsdone++;
1223
1242
                                        re->stats_draw(&re->i);
1423
1442
                                BLI_remove_thread(&threads, pa);
1424
1443
                                
1425
1444
                                if(pa->result) {
1426
 
                                        re->display_draw(pa->result, NULL);
 
1445
                                        if(render_display_draw_enabled(re))
 
1446
                                                re->display_draw(pa->result, NULL);
1427
1447
                                        print_part_stats(re, pa);
1428
1448
                                        
1429
1449
                                        RE_FreeRenderResult(pa->result);
1435
1455
                        else {
1436
1456
                                rendering= 1;
1437
1457
                                if(pa->nr && pa->result && drawtimer>20) {
1438
 
                                        re->display_draw(pa->result, &pa->result->renrect);
 
1458
                                        if(render_display_draw_enabled(re))
 
1459
                                                re->display_draw(pa->result, &pa->result->renrect);
1439
1460
                                        hasdrawn= 1;
1440
1461
                                }
1441
1462
                        }
1464
1485
}
1465
1486
 
1466
1487
/* currently only called by preview renders and envmap */
1467
 
void RE_TileProcessor(Render *re, int firsttile)
 
1488
void RE_TileProcessor(Render *re, int firsttile, int threaded)
1468
1489
{
1469
1490
        /* the partsdone variable has to be reset to firsttile, to survive esc before it was set to zero */
1470
1491
        
1472
1493
 
1473
1494
        re->i.starttime= PIL_check_seconds_timer();
1474
1495
 
1475
 
        //      threaded_tile_processor(re);
1476
 
        render_tile_processor(re, firsttile);
 
1496
        if(threaded)
 
1497
                threaded_tile_processor(re);
 
1498
        else
 
1499
                render_tile_processor(re, firsttile);
1477
1500
                
1478
1501
        re->i.lastframetime= PIL_check_seconds_timer()- re->i.starttime;
1479
1502
        re->stats_draw(&re->i);
2200
2223
                        rres.rect32= MEM_mapallocN(sizeof(int)*rres.rectx*rres.recty, "temp 32 bits rect");
2201
2224
                        dofree = 1;
2202
2225
                }
2203
 
                RE_ResultGet32(re, rres.rect32);
 
2226
                RE_ResultGet32(re, (unsigned int *)rres.rect32);
2204
2227
                mh->append_movie(scene->r.cfra, rres.rect32, rres.rectx, rres.recty);
2205
2228
                if(dofree) {
2206
2229
                        MEM_freeN(rres.rect32);
2221
2244
                        int ok;
2222
2245
                        
2223
2246
                                        /* if not exists, BKE_write_ibuf makes one */
2224
 
                        ibuf->rect= rres.rect32;    
 
2247
                        ibuf->rect= (unsigned int *)rres.rect32;    
2225
2248
                        ibuf->rect_float= rres.rectf;
2226
2249
                        ibuf->zbuf_float= rres.rectz;
2227
2250