|
| virtual bool | OnEvent (const SEvent &event) |
| | Called if an event happened.
|
| virtual bool | canRenderMaterial (CMaterial *material) |
| virtual bool | canRenderShader (CShader *shader) |
| virtual void | initRender (int w, int h) |
| virtual void | resize (int w, int h) |
| virtual void | render (ITexture *target, CCamera *camera, CEntityManager *entityManager, const core::recti &viewport, int cubeFaceId=-1, IRenderPipeline *lastRP=NULL) |
| virtual void | drawMeshBuffer (CMesh *mesh, int bufferID, CEntityManager *entity, int entityID, bool skinnedMesh) |
| virtual void | drawInstancingMeshBuffer (CMesh *mesh, int bufferID, CShader *instancingShader, CEntityManager *entityMgr, int entityID, bool skinnedMesh) |
|
void | getRenderLightRect (CCamera *camera, const core::aabbox3df &box, float &x, float &y, float &w, float &h, float maxW, float maxH) |
|
void | setPostProcessor (IPostProcessor *pp) |
|
void | setIndirectMultipler (float f) |
|
void | setDirectMultipler (float f) |
|
void | setLightMultipler (float f) |
| virtual void | setCamera (CCamera *camera) |
| virtual void | setNextPipeLine (IRenderPipeline *next) |
|
virtual void | onNext (ITexture *target, CCamera *camera, CEntityManager *entity, const core::recti &vp, int cubeFaceId) |
|
virtual void | updateTextureResource (CMesh *mesh, int bufferID, CEntityManager *entity, int entityID, bool skinnedMesh) |
|
virtual void | updateShaderResource (CShader *shader, CEntityManager *entity, int entityID, video::SMaterial &irrMaterial) |
|
void | beginRender2D (float w, float h) |
|
void | renderBufferToTarget (float sx, float sy, float sw, float sh, SMaterial &material, bool flipY=true, bool flipX=false) |
|
void | renderBufferToTarget (float dx, float dy, float dw, float dh, float sx, float sy, float sw, float sh, SMaterial &material, bool flipY=true, bool flipX=false) |
|
void | renderEnvironment (CCamera *camera, CEntityManager *entityMgr, const core::vector3df &position, ITexture *texture[], int *face, int numFace, bool allPipeline) |
|
void | renderCubeEnvironment (CCamera *camera, CEntityManager *entityMgr, const core::vector3df &position, ITexture *texture, int *face, int numFace, bool allPipeline) |
|
void | unbindRTT () |
|
virtual ERenderPipelineType | getType () |
|
virtual void | render (ITexture *target, CCamera *camera, CEntityManager *entity, const core::recti &viewport, int cubeFaceId=-1, IRenderPipeline *lastRP=NULL)=0 |
|
virtual void | onNext (ITexture *target, CCamera *camera, CEntityManager *entity, const core::recti &viewport, int cubeFaceId)=0 |
|
virtual | ~IEventReceiver () |
| | Destructor.
|
This object class will perform draw commands using "Deferred rendering".
You can find more references here: https://learnopengl.com/Advanced-Lighting/Deferred-Shading
Only materials with the deferred=true property will be drawn in this method.
<shaderConfig name="Color" baseShader="SOLID" deferred="true">
So, the render pipeline only draws shaders located in the "Assets/BuiltIn/Shader/SpecularGlossiness/Deferred" folder. You can still combine drawing by first using Deferred rendering, and then drawing materials with Forward shaders afterward.
The advantage of this method is its support for real-time lights (CPointLight, CSpotLight, CDirectionalLight) and lighting. However, on smartphone devices like iOS and Android, it causes rapid overheating. Therefore, Deferred Rendering should only be used on PC.
Note that you need to set up an additional Shadow pass before Deferred Rendering.
...
...
...
CGameObject* camObj = zone->createEmptyObject();
);
shadowRP->initRender(w, h);
CDeferredRP* deferredRP = new CDeferredRP();
deferredRP->initRender(w, h);
shadowRP->setNextPipeLine(deferredRP);
shadowRP->render(
NULL,
camera,
scene->getEntityManager(),
);
Base class for managing the application lifecycle, rendering, and event system in Skylicht Engine.
Definition CBaseApp.h:57
int getHeight()
Get the screen height.
int getWidth()
Get the screen width.
This is an object class used to set up the camera, including its position, viewing angle,...
Definition CCamera.h:70
void lookAt(const core::vector3df &position, const core::vector3df &target, const core::vector3df &up)
Configures the camera to look at a target from a specific position.
void setPosition(const core::vector3df &position)
Sets the world position of the camera.
This object class manages all other objects, it represents the data of a scene.
Definition CScene.h:103
Shadow mapping pipeline for generating depth maps.
Definition CShadowMapRP.h:59
It's the primary container object for the CScene; all CGameObject have a CZone as their root parent.
Definition CZone.h:37
vector3d< f32 > vector3df
Typedef for a f32 3d vector.
Definition vector3d.h:445
rect< s32 > recti
Rectangle with int values.
Definition rect.h:273
All scene management can be found in this namespace: Mesh loading, special scene nodes like octrees a...
Definition CIndexBuffer.h:13
unsigned int u32
32 bit unsigned variable.
Definition irrTypes.h:58
- See also
- CShadowMapRP, CForwardRP