mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-24 15:00:55 -04:00
fix trimming viewport scissoring fixes #121
This commit is contained in:
@@ -10997,7 +10997,14 @@ static int camera_draw(camera_process_class* i_this) {
|
||||
#endif
|
||||
|
||||
int trim_height = body->TrimHeight();
|
||||
|
||||
#if TARGET_PC
|
||||
trim_height *= viewport->height / FB_HEIGHT;
|
||||
window->setScissor(0.0f, trim_height, viewport->width, viewport->height - trim_height * 2.0f);
|
||||
#else
|
||||
window->setScissor(0.0f, trim_height, FB_WIDTH, FB_HEIGHT - trim_height * 2.0f);
|
||||
#endif
|
||||
|
||||
C_MTXPerspective(process->view.projMtx, process->view.fovy, process->view.aspect, process->view.near_, process->view.far_);
|
||||
mDoMtx_lookAt(process->view.viewMtx, &process->view.lookat.eye, &process->view.lookat.center,
|
||||
&process->view.lookat.up, process->view.bank);
|
||||
|
||||
@@ -1081,7 +1081,13 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
|
||||
GXSetDither(GX_TRUE);
|
||||
GXSetNumIndStages(0);
|
||||
Mtx44 ortho;
|
||||
|
||||
#if TARGET_PC
|
||||
C_MTXOrtho(ortho, 0.0f, param_1->height, 0.0f, param_1->width, 0.0f, 10.0f);
|
||||
#else
|
||||
C_MTXOrtho(ortho, 0.0f, FB_HEIGHT, 0.0f, FB_WIDTH, 0.0f, 10.0f);
|
||||
#endif
|
||||
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), 0);
|
||||
GXClearVtxDesc();
|
||||
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||
@@ -1089,6 +1095,17 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
|
||||
GXSetProjection(ortho, GX_ORTHOGRAPHIC);
|
||||
GXSetCurrentMtx(0);
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
|
||||
|
||||
#if TARGET_PC
|
||||
GXPosition3s16(0, 0, -5);
|
||||
GXPosition3s16(param_1->width, 0, -5);
|
||||
GXPosition3s16(param_1->width, sc_top, -5);
|
||||
GXPosition3s16(0, sc_top, -5);
|
||||
GXPosition3s16(0, sc_bottom, -5);
|
||||
GXPosition3s16(param_1->width, sc_bottom, -5);
|
||||
GXPosition3s16(param_1->width, param_1->height, -5);
|
||||
GXPosition3s16(0, param_1->height, -5);
|
||||
#else
|
||||
GXPosition3s16(0, 0, -5);
|
||||
GXPosition3s16(FB_WIDTH, 0, -5);
|
||||
GXPosition3s16(FB_WIDTH, sc_top, -5);
|
||||
@@ -1097,6 +1114,8 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
|
||||
GXPosition3s16(FB_WIDTH, sc_bottom, -5);
|
||||
GXPosition3s16(FB_WIDTH, FB_HEIGHT, -5);
|
||||
GXPosition3s16(0, FB_HEIGHT, -5);
|
||||
#endif
|
||||
|
||||
GXEnd();
|
||||
}
|
||||
GXSetScissor(param_1->scissor.x_orig, param_1->scissor.y_orig, param_1->scissor.width,
|
||||
|
||||
Reference in New Issue
Block a user