Cleanup of UI for new renderpipeline

- removed "Unified" button, replaced with "HD" preset for 1920x1080 output
- removed the unused "Pass" options
- removed the unused "Strands" render-layer option

Because the internal render pipe supports this already; added two more
render-layer options:

- "Sky", to enable/disable sky render in a layer (this was part of "Solid"
  before, not so correct... to ensure previously saved files work, the
  "Sky" option is set by default when "Solid" was set. The version patching
  will do this temporally always, until we've bumped up version to 2.42
- "Edge", to enable/disable edge render in a layer. Nice for compositing.

Also in this commit: fixed warnings for exported functions for the new
Node Editor pull-down menus.
This commit is contained in:
Ton Roosendaal 2006-06-17 10:25:07 +00:00
parent 5498f4989f
commit 5a4dc67281
8 changed files with 97 additions and 73 deletions

View File

@ -537,7 +537,7 @@ void scene_add_render_layer(Scene *sce)
/* note, this is also in render, pipeline.c, to make layer when scenedata doesnt have it */
srl->lay= (1<<20) -1;
srl->layflag= 0x7FFF; /* solid ztra halo strand */
srl->layflag= 0x7FFF; /* solid ztra halo edge strand */
srl->passflag= SCE_PASS_COMBINED|SCE_PASS_Z;
}

View File

@ -5415,6 +5415,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
/* adds default layer */
if(sce->r.layers.first==NULL)
scene_add_render_layer(sce);
else {
SceneRenderLayer *srl;
/* new layer flag for sky, was default for solid */
for(srl= sce->r.layers.first; srl; srl= srl->next)
if(srl->layflag & SCE_LAY_SOLID)
srl->layflag |= SCE_LAY_SKY;
}
/* node version changes */
if(sce->nodetree)
ntree_version_241(sce->nodetree);

View File

@ -77,6 +77,7 @@ void node_composit_default(struct Scene *scene);
int node_has_hidden_sockets(struct bNode *node);
struct bNode *node_add_node(struct SpaceNode *snode, int type, float locx, float locy);
void node_adduplicate(struct SpaceNode *snode);
/* ************* drawnode.c *************** */
struct SpaceNode;

View File

@ -294,11 +294,10 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_PR_PAL 1608
#define B_PR_FULL 1609
#define B_PR_PRV 1610
#define B_PR_CDI 1611
#define B_PR_HD 1611
#define B_PR_PAL169 1612
#define B_PR_D2MAC 1613
#define B_PR_MPEG 1614
#define B_REDRAWDISP 1615
#define B_REDRAWDISP 1615
#define B_SETBROWSE 1616
#define B_CLEARSET 1617
#define B_PR_PRESET 1618

View File

