mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-22 21:09:27 -06:00
change interfaces from pointer to reference
This commit is contained in:
@@ -78,7 +78,7 @@ public:
|
||||
* Responsible for calling renderEngine::setRenderData
|
||||
*/
|
||||
virtual void updateRendererData() override;
|
||||
virtual void raycastersChanged(VolumeRaycaster* entity, bool attached) override;
|
||||
virtual void raycastersChanged(VolumeRaycaster& raycaster, bool attached) override;
|
||||
private:
|
||||
|
||||
void clear();
|
||||
|
||||
@@ -78,7 +78,7 @@ public:
|
||||
*/
|
||||
virtual void updateRendererData() override;
|
||||
|
||||
virtual void raycastersChanged(VolumeRaycaster* entity, bool attached) override;
|
||||
virtual void raycastersChanged(VolumeRaycaster& raycaster, bool attached) override;
|
||||
private:
|
||||
|
||||
std::map<VolumeRaycaster*, RaycastData> _raycastData;
|
||||
|
||||
@@ -31,7 +31,7 @@ class VolumeRaycaster;
|
||||
|
||||
class RaycasterListener {
|
||||
public:
|
||||
virtual void raycastersChanged(VolumeRaycaster* raycaster, bool attached) = 0;
|
||||
virtual void raycastersChanged(VolumeRaycaster& raycaster, bool attached) = 0;
|
||||
}; // RaycasterListener
|
||||
|
||||
} // openspace
|
||||
|
||||
@@ -36,13 +36,13 @@ class RaycasterManager {
|
||||
public:
|
||||
RaycasterManager();
|
||||
~RaycasterManager();
|
||||
void attachRaycaster(VolumeRaycaster* raycaster);
|
||||
void detachRaycaster(VolumeRaycaster* raycaster);
|
||||
bool isAttached(VolumeRaycaster* raycaster);
|
||||
void attachRaycaster(VolumeRaycaster& raycaster);
|
||||
void detachRaycaster(VolumeRaycaster& raycaster);
|
||||
bool isAttached(VolumeRaycaster& raycaster);
|
||||
const std::vector<VolumeRaycaster*>& raycasters();
|
||||
|
||||
void addListener(RaycasterListener* listener);
|
||||
void removeListener(RaycasterListener* listener);
|
||||
void addListener(RaycasterListener& listener);
|
||||
void removeListener(RaycasterListener& listener);
|
||||
private:
|
||||
std::vector<VolumeRaycaster*> _raycasters;
|
||||
std::vector<RaycasterListener*> _listeners;
|
||||
|
||||
@@ -81,7 +81,7 @@ public:
|
||||
|
||||
void onEnabledChange(std::function<void(bool)> callback);
|
||||
|
||||
static void setPscUniforms(ghoul::opengl::ProgramObject* program, const Camera* camera, const PowerScaledCoordinate& position);
|
||||
static void setPscUniforms(ghoul::opengl::ProgramObject& program, const Camera& camera, const PowerScaledCoordinate& position);
|
||||
|
||||
private:
|
||||
properties::BoolProperty _enabled;
|
||||
|
||||
@@ -51,24 +51,24 @@ public:
|
||||
/**
|
||||
* Render the volume's entry points (front face of the bounding geometry)
|
||||
*/
|
||||
virtual void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) = 0;
|
||||
virtual void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) = 0;
|
||||
|
||||
/**
|
||||
* Render the volume's exit points (back face of the bounding geometry)
|
||||
*/
|
||||
virtual void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) = 0;
|
||||
virtual void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) = 0;
|
||||
|
||||
/**
|
||||
* Prepare the volume for the ABuffer's resolve step.
|
||||
* Make sure textures are up to date, bind them to texture units, set program uniforms etc.
|
||||
*/
|
||||
virtual void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) {};
|
||||
virtual void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) {};
|
||||
|
||||
/**
|
||||
* Clean up for the volume after the ABuffer's resolve step.
|
||||
* Make sure texture units are deinitialized, etc.
|
||||
*/
|
||||
virtual void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) {};
|
||||
virtual void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) {};
|
||||
|
||||
/**
|
||||
* Return a path the file to use as vertex shader
|
||||
|
||||
@@ -162,7 +162,7 @@ void RenderableConstellationBounds::render(const RenderData& data) {
|
||||
glm::mat4 viewMatrix = data.camera.viewMatrix();
|
||||
glm::mat4 projectionMatrix = data.camera.projectionMatrix();
|
||||
|
||||
setPscUniforms(_program.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_program.get(), data.camera, data.position);
|
||||
|
||||
_program->setUniform("exponent", _distance);
|
||||
_program->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
|
||||
@@ -200,7 +200,7 @@ void RenderableModel::render(const RenderData& data) {
|
||||
_programObject->setUniform("sun_pos", _sunPosition.vec3());
|
||||
_programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_programObject->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_programObject.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
_programObject->setUniform("_performShading", _performShading);
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ void RenderablePath::render(const RenderData& data) {
|
||||
_programObject->setUniform("ModelTransform", transform);
|
||||
_programObject->setUniform("color", _lineColor);
|
||||
_programObject->setUniform("lastPosition", _lastPosition);
|
||||
setPscUniforms(_programObject.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
if (_drawLine) {
|
||||
glLineWidth(_lineWidth);
|
||||
|
||||
@@ -206,7 +206,7 @@ void RenderablePlane::render(const RenderData& data) {
|
||||
|
||||
_shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_shader->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_shader.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_shader.get(), data.camera, data.position);
|
||||
|
||||
ghoul::opengl::TextureUnit unit;
|
||||
unit.activate();
|
||||
|
||||
@@ -213,7 +213,7 @@ void RenderablePlanet::render(const RenderData& data)
|
||||
_programObject->setUniform("transparency", _alpha);
|
||||
_programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_programObject->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_programObject.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
_programObject->setUniform("_performShading", _performShading);
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ void RenderableSphere::render(const RenderData& data) {
|
||||
_shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_shader->setUniform("ModelTransform", transform);
|
||||
|
||||
setPscUniforms(_shader.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_shader.get(), data.camera, data.position);
|
||||
_shader->setUniform("alpha", _transparency);
|
||||
|
||||
ghoul::opengl::TextureUnit unit;
|
||||
|
||||
@@ -212,7 +212,7 @@ void RenderableSphericalGrid::render(const RenderData& data){
|
||||
_gridProgram->setIgnoreUniformLocationError(IgnoreError::Yes);
|
||||
_gridProgram->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_gridProgram->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_gridProgram, &data.camera, data.position);
|
||||
setPscUniforms(*_gridProgram, data.camera, data.position);
|
||||
_gridProgram->setUniform("gridColor", _gridColor);
|
||||
|
||||
glLineWidth(0.5f);
|
||||
|
||||
@@ -203,7 +203,7 @@ void RenderableStars::render(const RenderData& data) {
|
||||
_program->setUniform("scaleFactor", _scaleFactor);
|
||||
_program->setUniform("minBillboardSize", _minBillboardSize);
|
||||
|
||||
setPscUniforms(_program.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_program.get(), data.camera, data.position);
|
||||
_program->setUniform("scaling", scaling);
|
||||
|
||||
ghoul::opengl::TextureUnit psfUnit;
|
||||
|
||||
@@ -155,7 +155,7 @@ void RenderableTrail::render(const RenderData& data) {
|
||||
// setup the data to the shader
|
||||
_programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_programObject->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_programObject.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
_programObject->setUniform("color", _lineColor);
|
||||
_programObject->setUniform("nVertices", static_cast<unsigned int>(_vertexArray.size()));
|
||||
|
||||
@@ -140,7 +140,7 @@ void RenderableCrawlingLine::render(const RenderData& data) {
|
||||
|
||||
_program->setUniform("_alpha", alpha);
|
||||
_program->setUniform("color", _lineColor);
|
||||
setPscUniforms(_program.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_program.get(), data.camera, data.position);
|
||||
|
||||
glBindVertexArray(_vao);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, _vbo);
|
||||
|
||||
@@ -549,7 +549,7 @@ void RenderableFov::render(const RenderData& data) {
|
||||
// setup the data to the shader
|
||||
_programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_programObject->setUniform("ModelTransform", glm::mat4(1));
|
||||
setPscUniforms(_programObject.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
if (openspace::ImageSequencer2::ref().isReady())
|
||||
_drawFOV = ImageSequencer2::ref().instrumentActive(_instrumentID);
|
||||
|
||||
@@ -331,7 +331,7 @@ void RenderableModelProjection::render(const RenderData& data) {
|
||||
_viewProjection = data.camera.viewProjectionMatrix();
|
||||
_programObject->setUniform("ViewProjection", _viewProjection);
|
||||
_programObject->setUniform("ModelTransform", _transform);
|
||||
setPscUniforms(_programObject.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
textureBind();
|
||||
_geometry->render();
|
||||
|
||||
@@ -147,7 +147,7 @@ void RenderablePlaneProjection::render(const RenderData& data) {
|
||||
|
||||
_shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_shader->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_shader.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_shader.get(), data.camera, data.position);
|
||||
|
||||
ghoul::opengl::TextureUnit unit;
|
||||
unit.activate();
|
||||
|
||||
@@ -541,7 +541,7 @@ void RenderablePlanetProjection::render(const RenderData& data){
|
||||
_programObject->setUniform("ViewProjection" , data.camera.viewProjectionMatrix());
|
||||
_programObject->setUniform("ModelTransform" , _transform);
|
||||
_programObject->setUniform("boresight" , _boresight);
|
||||
setPscUniforms(_programObject.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_programObject.get(), data.camera, data.position);
|
||||
|
||||
textureBind();
|
||||
|
||||
|
||||
@@ -136,7 +136,7 @@ void RenderableShadowCylinder::render(const RenderData& data){
|
||||
_shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_shader->setUniform("ModelTransform", _transform);
|
||||
_shader->setUniform("shadowColor", _shadowColor);
|
||||
setPscUniforms(_shader.get(), &data.camera, data.position);
|
||||
setPscUniforms(*_shader.get(), data.camera, data.position);
|
||||
|
||||
glBindVertexArray(_vao);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, static_cast<GLsizei>(_vertices.size()));
|
||||
|
||||
@@ -80,14 +80,14 @@ bool RenderableToyVolume::initialize() {
|
||||
_raycaster = std::make_unique<ToyVolumeRaycaster>(ToyVolumeRaycaster(_color));
|
||||
_raycaster->initialize();
|
||||
|
||||
OsEng.renderEngine().raycasterManager().attachRaycaster(_raycaster.get());
|
||||
OsEng.renderEngine().raycasterManager().attachRaycaster(*_raycaster.get());
|
||||
|
||||
std::function<void(bool)> onChange = [&](bool enabled) {
|
||||
if (enabled) {
|
||||
OsEng.renderEngine().raycasterManager().attachRaycaster(_raycaster.get());
|
||||
OsEng.renderEngine().raycasterManager().attachRaycaster(*_raycaster.get());
|
||||
}
|
||||
else {
|
||||
OsEng.renderEngine().raycasterManager().detachRaycaster(_raycaster.get());
|
||||
OsEng.renderEngine().raycasterManager().detachRaycaster(*_raycaster.get());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -105,7 +105,7 @@ bool RenderableToyVolume::initialize() {
|
||||
|
||||
bool RenderableToyVolume::deinitialize() {
|
||||
if (_raycaster) {
|
||||
OsEng.renderEngine().raycasterManager().detachRaycaster(_raycaster.get());
|
||||
OsEng.renderEngine().raycasterManager().detachRaycaster(*_raycaster.get());
|
||||
_raycaster = nullptr;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -53,10 +53,10 @@ void ToyVolumeRaycaster::initialize() {
|
||||
void ToyVolumeRaycaster::deinitialize() {
|
||||
}
|
||||
|
||||
void ToyVolumeRaycaster::renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) {
|
||||
program->setUniform("modelTransform", _modelTransform);
|
||||
program->setUniform("viewProjection", data.camera.viewProjectionMatrix());
|
||||
Renderable::setPscUniforms(program, &data.camera, data.position);
|
||||
void ToyVolumeRaycaster::renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) {
|
||||
program.setUniform("modelTransform", _modelTransform);
|
||||
program.setUniform("viewProjection", data.camera.viewProjectionMatrix());
|
||||
Renderable::setPscUniforms(program, data.camera, data.position);
|
||||
|
||||
// Cull back face
|
||||
glEnable(GL_CULL_FACE);
|
||||
@@ -66,11 +66,11 @@ void ToyVolumeRaycaster::renderEntryPoints(const RenderData& data, ghoul::opengl
|
||||
_boundingBox.render();
|
||||
}
|
||||
|
||||
void ToyVolumeRaycaster::renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) {
|
||||
void ToyVolumeRaycaster::renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) {
|
||||
// Uniforms
|
||||
program->setUniform("modelTransform", _modelTransform);
|
||||
program->setUniform("viewProjection", data.camera.viewProjectionMatrix());
|
||||
Renderable::setPscUniforms(program, &data.camera, data.position);
|
||||
program.setUniform("modelTransform", _modelTransform);
|
||||
program.setUniform("viewProjection", data.camera.viewProjectionMatrix());
|
||||
Renderable::setPscUniforms(program, data.camera, data.position);
|
||||
|
||||
// Cull front face
|
||||
glEnable(GL_CULL_FACE);
|
||||
@@ -83,16 +83,16 @@ void ToyVolumeRaycaster::renderExitPoints(const RenderData& data, ghoul::opengl:
|
||||
glCullFace(GL_BACK);
|
||||
}
|
||||
|
||||
void ToyVolumeRaycaster::preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) {
|
||||
void ToyVolumeRaycaster::preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) {
|
||||
std::string colorUniformName = "color" + std::to_string(data.id);
|
||||
std::string timeUniformName = "time" + std::to_string(data.id);
|
||||
std::string stepSizeUniformName = "maxStepSize" + std::to_string(data.id);
|
||||
program->setUniform(colorUniformName, _color);
|
||||
program->setUniform(stepSizeUniformName, _stepSize);
|
||||
program->setUniform(timeUniformName, static_cast<float>(std::fmod(_time, 3600.0)));
|
||||
program.setUniform(colorUniformName, _color);
|
||||
program.setUniform(stepSizeUniformName, _stepSize);
|
||||
program.setUniform(timeUniformName, static_cast<float>(std::fmod(_time, 3600.0)));
|
||||
}
|
||||
|
||||
void ToyVolumeRaycaster::postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) {
|
||||
void ToyVolumeRaycaster::postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) {
|
||||
// For example: release texture units
|
||||
}
|
||||
|
||||
|
||||
@@ -52,10 +52,10 @@ public:
|
||||
virtual ~ToyVolumeRaycaster();
|
||||
void initialize();
|
||||
void deinitialize();
|
||||
void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) override;
|
||||
void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) override;
|
||||
void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) override;
|
||||
void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) override;
|
||||
void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) override;
|
||||
void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) override;
|
||||
void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) override;
|
||||
void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) override;
|
||||
|
||||
std::string getBoundsVsPath() const override;
|
||||
std::string getBoundsFsPath() const override;
|
||||
|
||||
@@ -118,7 +118,7 @@ void ABufferRenderer::initialize() {
|
||||
LERROR(e.message);
|
||||
}
|
||||
|
||||
OsEng.renderEngine().raycasterManager().addListener(this);
|
||||
OsEng.renderEngine().raycasterManager().addListener(*this);
|
||||
}
|
||||
|
||||
void ABufferRenderer::deinitialize() {
|
||||
@@ -133,10 +133,12 @@ void ABufferRenderer::deinitialize() {
|
||||
glDeleteBuffers(1, &_vertexPositionBuffer);
|
||||
glDeleteVertexArrays(1, &_screenQuad);
|
||||
|
||||
OsEng.renderEngine().raycasterManager().removeListener(this);
|
||||
OsEng.renderEngine().raycasterManager().removeListener(*this);
|
||||
}
|
||||
|
||||
void ABufferRenderer::raycastersChanged(VolumeRaycaster* raycaster, bool attached) {
|
||||
void ABufferRenderer::raycastersChanged(VolumeRaycaster& raycaster, bool attached) {
|
||||
(void) raycaster;
|
||||
(void) attached;
|
||||
_dirtyRaycastData = true;
|
||||
}
|
||||
|
||||
@@ -221,9 +223,9 @@ void ABufferRenderer::render(float blackoutFactor, bool doPerformanceMeasurement
|
||||
if (program) {
|
||||
program->activate();
|
||||
program->setUniform("_exit_", false);
|
||||
raycaster->renderEntryPoints(raycasterTask.renderData, program);
|
||||
raycaster->renderEntryPoints(raycasterTask.renderData, *program);
|
||||
program->setUniform("_exit_", true);
|
||||
raycaster->renderExitPoints(raycasterTask.renderData, program);
|
||||
raycaster->renderExitPoints(raycasterTask.renderData, *program);
|
||||
program->deactivate();
|
||||
}
|
||||
else {
|
||||
@@ -239,7 +241,7 @@ void ABufferRenderer::render(float blackoutFactor, bool doPerformanceMeasurement
|
||||
VolumeRaycaster* raycaster = raycasterTask.raycaster;
|
||||
auto raycastData = _raycastData.find(raycaster);
|
||||
if (raycastData != _raycastData.end()) {
|
||||
raycaster->preRaycast(raycastData->second, _resolveProgram.get());
|
||||
raycaster->preRaycast(raycastData->second, *_resolveProgram.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +256,7 @@ void ABufferRenderer::render(float blackoutFactor, bool doPerformanceMeasurement
|
||||
VolumeRaycaster* raycaster = raycasterTask.raycaster;
|
||||
auto raycastData = _raycastData.find(raycaster);
|
||||
if (raycastData != _raycastData.end()) {
|
||||
raycaster->postRaycast(raycastData->second, _resolveProgram.get());
|
||||
raycaster->postRaycast(raycastData->second, *_resolveProgram.get());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ void FramebufferRenderer::initialize() {
|
||||
LERROR(e.message);
|
||||
}
|
||||
|
||||
OsEng.renderEngine().raycasterManager().addListener(this);
|
||||
OsEng.renderEngine().raycasterManager().addListener(*this);
|
||||
|
||||
_nAaSamples = OsEng.windowWrapper().currentNumberOfAaSamples();
|
||||
if (_nAaSamples > 8) {
|
||||
@@ -143,10 +143,12 @@ void FramebufferRenderer::deinitialize() {
|
||||
glDeleteBuffers(1, &_vertexPositionBuffer);
|
||||
glDeleteVertexArrays(1, &_screenQuad);
|
||||
|
||||
OsEng.renderEngine().raycasterManager().removeListener(this);
|
||||
OsEng.renderEngine().raycasterManager().removeListener(*this);
|
||||
}
|
||||
|
||||
void FramebufferRenderer::raycastersChanged(VolumeRaycaster* raycaster, bool attached) {
|
||||
void FramebufferRenderer::raycastersChanged(VolumeRaycaster& raycaster, bool attached) {
|
||||
(void) raycaster;
|
||||
(void) attached;
|
||||
_dirtyRaycastData = true;
|
||||
}
|
||||
|
||||
@@ -321,7 +323,7 @@ void FramebufferRenderer::render(float blackoutFactor, bool doPerformanceMeasure
|
||||
ghoul::opengl::ProgramObject* exitProgram = _exitPrograms[raycaster].get();
|
||||
if (exitProgram) {
|
||||
exitProgram->activate();
|
||||
raycaster->renderExitPoints(raycasterTask.renderData, exitProgram);
|
||||
raycaster->renderExitPoints(raycasterTask.renderData, *exitProgram);
|
||||
exitProgram->deactivate();
|
||||
}
|
||||
|
||||
@@ -330,7 +332,7 @@ void FramebufferRenderer::render(float blackoutFactor, bool doPerformanceMeasure
|
||||
ghoul::opengl::ProgramObject* raycastProgram = _raycastPrograms[raycaster].get();
|
||||
if (raycastProgram) {
|
||||
raycastProgram->activate();
|
||||
raycaster->preRaycast(_raycastData[raycaster], raycastProgram);
|
||||
raycaster->preRaycast(_raycastData[raycaster], *raycastProgram);
|
||||
|
||||
ghoul::opengl::TextureUnit exitColorTextureUnit;
|
||||
exitColorTextureUnit.activate();
|
||||
@@ -351,11 +353,11 @@ void FramebufferRenderer::render(float blackoutFactor, bool doPerformanceMeasure
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDepthMask(false);
|
||||
raycaster->renderEntryPoints(raycasterTask.renderData, raycastProgram);
|
||||
raycaster->renderEntryPoints(raycasterTask.renderData, *raycastProgram);
|
||||
glDepthMask(true);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
raycaster->postRaycast(_raycastData[raycaster], raycastProgram);
|
||||
raycaster->postRaycast(_raycastData[raycaster], *raycastProgram);
|
||||
raycastProgram->deactivate();
|
||||
} else {
|
||||
LWARNING("Raycaster is not attached when trying to perform raycaster task");
|
||||
|
||||
@@ -36,23 +36,23 @@ RaycasterManager::RaycasterManager() {}
|
||||
|
||||
RaycasterManager::~RaycasterManager() {}
|
||||
|
||||
void RaycasterManager::attachRaycaster(VolumeRaycaster* raycaster) {
|
||||
void RaycasterManager::attachRaycaster(VolumeRaycaster& raycaster) {
|
||||
if (!isAttached(raycaster)) {
|
||||
_raycasters.push_back(raycaster);
|
||||
_raycasters.push_back(&raycaster);
|
||||
}
|
||||
for (auto &listener : _listeners) {
|
||||
listener->raycastersChanged(raycaster, true);
|
||||
}
|
||||
}
|
||||
|
||||
bool RaycasterManager::isAttached(VolumeRaycaster* raycaster) {
|
||||
auto it = std::find(_raycasters.begin(), _raycasters.end(), raycaster);
|
||||
bool RaycasterManager::isAttached(VolumeRaycaster& raycaster) {
|
||||
auto it = std::find(_raycasters.begin(), _raycasters.end(), &raycaster);
|
||||
return it != _raycasters.end();
|
||||
}
|
||||
|
||||
|
||||
void RaycasterManager::detachRaycaster(VolumeRaycaster* raycaster) {
|
||||
auto it = std::find(_raycasters.begin(), _raycasters.end(), raycaster);
|
||||
void RaycasterManager::detachRaycaster(VolumeRaycaster& raycaster) {
|
||||
auto it = std::find(_raycasters.begin(), _raycasters.end(), &raycaster);
|
||||
if (it != _raycasters.end()) {
|
||||
_raycasters.erase(it);
|
||||
for (auto &listener : _listeners) {
|
||||
@@ -62,15 +62,15 @@ void RaycasterManager::detachRaycaster(VolumeRaycaster* raycaster) {
|
||||
}
|
||||
|
||||
|
||||
void RaycasterManager::addListener(RaycasterListener* listener) {
|
||||
auto it = std::find(_listeners.begin(), _listeners.end(), listener);
|
||||
void RaycasterManager::addListener(RaycasterListener& listener) {
|
||||
auto it = std::find(_listeners.begin(), _listeners.end(), &listener);
|
||||
if (it == _listeners.end()) {
|
||||
_listeners.push_back(listener);
|
||||
_listeners.push_back(&listener);
|
||||
}
|
||||
}
|
||||
|
||||
void RaycasterManager::removeListener(RaycasterListener* listener) {
|
||||
auto it = std::find(_listeners.begin(), _listeners.end(), listener);
|
||||
void RaycasterManager::removeListener(RaycasterListener& listener) {
|
||||
auto it = std::find(_listeners.begin(), _listeners.end(), &listener);
|
||||
if (it != _listeners.end()) {
|
||||
_listeners.erase(it);
|
||||
}
|
||||
|
||||
@@ -122,14 +122,14 @@ void Renderable::render(const RenderData& data)
|
||||
}
|
||||
|
||||
void Renderable::setPscUniforms(
|
||||
ghoul::opengl::ProgramObject* program,
|
||||
const Camera* camera,
|
||||
ghoul::opengl::ProgramObject& program,
|
||||
const Camera& camera,
|
||||
const PowerScaledCoordinate& position)
|
||||
{
|
||||
program->setUniform("campos", camera->position().vec4());
|
||||
program->setUniform("objpos", position.vec4());
|
||||
program->setUniform("camrot", camera->viewRotationMatrix());
|
||||
program->setUniform("scaling", camera->scaling());
|
||||
program.setUniform("campos", camera.position().vec4());
|
||||
program.setUniform("objpos", position.vec4());
|
||||
program.setUniform("camrot", camera.viewRotationMatrix());
|
||||
program.setUniform("scaling", camera.scaling());
|
||||
}
|
||||
|
||||
bool Renderable::isVisible() const {
|
||||
|
||||
Reference in New Issue
Block a user