1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-11 15:45:05 +02:00

fix muzzle flash lighting for the second player

This commit is contained in:
XProger
2019-01-07 02:52:55 +03:00
parent cd2778adcf
commit 77a335bacc
3 changed files with 41 additions and 14 deletions

View File

@@ -957,7 +957,7 @@ struct WaterCache {
// render reflections frame
float sign = underwater ? -1.0f : 1.0f;
game->setClipParams(sign, waterLevel * sign);
game->renderView(TR::NO_ROOM, false, false, roomsCount, roomsList);
game->renderView(TR::NO_ROOM, false, roomsCount, roomsList);
}
game->setClipParams(1.0f, NO_CLIP_PLANE);

View File

@@ -74,7 +74,7 @@ struct IGame {
virtual void getVisibleRooms(int *roomsList, int &roomsCount, int from, int to, const vec4 &viewPort, bool water, int count = 0) {}
virtual void renderEnvironment(int roomIndex, const vec3 &pos, Texture **targets, int stride = 0, Core::Pass pass = Core::passAmbient) {}
virtual void renderCompose(int roomIndex) {}
virtual void renderView(int roomIndex, bool water, bool showUI, int roomsCount = 0, int *roomsList = NULL) {}
virtual void renderView(int roomIndex, bool water, int roomsCount = 0, int *roomsList = NULL) {}
virtual void renderGame(bool showUI) {}
virtual void setEffect(Controller *controller, TR::Effect::Type effect) {}

View File

@@ -574,7 +574,7 @@ struct Level : IGame {
Core::pass = pass;
Texture *target = (targets[0]->opt & OPT_CUBEMAP) ? targets[0] : targets[i * stride];
Core::setTarget(target, RT_CLEAR_COLOR | RT_CLEAR_DEPTH | RT_STORE_COLOR, i);
renderView(rIndex, false, false);
renderView(rIndex, false);
}
Core::pass = tmpPass;
@@ -2070,7 +2070,7 @@ struct Level : IGame {
Core::fogParams = oldFog;
}
virtual void renderView(int roomIndex, bool water, bool showUI, int roomsCount = 0, int *roomsList = NULL) {
virtual void renderView(int roomIndex, bool water, int roomsCount = 0, int *roomsList = NULL) {
PROFILE_MARKER("VIEW");
if (water && waterCache)
@@ -2174,9 +2174,6 @@ struct Level : IGame {
waterCache->blitTexture(screen);
}
if (showUI)
renderUI();
Core::pass = pass;
}
@@ -2225,7 +2222,7 @@ struct Level : IGame {
camera->frustum->calcPlanes(Core::mViewProj);
setup();
renderView(roomIndex, false, false);
renderView(roomIndex, false);
}
/*
void renderShadowEntity(int index, Controller *controller, Controller *player) {
@@ -2597,12 +2594,13 @@ struct Level : IGame {
if (Core::settings.detail.stereo != Core::Settings::STEREO_VR) {
switch (eye) {
case -1 : vp = Viewport(vX + vp.x - vp.x / 2, vY + vp.y, vp.width / 2, vp.height); break;
case -1 : vp = Viewport(vX + vp.x - vp.x / 2, vY + vp.y, vp.width / 2, vp.height); break;
case +1 : vp = Viewport(vX + vW / 2 + vp.x / 2, vY + vp.y, vp.width / 2, vp.height); break;
}
}
Core::eye = float(eye);
Core::setViewport(vp.x, vp.y, vp.width, vp.height);
if (isUI)
UI::updateAspect(aspect);
@@ -2684,14 +2682,14 @@ struct Level : IGame {
Core::setTarget(NULL, CLEAR_ALL);
Core::eye = -1.0f;
setup();
renderView(camera->getRoomIndex(), true, false);
renderView(camera->getRoomIndex(), true);
Core::defaultTarget = Core::eyeTex[1];
Core::viewportDef = vec4(0, 0, float(Core::defaultTarget->width), float(Core::defaultTarget->height));
Core::setTarget(NULL, CLEAR_ALL);
Core::eye = 1.0f;
setup();
renderView(camera->getRoomIndex(), true, false);
renderView(camera->getRoomIndex(), true);
Core::settings.detail.vr = false;
@@ -2705,20 +2703,49 @@ struct Level : IGame {
setViewport(view, -1, false);
setup();
renderView(camera->getRoomIndex(), true, showUI);
renderView(camera->getRoomIndex(), true);
setViewport(view, 1, false);
setup();
renderView(camera->getRoomIndex(), true, showUI);
renderView(camera->getRoomIndex(), true);
Core::eye = oldEye;
} else {
setViewport(view, int(Core::eye), false);
setup();
renderView(camera->getRoomIndex(), true, showUI);
renderView(camera->getRoomIndex(), true);
}
}
if (showUI) {
Core::Pass pass = Core::pass;
for (int view = 0; view < viewsCount; view++) {
player = players[view];
camera = player->camera;
setClipParams(1.0f, NO_CLIP_PLANE);
params->waterHeight = params->clipHeight;
if (Core::settings.detail.stereo == Core::Settings::STEREO_ON) { // left/right SBS stereo
float oldEye = Core::eye;
setViewport(view, -1, false);
renderUI();
setViewport(view, 1, false);
renderUI();
Core::eye = oldEye;
} else {
setViewport(view, int(Core::eye), false);
renderUI();
}
}
Core::pass = pass;
}
Core::viewportDef = vp;
player = players[0];