void RenderScene() { // First render shadows renderer_->CullFace(sht::graphics::CullFaceType::kFront); ShadowPass(); renderer_->CullFace(sht::graphics::CullFaceType::kBack); if (show_shadow_texture_) { quad_shader_->Bind(); quad_shader_->Uniform1i("u_texture", 0); renderer_->ChangeTexture(shadow_depth_rt_, 0); quad_->Render(); renderer_->ChangeTexture(nullptr, 0); quad_shader_->Unbind(); } else { // Render objects object_shader_->Bind(); object_shader_->UniformMatrix4fv("u_projection_view", projection_view_matrix_); object_shader_->UniformMatrix4fv("u_depth_bias_projection_view", depth_bias_projection_view_matrix_); renderer_->ChangeTexture(shadow_depth_rt_, 0); RenderObjects(object_shader_); renderer_->ChangeTexture(nullptr, 0); object_shader_->Unbind(); } }
int ShadowMapStage::Execute(RenderingCamera * Camera, Spatial * spatial, RenderQueue* renderQueue, WorkQueue * Queue, Vector<OsEvent*>& Events) { ShadowPass(Camera, spatial, renderQueue, Queue, Events); return 0; }