TTK
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
ttkCinemaDarkroomShader Class Reference

Base Class for all CinemaDarkroom Shaders. More...

#include <ttkCinemaDarkroomShader.h>

Inheritance diagram for ttkCinemaDarkroomShader:
ttkAlgorithm ttk::Debug ttk::BaseClass ttkCinemaDarkroomColorMapping ttkCinemaDarkroomCompositing ttkCinemaDarkroomFXAA ttkCinemaDarkroomIBS ttkCinemaDarkroomNoise ttkCinemaDarkroomSSAO ttkCinemaDarkroomSSDoF ttkCinemaDarkroomSSSAO

Public Types

typedef ttkAlgorithm Superclass
 
- Public Types inherited from ttkAlgorithm
typedef vtkAlgorithm Superclass
 

Public Member Functions

virtual const char * GetClassName ()
 
virtual int IsA (const char *type)
 
- Public Member Functions inherited from ttkAlgorithm
virtual const char * GetClassName ()
 
virtual int IsA (const char *type)
 
void UpdateThreadNumber ()
 
void SetThreadNumber (int threadNumber)
 
void SetUseAllCores (bool useAllCores)
 
void SetDebugLevel (int debugLevel)
 
void SetCompactTriangulationCacheSize (float cacheSize)
 
vtkDataArray * GetOptionalArray (const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, const int &inputPort=0)
 
vtkDataArray * GetOrderArray (vtkDataSet *const inputData, const int scalarArrayIdx, const int orderArrayIdx=0, const bool enforceOrderArrayIdx=false)
 
ttk::SimplexIdGetIdentifierArrayPtr (const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, std::vector< ttk::SimplexId > &spareStorage, const int inputPort=0, const bool printErr=true)
 
ttk::TriangulationGetTriangulation (vtkDataSet *dataSet)
 
int ProcessRequest (vtkInformation *request, vtkInformationVector **inputVectors, vtkInformationVector *outputVector) override
 
vtkDataSet * GetOutput ()
 
vtkDataSet * GetOutput (int)
 
void SetInputData (vtkDataSet *)
 
void SetInputData (int, vtkDataSet *)
 
void AddInputData (vtkDataSet *)
 
void AddInputData (int, vtkDataSet *)
 
template<typename inputType >
int checkEmptyMPIInput (inputType *input)
 This method tests whether the input is a nullptr. If the computation is being done on multiple processes, it is possible that the domain of one process or more is empty, but not others, therefore in that particular case the rest of the filter will not be computed but an error message will not be sent.
 
- Public Member Functions inherited from ttk::Debug
 Debug ()
 
 ~Debug () override
 
virtual int setDebugLevel (const int &debugLevel)
 
int setWrapper (const Wrapper *wrapper) override
 
