mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-18 01:41:29 -06:00
Performance Optimizations (#450)
* Make derived transform classes less involved in simulation state * Add performance measurements in openspaceengine * Avoid redundant transformation lookups * Fix bug causing redundant calls to GPULayerManager::bind * Move water reflectance to alpha component of normal buffer. Remove otherData buffer.
This commit is contained in:
@@ -41,6 +41,9 @@
|
||||
#include <openspace/interaction/luaconsole.h>
|
||||
#include <openspace/network/networkengine.h>
|
||||
#include <openspace/network/parallelconnection.h>
|
||||
|
||||
#include <openspace/performance/performancemeasurement.h>
|
||||
|
||||
#include <openspace/rendering/dashboard.h>
|
||||
#include <openspace/rendering/dashboarditem.h>
|
||||
#include <openspace/rendering/loadingscreen.h>
|
||||
@@ -1209,6 +1212,15 @@ void OpenSpaceEngine::initializeGL() {
|
||||
|
||||
void OpenSpaceEngine::preSynchronization() {
|
||||
LTRACE("OpenSpaceEngine::preSynchronization(begin)");
|
||||
|
||||
std::unique_ptr<performance::PerformanceMeasurement> perf;
|
||||
if (OsEng.renderEngine().performanceManager()) {
|
||||
perf = std::make_unique<performance::PerformanceMeasurement>(
|
||||
"OpenSpaceEngine::preSynchronization",
|
||||
OsEng.renderEngine().performanceManager()
|
||||
);
|
||||
}
|
||||
|
||||
FileSys.triggerFilesystemEvents();
|
||||
|
||||
if (_hasScheduledAssetLoading) {
|
||||
@@ -1258,6 +1270,14 @@ void OpenSpaceEngine::preSynchronization() {
|
||||
void OpenSpaceEngine::postSynchronizationPreDraw() {
|
||||
LTRACE("OpenSpaceEngine::postSynchronizationPreDraw(begin)");
|
||||
|
||||
std::unique_ptr<performance::PerformanceMeasurement> perf;
|
||||
if (OsEng.renderEngine().performanceManager()) {
|
||||
perf = std::make_unique<performance::PerformanceMeasurement>(
|
||||
"OpenSpaceEngine::postSynchronizationPreDraw",
|
||||
OsEng.renderEngine().performanceManager()
|
||||
);
|
||||
}
|
||||
|
||||
bool master = _windowWrapper->isMaster();
|
||||
_syncEngine->postSynchronization(SyncEngine::IsMaster(master));
|
||||
|
||||
@@ -1315,6 +1335,15 @@ void OpenSpaceEngine::render(const glm::mat4& sceneMatrix,
|
||||
const glm::mat4& projectionMatrix)
|
||||
{
|
||||
LTRACE("OpenSpaceEngine::render(begin)");
|
||||
|
||||
std::unique_ptr<performance::PerformanceMeasurement> perf;
|
||||
if (OsEng.renderEngine().performanceManager()) {
|
||||
perf = std::make_unique<performance::PerformanceMeasurement>(
|
||||
"OpenSpaceEngine::render",
|
||||
OsEng.renderEngine().performanceManager()
|
||||
);
|
||||
}
|
||||
|
||||
OnExit([] {
|
||||
LTRACE("OpenSpaceEngine::render(end)");
|
||||
});
|
||||
@@ -1340,6 +1369,14 @@ void OpenSpaceEngine::drawOverlays() {
|
||||
LTRACE("OpenSpaceEngine::drawOverlays(end)");
|
||||
});
|
||||
|
||||
std::unique_ptr<performance::PerformanceMeasurement> perf;
|
||||
if (OsEng.renderEngine().performanceManager()) {
|
||||
perf = std::make_unique<performance::PerformanceMeasurement>(
|
||||
"OpenSpaceEngine::drawOverlays",
|
||||
OsEng.renderEngine().performanceManager()
|
||||
);
|
||||
}
|
||||
|
||||
const bool isGuiWindow =
|
||||
_windowWrapper->hasGuiWindow() ? _windowWrapper->isGuiWindow() : true;
|
||||
|
||||
@@ -1368,6 +1405,14 @@ void OpenSpaceEngine::drawOverlays() {
|
||||
void OpenSpaceEngine::postDraw() {
|
||||
LTRACE("OpenSpaceEngine::postDraw(begin)");
|
||||
|
||||
std::unique_ptr<performance::PerformanceMeasurement> perf;
|
||||
if (OsEng.renderEngine().performanceManager()) {
|
||||
perf = std::make_unique<performance::PerformanceMeasurement>(
|
||||
"OpenSpaceEngine::postDraw",
|
||||
OsEng.renderEngine().performanceManager()
|
||||
);
|
||||
}
|
||||
|
||||
_renderEngine->postDraw();
|
||||
|
||||
for (const auto& func : _moduleCallbacks.postDraw) {
|
||||
|
||||
Reference in New Issue
Block a user