mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-11 15:45:05 +02:00
3DS fix UI rendering, turn off MSAA for stereo renderer (bad performance)
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
#define DISPLAY_BUFFER_COUNT 2
|
||||
|
||||
#define DISPLAY_TRANSFER_FLAGS (\
|
||||
GX_TRANSFER_SCALING(GX_TRANSFER_SCALE_XY) \
|
||||
GX_TRANSFER_SCALING(GX_TRANSFER_SCALE_NO) \
|
||||
| GX_TRANSFER_FLIP_VERT(0) \
|
||||
| GX_TRANSFER_OUT_TILED(0) \
|
||||
| GX_TRANSFER_RAW_COPY(0) \
|
||||
@@ -328,7 +328,7 @@ namespace GAPI {
|
||||
vCount *= COUNT(chunks);
|
||||
}
|
||||
|
||||
VAO = new C3D_BufInfo[aCount + 1];
|
||||
VAO = new C3D_BufInfo[aCount];
|
||||
|
||||
iBuffer = (Index*) linearAlloc(iCount * sizeof(Index));
|
||||
vBuffer = (Vertex*) linearAlloc(vCount * sizeof(Vertex));
|
||||
@@ -382,16 +382,12 @@ namespace GAPI {
|
||||
}
|
||||
|
||||
void bind(const MeshRange &range) {
|
||||
C3D_BufInfo *vao = VAO;
|
||||
ASSERT(range.aIndex > -1);
|
||||
C3D_BufInfo *vao = VAO + range.aIndex;
|
||||
|
||||
if (range.aIndex == -1) {
|
||||
vao += aCount - 1;
|
||||
initVAO(vao, vBuffer + range.vStart + getChunk().vStart);
|
||||
// workaround for passing "info != &ctx->bufInfo" check inside C3D_SetBufInfo for the same VAO pointers
|
||||
C3D_BufInfo dummyBufInfo;
|
||||
C3D_SetBufInfo(&dummyBufInfo);
|
||||
if (dynamic) {
|
||||
initVAO(vao, vBuffer + getChunk().vStart + range.vStart);
|
||||
} else {
|
||||
vao += range.aIndex;
|
||||
if (Core::active.VAO == vao) {
|
||||
return;
|
||||
}
|
||||
@@ -420,12 +416,11 @@ namespace GAPI {
|
||||
LOG("Version : %s\n", "1.0");
|
||||
|
||||
gfxInitDefault();
|
||||
gfxSet3D(true);
|
||||
consoleInit(GFX_BOTTOM, NULL);
|
||||
|
||||
C3D_Init(C3D_DEFAULT_CMDBUF_SIZE);
|
||||
defTarget[0] = C3D_RenderTargetCreate(240 * 2, 400 * 2, GPU_RB_RGBA8, GPU_RB_DEPTH24_STENCIL8);
|
||||
defTarget[1] = C3D_RenderTargetCreate(240 * 2, 400 * 2, GPU_RB_RGBA8, GPU_RB_DEPTH24_STENCIL8);
|
||||
defTarget[0] = C3D_RenderTargetCreate(240, 400, GPU_RB_RGBA8, GPU_RB_DEPTH24_STENCIL8);
|
||||
defTarget[1] = C3D_RenderTargetCreate(240, 400, GPU_RB_RGBA8, GPU_RB_DEPTH24_STENCIL8);
|
||||
C3D_RenderTargetSetOutput(defTarget[0], GFX_TOP, GFX_LEFT, DISPLAY_TRANSFER_FLAGS);
|
||||
C3D_RenderTargetSetOutput(defTarget[1], GFX_TOP, GFX_RIGHT, DISPLAY_TRANSFER_FLAGS);
|
||||
curTarget = defTarget[0];
|
||||
@@ -455,7 +450,7 @@ namespace GAPI {
|
||||
//C3D_TexEnvSrc(env, C3D_Both, GPU_PRIMARY_COLOR);
|
||||
//C3D_TexEnvFunc(env, C3D_Both, GPU_REPLACE);
|
||||
|
||||
clearColor = 0x68B0D8FF;
|
||||
clearColor = 0; //0x68B0D8FF;
|
||||
colorMask = GPU_WRITE_COLOR;
|
||||
depthMask = GPU_WRITE_DEPTH;
|
||||
|
||||
|
@@ -1328,8 +1328,7 @@ struct MeshBuilder {
|
||||
}
|
||||
|
||||
void renderBuffer(Index *indices, int iCount, Vertex *vertices, int vCount) {
|
||||
if (!iCount) return;
|
||||
ASSERT(vCount > 0);
|
||||
if (iCount <= 0) return;
|
||||
|
||||
dynRange.iStart = 0;
|
||||
dynRange.iCount = iCount;
|
||||
|
@@ -57,7 +57,8 @@ void inputUpdate() {
|
||||
|
||||
hidScanInput();
|
||||
|
||||
u64 mask = hidKeysDown() | hidKeysHeld();
|
||||
u64 down = hidKeysDown();
|
||||
u64 mask = down | hidKeysHeld();
|
||||
|
||||
for (int i = 1; i < jkMAX; i++) {
|
||||
Input::setJoyDown(0, JoyKey(jkNone + i), (mask & keys[i]) != 0);
|
||||
@@ -71,20 +72,24 @@ void inputUpdate() {
|
||||
if (fabsf(stickL.x) < 0.3f && fabsf(stickL.y) < 0.3f) stickL = vec2(0.0f);
|
||||
Input::setJoyPos(0, jkL, stickL);
|
||||
|
||||
if (hidKeysDown() & KEY_TOUCH) {
|
||||
if (down & KEY_TOUCH) {
|
||||
bottomScreenOn = !bottomScreenOn;
|
||||
gspLcdInit();
|
||||
if (bottomScreenOn) {
|
||||
GSPLCD_PowerOffBacklight(GSPLCD_SCREEN_BOTTOM);
|
||||
bottomScreenOn = false;
|
||||
} else {
|
||||
GSPLCD_PowerOnBacklight(GSPLCD_SCREEN_BOTTOM);
|
||||
bottomScreenOn = true;
|
||||
}
|
||||
gspLcdExit();
|
||||
}
|
||||
}
|
||||
|
||||
void inputFree() {
|
||||
if (!bottomScreenOn) {
|
||||
gspLcdInit();
|
||||
GSPLCD_PowerOnBacklight(GSPLCD_SCREEN_BOTTOM);
|
||||
gspLcdExit();
|
||||
}
|
||||
hidExit();
|
||||
}
|
||||
|
||||
@@ -180,7 +185,7 @@ int main() {
|
||||
|
||||
osStartTime = Core::getTime();
|
||||
|
||||
Game::init("PSXDATA/LEVEL1.PSX");
|
||||
Game::init();
|
||||
|
||||
while (aptMainLoop() && !Core::isQuit) {
|
||||
inputUpdate();
|
||||
@@ -196,11 +201,6 @@ int main() {
|
||||
|
||||
inputFree();
|
||||
sndFree();
|
||||
if (!bottomScreenOn) {
|
||||
gspLcdInit();
|
||||
GSPLCD_PowerOnBacklight(GSPLCD_SCREEN_BOTTOM);
|
||||
gspLcdExit();
|
||||
}
|
||||
Game::deinit();
|
||||
|
||||
return 0;
|
||||
|
@@ -652,8 +652,8 @@ struct mat4 {
|
||||
|
||||
if (rotate90) {
|
||||
e00 = e11 = 0.0f;
|
||||
e01 = 2.0f / (r - l);
|
||||
e10 = 2.0f / (b - t);
|
||||
e10 = 2.0f / (l - r);
|
||||
e01 = 2.0f / (t - b);
|
||||
} else {
|
||||
e00 = 2.0f / (r - l);
|
||||
e11 = 2.0f / (t - b);
|
||||
@@ -670,6 +670,7 @@ struct mat4 {
|
||||
case PROJ_NEG_ZERO :
|
||||
e22 = 1.0f / (znear - zfar);
|
||||
e23 = (znear + zfar) / (znear - zfar) * 0.5f - 0.5f;
|
||||
e03 = -e03;
|
||||
break;
|
||||
case PROJ_ZERO_POS :
|
||||
e22 = 2.0f / (znear - zfar);
|
||||
|
Reference in New Issue
Block a user