|
virtual bool | GetRenderTargetDescriptions (const ezView &view, const ezArrayPtr< ezGALTextureCreationDescription *const > inputs, ezArrayPtr< ezGALTextureCreationDescription > outputs) override |
| For a given input pin configuration, provide the output configuration of this node. Outputs is already resized to the number of output pins.
|
|
virtual void | InitRenderPipelinePass (const ezArrayPtr< ezRenderPipelinePassConnection *const > inputs, const ezArrayPtr< ezRenderPipelinePassConnection *const > outputs) override |
| After GetRenderTargetDescriptions was called successfully for each pass, this function is called with the inputs and outputs for review. Disconnected pins have a nullptr value in the passed in arrays. This is the time to create additional resources that are not covered by the pins automatically, e.g. a picking texture or eye adaptation buffer.
|
|
virtual void | Execute (const ezRenderViewContext &renderViewContext, const ezArrayPtr< ezRenderPipelinePassConnection *const > inputs, const ezArrayPtr< ezRenderPipelinePassConnection *const > outputs) override |
| Render into outputs. Both inputs and outputs are passed in with actual texture handles. Disconnected pins have a nullptr value in the passed in arrays. You can now create views and render target setups on the fly and fill the output targets with data.
|
|
virtual void | ExecuteInactive (const ezRenderViewContext &renderViewContext, const ezArrayPtr< ezRenderPipelinePassConnection *const > inputs, const ezArrayPtr< ezRenderPipelinePassConnection *const > outputs) override |
|
virtual ezResult | Serialize (ezStreamWriter &inout_stream) const override |
|
virtual ezResult | Deserialize (ezStreamReader &inout_stream) override |
|
ezUInt32 | GetLineToLinePixelOffset () const |
|
void | SetLineToLinePixelOffset (ezUInt32 uiPixelOffset) |
|
ezUInt32 | GetLineSamplePixelOffset () const |
|
void | SetLineSamplePixelOffset (ezUInt32 uiPixelOffset) |
|
float | GetDepthCutoffDistance () const |
|
void | SetDepthCutoffDistance (float fDepthCutoffDistance) |
|
float | GetOcclusionFalloff () const |
|
void | SetOcclusionFalloff (float fFalloff) |
|
| ezRenderPipelinePass (const char *szName, bool bIsStereoAware=false) |
|
void | SetName (const char *szName) |
| Sets the name of the pass.
|
|
const char * | GetName () const |
| returns the name of the pass.
|
|
bool | IsStereoAware () const |
| True if the render pipeline pass can handle stereo cameras correctly.
|
|
virtual ezGALTextureHandle | QueryTextureProvider (const ezRenderPipelineNodePin *pPin, const ezGALTextureCreationDescription &desc) |
|
virtual void | ReadBackProperties (ezView *pView) |
| Allows for the pass to write data back using ezView::SetRenderPassReadBackProperty. E.g. picking results etc.
|
|
void | RenderDataWithCategory (const ezRenderViewContext &renderViewContext, ezRenderData::Category category) |
|
EZ_ALWAYS_INLINE ezRenderPipeline * | GetPipeline () |
|
EZ_ALWAYS_INLINE const ezRenderPipeline * | GetPipeline () const |
|
void | InitializePins () |
|
ezHashedString | GetPinName (const ezRenderPipelineNodePin *pPin) const |
|
const ezRenderPipelineNodePin * | GetPinByName (const char *szName) const |
|
const ezRenderPipelineNodePin * | GetPinByName (ezHashedString sName) const |
|
const ezArrayPtr< const ezRenderPipelineNodePin *const > | GetInputPins () const |
|
const ezArrayPtr< const ezRenderPipelineNodePin *const > | GetOutputPins () const |
|
virtual const ezRTTI * | GetDynamicRTTI () const |
|
bool | IsInstanceOf (const ezRTTI *pType) const |
| Returns whether the type of this instance is of the given type or derived from it.
|
|
template<typename T > |
EZ_ALWAYS_INLINE bool | IsInstanceOf () const |
| Returns whether the type of this instance is of the given type or derived from it.
|
|
Screen space ambient occlusion using "line sweep ambient occlusion" by Ville Timonen
Resources: Use in Quantum Break: http://wili.cc/research/quantum_break/SIGGRAPH_2015_Remedy_Notes.pdf Presentation slides EGSR: http://wili.cc/research/lsao/EGSR13_LSAO.pdf Paper: http://wili.cc/research/lsao/lsao.pdf
There are a few adjustments and own ideas worked into this implementation. The biggest change probably is that pixels in the gather pass compute their target linesample arithmetically instead of relying on lookups.