Oxygen Engine
Modern C++ 3D Engine using OpenGL
|
Classes | |
struct | PbrOptions |
Options to use in Pipeline::configureForPbrRendering. More... | |
Public Member Functions | |
Pipeline ()=default | |
Build an empty rendering Pipeline. | |
Pipeline (const PbrOptions &) | |
Build an Pipeline for PBR rendering. | |
void | setResultFramebuffer (oe::render::Framebuffer &target) |
Set the final framebuffer which be written by the pipeline. | |
oe::render::Framebuffer & | getResultFramebuffer () |
Get the final framebuffer which be written by the pipeline. | |
void | setDimensions (const glm::ivec2 &dimensions) |
Set the final framebuffer dimensions. | |
glm::ivec2 | getDimensions () const noexcept |
Get the final framebuffer dimensions. | |
std::shared_ptr< oe::render::Framebuffer > | generateFramebuffer () |
Generate a framebuffer for postprocessing effects. | |
std::shared_ptr< oe::render::Framebuffer > | generateFramebuffer (const glm::ivec2 &size) |
Generate a framebuffer for postprocessing effects. | |
void | configureForPbrRendering (const PbrOptions &options) |
Initialize the pipeline to act as a complete render pipeline ready for PBR rendering. | |
void | configureForPbrRendering (scene::Manager &scene_manager, const PbrOptions &options) |
Initialize the pipeline to act as a complete render pipeline ready for PBR rendering. | |
![]() | |
Pipeline (Args &&... args) | |
Pipeline & | addPipe (const std::string &name, Args &&...args) |
void | init () |
void | clean () |
PipelineOutput | run (const PipelineInput &request) |
PipelineOutput | getDefaultResponse () |
void | generateDefaultResponse (Types... args) |
T * | getPipeByName (const std::string &name) |
void | enableStepByStepMode () |
void | disableStepByStepMode () |
bool | isStepByStepMode () |
std::pair< PipelineOutput, bool > | step (const PipelineInput &request) |
Additional Inherited Members | |
![]() | |
void | _rebuildPipeOrder () |
![]() | |
std::vector< std::unique_ptr< PipeHandler > > | _pipes |
PipelineOutput | _default_response |
std::map< std::string, PipeHandler * > | _pipes_by_name |
std::optional< int32_t > | _last_step_pipe |
oe::render::Pipeline::Pipeline | ( | const PbrOptions & | ) |
Build an Pipeline for PBR rendering.
void oe::render::Pipeline::configureForPbrRendering | ( | const PbrOptions & | options | ) |
Initialize the pipeline to act as a complete render pipeline ready for PBR rendering.
The following passes are added (in order):
geometry
(pipeline::GeometryPass) Fill Geometry Buffer from deferred geometry (= solid and alpha-clip geometry)ssao
(pipeline::SsaoPass) Compute SSAO (Screen Space Ambient Occlusion) from deferred geometryreflections
(pipeline::ReflectionsPass) Compute deferred geometry reflections using SSR (Screen Space Reflections) and cubemapslighting
(pipeline::LightingPass) Compute surface lighting response for deferred geometry + apply reflections and SSAOrefractions
(pipeline::RefractionsPass) Generate different levels of blur from the lighting pass to be used as source in forward pass to render refractive transparent objectsforward
(pipeline::ForwardPass) Render forward rendering geometry (glass, effects, etc...)debug
(pipeline::DebugPass) Render debug objects filled with oe::render::Debug (only added if options.add_debug_render
is enabled)final
(pipeline::FinalPass) Apply final effects to the image (Bloom + Tonemap + Anti-aliasing) and blit it into the target framebufferoptions | Options to customise pipeline settings |
void oe::render::Pipeline::configureForPbrRendering | ( | scene::Manager & | scene_manager, |
const PbrOptions & | options | ||
) |
Initialize the pipeline to act as a complete render pipeline ready for PBR rendering.
std::shared_ptr< oe::render::Framebuffer > oe::render::Pipeline::generateFramebuffer | ( | ) |
Generate a framebuffer for postprocessing effects.
std::shared_ptr< oe::render::Framebuffer > oe::render::Pipeline::generateFramebuffer | ( | const glm::ivec2 & | size | ) |
Generate a framebuffer for postprocessing effects.
size | framebuffer size |
void oe::render::Pipeline::setResultFramebuffer | ( | oe::render::Framebuffer & | target | ) |
Set the final framebuffer which be written by the pipeline.
target | framebuffer |