Support Forum G3D Web Page |
Includes bloom, vignette, tone map. More...
Inherits G3D::Film::Filter.
Public Member Functions | |
CompositeFilter () | |
virtual void | apply (RenderDevice *rd, const FilmSettings &settings, const shared_ptr< Texture > &source, const shared_ptr< Texture > &motion, const shared_ptr< Framebuffer > &target, int sourceTrimBandThickness, int sourceColorBandThickness) const override |
Apply the filter to source, writing to target. More... | |
Public Attributes | |
shared_ptr< Framebuffer > | target |
Set and sized by allocate() when called from apply() More... | |
Protected Member Functions | |
virtual void | allocate (const String &name, const shared_ptr< Texture > &source, const shared_ptr< Framebuffer > &argTarget, int sourceDepthGuardBandThickness, const ImageFormat *fmt=ImageFormat::RGBA8()) const |
Called from apply(). More... | |
void | maybeUpdateToneCurve (const FilmSettings &settings) const |
Static Protected Member Functions | |
template<class T , class ... ArgTypes> | |
static shared_ptr< T > | createShared (ArgTypes &&... args) |
Like std::make_shared, but works for protected constructors. More... | |
Protected Attributes | |
shared_ptr< Texture > | m_blended |
Output of blend shader/input to the vertical blur. More... | |
shared_ptr< Texture > | m_blurry |
float blurred vertical + horizontal More... | |
shared_ptr< Framebuffer > | m_blurryFramebuffer |
shared_ptr< Framebuffer > | m_framebuffer |
Working framebuffer. More... | |
const ImageFormat * | m_intermediateFormat |
Used for all buffers except the output. More... | |
shared_ptr< Framebuffer > | m_intermediateResultFramebuffer |
When this is not the final filter in the chain, this framebuffer is used for the output. More... | |
Spline< float > | m_lastToneCurve |
shared_ptr< Framebuffer > | m_postGammaFramebuffer |
Captures the gamma encoded result for input to antialiasing. More... | |
shared_ptr< Texture > | m_preBloom |
float pre-bloom curve applied More... | |
shared_ptr< Texture > | m_temp |
float blurred vertical More... | |
shared_ptr< Framebuffer > | m_tempFramebuffer |
shared_ptr< Framebuffer > | m_toneCurve |
Maps [0, 2] to some output range. More... | |
Includes bloom, vignette, tone map.
G3D::Film::CompositeFilter::CompositeFilter | ( | ) |
|
protectedvirtualinherited |
Called from apply().
name | |
source | |
argTarget | |
sourceDepthGuardBandThickness | |
fmt | Format for target |
Reimplemented in G3D::Film::TAAFilter.
|
overridevirtual |
Apply the filter to source, writing to target.
The CompositeFilter and EffectsDisabledBlitFilter expect a guard band (if there is one specified in settings) on the input and produce output without a guard band. All other filters assume no guard band on input or output (and assert that). This works because exactly one of CompositeFilter or EffectsDisabledBlitFilter is always in the filter chain and always at the front.
If target is null, then all filters allocate an output that is the same size as the input (except for CompositeFilter removing the guard band). If target is not null, then the output is stretched to the size of target using bilinear interpolation.
target | If null, allocate intermediateResultFramebuffer and set this->target to it. If not null, set this->target = target |
Implements G3D::Film::Filter.
|
inlinestaticprotectedinherited |
Like std::make_shared, but works for protected constructors.
Call as createShared<myclass>.
|
protected |
|
mutableprotected |
Output of blend shader/input to the vertical blur.
16-bit float.
|
mutableprotected |
float blurred vertical + horizontal
|
mutableprotected |
|
mutableprotected |
Working framebuffer.
|
protected |
Used for all buffers except the output.
|
mutableprotectedinherited |
When this is not the final filter in the chain, this framebuffer is used for the output.
|
mutableprotected |
|
mutableprotected |
Captures the gamma encoded result for input to antialiasing.
|
mutableprotected |
float pre-bloom curve applied
|
mutableprotected |
float blurred vertical
|
mutableprotected |
|
mutableprotected |
Maps [0, 2] to some output range.
|
mutableinherited |
Set and sized by allocate() when called from apply()