544
544
render_layer_add_pass(rr, rl, 1, SCE_PASS_INDEXOB);
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);
552
rl->rectf= MEM_mapallocN(rectx*recty*sizeof(float)*4, "prev/env float rgba");
552
/* duplicate code... */
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);
560
rl->rectf= MEM_mapallocN(rectx*recty*sizeof(float)*4, "Combined rgba");
554
562
/* note, this has to be in sync with scene.c */
555
563
rl->lay= (1<<20) -1;
1158
1166
/* *************************************** */
1168
static int render_display_draw_enabled(Render *re)
1170
/* don't show preprocess for previewrender sss */
1172
return !(re->r.scemode & R_PREVIEWBUTS);
1160
1177
static void *do_part_thread(void *pa_v)
1162
1179
RenderPart *pa= pa_v;
1164
1181
/* need to return nicely all parts on esc */
1165
1182
if(R.test_break()==0) {
1167
1183
pa->result= new_render_result(&R, &pa->disprect, pa->crop, RR_USEMEM);
1186
zbufshade_sss_tile(pa);
1170
1188
zbufshadeDA_tile(pa);
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);
1195
else if(render_display_draw_enabled(&R))
1178
1196
merge_render_result(R.result, pa->result);
1423
1442
BLI_remove_thread(&threads, pa);
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);
1429
1449
RE_FreeRenderResult(pa->result);
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);
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)
1469
1490
/* the partsdone variable has to be reset to firsttile, to survive esc before it was set to zero */
1473
1494
re->i.starttime= PIL_check_seconds_timer();
1475
// threaded_tile_processor(re);
1476
render_tile_processor(re, firsttile);
1497
threaded_tile_processor(re);
1499
render_tile_processor(re, firsttile);
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");
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);
2206
2229
MEM_freeN(rres.rect32);
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;