|
|
void | release () |
|
void | setShadowCascade (int numCascade, int shadowMapSize=2048, float farValue=300.0f) |
|
void | setNoShadowCascade (int shadowMapSize=2048, float farValue=50.0f) |
|
void | setShadowMapping (EShadowMapType type) |
| 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 bool | canRenderMaterial (CMaterial *m) |
| virtual bool | canRenderShader (CShader *s) |
| 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) |
|
virtual bool | OnProcessEvent (const SEvent &event) |
| virtual void | updateShaderResource (CShader *shader, CEntityManager *entity, int entityID, video::SMaterial &irrMaterial) |
|
virtual const core::aabbox3df & | getFrustumBox () |
|
ITexture * | getDepthTexture () |
|
virtual float * | getShadowDistance () |
|
virtual float * | getShadowMatrices () |
|
ERenderShadowState | getRenderShadowState () |
| 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) |
|
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 bool | OnProcessEvent (const SEvent &event)=0 |
Shadow mapping pipeline for generating depth maps.
Shadow mapping is a technique used to create shadows. It generates a depth map from the light's perspective. For directional light, Cascaded Shadow Mapping (CSM) is often used to maintain shadow quality over large areas.
- With Cascaded, the shadow is drawn in a more complex way by rendering depth three times at different distances. However, the advantage is that the shadow is rendered more clearly.
- And with NoCascaded, the shadow depth draw call is performed only once. It's faster in terms of performance, but the shadow's effective distance is limited
The Shadow RP will automatically replace the shader with one that writes depth.
However, in some cases, you can use a custom shader for writing depth. You can replace the writeDepth shader option for your material by adding the shadowDepth property to the Shader's .xml file.
<shaderConfig name="SkinToonVATInstancing2" baseShader="SOLID" shadowDepth="SDWSkinVATInstancing2">
- See also
- CDeferredRP, CForwardRP