mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-07 12:10:52 -06:00
Only create RenderData if we actually want to render the Renderable
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/io/texture/texturereader.h>
|
||||
#include <ghoul/misc/defer.h>
|
||||
#include <ghoul/misc/profiling.h>
|
||||
#include <ghoul/opengl/programobject.h>
|
||||
#include <ghoul/opengl/texture.h>
|
||||
#include <ghoul/opengl/textureunit.h>
|
||||
@@ -166,6 +167,8 @@ bool RenderablePlane::isReady() const {
|
||||
}
|
||||
|
||||
void RenderablePlane::initializeGL() {
|
||||
ZoneScoped
|
||||
|
||||
glGenVertexArrays(1, &_quad); // generate array
|
||||
glGenBuffers(1, &_vertexPositionBuffer); // generate buffer
|
||||
createPlane();
|
||||
@@ -183,6 +186,8 @@ void RenderablePlane::initializeGL() {
|
||||
}
|
||||
|
||||
void RenderablePlane::deinitializeGL() {
|
||||
ZoneScoped
|
||||
|
||||
glDeleteVertexArrays(1, &_quad);
|
||||
_quad = 0;
|
||||
|
||||
@@ -199,8 +204,9 @@ void RenderablePlane::deinitializeGL() {
|
||||
}
|
||||
|
||||
void RenderablePlane::render(const RenderData& data, RendererTasks&) {
|
||||
_shader->activate();
|
||||
ZoneScoped
|
||||
|
||||
_shader->activate();
|
||||
_shader->setUniform("opacity", _opacity);
|
||||
|
||||
glm::dvec3 objectPositionWorld = glm::dvec3(
|
||||
@@ -277,6 +283,8 @@ void RenderablePlane::bindTexture() {}
|
||||
void RenderablePlane::unbindTexture() {}
|
||||
|
||||
void RenderablePlane::update(const UpdateData&) {
|
||||
ZoneScoped
|
||||
|
||||
if (_shader->isDirty()) {
|
||||
_shader->rebuildFromFile();
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <ghoul/io/texture/texturereader.h>
|
||||
#include <ghoul/logging/logmanager.h>
|
||||
#include <ghoul/misc/crc32.h>
|
||||
#include <ghoul/misc/profiling.h>
|
||||
#include <ghoul/opengl/texture.h>
|
||||
#include <fstream>
|
||||
|
||||
@@ -172,6 +173,8 @@ void RenderablePlaneImageLocal::bindTexture() {
|
||||
}
|
||||
|
||||
void RenderablePlaneImageLocal::update(const UpdateData& data) {
|
||||
ZoneScoped
|
||||
|
||||
RenderablePlane::update(data);
|
||||
|
||||
if (_textureIsDirty) {
|
||||
@@ -181,6 +184,8 @@ void RenderablePlaneImageLocal::update(const UpdateData& data) {
|
||||
}
|
||||
|
||||
void RenderablePlaneImageLocal::loadTexture() {
|
||||
ZoneScoped
|
||||
|
||||
if (!_texturePath.value().empty()) {
|
||||
ghoul::opengl::Texture* t = _texture;
|
||||
|
||||
|
||||
@@ -489,17 +489,6 @@ void SceneGraphNode::render(const RenderData& data, RendererTasks& tasks) {
|
||||
return;
|
||||
}
|
||||
|
||||
RenderData newData = {
|
||||
data.camera,
|
||||
data.time,
|
||||
data.renderBinMask,
|
||||
{ _worldPositionCached, _worldRotationCached, _worldScaleCached }
|
||||
};
|
||||
|
||||
if (!isTimeFrameActive(data.time)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const bool visible = _renderable && _renderable->isVisible() &&
|
||||
_renderable->isReady() && _renderable->isEnabled() &&
|
||||
_renderable->matchesRenderBinMask(data.renderBinMask);
|
||||
@@ -508,9 +497,20 @@ void SceneGraphNode::render(const RenderData& data, RendererTasks& tasks) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isTimeFrameActive(data.time)) {
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
TracyGpuZone("Render")
|
||||
|
||||
RenderData newData = {
|
||||
data.camera,
|
||||
data.time,
|
||||
data.renderBinMask,
|
||||
{ _worldPositionCached, _worldRotationCached, _worldScaleCached }
|
||||
};
|
||||
|
||||
_renderable->render(newData, tasks);
|
||||
if (_computeScreenSpaceValues) {
|
||||
computeScreenSpaceData(newData);
|
||||
|
||||
Reference in New Issue
Block a user