Fix some render issues

This commit is contained in:
James Lambert 2022-11-25 20:52:02 -07:00
parent 6e5c516084
commit 121ca8a2f2
3 changed files with 36 additions and 36 deletions

View file

@ -208,6 +208,8 @@ build/src/scene/portal_render.o: $(MODEL_HEADERS)
build/src/player/player.o: build/assets/models/player/chell.h build/assets/materials/static.h
build/assets/models/player/chell.h: assets/materials/chell.skm.yaml
build/anims.ld: $(ANIM_LIST) tools/generate_animation_ld.js
@mkdir -p $(@D)
node tools/generate_animation_ld.js $@ $(ANIM_LIST)

View file

@ -3,45 +3,61 @@ materials:
gDPSetTile:
filename: ./models/player/chell_face.png
siz: G_IM_SIZ_16b
s:
wrap: false
t:
wrap: false
gDPSetCombineMode: G_CC_MODULATEI
gDPSetCycleType: G_CYC_1CYCLE
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_head:
gDPSetTile:
filename: ./models/player/chell_head.png
siz: G_IM_SIZ_16b
s:
wrap: false
t:
wrap: false
gDPSetCombineMode: G_CC_MODULATEI
gDPSetCycleType: G_CYC_1CYCLE
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_pants:
gDPSetTile:
filename: ./models/player/chell_pants.png
siz: G_IM_SIZ_16b
s:
wrap: false
t:
wrap: false
gDPSetCombineMode: G_CC_MODULATEI
gDPSetCycleType: G_CYC_1CYCLE
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_shirt:
gDPSetTile:
filename: ./models/player/chell_shirt.png
siz: G_IM_SIZ_16b
s:
wrap: false
t:
wrap: false
gDPSetCombineMode: G_CC_MODULATEI
gDPSetCycleType: G_CYC_1CYCLE
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_neck:
gDPSetCombineMode:
@ -56,7 +72,7 @@ materials:
a: 255
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_arm:
gDPSetTile:
@ -75,7 +91,7 @@ materials:
a: 255
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_leg:
gDPSetTile:
@ -94,7 +110,7 @@ materials:
a: 255
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_boots_white:
gDPSetTile:
@ -113,7 +129,7 @@ materials:
a: 255
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
chell_boots_black:
gDPSetTile:
@ -132,4 +148,5 @@ materials:
a: 20
gSPGeometryMode:
set: [G_LIGHTING, G_SHADE]
set: [G_LIGHTING, G_SHADE]
clear: [G_CULL_BACK]

View file

@ -186,22 +186,15 @@ int renderPlanPortal(struct RenderPlan* renderPlan, struct Scene* scene, struct
renderPlan->clippedPortalIndex = portalIndex;
}
if (current->clippingPortalIndex == portalIndex) {
next->minX = 0;
next->maxX = SCREEN_WD;
next->minY = 0;
next->maxY = SCREEN_HT;
} else {
next->minX = CALC_SCREEN_SPACE(clippingBounds.min.x, SCREEN_WD);
next->maxX = CALC_SCREEN_SPACE(clippingBounds.max.x, SCREEN_WD);
next->minY = CALC_SCREEN_SPACE(-clippingBounds.max.y, SCREEN_HT);
next->maxY = CALC_SCREEN_SPACE(-clippingBounds.min.y, SCREEN_HT);
next->minX = CALC_SCREEN_SPACE(clippingBounds.min.x, SCREEN_WD);
next->maxX = CALC_SCREEN_SPACE(clippingBounds.max.x, SCREEN_WD);
next->minY = CALC_SCREEN_SPACE(-clippingBounds.max.y, SCREEN_HT);
next->maxY = CALC_SCREEN_SPACE(-clippingBounds.min.y, SCREEN_HT);
next->minX = MAX(next->minX, current->minX);
next->maxX = MIN(next->maxX, current->maxX);
next->minY = MAX(next->minY, current->minY);
next->maxY = MIN(next->maxY, current->maxY);
}
next->minX = MAX(next->minX, current->minX);
next->maxX = MIN(next->maxX, current->maxX);
next->minY = MAX(next->minY, current->minY);
next->maxY = MIN(next->maxY, current->maxY);
struct RenderProps* prevSibling = prevSiblingPtr ? *prevSiblingPtr : NULL;
@ -398,18 +391,6 @@ void renderPlanAdjustViewportDepth(struct RenderPlan* renderPlan) {
short minZ = zBufferBoundary[current->currentDepth + 1];
short maxZ = zBufferBoundary[current->currentDepth];
if (current->maxZOverlap <= -1.0f) {
maxZ = G_MAXZ;
} else {
float newZ = 0.5f * (float)maxZ / (current->maxZOverlap + 1.0f);
if (newZ >= G_MAXZ) {
maxZ = G_MAXZ;
} else {
maxZ = (short)newZ;
}
}
current->viewport->vp.vscale[2] = (maxZ - minZ) >> 1;
current->viewport->vp.vtrans[2] = (maxZ + minZ) >> 1;
}