mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-12 16:14:25 +02:00
fix muzzle flash lighting for the second player
This commit is contained in:
@@ -957,7 +957,7 @@ struct WaterCache {
|
|||||||
// render reflections frame
|
// render reflections frame
|
||||||
float sign = underwater ? -1.0f : 1.0f;
|
float sign = underwater ? -1.0f : 1.0f;
|
||||||
game->setClipParams(sign, waterLevel * sign);
|
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);
|
game->setClipParams(1.0f, NO_CLIP_PLANE);
|
||||||
|
@@ -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 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 renderEnvironment(int roomIndex, const vec3 &pos, Texture **targets, int stride = 0, Core::Pass pass = Core::passAmbient) {}
|
||||||
virtual void renderCompose(int roomIndex) {}
|
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 renderGame(bool showUI) {}
|
||||||
virtual void setEffect(Controller *controller, TR::Effect::Type effect) {}
|
virtual void setEffect(Controller *controller, TR::Effect::Type effect) {}
|
||||||
|
|
||||||
|
49
src/level.h
49
src/level.h
@@ -574,7 +574,7 @@ struct Level : IGame {
|
|||||||
Core::pass = pass;
|
Core::pass = pass;
|
||||||
Texture *target = (targets[0]->opt & OPT_CUBEMAP) ? targets[0] : targets[i * stride];
|
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);
|
Core::setTarget(target, RT_CLEAR_COLOR | RT_CLEAR_DEPTH | RT_STORE_COLOR, i);
|
||||||
renderView(rIndex, false, false);
|
renderView(rIndex, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::pass = tmpPass;
|
Core::pass = tmpPass;
|
||||||
@@ -2070,7 +2070,7 @@ struct Level : IGame {
|
|||||||
Core::fogParams = oldFog;
|
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");
|
PROFILE_MARKER("VIEW");
|
||||||
|
|
||||||
if (water && waterCache)
|
if (water && waterCache)
|
||||||
@@ -2174,9 +2174,6 @@ struct Level : IGame {
|
|||||||
waterCache->blitTexture(screen);
|
waterCache->blitTexture(screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showUI)
|
|
||||||
renderUI();
|
|
||||||
|
|
||||||
Core::pass = pass;
|
Core::pass = pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2225,7 +2222,7 @@ struct Level : IGame {
|
|||||||
camera->frustum->calcPlanes(Core::mViewProj);
|
camera->frustum->calcPlanes(Core::mViewProj);
|
||||||
|
|
||||||
setup();
|
setup();
|
||||||
renderView(roomIndex, false, false);
|
renderView(roomIndex, false);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
void renderShadowEntity(int index, Controller *controller, Controller *player) {
|
void renderShadowEntity(int index, Controller *controller, Controller *player) {
|
||||||
@@ -2603,6 +2600,7 @@ struct Level : IGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Core::eye = float(eye);
|
Core::eye = float(eye);
|
||||||
|
Core::setViewport(vp.x, vp.y, vp.width, vp.height);
|
||||||
|
|
||||||
if (isUI)
|
if (isUI)
|
||||||
UI::updateAspect(aspect);
|
UI::updateAspect(aspect);
|
||||||
@@ -2684,14 +2682,14 @@ struct Level : IGame {
|
|||||||
Core::setTarget(NULL, CLEAR_ALL);
|
Core::setTarget(NULL, CLEAR_ALL);
|
||||||
Core::eye = -1.0f;
|
Core::eye = -1.0f;
|
||||||
setup();
|
setup();
|
||||||
renderView(camera->getRoomIndex(), true, false);
|
renderView(camera->getRoomIndex(), true);
|
||||||
|
|
||||||
Core::defaultTarget = Core::eyeTex[1];
|
Core::defaultTarget = Core::eyeTex[1];
|
||||||
Core::viewportDef = vec4(0, 0, float(Core::defaultTarget->width), float(Core::defaultTarget->height));
|
Core::viewportDef = vec4(0, 0, float(Core::defaultTarget->width), float(Core::defaultTarget->height));
|
||||||
Core::setTarget(NULL, CLEAR_ALL);
|
Core::setTarget(NULL, CLEAR_ALL);
|
||||||
Core::eye = 1.0f;
|
Core::eye = 1.0f;
|
||||||
setup();
|
setup();
|
||||||
renderView(camera->getRoomIndex(), true, false);
|
renderView(camera->getRoomIndex(), true);
|
||||||
|
|
||||||
Core::settings.detail.vr = false;
|
Core::settings.detail.vr = false;
|
||||||
|
|
||||||
@@ -2705,20 +2703,49 @@ struct Level : IGame {
|
|||||||
|
|
||||||
setViewport(view, -1, false);
|
setViewport(view, -1, false);
|
||||||
setup();
|
setup();
|
||||||
renderView(camera->getRoomIndex(), true, showUI);
|
renderView(camera->getRoomIndex(), true);
|
||||||
|
|
||||||
setViewport(view, 1, false);
|
setViewport(view, 1, false);
|
||||||
setup();
|
setup();
|
||||||
renderView(camera->getRoomIndex(), true, showUI);
|
renderView(camera->getRoomIndex(), true);
|
||||||
|
|
||||||
Core::eye = oldEye;
|
Core::eye = oldEye;
|
||||||
} else {
|
} else {
|
||||||
setViewport(view, int(Core::eye), false);
|
setViewport(view, int(Core::eye), false);
|
||||||
setup();
|
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;
|
Core::viewportDef = vp;
|
||||||
|
|
||||||
player = players[0];
|
player = players[0];
|
||||||
|
Reference in New Issue
Block a user