Make layer 0 zex render first

This commit is contained in:
Fazana
2021-10-04 18:37:19 +01:00
parent ea32e1ea70
commit 77bf073449
2 changed files with 18 additions and 14 deletions

View File

@@ -206,8 +206,8 @@ void reset_clipping(void)
void geo_process_master_list_sub(struct GraphNodeMasterList *node) {
struct DisplayListNode *currList;
s32 startLayer, endLayer, currLayer = LAYER_FORCE;
s32 headsIndex = LIST_HEADS_REJ;
s32 renderPhase = RENDER_PHASE_REJ_ZB;
s32 headsIndex = LIST_HEADS_ZEX;
s32 renderPhase = RENDER_PHASE_ZEX_BG;
s32 enableZBuffer = (node->node.flags & GRAPH_RENDER_Z_BUFFER) != 0;
struct RenderModeContainer *mode1List = &renderModeTable_1Cycle[enableZBuffer];
struct RenderModeContainer *mode2List = &renderModeTable_2Cycle[enableZBuffer];
@@ -225,16 +225,18 @@ void geo_process_master_list_sub(struct GraphNodeMasterList *node) {
loopBegin:
switch (renderPhase) {
#if SILHOUETTE
case RENDER_PHASE_ZEX_BG: headsIndex = LIST_HEADS_ZEX; startLayer = LAYER_FORCE; endLayer = LAYER_FORCE; break;
case RENDER_PHASE_REJ_ZB: headsIndex = LIST_HEADS_REJ; startLayer = LAYER_FORCE; endLayer = LAYER_LAST_BEFORE_SILHOUETTE; break;
case RENDER_PHASE_ZEX_BEFORE_SILHOUETTE: headsIndex = LIST_HEADS_ZEX; startLayer = LAYER_FORCE; endLayer = LAYER_LAST_BEFORE_SILHOUETTE; break;
case RENDER_PHASE_ZEX_BEFORE_SILHOUETTE: headsIndex = LIST_HEADS_ZEX; startLayer = LAYER_OPAQUE; endLayer = LAYER_LAST_BEFORE_SILHOUETTE; break;
case RENDER_PHASE_REJ_SILHOUETTE: headsIndex = LIST_HEADS_REJ; startLayer = LAYER_SILHOUETTE_FIRST; endLayer = LAYER_SILHOUETTE_LAST; break;
case RENDER_PHASE_REJ_NON_SILHOUETTE: headsIndex = LIST_HEADS_REJ; startLayer = LAYER_SILHOUETTE_FIRST; endLayer = LAYER_SILHOUETTE_LAST; break;
case RENDER_PHASE_REJ_OCCLUDE_SILHOUETTE: headsIndex = LIST_HEADS_REJ; startLayer = LAYER_OCCLUDE_SILHOUETTE_FIRST; endLayer = LAYER_OCCLUDE_SILHOUETTE_LAST; break;
case RENDER_PHASE_ZEX_AFTER_SILHOUETTE: headsIndex = LIST_HEADS_ZEX; startLayer = LAYER_OCCLUDE_SILHOUETTE_FIRST; endLayer = (LAYER_COUNT - 1); break;
case RENDER_PHASE_REJ_NON_ZB: headsIndex = LIST_HEADS_REJ; startLayer = LAYER_FIRST_NON_ZB; endLayer = (LAYER_COUNT - 1); break;
#else
case RENDER_PHASE_ZEX_BG: headsIndex = LIST_HEADS_ZEX; startLayer = LAYER_FORCE; endLayer = LAYER_FORCE; break;
case RENDER_PHASE_REJ_ZB: headsIndex = LIST_HEADS_REJ; startLayer = LAYER_FORCE; endLayer = LAYER_ZB_LAST; break;
case RENDER_PHASE_ZEX_ALL: headsIndex = LIST_HEADS_ZEX; startLayer = LAYER_FORCE; endLayer = (LAYER_COUNT - 1); break;
case RENDER_PHASE_ZEX_ALL: headsIndex = LIST_HEADS_ZEX; startLayer = LAYER_OPAQUE; endLayer = (LAYER_COUNT - 1); break;
case RENDER_PHASE_REJ_NON_ZB: headsIndex = LIST_HEADS_REJ; startLayer = LAYER_FIRST_NON_ZB; endLayer = (LAYER_COUNT - 1); break;
#endif
}

View File

@@ -38,17 +38,19 @@ extern f32 gWorldScale;
#if SILHOUETTE
#define IS_LAYER_SILHOUETTE(layer) (((layer) >= LAYER_SILHOUETTE_FIRST) || ((layer) <= LAYER_SILHOUETTE_LAST))
#define RENDER_PHASE_REJ_ZB 0
#define RENDER_PHASE_ZEX_BEFORE_SILHOUETTE 1
#define RENDER_PHASE_REJ_SILHOUETTE 2
#define RENDER_PHASE_REJ_NON_SILHOUETTE 3
#define RENDER_PHASE_REJ_OCCLUDE_SILHOUETTE 4
#define RENDER_PHASE_ZEX_AFTER_SILHOUETTE 5
#define RENDER_PHASE_REJ_NON_ZB 6
#define RENDER_PHASE_ZEX_BG 0
#define RENDER_PHASE_REJ_ZB 1
#define RENDER_PHASE_ZEX_BEFORE_SILHOUETTE 2
#define RENDER_PHASE_REJ_SILHOUETTE 3
#define RENDER_PHASE_REJ_NON_SILHOUETTE 4
#define RENDER_PHASE_REJ_OCCLUDE_SILHOUETTE 5
#define RENDER_PHASE_ZEX_AFTER_SILHOUETTE 6
#define RENDER_PHASE_REJ_NON_ZB 7
#else
#define RENDER_PHASE_REJ_ZB 0
#define RENDER_PHASE_ZEX_ALL 1
#define RENDER_PHASE_REJ_NON_ZB 2
#define RENDER_PHASE_ZEX_BG 0
#define RENDER_PHASE_REJ_ZB 1
#define RENDER_PHASE_ZEX_ALL 2
#define RENDER_PHASE_REJ_NON_ZB 3
#endif
#define RENDER_PHASE_FIRST RENDER_PHASE_REJ_ZB