OpenWalnut
1.5.0dev
|
The base class for all custom post-processors. More...
#include <WGEPostprocessor.h>
Classes | |
class | PostprocessorInput |
This class encapsulates a G-Buffer. More... | |
Public Types | |
typedef std::shared_ptr< WGEPostprocessor > | SPtr |
Convenience typedef for an osg::ref_ptr< WGEPostprocessor >. More... | |
typedef std::shared_ptr< const WGEPostprocessor > | ConstSPtr |
Convenience typedef for an osg::ref_ptr< const WGEPostprocessor >. More... | |
typedef std::vector< WGEPostprocessor::SPtr > | ProcessorList |
Type used for returning lists of postprocessor prototypes. More... | |
Public Member Functions | |
WGEPostprocessor (std::string name, std::string description) | |
Create named prototype. More... | |
virtual | ~WGEPostprocessor () |
Destructor. More... | |
virtual SPtr | create (osg::ref_ptr< WGEOffscreenRenderNode > offscreen, const PostprocessorInput &gbuffer) const =0 |
Create instance. More... | |
virtual WPropGroup | getProperties () const |
Returns the set of properties controlling the post-processing node. More... | |
virtual osg::ref_ptr< osg::Texture2D > | getOutput (size_t idx=0) const |
Returns the result texture. More... | |
const std::vector< osg::ref_ptr< osg::Texture2D > > & | getOutputList () const |
This processor can produce multiple outputs. More... | |
virtual osg::ref_ptr< osg::Texture2D > | getDepth () const |
Returns the new depth texture. More... | |
virtual const std::string | getName () const |
Gets the name of this postprocessor. More... | |
virtual const std::string | getDescription () const |
Gets the description for this postprocessor. More... | |
virtual bool | getFixedViewportSize () const |
When this returns true, the viewport size is fixed to the size of the target texture. More... | |
Public Member Functions inherited from WPrototyped | |
WPrototyped () | |
Default constructor. More... | |
virtual | ~WPrototyped () |
Destructor. More... | |
template<typename T > | |
bool | isA () |
Checks whether the actual prototype has the specified runtime type. More... | |
Static Public Member Functions | |
static ProcessorList | getPostprocessors () |
Returns a list of all known postprocessor prototypes. More... | |
static void | initPostprocessors () |
Needs to be called prior to any "getPostprocessors" call. More... | |
static size_t | addPostprocessor (SPtr processor) |
Allows adding a postprocessor. More... | |
Protected Attributes | |
std::vector< osg::ref_ptr< osg::Texture2D > > | m_resultTextures |
The textures contain the result. More... | |
osg::ref_ptr< osg::Texture2D > | m_depthTexture |
The texture contains the new depth. More... | |
WPropGroup | m_properties |
All the properties of the post-processor. More... | |
WPropBool | m_effectOnly |
A flag denoting whether the effect should be combined with color or not. More... | |
WPropDouble | m_effectScale |
Scale the effect prior to blending it. More... | |
WGEShaderPreprocessor::SPtr | m_effectOnlyPreprocessor |
For convenience, this is a shader preprocessor controlled by m_effectOnly property. More... | |
Private Attributes | |
std::string | m_name |
Name string. More... | |
std::string | m_description |
Description string. More... | |
Static Private Attributes | |
static ProcessorList | m_postProcessors |
List of all postprocessors. More... | |
The base class for all custom post-processors.
It allows building an own texture processing pipeline for special processings.
Definition at line 48 of file WGEPostprocessor.h.
typedef std::shared_ptr< const WGEPostprocessor > WGEPostprocessor::ConstSPtr |
Convenience typedef for an osg::ref_ptr< const WGEPostprocessor >.
Definition at line 137 of file WGEPostprocessor.h.
typedef std::vector< WGEPostprocessor::SPtr > WGEPostprocessor::ProcessorList |
Type used for returning lists of postprocessor prototypes.
Definition at line 142 of file WGEPostprocessor.h.
typedef std::shared_ptr< WGEPostprocessor > WGEPostprocessor::SPtr |
Convenience typedef for an osg::ref_ptr< WGEPostprocessor >.
Definition at line 132 of file WGEPostprocessor.h.
WGEPostprocessor::WGEPostprocessor | ( | std::string | name, |
std::string | description | ||
) |
Create named prototype.
You should call this in your prototype constructor.
name | name of processor |
description | description. |
Definition at line 39 of file WGEPostprocessor.cpp.
References m_effectOnly, m_effectOnlyPreprocessor, m_effectScale, and m_properties.
|
virtual |
Destructor.
Definition at line 61 of file WGEPostprocessor.cpp.
|
static |
Allows adding a postprocessor.
After this call, everyone using the WGEPostprocessor can utilize your addded postproc.
processor | the postprocessor to add |
Definition at line 167 of file WGEPostprocessor.cpp.
References m_postProcessors.
|
pure virtual |
Create instance.
Uses the protected constructor. Implement it if you derive from this class! This is called whenever your postprocessor is applied to the standard render-output. You can add your own constructors and creators for other cases.
offscreen | use this offscreen node to add your texture pass' |
gbuffer | the input textures you should use |
Implemented in WGEPostprocessorSSAO, WGEPostprocessorMergeOp, WGEPostprocessorLineAO, WGEPostprocessorHalftone, WGEPostprocessorGauss, WGEPostprocessorEdgeEnhance, and WGEPostprocessorCelShading.
|
virtual |
Returns the new depth texture.
Allows you to modify the depth values. By default, this is NULL. Check this!
Definition at line 81 of file WGEPostprocessor.cpp.
References m_depthTexture.
|
virtual |
Gets the description for this postprocessor.
Implements WPrototyped.
Definition at line 178 of file WGEPostprocessor.cpp.
References m_description.
|
virtual |
When this returns true, the viewport size is fixed to the size of the target texture.
This is very useful if you want to process high resolution images offscreen. You can implement this function in your postprocessor to modify this. Please be aware that this does not modify the camera's projection matrix. This is especially important for correct aspect ratios. You can modify the camera dynamically by using callbacks.
Definition at line 183 of file WGEPostprocessor.cpp.
|
virtual |
Gets the name of this postprocessor.
Implements WPrototyped.
Definition at line 173 of file WGEPostprocessor.cpp.
References m_name.
|
virtual |
Returns the result texture.
Use this to continue processing.
idx | which output. Each postprocessor returns at least one texture in index 0, which also is the default value |
Definition at line 71 of file WGEPostprocessor.cpp.
References m_resultTextures.
const std::vector< osg::ref_ptr< osg::Texture2D > > & WGEPostprocessor::getOutputList | ( | ) | const |
This processor can produce multiple outputs.
Grab them here. This vector always contains at least the first filtered texture in unit 0.
Definition at line 76 of file WGEPostprocessor.cpp.
References m_resultTextures.
|
static |
Returns a list of all known postprocessor prototypes.
Definition at line 151 of file WGEPostprocessor.cpp.
References m_postProcessors.
Referenced by WGEPostprocessingNode::WGEPostprocessingNode().
|
virtual |
Returns the set of properties controlling the post-processing node.
You can use them to provide them to the user for example.
Definition at line 66 of file WGEPostprocessor.cpp.
References m_properties.
|
static |
Needs to be called prior to any "getPostprocessors" call.
Needed for initialization. This is done by WGraphicsEngine.
Definition at line 156 of file WGEPostprocessor.cpp.
References m_postProcessors.
Referenced by WGraphicsEngine::threadMain().
|
protected |
The texture contains the new depth.
Definition at line 251 of file WGEPostprocessor.h.
Referenced by WGEPostprocessor::PostprocessorInput::bind(), getDepth(), and WGEPostprocessor::PostprocessorInput::PostprocessorInput().
|
private |
Description string.
Set by the constructor.
Definition at line 281 of file WGEPostprocessor.h.
Referenced by getDescription().
|
protected |
A flag denoting whether the effect should be combined with color or not.
Definition at line 261 of file WGEPostprocessor.h.
Referenced by WGEPostprocessor(), and WGEPostprocessorCelShading::WGEPostprocessorCelShading().
|
protected |
For convenience, this is a shader preprocessor controlled by m_effectOnly property.
Definition at line 271 of file WGEPostprocessor.h.
Referenced by WGEPostprocessor(), WGEPostprocessorCelShading::WGEPostprocessorCelShading(), WGEPostprocessorEdgeEnhance::WGEPostprocessorEdgeEnhance(), WGEPostprocessorGauss::WGEPostprocessorGauss(), WGEPostprocessorHalftone::WGEPostprocessorHalftone(), WGEPostprocessorLineAO::WGEPostprocessorLineAO(), WGEPostprocessorMergeOp::WGEPostprocessorMergeOp(), and WGEPostprocessorSSAO::WGEPostprocessorSSAO().
|
protected |
Scale the effect prior to blending it.
Definition at line 266 of file WGEPostprocessor.h.
Referenced by WGEPostprocessor(), WGEPostprocessorHalftone::WGEPostprocessorHalftone(), and WGEPostprocessorLineAO::WGEPostprocessorLineAO().
|
private |
Name string.
Set by the constructor.
Definition at line 276 of file WGEPostprocessor.h.
Referenced by getName().
|
staticprivate |
List of all postprocessors.
Handled as singleton.
Definition at line 286 of file WGEPostprocessor.h.
Referenced by addPostprocessor(), getPostprocessors(), and initPostprocessors().
|
protected |
All the properties of the post-processor.
Definition at line 256 of file WGEPostprocessor.h.
Referenced by getProperties(), WGEPostprocessor(), WGEPostprocessorCelShading::WGEPostprocessorCelShading(), WGEPostprocessorEdgeEnhance::WGEPostprocessorEdgeEnhance(), WGEPostprocessorHalftone::WGEPostprocessorHalftone(), WGEPostprocessorLineAO::WGEPostprocessorLineAO(), and WGEPostprocessorSSAO::WGEPostprocessorSSAO().
|
protected |
The textures contain the result.
Add at least one result texture
Definition at line 246 of file WGEPostprocessor.h.
Referenced by getOutput(), getOutputList(), WGEPostprocessorCelShading::WGEPostprocessorCelShading(), WGEPostprocessorEdgeEnhance::WGEPostprocessorEdgeEnhance(), WGEPostprocessorGauss::WGEPostprocessorGauss(), WGEPostprocessorHalftone::WGEPostprocessorHalftone(), WGEPostprocessorLineAO::WGEPostprocessorLineAO(), WGEPostprocessorMergeOp::WGEPostprocessorMergeOp(), and WGEPostprocessorSSAO::WGEPostprocessorSSAO().