@ -125,7 +125,9 @@ typedef struct SceneRenderLayer {
#define SCE_LAY_SOLID 1
#define SCE_LAY_ZTRA 2
#define SCE_LAY_HALO 4
#define SCE_LAY_STRAND 8
#define SCE_LAY_EDGE 8
#define SCE_LAY_SKY 16
#define SCE_LAY_STRAND 32
/* srl->passflag */
#define SCE_PASS_COMBINED 1

View File

@ -2671,9 +2671,11 @@ static void shadepixel_sky(ShadePixelInfo *shpi, float x, float y, int z, int fa
if(vlr && (R.r.mode & R_RAYTRACE))
if(vlr->mat->mode & MA_RAYTRANSP) return;
renderSkyPixelFloat(collector, x, y, vlr?rco:NULL);
addAlphaOverFloat(collector, shpi->shr.combined);
QUATCOPY(shpi->shr.combined, collector);
if(shpi->layflag & SCE_LAY_SKY) {
renderSkyPixelFloat(collector, x, y, vlr?rco:NULL);
addAlphaOverFloat(collector, shpi->shr.combined);
QUATCOPY(shpi->shr.combined, collector);
}
}
}
@ -2876,6 +2878,19 @@ static void add_passes(RenderLayer *rl, int offset, ShadeResult *shr)
}
}
/* only do sky, is default in the solid layer (shade_tile) btw */
static void sky_tile(RenderPart *pa, float *pass)
{
int x, y;
for(y=pa->disprect.ymin; y<pa->disprect.ymax; y++) {
for(x=pa->disprect.xmin; x<pa->disprect.xmax; x++, pass+=4)
renderSkyPixelFloat(pass, x, y, NULL);
if(y&1)
if(R.test_break()) break;
}
}
static void shadeDA_tile(RenderPart *pa, RenderLayer *rl)
{
@ -3124,13 +3139,18 @@ void zbufshadeDA_tile(RenderPart *pa)
zbuffer_solid(pa, rl->lay, rl->layflag);
make_pixelstructs(pa, &psmlist);
if(R.r.mode & R_EDGE) edge_enhance_calc(pa, edgerect);
if(rl->layflag & SCE_LAY_EDGE)
if(R.r.mode & R_EDGE)
edge_enhance_calc(pa, edgerect);
if(R.test_break()) break;
}
/* shades solid */
if(rl->layflag & SCE_LAY_SOLID)
shadeDA_tile(pa, rl);
else if(rl->layflag & SCE_LAY_SKY)
sky_tile(pa, rl->rectf);
/* lamphalo after solid, before ztra, looks nicest because ztra does own halo */
if(R.flag & R_LAMPHALO)
@ -3167,8 +3187,9 @@ void zbufshadeDA_tile(RenderPart *pa)
}
/* extra layers */
if(R.r.mode & R_EDGE)
edge_enhance_add(pa, rl->rectf, edgerect);
if(rl->layflag & SCE_LAY_EDGE)
if(R.r.mode & R_EDGE)
edge_enhance_add(pa, rl->rectf, edgerect);
if(rl->passflag & SCE_PASS_Z)
convert_zbuf_to_distbuf(pa, rl);
@ -3198,6 +3219,7 @@ void zbufshade_tile(RenderPart *pa)
ShadePixelInfo shpi;
RenderResult *rr= pa->result;
RenderLayer *rl;
float *edgerect= NULL;
int addpassflag;
set_part_zbuf_clipflag(pa);
@ -3205,7 +3227,8 @@ void zbufshade_tile(RenderPart *pa)
/* zbuffer code clears/inits rects */
pa->rectp= MEM_mallocT(sizeof(int)*pa->rectx*pa->recty, "rectp");
pa->rectz= MEM_mallocT(sizeof(int)*pa->rectx*pa->recty, "rectz");
if(R.r.mode & R_EDGE) edgerect= MEM_callocT(sizeof(float)*pa->rectx*pa->recty, "rectedge");
shpi.thread= pa->thread;
for(rl= rr->layers.first; rl; rl= rl->next) {
@ -3222,14 +3245,19 @@ void zbufshade_tile(RenderPart *pa)
zbuffer_solid(pa, rl->lay, rl->layflag);
if(!R.test_break()) {
/* edges only for solid part, ztransp doesn't support it yet anti-aliased */
if(rl->layflag & SCE_LAY_EDGE)
if(R.r.mode & R_EDGE)
edge_enhance_calc(pa, edgerect);
/* initialize scanline updates for main thread */
rr->renrect.ymin= 0;
rr->renlay= rl;
if(rl->layflag & SCE_LAY_SOLID) {
float *fcol= rl->rectf;
int x, y, *rp= pa->rectp, *rz= pa->rectz, offs=0;
/* initialize scanline updates for main thread */
rr->renrect.ymin= 0;
rr->renlay= rl;
for(y=pa->disprect.ymin; y<pa->disprect.ymax; y++, rr->renrect.ymax++) {
for(x=pa->disprect.xmin; x<pa->disprect.xmax; x++, rz++, rp++, fcol+=4, offs++) {
shadepixel_sky(&shpi, (float)x, (float)y, *rz, *rp, 0);
@ -3242,10 +3270,13 @@ void zbufshade_tile(RenderPart *pa)
if(y&1)
if(R.test_break()) break;
}
/* disable scanline updating */
rr->renlay= NULL;
}
else if(rl->layflag & SCE_LAY_SKY) {
sky_tile(pa, rl->rectf);
}
/* disable scanline updating */
rr->renlay= NULL;
}
/* lamphalo after solid, before ztra, looks nicest because ztra does own halo */
@ -3282,11 +3313,9 @@ void zbufshade_tile(RenderPart *pa)
}
if(!R.test_break()) {
if(R.r.mode & R_EDGE) {
fillrect(pa->rectp, pa->rectx, pa->recty, 0);
edge_enhance_calc(pa, (float *)pa->rectp);
edge_enhance_add(pa, rl->rectf, (float *)pa->rectp);
}
if(rl->layflag & SCE_LAY_EDGE)
if(R.r.mode & R_EDGE)
edge_enhance_add(pa, rl->rectf, edgerect);
}
if(rl->passflag & SCE_PASS_Z)
@ -3300,6 +3329,7 @@ void zbufshade_tile(RenderPart *pa)
MEM_freeT(pa->rectp); pa->rectp= NULL;
MEM_freeT(pa->rectz); pa->rectz= NULL;
if(edgerect) MEM_freeT(edgerect);
}
/* ------------------------------------------------------------------------ */

