Move the Lua Console updating into the actual postSyncPreDraw function so that it gets called accuratly when GUI windows are present (closes #2141)

This commit is contained in:
Alexander Bock
2022-06-20 15:52:33 +02:00
parent c08e30a3bf
commit 343615ab52
4 changed files with 18 additions and 55 deletions
+1 -9
View File
@@ -1241,6 +1241,7 @@ void OpenSpaceEngine::postSynchronizationPreDraw() {
global::renderEngine->updateRenderer();
global::renderEngine->updateScreenSpaceRenderables();
global::renderEngine->updateShaderPrograms();
global::luaConsole->update();
if (!master) {
_scene->camera()->invalidateCache();
@@ -1281,15 +1282,6 @@ void OpenSpaceEngine::render(const glm::mat4& sceneMatrix, const glm::mat4& view
TracyGpuZone("Render")
LTRACE("OpenSpaceEngine::render(begin)");
const bool isGuiWindow =
global::windowDelegate->hasGuiWindow() ?
global::windowDelegate->isGuiWindow() :
true;
if (isGuiWindow) {
global::luaConsole->update();
}
global::renderEngine->render(sceneMatrix, viewMatrix, projectionMatrix);
for (const std::function<void()>& func : *global::callback::render) {
+14 -45
View File
@@ -51,29 +51,6 @@
namespace {
constexpr const char* _loggerCat = "FramebufferRenderer";
// If this is true (detected automatically), the OpenGL debug information functions
// are available and will be used to mark object names and debug groups
bool HasGLDebugInfo = false;
struct GLDebugGroup {
explicit GLDebugGroup(std::string_view name) {
if (HasGLDebugInfo) {
glPushDebugGroup(
GL_DEBUG_SOURCE_APPLICATION,
0,
static_cast<GLsizei>(name.length()),
name.data()
);
}
}
~GLDebugGroup() {
if (HasGLDebugInfo) {
glPopDebugGroup();
}
}
};
constexpr const glm::vec4 PosBufferClearVal = { 1e32, 1e32, 1e32, 1.f };
constexpr const std::array<const char*, 9> HDRUniformNames = {
@@ -115,10 +92,6 @@ void FramebufferRenderer::initialize() {
LDEBUG("Initializing FramebufferRenderer");
HasGLDebugInfo = glbinding::Binding::ObjectLabel.isResolved() &&
glbinding::Binding::PushDebugGroup.isResolved() &&
glbinding::Binding::PopDebugGroup.isResolved();
const GLfloat vertexData[] = {
// x y
-1.f, -1.f,
@@ -207,7 +180,7 @@ void FramebufferRenderer::initialize() {
_gBuffers.depthTexture,
0
);
if (HasGLDebugInfo) {
if (glbinding::Binding::ObjectLabel.isResolved()) {
glObjectLabel(GL_FRAMEBUFFER, _gBuffers.framebuffer, -1, "G-Buffer Main");
}
@@ -722,10 +695,6 @@ void FramebufferRenderer::updateResolution() {
ZoneScoped
TracyGpuZone("Renderer updateResolution")
HasGLDebugInfo = glbinding::Binding::ObjectLabel.isResolved() &&
glbinding::Binding::PushDebugGroup.isResolved() &&
glbinding::Binding::PopDebugGroup.isResolved();
glBindTexture(GL_TEXTURE_2D, _gBuffers.colorTexture);
glTexImage2D(
GL_TEXTURE_2D,
@@ -742,7 +711,7 @@ void FramebufferRenderer::updateResolution() {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
if (HasGLDebugInfo) {
if (glbinding::Binding::ObjectLabel.isResolved()) {
glObjectLabel(GL_TEXTURE, _gBuffers.colorTexture, -1, "G-Buffer Color");
}
@@ -762,7 +731,7 @@ void FramebufferRenderer::updateResolution() {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
if (HasGLDebugInfo) {
if (glbinding::Binding::ObjectLabel.isResolved()) {
glObjectLabel(GL_TEXTURE, _gBuffers.positionTexture, -1, "G-Buffer Position");
}
@@ -782,7 +751,7 @@ void FramebufferRenderer::updateResolution() {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
if (HasGLDebugInfo) {
if (glbinding::Binding::ObjectLabel.isResolved()) {
glObjectLabel(GL_TEXTURE, _gBuffers.normalTexture, -1, "G-Buffer Normal");
}
@@ -802,7 +771,7 @@ void FramebufferRenderer::updateResolution() {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
if (HasGLDebugInfo) {
if (glbinding::Binding::ObjectLabel.isResolved()) {
glObjectLabel(GL_TEXTURE, _gBuffers.depthTexture, -1, "G-Buffer Depth");
}
@@ -1172,21 +1141,21 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
{
TracyGpuZone("Background")
GLDebugGroup group("Background");
ghoul::GLDebugGroup group("Background");
data.renderBinMask = static_cast<int>(Renderable::RenderBin::Background);
scene->render(data, tasks);
}
{
TracyGpuZone("Opaque")
GLDebugGroup group("Opaque");
ghoul::GLDebugGroup group("Opaque");
data.renderBinMask = static_cast<int>(Renderable::RenderBin::Opaque);
scene->render(data, tasks);
}
{
TracyGpuZone("PreDeferredTransparent")
GLDebugGroup group("PreDeferredTransparent");
ghoul::GLDebugGroup group("PreDeferredTransparent");
data.renderBinMask = static_cast<int>(
Renderable::RenderBin::PreDeferredTransparent
);
@@ -1196,13 +1165,13 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
// Run Volume Tasks
{
TracyGpuZone("Raycaster Tasks")
GLDebugGroup group("Raycaster Tasks");
ghoul::GLDebugGroup group("Raycaster Tasks");
performRaycasterTasks(tasks.raycasterTasks, viewport);
}
if (!tasks.deferredcasterTasks.empty()) {
TracyGpuZone("Deferred Caster Tasks")
GLDebugGroup group("Deferred Caster Tasks");
ghoul::GLDebugGroup group("Deferred Caster Tasks");
// We use ping pong rendering in order to be able to render multiple deferred
// tasks at same time (e.g. more than 1 ATM being seen at once) to the same final
@@ -1218,7 +1187,7 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
{
TracyGpuZone("PostDeferredTransparent")
GLDebugGroup group("PostDeferredTransparent");
ghoul::GLDebugGroup group("PostDeferredTransparent");
data.renderBinMask = static_cast<int>(
Renderable::RenderBin::PostDeferredTransparent
);
@@ -1227,7 +1196,7 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
{
TracyGpuZone("Overlay")
GLDebugGroup group("Overlay");
ghoul::GLDebugGroup group("Overlay");
data.renderBinMask = static_cast<int>(Renderable::RenderBin::Overlay);
scene->render(data, tasks);
}
@@ -1252,14 +1221,14 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
{
// Apply the selected TMO on the results and resolve the result to the default FBO
TracyGpuZone("Apply TMO")
GLDebugGroup group("Apply TMO");
ghoul::GLDebugGroup group("Apply TMO");
applyTMO(blackoutFactor, viewport);
}
if (_enableFXAA) {
TracyGpuZone("Apply FXAA")
GLDebugGroup group("Apply FXAA");
ghoul::GLDebugGroup group("Apply FXAA");
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFBO);
applyFXAA(viewport);
}
+2
View File
@@ -634,6 +634,8 @@ void LuaConsole::render() {
using namespace ghoul::fontrendering;
ghoul::GLDebugGroup group("LuaConsole");
// Don't render the console if it's collapsed.
if (_currentHeight < 1.f) {
return;