mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-14 16:01:30 -06:00
Merge remote-tracking branch 'origin/master' into feature/openglstatecache
# Conflicts: # ext/ghoul # modules/digitaluniverse/rendering/renderablebillboardscloud.cpp # modules/digitaluniverse/rendering/renderableplanescloud.cpp # src/util/screenlog.cpp
This commit is contained in:
@@ -138,6 +138,9 @@ namespace {
|
||||
namespace openspace {
|
||||
|
||||
void FramebufferRenderer::initialize() {
|
||||
ZoneScoped
|
||||
TracyGpuZone("Rendering initialize");
|
||||
|
||||
LDEBUG("Initializing FramebufferRenderer");
|
||||
|
||||
HasGLDebugInfo = glbinding::Binding::ObjectLabel.isResolved() &&
|
||||
@@ -467,6 +470,9 @@ void FramebufferRenderer::initialize() {
|
||||
}
|
||||
|
||||
void FramebufferRenderer::deinitialize() {
|
||||
ZoneScoped
|
||||
TracyGpuZone("Renderer deinitialize")
|
||||
|
||||
LINFO("Deinitializing FramebufferRenderer");
|
||||
|
||||
glDeleteFramebuffers(1, &_gBuffers.framebuffer);
|
||||
@@ -511,6 +517,9 @@ void FramebufferRenderer::deferredcastersChanged(Deferredcaster&,
|
||||
}
|
||||
|
||||
void FramebufferRenderer::applyTMO(float blackoutFactor) {
|
||||
ZoneScoped
|
||||
TracyGpuZone("applyTMO")
|
||||
|
||||
_hdrFilteringProgram->activate();
|
||||
|
||||
ghoul::opengl::TextureUnit hdrFeedingTextureUnit;
|
||||
@@ -785,6 +794,9 @@ void FramebufferRenderer::update() {
|
||||
}
|
||||
|
||||
void FramebufferRenderer::updateResolution() {
|
||||
ZoneScoped
|
||||
TracyGpuZone("Renderer updateResolution")
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, _gBuffers.colorTexture);
|
||||
glTexImage2D(
|
||||
GL_TEXTURE_2D,
|
||||
@@ -971,6 +983,8 @@ void FramebufferRenderer::updateResolution() {
|
||||
}
|
||||
|
||||
void FramebufferRenderer::updateRaycastData() {
|
||||
ZoneScoped
|
||||
|
||||
_raycastData.clear();
|
||||
_exitPrograms.clear();
|
||||
_raycastPrograms.clear();
|
||||
@@ -981,6 +995,8 @@ void FramebufferRenderer::updateRaycastData() {
|
||||
|
||||
int nextId = 0;
|
||||
for (VolumeRaycaster* raycaster : raycasters) {
|
||||
ZoneScopedN("raycaster")
|
||||
|
||||
RaycastData data = { nextId++, "Helper" };
|
||||
|
||||
const std::string& vsPath = raycaster->boundsVertexShaderPath();
|
||||
@@ -1095,6 +1111,8 @@ void FramebufferRenderer::updateDeferredcastData() {
|
||||
|
||||
|
||||
void FramebufferRenderer::updateHDRAndFiltering() {
|
||||
ZoneScoped
|
||||
|
||||
_hdrFilteringProgram = ghoul::opengl::ProgramObject::Build(
|
||||
"HDR and Filtering Program",
|
||||
absPath("${SHADERS}/framebuffer/hdrAndFiltering.vert"),
|
||||
@@ -1103,6 +1121,8 @@ void FramebufferRenderer::updateHDRAndFiltering() {
|
||||
}
|
||||
|
||||
void FramebufferRenderer::updateFXAA() {
|
||||
ZoneScoped
|
||||
|
||||
_fxaaProgram = ghoul::opengl::ProgramObject::Build(
|
||||
"FXAA Program",
|
||||
absPath("${SHADERS}/framebuffer/fxaa.vert"),
|
||||
@@ -1111,7 +1131,9 @@ void FramebufferRenderer::updateFXAA() {
|
||||
}
|
||||
|
||||
void FramebufferRenderer::updateDownscaledVolume() {
|
||||
_downscaledVolumeProgram = ghoul::opengl::ProgramObject::Build(
|
||||
ZoneScoped
|
||||
|
||||
_downscaledVolumeProgram = ghoul::opengl::ProgramObject::Build(
|
||||
"Write Downscaled Volume Program",
|
||||
absPath("${SHADERS}/framebuffer/mergeDownscaledVolume.vert"),
|
||||
absPath("${SHADERS}/framebuffer/mergeDownscaledVolume.frag")
|
||||
@@ -1120,6 +1142,7 @@ void FramebufferRenderer::updateDownscaledVolume() {
|
||||
|
||||
void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFactor) {
|
||||
ZoneScoped
|
||||
TracyGpuZone("FramebufferRenderer")
|
||||
|
||||
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &_defaultFBO);
|
||||
|
||||
@@ -1158,25 +1181,31 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
|
||||
RendererTasks tasks;
|
||||
|
||||
{
|
||||
TracyGpuZone("Background")
|
||||
GLDebugGroup group("Background");
|
||||
data.renderBinMask = static_cast<int>(Renderable::RenderBin::Background);
|
||||
scene->render(data, tasks);
|
||||
}
|
||||
|
||||
{
|
||||
TracyGpuZone("Opaque")
|
||||
GLDebugGroup group("Opaque");
|
||||
data.renderBinMask = static_cast<int>(Renderable::RenderBin::Opaque);
|
||||
scene->render(data, tasks);
|
||||
}
|
||||
|
||||
{
|
||||
TracyGpuZone("PreDeferredTransparent")
|
||||
GLDebugGroup group("PreDeferredTransparent");
|
||||
data.renderBinMask = static_cast<int>(Renderable::RenderBin::PreDeferredTransparent);
|
||||
data.renderBinMask = static_cast<int>(
|
||||
Renderable::RenderBin::PreDeferredTransparent
|
||||
);
|
||||
scene->render(data, tasks);
|
||||
}
|
||||
|
||||
// Run Volume Tasks
|
||||
{
|
||||
TracyGpuZone("Raycaster Tasks")
|
||||
GLDebugGroup group("Raycaster Tasks");
|
||||
performRaycasterTasks(tasks.raycasterTasks);
|
||||
|
||||
@@ -1186,6 +1215,7 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
|
||||
}
|
||||
|
||||
if (!tasks.deferredcasterTasks.empty()) {
|
||||
TracyGpuZone("Deferred Caster Tasks")
|
||||
GLDebugGroup group("Deferred Caster Tasks");
|
||||
|
||||
// We use ping pong rendering in order to be able to
|
||||
@@ -1201,12 +1231,16 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
|
||||
glEnablei(GL_BLEND, 0);
|
||||
|
||||
{
|
||||
TracyGpuZone("PostDeferredTransparent")
|
||||
GLDebugGroup group("PostDeferredTransparent");
|
||||
data.renderBinMask = static_cast<int>(Renderable::RenderBin::PostDeferredTransparent);
|
||||
data.renderBinMask = static_cast<int>(
|
||||
Renderable::RenderBin::PostDeferredTransparent
|
||||
);
|
||||
scene->render(data, tasks);
|
||||
}
|
||||
|
||||
{
|
||||
TracyGpuZone("Overlay")
|
||||
GLDebugGroup group("Overlay");
|
||||
data.renderBinMask = static_cast<int>(Renderable::RenderBin::Overlay);
|
||||
scene->render(data, tasks);
|
||||
@@ -1231,12 +1265,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");
|
||||
|
||||
applyTMO(blackoutFactor);
|
||||
}
|
||||
|
||||
if (_enableFXAA) {
|
||||
TracyGpuZone("Apply FXAA")
|
||||
GLDebugGroup group("Apply FXAA");
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFBO);
|
||||
applyFXAA();
|
||||
@@ -1247,6 +1283,8 @@ void FramebufferRenderer::performRaycasterTasks(const std::vector<RaycasterTask>
|
||||
ZoneScoped
|
||||
|
||||
for (const RaycasterTask& raycasterTask : tasks) {
|
||||
TracyGpuZone("Raycaster")
|
||||
|
||||
VolumeRaycaster* raycaster = raycasterTask.raycaster;
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, _exitFramebuffer);
|
||||
@@ -1380,6 +1418,8 @@ void FramebufferRenderer::performDeferredTasks(
|
||||
ZoneScoped
|
||||
|
||||
for (const DeferredcasterTask& deferredcasterTask : tasks) {
|
||||
TracyGpuZone("Deferredcaster")
|
||||
|
||||
Deferredcaster* deferredcaster = deferredcasterTask.deferredcaster;
|
||||
|
||||
ghoul::opengl::ProgramObject* deferredcastProgram = nullptr;
|
||||
@@ -1496,6 +1536,8 @@ void FramebufferRenderer::enableFXAA(bool enable) {
|
||||
}
|
||||
|
||||
void FramebufferRenderer::updateRendererData() {
|
||||
ZoneScoped
|
||||
|
||||
ghoul::Dictionary dict;
|
||||
dict.setValue("fragmentRendererPath", std::string(RenderFragmentShaderPath));
|
||||
dict.setValue("hdrExposure", std::to_string(_hdrExposure));
|
||||
|
||||
Reference in New Issue
Block a user