View File

@ -640,6 +640,20 @@ void do_render_panels(unsigned short event)
#endif /* _WIN32 || __APPLE__ */
break;
case B_PR_HD:
G.scene->r.xsch= 1920;
G.scene->r.ysch= 1080;
G.scene->r.xasp= 1;
G.scene->r.yasp= 1;
G.scene->r.size= 100;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 4;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
BIF_undo_push("Set FULL");
allqueue(REDRAWBUTSSCENE, 0);
allqueue(REDRAWVIEWCAM, 0);
break;
case B_PR_FULL:
G.scene->r.xsch= 1280;
G.scene->r.ysch= 1024;
@ -661,25 +675,12 @@ void do_render_panels(unsigned short event)
G.scene->r.yasp= 1;
G.scene->r.size= 50;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 4;
G.scene->r.xparts= G.scene->r.yparts= 2;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSSCENE, 0);
break;
case B_PR_CDI:
G.scene->r.xsch= 384;
G.scene->r.ysch= 280;
G.scene->r.xasp= 1;
G.scene->r.yasp= 1;
G.scene->r.size= 100;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 4;
BLI_init_rctf(&G.scene->r.safety, 0.15, 0.85, 0.15, 0.85);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSSCENE, 0);
break;
case B_PR_PAL169:
G.scene->r.xsch= 720;
G.scene->r.ysch= 576;
@ -698,32 +699,6 @@ void do_render_panels(unsigned short event)
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSSCENE, 0);
break;
case B_PR_D2MAC:
G.scene->r.xsch= 1024;
G.scene->r.ysch= 576;
G.scene->r.xasp= 1;
G.scene->r.yasp= 1;
G.scene->r.size= 50;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 4;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSSCENE, 0);
break;
case B_PR_MPEG:
G.scene->r.xsch= 368;
G.scene->r.ysch= 272;
G.scene->r.xasp= 105;
G.scene->r.yasp= 100;
G.scene->r.size= 100;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 4;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSSCENE, 0);
break;
case B_PR_PC:
G.scene->r.xsch= 640;
G.scene->r.ysch= 480;
@ -1226,8 +1201,8 @@ static void render_panel_output(void)
/* Toon shading buttons */
uiBlockBeginAlign(block);
uiDefButBitI(block, TOG, R_EDGE, B_NOP,"Edge", 100, 94, 70, 20, &G.scene->r.mode, 0, 0, 0, 0, "Enable Toon edge shading");
uiDefBlockBut(block, edge_render_menu, NULL, "Edge Settings", 170, 94, 140, 20, "Display edge settings");
uiDefButBitI(block, TOG, R_EDGE, B_NOP,"Edge", 100, 94, 70, 20, &G.scene->r.mode, 0, 0, 0, 0, "Enable Toon Edge-enhance");
uiDefBlockBut(block, edge_render_menu, NULL, "Edge Settings", 170, 94, 140, 20, "Display Edge settings");
uiBlockEndAlign(block);
uiDefButBitS(block, TOG, R_FREE_IMAGE, B_NOP, "Free Tex Images", 170, 68, 140, 20, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Frees all Images used by Textures after each render");
@ -1596,7 +1571,7 @@ static void render_panel_format(void)
uiDefBut(block, BUT,B_PR_PAL169, "PAL 16:9",1146,70,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 720x576, Aspect ratio - 64x45");
uiDefBut(block, BUT,B_PR_PANO, "PANO", 1146,50,100,18, 0, 0, 0, 0, 0, "Standard panorama settings");
uiDefBut(block, BUT,B_PR_FULL, "FULL", 1146,30,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 1280x1024, Aspect ratio - 1x1");
uiDefButBitI(block, TOG, R_UNIFIED, B_REDR, "Unified Renderer", 1146,10,100,18, &G.scene->r.mode, 0, 0, 0, 0, "Use the unified renderer.");
uiDefBut(block, BUT,B_PR_HD, "HD", 1146,10,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 1920x1080, Aspect ratio - 1x1");
uiBlockEndAlign(block);
}
@ -1846,13 +1821,22 @@ static void render_panel_layers(void)
draw_3d_layer_buttons(block, &srl->lay, 130, 95, 35, 30, B_NOP);
uiBlockBeginAlign(block);
uiDefButBitS(block, TOG, SCE_LAY_SOLID, B_NOP,"Solid", 10, 70, 75, 20, &srl->layflag, 0, 0, 0, 0, "Render Solid faces in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_ZTRA, B_NOP,"Ztra", 85, 70, 75, 20, &srl->layflag, 0, 0, 0, 0, "Render Z-Transparent faces in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_HALO, B_NOP,"Halo", 160, 70, 75, 20, &srl->layflag, 0, 0, 0, 0, "Render Halos in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_STRAND, B_NOP,"Strand", 235, 70, 75, 20, &srl->layflag, 0, 0, 0, 0, "Render Particle Strands in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_SKY, B_NOP,"Sky", 10, 70, 40, 20, &srl->layflag, 0, 0, 0, 0, "Render Solid faces in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_SOLID, B_NOP,"Solid", 50, 70, 65, 20, &srl->layflag, 0, 0, 0, 0, "Render Solid faces in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_ZTRA, B_NOP,"Ztra", 115, 70, 65, 20, &srl->layflag, 0, 0, 0, 0, "Render Z-Transparent faces in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_HALO, B_NOP,"Halo", 180, 70, 65, 20, &srl->layflag, 0, 0, 0, 0, "Render Halos in this Layer");
uiDefButBitS(block, TOG, SCE_LAY_EDGE, B_NOP,"Edge", 245, 70, 65, 20, &srl->layflag, 0, 0, 0, 0, "Render Edge-enhance in this Layer");
uiBlockEndAlign(block);
uiDefBut(block, LABEL, 0, "Passes:", 10,30,150,20, NULL, 0, 0, 0, 0, "");
uiBlockBeginAlign(block);
uiDefButBitS(block, TOG, SCE_PASS_COMBINED, B_NOP,"Combined", 10, 10, 150, 20, &srl->passflag, 0, 0, 0, 0, "Deliver full combined RGBA buffer");
uiDefButBitS(block, TOG, SCE_PASS_Z, B_NOP,"Z", 160, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Z values pass");
uiDefButBitS(block, TOG, SCE_PASS_VECTOR, B_NOP,"Vec", 200, 10, 55, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Vector pass");
uiDefButBitS(block, TOG, SCE_PASS_NORMAL, B_NOP,"Nor", 255, 10, 55, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Normal pass");
#if 0
/* bring back after release */
uiBlockBeginAlign(block);
uiDefButBitS(block, TOG, SCE_PASS_COMBINED, B_NOP,"Combined", 130, 30, 115, 20, &srl->passflag, 0, 0, 0, 0, "Deliver full combined RGBA buffer");
uiDefButBitS(block, TOG, SCE_PASS_Z, B_NOP,"Z", 245, 30, 25, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Z values pass");
@ -1865,6 +1849,7 @@ static void render_panel_layers(void)
uiDefButBitS(block, TOG, SCE_PASS_AO, B_NOP,"AO", 185, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver AO pass");
uiDefButBitS(block, TOG, SCE_PASS_RAY, B_NOP,"Ray", 225, 10, 45, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Raytraced Mirror and Transparent pass");
uiDefButBitS(block, TOG, SCE_PASS_NORMAL, B_NOP,"Nor", 270, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Normal pass");
#endif
}
void render_panels()

View File

@ -1797,7 +1797,6 @@ static int node_uiDoBlocks(SpaceNode *snode, ListBase *lb, short event)
void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
{
SpaceNode *snode= spacedata;
float dx;
unsigned short event= evt->event;
short val= evt->val, doredraw=0, fromlib= 0;