NzDeferredRenderTechnique::NzDeferredRenderTechnique() : m_renderQueue(static_cast<NzForwardRenderQueue*>(m_forwardTechnique.GetRenderQueue())), m_GBufferSize(0U) { m_depthStencilBuffer = new NzRenderBuffer; m_depthStencilBuffer->SetPersistent(false); for (unsigned int i = 0; i < 2; ++i) { m_workTextures[i] = new NzTexture; m_workTextures[i]->SetPersistent(false); } for (unsigned int i = 0; i < 3; ++i) { m_GBuffer[i] = new NzTexture; m_GBuffer[i]->SetPersistent(false); } try { NzErrorFlags errFlags(nzErrorFlag_ThrowException); ResetPass(nzRenderPassType_Final, 0); ResetPass(nzRenderPassType_Geometry, 0); ResetPass(nzRenderPassType_Lighting, 0); } catch (const std::exception& e) { NazaraUnused(e); NzErrorFlags errFlags(nzErrorFlag_ThrowExceptionDisabled); NazaraError("Failed to add geometry and/or phong lighting pass"); throw; } try { NzErrorFlags errFlags(nzErrorFlag_ThrowException); ResetPass(nzRenderPassType_AA, 0); } catch (const std::exception& e) { NazaraUnused(e); NazaraWarning("Failed to add FXAA pass"); } try { NzErrorFlags errFlags(nzErrorFlag_ThrowException); ResetPass(nzRenderPassType_Bloom, 0); } catch (const std::exception& e) { NazaraUnused(e); NazaraWarning("Failed to add bloom pass"); } try { NzErrorFlags errFlags(nzErrorFlag_ThrowException); NzDeferredRenderPass* dofPass = ResetPass(nzRenderPassType_DOF, 0); dofPass->Enable(false); } catch (const std::exception& e) { NazaraUnused(e); NazaraWarning("Failed to add DOF pass"); } try { NzErrorFlags errFlags(nzErrorFlag_ThrowException); NzDeferredRenderPass* fogPass = ResetPass(nzRenderPassType_Fog, 0); fogPass->Enable(false); } catch (const std::exception& e) { NazaraUnused(e); NazaraWarning("Failed to add fog pass"); } try { NzErrorFlags errFlags(nzErrorFlag_ThrowException); ResetPass(nzRenderPassType_Forward, 0); } catch (const std::exception& e) { NazaraUnused(e); NazaraWarning("Failed to add forward pass"); } try { NzErrorFlags errFlags(nzErrorFlag_ThrowException); ResetPass(nzRenderPassType_SSAO, 0); } catch (const std::exception& e) { NazaraUnused(e); NazaraWarning("Failed to add SSAO pass"); } }
DeferredRenderTechnique::DeferredRenderTechnique() : m_renderQueue(static_cast<ForwardRenderQueue*>(m_forwardTechnique.GetRenderQueue())), m_GBufferSize(0U) { m_depthStencilTexture = Texture::New(); for (unsigned int i = 0; i < 2; ++i) m_workTextures[i] = Texture::New(); for (unsigned int i = 0; i < 3; ++i) m_GBuffer[i] = Texture::New(); try { ErrorFlags errFlags(ErrorFlag_ThrowException); ResetPass(RenderPassType_Final, 0); ResetPass(RenderPassType_Geometry, 0); ResetPass(RenderPassType_Lighting, 0); } catch (const std::exception& e) { ErrorFlags errFlags(ErrorFlag_ThrowExceptionDisabled); NazaraError("Failed to add geometry and/or phong lighting pass: "******"Failed to add FXAA pass: "******"Failed to add bloom pass: "******"Failed to add DOF pass: "******"Failed to add fog pass: "******"Failed to add forward pass: "******"Failed to add SSAO pass: " + String(e.what())); } }