Refactoring pipeline concept #1: Rename VisualizationPipeline to AutoEvaluationPipeline

parent 53ba5fe9
......@@ -49,7 +49,7 @@
#include "core/tools/simplejobprocessor.h"
#include "core/tools/quadrenderer.h"
#include "core/pipeline/abstractpipeline.h"
#include "core/pipeline/visualizationpipeline.h"
#include "core/pipeline/autoevaluationpipeline.h"
namespace campvis {
......@@ -78,7 +78,7 @@ namespace campvis {
tgtAssert(_initialized == false, "Destructing initialized CampVisApplication, deinitialize first!");
// delete everything in the right order:
for (std::vector< std::pair<VisualizationPipeline*, CampVisPainter*> >::iterator it = _visualizations.begin(); it != _visualizations.end(); ++it) {
for (std::vector< std::pair<AutoEvaluationPipeline*, CampVisPainter*> >::iterator it = _visualizations.begin(); it != _visualizations.end(); ++it) {
delete it->second;
}
for (std::vector<AbstractPipeline*>::iterator it = _pipelines.begin(); it != _pipelines.end(); ++it) {
......@@ -167,7 +167,7 @@ namespace campvis {
}
// Now init painters:
for (std::vector< std::pair<VisualizationPipeline*, CampVisPainter*> >::iterator it = _visualizations.begin(); it != _visualizations.end(); ++it) {
for (std::vector< std::pair<AutoEvaluationPipeline*, CampVisPainter*> >::iterator it = _visualizations.begin(); it != _visualizations.end(); ++it) {
it->second->init();
}
......@@ -190,7 +190,7 @@ namespace campvis {
}
// Now deinit painters:
for (std::vector< std::pair<VisualizationPipeline*, CampVisPainter*> >::iterator it = _visualizations.begin(); it != _visualizations.end(); ++it) {
for (std::vector< std::pair<AutoEvaluationPipeline*, CampVisPainter*> >::iterator it = _visualizations.begin(); it != _visualizations.end(); ++it) {
it->second->deinit();
}
......@@ -243,7 +243,7 @@ namespace campvis {
s_PipelinesChanged();
}
void CampVisApplication::addVisualizationPipeline(const std::string& name, VisualizationPipeline* vp) {
void CampVisApplication::addVisualizationPipeline(const std::string& name, AutoEvaluationPipeline* vp) {
tgtAssert(_initialized == false, "Adding pipelines after initialization is currently not supported.");
tgtAssert(vp != 0, "Pipeline must not be 0.");
......
......@@ -46,7 +46,7 @@ namespace campvis {
class AbstractPipeline;
class MainWindow;
class CampVisPainter;
class VisualizationPipeline;
class AutoEvaluationPipeline;
/**
* The CampVisApplication class wraps Pipelines, Evaluators and Painters all together and takes
......@@ -105,9 +105,9 @@ namespace campvis {
*
* \note You do \b not need to call addPipeline.
* \param name Name of the OpenGL context to create for the pipeline.
* \param vp VisualizationPipeline to add.
* \param vp AutoEvaluationPipeline to add.
*/
void addVisualizationPipeline(const std::string& name, VisualizationPipeline* vp);
void addVisualizationPipeline(const std::string& name, AutoEvaluationPipeline* vp);
/**
* Adds a dock widget to the main window.
......@@ -132,7 +132,7 @@ namespace campvis {
/// All pipelines (incuding VisualizationPipelines)
std::vector<AbstractPipeline*> _pipelines;
/// All visualisations (i.e. VisualizationPipelines with their corresponding painters/canvases)
std::vector< std::pair<VisualizationPipeline*, CampVisPainter*> > _visualizations;
std::vector< std::pair<AutoEvaluationPipeline*, CampVisPainter*> > _visualizations;
/// A local OpenGL context used for initialization
tgt::QtThreadedCanvas* _localContext;
......
......@@ -41,7 +41,7 @@
#include "core/datastructures/imagedata.h"
#include "core/datastructures/renderdata.h"
#include "core/pipeline/visualizationpipeline.h"
#include "core/pipeline/autoevaluationpipeline.h"
#include "core/tools/job.h"
#include "core/tools/opengljobprocessor.h"
#include "core/tools/quadrenderer.h"
......@@ -49,7 +49,7 @@
namespace campvis {
const std::string CampVisPainter::loggerCat_ = "CAMPVis.core.CampVisPainter";
CampVisPainter::CampVisPainter(tgt::GLCanvas* canvas, VisualizationPipeline* pipeline)
CampVisPainter::CampVisPainter(tgt::GLCanvas* canvas, AutoEvaluationPipeline* pipeline)
: Runnable()
, tgt::Painter(canvas)
, _pipeline(0)
......@@ -175,7 +175,7 @@ namespace campvis {
}
}
void CampVisPainter::setPipeline(VisualizationPipeline* pipeline) {
void CampVisPainter::setPipeline(AutoEvaluationPipeline* pipeline) {
tgtAssert(pipeline != 0, "The given pipeline must not be 0.");
if (_pipeline != 0) {
_pipeline->s_renderTargetChanged.disconnect(this);
......
......@@ -44,16 +44,16 @@ namespace tgt {
}
namespace campvis {
class VisualizationPipeline;
class AutoEvaluationPipeline;
/**
* Painter class for CAMPVis, rendering the render target of a VisualizationPipeline.
* Painter class for CAMPVis, rendering the render target of a AutoEvaluationPipeline.
* This painter implements Runnable, hence, it runs in its own thread and the associated canvas
* must be of type QtThreadedCanvas.
* Rendering is implemented using condidional wait - hence the canvas is only updated when
* \a pipeline emits the s_RenderTargetChanged signal.
*
* \sa Runnable, VisualizationPipeline
* \sa Runnable, AutoEvaluationPipeline
*/
class CampVisPainter : public Runnable, public tgt::Painter, public sigslot::has_slots<> {
public:
......@@ -62,7 +62,7 @@ namespace campvis {
* \param canvas Canvas to render on
* \param pipeline Pipeline to render
*/
CampVisPainter(tgt::GLCanvas* canvas, VisualizationPipeline* pipeline);
CampVisPainter(tgt::GLCanvas* canvas, AutoEvaluationPipeline* pipeline);
/**
* Destructor, stops and waits for the rendering thread if it's still running.
......@@ -106,7 +106,7 @@ namespace campvis {
* Pipeline with the render target to render.
* \param pipeline Pipeline to render
*/
void setPipeline(VisualizationPipeline* pipeline);
void setPipeline(AutoEvaluationPipeline* pipeline);
/**
* Slot being notified when the pipeline's render target changed.
......@@ -121,7 +121,7 @@ namespace campvis {
static const std::string loggerCat_;
VisualizationPipeline* _pipeline; ///< Pipeline to render
AutoEvaluationPipeline* _pipeline; ///< Pipeline to render
tgt::Shader* _copyShader; ///< Shader for copying the render target to the framebuffer.
tbb::atomic<bool> _dirty; ///< Flag whether render result is dirty and needs to be rerendered.
std::condition_variable _renderCondition; ///< conditional wait condition for rendering
......
......@@ -27,7 +27,7 @@
//
// ================================================================================================
#include "visualizationpipeline.h"
#include "autoevaluationpipeline.h"
#include "tgt/tgt_gl.h"
#include "tgt/glcanvas.h"
#include "tgt/glcontext.h"
......@@ -57,27 +57,27 @@ namespace {
}
namespace campvis {
const std::string VisualizationPipeline::loggerCat_ = "CAMPVis.core.datastructures.VisualizationPipeline";
const std::string AutoEvaluationPipeline::loggerCat_ = "CAMPVis.core.datastructures.AutoEvaluationPipeline";
VisualizationPipeline::VisualizationPipeline()
AutoEvaluationPipeline::AutoEvaluationPipeline()
: AbstractPipeline()
, tgt::EventHandler()
, tgt::EventListener()
, _ignoreCanvasSizeUpdate(false)
, _canvasSize("CanvasSize", "Canvas Size", tgt::ivec2(128, 128), tgt::ivec2(1, 1), tgt::ivec2(4096, 4096))
, _renderTargetID("renderTargetID", "Render Target ID", "VisualizationPipeline.renderTarget", DataNameProperty::READ)
, _renderTargetID("renderTargetID", "Render Target ID", "AutoEvaluationPipeline.renderTarget", DataNameProperty::READ)
, _canvas(0)
{
_data.s_dataAdded.connect(this, &VisualizationPipeline::onDataContainerDataAdded);
_data.s_dataAdded.connect(this, &AutoEvaluationPipeline::onDataContainerDataAdded);
addProperty(&_renderTargetID);
addProperty(&_canvasSize);
_renderTargetID.s_changed.connect<VisualizationPipeline>(this, &VisualizationPipeline::onPropertyChanged);
_renderTargetID.s_changed.connect<AutoEvaluationPipeline>(this, &AutoEvaluationPipeline::onPropertyChanged);
}
VisualizationPipeline::~VisualizationPipeline() {
AutoEvaluationPipeline::~AutoEvaluationPipeline() {
}
void VisualizationPipeline::onEvent(tgt::Event* e) {
void AutoEvaluationPipeline::onEvent(tgt::Event* e) {
// copy and paste from tgt::EventHandler::onEvent() but without deleting e
for (size_t i = 0 ; i < listeners_.size() ; ++i) {
// check if current listener listens to the eventType of e
......@@ -89,50 +89,50 @@ namespace campvis {
}
}
void VisualizationPipeline::init() {
void AutoEvaluationPipeline::init() {
AbstractPipeline::init();
}
void VisualizationPipeline::deinit() {
void AutoEvaluationPipeline::deinit() {
_data.s_dataAdded.disconnect(this);
_renderTargetID.s_changed.disconnect(this);
AbstractPipeline::deinit();
}
const tgt::ivec2& VisualizationPipeline::getRenderTargetSize() const {
const tgt::ivec2& AutoEvaluationPipeline::getRenderTargetSize() const {
return _canvasSize.getValue();
}
void VisualizationPipeline::setRenderTargetSize(const tgt::ivec2& size) {
void AutoEvaluationPipeline::setRenderTargetSize(const tgt::ivec2& size) {
if (_canvasSize.getValue() != size && !_ignoreCanvasSizeUpdate) {
_canvasSize.setValue(size);
}
}
void VisualizationPipeline::onDataContainerDataAdded(const std::string& name, const DataHandle& dh) {
void AutoEvaluationPipeline::onDataContainerDataAdded(const std::string& name, const DataHandle& dh) {
if (name == _renderTargetID.getValue()) {
s_renderTargetChanged();
}
}
const std::string& VisualizationPipeline::getRenderTargetID() const {
const std::string& AutoEvaluationPipeline::getRenderTargetID() const {
return _renderTargetID.getValue();
}
void VisualizationPipeline::lockGLContextAndExecuteProcessor(AbstractProcessor* processor) {
void AutoEvaluationPipeline::lockGLContextAndExecuteProcessor(AbstractProcessor* processor) {
tgtAssert(_canvas != 0, "Set a valid canvas before calling this method!");
GLJobProc.enqueueJob(
_canvas,
makeJobOnHeap<VisualizationPipeline, AbstractProcessor*, bool>(this, &VisualizationPipeline::executeProcessor, processor, true),
makeJobOnHeap<AutoEvaluationPipeline, AbstractProcessor*, bool>(this, &AutoEvaluationPipeline::executeProcessor, processor, true),
OpenGLJobProcessor::SerialJob);
}
void VisualizationPipeline::setCanvas(tgt::GLCanvas* canvas) {
void AutoEvaluationPipeline::setCanvas(tgt::GLCanvas* canvas) {
_canvas = canvas;
}
void VisualizationPipeline::onPropertyChanged(const AbstractProperty* prop) {
void AutoEvaluationPipeline::onPropertyChanged(const AbstractProperty* prop) {
if (prop == &_renderTargetID)
s_renderTargetChanged();
else if (prop == &_canvasSize && _canvas != 0 && !_ignoreCanvasSizeUpdate) {
......@@ -146,7 +146,7 @@ namespace campvis {
AbstractPipeline::onPropertyChanged(prop);
}
void VisualizationPipeline::onProcessorInvalidated(AbstractProcessor* processor) {
void AutoEvaluationPipeline::onProcessorInvalidated(AbstractProcessor* processor) {
if (_canvas == 0)
return;
......@@ -156,11 +156,11 @@ namespace campvis {
// is VisualizationProcessor
GLJobProc.enqueueJob(
_canvas,
makeJobOnHeap<VisualizationPipeline, AbstractProcessor*>(this, &VisualizationPipeline::executeProcessorAndCheckOpenGLState, processor),
makeJobOnHeap<AutoEvaluationPipeline, AbstractProcessor*>(this, &AutoEvaluationPipeline::executeProcessorAndCheckOpenGLState, processor),
OpenGLJobProcessor::SerialJob);
}
else {
SimpleJobProc.enqueueJob(makeJob<VisualizationPipeline, AbstractProcessor*, bool>(this, &VisualizationPipeline::executeProcessor, processor, false));
SimpleJobProc.enqueueJob(makeJob<AutoEvaluationPipeline, AbstractProcessor*, bool>(this, &AutoEvaluationPipeline::executeProcessor, processor, false));
}
}
else {
......@@ -169,12 +169,12 @@ namespace campvis {
}
}
void VisualizationPipeline::addProcessor(AbstractProcessor* processor) {
void AutoEvaluationPipeline::addProcessor(AbstractProcessor* processor) {
_isVisProcessorMap.insert(std::make_pair(processor, (dynamic_cast<VisualizationProcessor*>(processor) != 0)));
AbstractPipeline::addProcessor(processor);
}
void VisualizationPipeline::executeProcessorAndCheckOpenGLState(AbstractProcessor* processor) {
void AutoEvaluationPipeline::executeProcessorAndCheckOpenGLState(AbstractProcessor* processor) {
AbstractPipeline::executeProcessor(processor, true);
#ifdef CAMPVIS_DEBUG
......
......@@ -52,17 +52,17 @@ namespace campvis {
* Abstract base class for CAMPVis Pipelines.
*
*/
class VisualizationPipeline : public AbstractPipeline, public tgt::EventHandler, public tgt::EventListener {
class AutoEvaluationPipeline : public AbstractPipeline, public tgt::EventHandler, public tgt::EventListener {
public:
/**
* Creates a VisualizationPipeline.
* Creates a AutoEvaluationPipeline.
*/
VisualizationPipeline();
AutoEvaluationPipeline();
/**
* Virtual Destructor
**/
virtual ~VisualizationPipeline();
virtual ~AutoEvaluationPipeline();
/**
......
......@@ -79,7 +79,7 @@ namespace campvis {
// ================================================================================================
DigraphVisualizationPipeline::DigraphVisualizationPipeline()
: VisualizationPipeline()
: AutoEvaluationPipeline()
{
}
......@@ -95,7 +95,7 @@ namespace campvis {
tgtAssert(processor != 0, "Processor must not be 0!");
// add processor to processor list and connect signals
VisualizationPipeline::addProcessor(processor);
AutoEvaluationPipeline::addProcessor(processor);
processor->s_invalidated.connect<DigraphVisualizationPipeline>(this, &DigraphVisualizationPipeline::onProcessorInvalidated);
// create DependencyNode
......
......@@ -33,7 +33,7 @@
#include "sigslot/sigslot.h"
#include "tgt/vector.h"
#include "tgt/event/eventlistener.h"
#include "core/pipeline/visualizationpipeline.h"
#include "core/pipeline/autoevaluationpipeline.h"
#include "core/properties/genericproperty.h"
#include <map>
......@@ -43,12 +43,12 @@ namespace campvis {
class VisualizationProcessor;
/**
* Specialization of the VisualizationPipeline that performs automatic evaluation based on
* Specialization of the AutoEvaluationPipeline that performs automatic evaluation based on
* an acyclic directed dependency graph.
*
* \todo Implement thread-safety. The current graph implementation is \b not thread-safe.
*/
class DigraphVisualizationPipeline : public VisualizationPipeline {
class DigraphVisualizationPipeline : public AutoEvaluationPipeline {
public:
/**
* Creates a DigraphVisualizationPipeline.
......
......@@ -88,7 +88,7 @@ namespace campvis {
}
void AdvancedUsVis::init() {
VisualizationPipeline::init();
AutoEvaluationPipeline::init();
_usReader.s_validated.connect(this, &AdvancedUsVis::onProcessorValidated);
......@@ -197,7 +197,7 @@ namespace campvis {
void AdvancedUsVis::deinit() {
_canvasSize.s_changed.disconnect(this);
VisualizationPipeline::deinit();
AutoEvaluationPipeline::deinit();
}
void AdvancedUsVis::execute() {
......
......@@ -51,7 +51,7 @@
namespace campvis {
CmBatchGeneration::CmBatchGeneration()
: VisualizationPipeline()
: AutoEvaluationPipeline()
, _usReader(&_canvasSize)
, _confidenceGenerator()
, _usBlurFilter()
......@@ -80,7 +80,7 @@ namespace campvis {
}
void CmBatchGeneration::init() {
VisualizationPipeline::init();
AutoEvaluationPipeline::init();
p_sourcePath.setValue("D:\\Medical Data\\US Confidence Vis\\Pasing 13-02-26\\04-02-22-212506_Perez11_20040222_212506_20040222_220332\\gallenblase");
p_targetPathColor.setValue("D:\\Medical Data\\US Confidence Vis\\Pasing 13-02-26\\04-02-22-212506_Perez11_20040222_212506_20040222_220332\\gallenblase\\color");
......@@ -124,7 +124,7 @@ namespace campvis {
}
void CmBatchGeneration::deinit() {
VisualizationPipeline::deinit();
AutoEvaluationPipeline::deinit();
}
void CmBatchGeneration::execute() {
......@@ -143,7 +143,7 @@ namespace campvis {
void CmBatchGeneration::onProcessorInvalidated(AbstractProcessor* processor) {
if (p_autoExecution.getValue())
VisualizationPipeline::onProcessorInvalidated(processor);
AutoEvaluationPipeline::onProcessorInvalidated(processor);
}
void CmBatchGeneration::executePass(int path) {
......
......@@ -31,7 +31,7 @@
#define CMBATCHGENERATION_H__
#include "core/datastructures/imagerepresentationlocal.h"
#include "core/pipeline/visualizationpipeline.h"
#include "core/pipeline/autoevaluationpipeline.h"
#include "modules/devil/processors/devilimagereader.h"
#include "modules/io/processors/mhdimagereader.h"
#include "modules/io/processors/csvdimagereader.h"
......@@ -49,10 +49,10 @@
#include "core/properties/genericproperty.h"
namespace campvis {
class CmBatchGeneration : public VisualizationPipeline {
class CmBatchGeneration : public AutoEvaluationPipeline {
public:
/**
* Creates a VisualizationPipeline.
* Creates a AutoEvaluationPipeline.
*/
CmBatchGeneration();
......@@ -61,10 +61,10 @@ namespace campvis {
**/
virtual ~CmBatchGeneration();
/// \see VisualizationPipeline::init()
/// \see AutoEvaluationPipeline::init()
virtual void init();
/// \see VisualizationPipeline::deinit()
/// \see AutoEvaluationPipeline::deinit()
virtual void deinit();
/// \see AbstractPipeline::getName()
......
......@@ -40,7 +40,7 @@
namespace campvis {
Columbia1::Columbia1()
: VisualizationPipeline()
: AutoEvaluationPipeline()
, _camera("camera", "Camera")
, _boundsData("BoundsData", "Bounds Data", "sfr", DataNameProperty::READ)
, _imageReader()
......@@ -88,7 +88,7 @@ namespace campvis {
}
void Columbia1::init() {
VisualizationPipeline::init();
AutoEvaluationPipeline::init();
_imageSplitter.s_validated.connect(this, &Columbia1::onProcessorValidated);
......@@ -148,7 +148,7 @@ namespace campvis {
void Columbia1::deinit() {
_canvasSize.s_changed.disconnect(this);
VisualizationPipeline::deinit();
AutoEvaluationPipeline::deinit();
}
const std::string Columbia1::getName() const {
......
......@@ -31,7 +31,7 @@
#define COLUMBIA1_H__
#include "core/eventhandlers/trackballnavigationeventlistener.h"
#include "core/pipeline/visualizationpipeline.h"
#include "core/pipeline/autoevaluationpipeline.h"
#include "core/properties/cameraproperty.h"
......@@ -48,10 +48,10 @@
#include "modules/vis/processors/volumerenderer.h"
namespace campvis {
class Columbia1 : public VisualizationPipeline {
class Columbia1 : public AutoEvaluationPipeline {
public:
/**
* Creates a VisualizationPipeline.
* Creates a AutoEvaluationPipeline.
*/
Columbia1();
......@@ -60,10 +60,10 @@ namespace campvis {
**/
virtual ~Columbia1();
/// \see VisualizationPipeline::init()
/// \see AutoEvaluationPipeline::init()
virtual void init();
/// \see VisualizationPipeline::deinit()
/// \see AutoEvaluationPipeline::deinit()
virtual void deinit();
/// \see AbstractPipeline::getName()
......
......@@ -32,16 +32,16 @@
#include "tgt/assert.h"
#include <itkImage.h>
#include <itkImportImageFilter.h>
#include <itkImageRegionConstIterator.h>
#include <itkRGBPixel.h>
#include "core/tools/typetraits.h"
#include "core/datastructures/imagedata.h"
#include "core/datastructures/imagerepresentationlocal.h"
#include "core/datastructures/genericimagerepresentationlocal.h"
#include <itkImage.h>
#include <itkImportImageFilter.h>
#include <itkImageRegionConstIterator.h>
#include <itkRGBPixel.h>
#include <cstring> // memcpy
namespace campvis {
......
......@@ -41,7 +41,7 @@
namespace campvis {
OpenCLPipeline::OpenCLPipeline()
: VisualizationPipeline()
: AutoEvaluationPipeline()
, _camera("camera", "Camera")
, _imageReader()
, _pgGenerator()
......@@ -66,7 +66,7 @@ namespace campvis {
}
void OpenCLPipeline::init() {
VisualizationPipeline::init();
AutoEvaluationPipeline::init();
_camera.addSharedProperty(&_eepGenerator.p_camera);
_camera.addSharedProperty(&_clRaycaster._camera);
......@@ -98,7 +98,7 @@ namespace campvis {
void OpenCLPipeline::deinit() {
_canvasSize.s_changed.disconnect(this);
VisualizationPipeline::deinit();
AutoEvaluationPipeline::deinit();
}
const std::string OpenCLPipeline::getName() const {
......
......@@ -32,7 +32,7 @@
#include "core/datastructures/imagerepresentationlocal.h"
#include "core/eventhandlers/trackballnavigationeventlistener.h"
#include "core/pipeline/visualizationpipeline.h"
#include "core/pipeline/autoevaluationpipeline.h"
#include "core/properties/cameraproperty.h"
#include "modules/io/processors/mhdimagereader.h"
#include "modules/vis/processors/proxygeometrygenerator.h"
......@@ -40,10 +40,10 @@
#include "modules/opencl/processors/clraycaster.h"
namespace campvis {
class OpenCLPipeline : public VisualizationPipeline {
class OpenCLPipeline : public AutoEvaluationPipeline {
public:
/**
* Creates a VisualizationPipeline.
* Creates a AutoEvaluationPipeline.
*/
OpenCLPipeline();
......@@ -52,9 +52,9 @@ namespace campvis {
**/
virtual ~OpenCLPipeline();
/// \see VisualizationPipeline::init()
/// \see AutoEvaluationPipeline::init()
virtual void init();
/// \see VisualizationPipeline::deinit()
/// \see AutoEvaluationPipeline::deinit()
virtual void deinit();
/// \see AbstractPipeline::getName()
......
......@@ -34,7 +34,7 @@ namespace campvis {
UsCompounding::UsCompounding()
: VisualizationPipeline()
: AutoEvaluationPipeline()
, p_camera("Camera", "Camera")
, _reader()
, _renderer(&_canvasSize)
......@@ -54,7 +54,7 @@ namespace campvis {
}
void UsCompounding::init() {
VisualizationPipeline::init();
AutoEvaluationPipeline::init();
p_camera.addSharedProperty(&_renderer.p_camera);
......@@ -68,7 +68,7 @@ namespace campvis {
void UsCompounding::deinit() {
_canvasSize.s_changed.disconnect(this);
VisualizationPipeline::deinit();
AutoEvaluationPipeline::deinit();
}
const std::string UsCompounding::getName() const {
......
......@@ -33,17 +33,17 @@
#include "core/datastructures/imagerepresentationlocal.h"
#include "core/eventhandlers/trackballnavigationeventlistener.h"
#include "core/pipeline/visualizationpipeline.h"
#include "core/pipeline/autoevaluationpipeline.h"
#include "core/properties/cameraproperty.h"
#include "modules/scr_msk/processors/trackedusfilereader.h"
#include "modules/scr_msk/processors/trackedussweepframerenderer3d.h"
namespace campvis {
class UsCompounding : public VisualizationPipeline {
class UsCompounding : public AutoEvaluationPipeline {
public:
/**
* Creates a VisualizationPipeline.
* Creates a AutoEvaluationPipeline.
*/
UsCompounding();
......@@ -52,10 +52,10 @@ namespace campvis {
**/
virtual ~UsCompounding();