int printMsg (const std::string &msg, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const
 
int printMsg (const std::vector< std::string > &msgs, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const
 
int printErr (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const
 
int printWrn (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const
 
int printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const double &memory, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const
 
int printMsg (const std::string &msg, const double &progress, const double &time, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const
 
int printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const
 
int printMsg (const std::string &msg, const double &progress, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const
 
int printMsg (const std::string &msg, const double &progress, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const
 
int printMsg (const std::vector< std::vector< std::string > > &rows, const debug::Priority &priority=debug::Priority::INFO, const bool hasHeader=true, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const
 
int printMsg (const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const
 
int printMsg (const debug::Separator &separator, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const
 
int printMsg (const std::string &msg, const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const
 
void setDebugMsgPrefix (const std::string &prefix)
 
- Public Member Functions inherited from ttk::BaseClass
 BaseClass ()
 
virtual ~BaseClass ()=default
 
int getThreadNumber () const
 
virtual int setThreadNumber (const int threadNumber)
 
virtual int setWrapper (const Wrapper *wrapper)
 

Static Public Member Functions

static ttkCinemaDarkroomShaderNew ()
 
static int IsTypeOf (const char *type)
 
static ttkCinemaDarkroomShaderSafeDownCast (vtkObject *o)
 
- Static Public Member Functions inherited from ttkAlgorithm
static ttkAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static ttkAlgorithmSafeDownCast (vtkObject *o)
 
static std::string GetOrderArrayName (vtkDataArray *const array)
 
static vtkInformationIntegerKey * SAME_DATA_TYPE_AS_INPUT_PORT ()
 

Protected Member Functions

 ttkCinemaDarkroomShader ()
 
 ~ttkCinemaDarkroomShader () override
 
int FillInputPortInformation (int port, vtkInformation *info) override
 
int FillOutputPortInformation (int port, vtkInformation *info) override
 
std::string PerformReplacements (const std::string &input)
 
int AddReplacement (const std::string &name, const std::vector< double > &values, const bool &isInt=false)
 
int CreateFullScreenQuad ()
 
int CreateRenderer ()
 
int InitRenderer (vtkImageData *outputImage)
 
int AddTexture (vtkImageData *image, int arrayIdx, int textureIdx)
 
virtual std::string GetVertexShaderCode ()
 
virtual std::string GetFragmentShaderCode ()
 
virtual int Render (vtkImageData *image, const std::string &name)
 
- Protected Member Functions inherited from ttkAlgorithm
 ttkAlgorithm ()
 
 ~ttkAlgorithm () override
 
void MPIGhostPipelinePreconditioning (vtkDataSet *input)
 
void MPIPipelinePreconditioning (vtkDataSet *input, std::vector< int > &neighbors, ttk::Triangulation *triangulation=nullptr)
 
bool checkGlobalIdValidity (ttk::LongSimplexId *globalIds, ttk::SimplexId simplexNumber, unsigned char *ghost, int *rankArray)
 
int GenerateGlobalIds (vtkDataSet *input, std::unordered_map< ttk::SimplexId, ttk::SimplexId > &vertGtoL, std::vector< int > &neighborRanks)
 
void MPITriangulationPreconditioning (ttk::Triangulation *triangulation, vtkDataSet *input)
 
virtual int RequestDataObject (vtkInformation *request, vtkInformationVector **inputVectors, vtkInformationVector *outputVector)
 
virtual int RequestInformation (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
 
virtual int RequestUpdateTime (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
 
virtual int RequestUpdateTimeDependentInformation (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
 
virtual int RequestUpdateExtent (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
 
virtual int RequestDataNotGenerated (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
 
virtual int RequestData (vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
 
int FillInputPortInformation (int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
 
int FillOutputPortInformation (int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
 
- Protected Member Functions inherited from ttk::Debug
int printMsgInternal (const std::string &msg, const std::string &right, const std::string &filler, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const
 
int printMsgInternal (const std::string &msg, const debug::Priority &priority, const debug::LineMode &lineMode, std::ostream &stream=std::cout) const
 
int welcomeMsg (std::ostream &stream)
 

Additional Inherited Members

- Protected Attributes inherited from ttkAlgorithm
float CompactTriangulationCacheSize {0.2f}
 
- Protected Attributes inherited from ttk::Debug
int debugLevel_
 
std::string debugMsgPrefix_
 
std::string debugMsgNamePrefix_
 
- Protected Attributes inherited from ttk::BaseClass
bool lastObject_
 
int threadNumber_
 
Wrapperwrapper_
 
- Static Protected Attributes inherited from ttk::Debug
static COMMON_EXPORTS debug::LineMode lastLineMode = ttk::debug::LineMode::NEW
 

Detailed Description

Base Class for all CinemaDarkroom Shaders.

Author
Jonas Lukasczyk jl@jl.nosp@m.uk.d.nosp@m.e
Date
01.11.2020
Parameters
InputvtkImageData.
OutputvtkImageData.

This class provides all utility functions to create and use an OpenGL render context. The core concept of this class is to make a shallow copy of its vtkImageData input, and then add a point data array to the output that corresponds to a render pass. This class provides various abstract concepts to configure this render pass in the RequestData method:

1) Subclasses can override the GetVertexShaderCode and the GetFragmentShaderCode methods to provide their own shaders. By default, the vertex shader renders a fullscreen quad, and the fragment shader simply produces a red color.

2) Instead of actually passing shader uniforms, this class uses string replacements to feed shader parameters into a render pass. One can add a replacement with the AddReplacement method, where type conversion to GLSL is done automatically.

3) Point data arrays of the input can be passed into a render pass as data textures via the AddTexture method.

Related Publication: "Cinema Darkroom: A Deferred Rendering Framework for Large-Scale Datasets". J. Lukasczyk, C. Garth, M. Larsen, W. Engelke, I. Hotz, D. Rogers, J. Ahrens, and R. Maciejewski. IEEE 10th Symposium on Large Data Analysis and Visualization (LDAV), 2020.

See also
ttkAlgorithm

Definition at line 53 of file ttkCinemaDarkroomShader.h.

Member Typedef Documentation

◆ Superclass

Definition at line 104 of file ttkCinemaDarkroomShader.h.

Constructor & Destructor Documentation

◆ ttkCinemaDarkroomShader()

ttkCinemaDarkroomShader::ttkCinemaDarkroomShader ( )
protected

Definition at line 35 of file ttkCinemaDarkroomShader.cpp.

◆ ~ttkCinemaDarkroomShader()

ttkCinemaDarkroomShader::~ttkCinemaDarkroomShader ( )
overrideprotecteddefault

Member Function Documentation

◆ AddReplacement()

int ttkCinemaDarkroomShader::AddReplacement ( const std::string &  name,
const std::vector< double > &  values,
const bool &  isInt = false 
)
protected

Adds or updates a replacement that will be later used during the render pass to update shader strings.

Definition at line 104 of file ttkCinemaDarkroomShader.cpp.

◆ AddTexture()

int ttkCinemaDarkroomShader::AddTexture ( vtkImageData *  image,
int  arrayIdx,
int  textureIdx 
)
protected

Adds a texture to the render pass with the name tex{textureIdx} whose values correspond to the point data array specified via SetInputArrayToProcess(arrayIdx).

Definition at line 192 of file ttkCinemaDarkroomShader.cpp.

◆ CreateFullScreenQuad()

int ttkCinemaDarkroomShader::CreateFullScreenQuad ( )
protected

Definition at line 119 of file ttkCinemaDarkroomShader.cpp.

◆ CreateRenderer()

int ttkCinemaDarkroomShader::CreateRenderer ( )
protected

Definition at line 137 of file ttkCinemaDarkroomShader.cpp.

◆ FillInputPortInformation()

int ttkCinemaDarkroomShader::FillInputPortInformation ( int  port,
vtkInformation *  info 
)
overrideprotected

Definition at line 45 of file ttkCinemaDarkroomShader.cpp.

◆ FillOutputPortInformation()

int ttkCinemaDarkroomShader::FillOutputPortInformation ( int  port,
vtkInformation *  info 
)
overrideprotected

Definition at line 54 of file ttkCinemaDarkroomShader.cpp.

◆ GetClassName()

virtual const char * ttkCinemaDarkroomShader::GetClassName ( )
virtual

◆ GetFragmentShaderCode()

std::string ttkCinemaDarkroomShader::GetFragmentShaderCode ( )
protectedvirtual

◆ GetVertexShaderCode()

std::string ttkCinemaDarkroomShader::GetVertexShaderCode ( )
protectedvirtual

Reimplemented in ttkCinemaDarkroomFXAA.

Definition at line 63 of file ttkCinemaDarkroomShader.cpp.

◆ InitRenderer()

int ttkCinemaDarkroomShader::InitRenderer ( vtkImageData *  outputImage)
protected

Initializes the render context and updates the internal render-window size based on the dimension of the output image.

Definition at line 158 of file ttkCinemaDarkroomShader.cpp.

◆ IsA()

virtual int ttkCinemaDarkroomShader::IsA ( const char *  type)
virtual

◆ IsTypeOf()

static int ttkCinemaDarkroomShader::IsTypeOf ( const char *  type)
static

◆ New()

static ttkCinemaDarkroomShader * ttkCinemaDarkroomShader::New ( )
static

◆ PerformReplacements()

std::string ttkCinemaDarkroomShader::PerformReplacements ( const std::string &  input)
protected

Replaces all placeholder strings of the input string based on previously added replacements.

Definition at line 95 of file ttkCinemaDarkroomShader.cpp.

◆ Render()

int ttkCinemaDarkroomShader::Render ( vtkImageData *  image,
const std::string &  name 
)
protectedvirtual

Performs a single render pass and adds the result to the image as a point data array with the specified name.

Definition at line 232 of file ttkCinemaDarkroomShader.cpp.

◆ SafeDownCast()

static ttkCinemaDarkroomShader * ttkCinemaDarkroomShader::SafeDownCast ( vtkObject *  o)
static

The documentation for this class was generated from the following files: