Skip to content

Commit 8f049ce

Browse files
authored
port ogre2 depth camera fix (#138)
Signed-off-by: Ian Chen <[email protected]>
1 parent 7f0235a commit 8f049ce

File tree

1 file changed

+29
-6
lines changed

1 file changed

+29
-6
lines changed

ogre2/src/Ogre2DepthCamera.cc

+29-6
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,11 @@ void Ogre2DepthGaussianNoisePass::CreateRenderPass()
207207
nodeDef->setNumTargetPass(1);
208208
Ogre::CompositorTargetDef *inputTargetDef =
209209
nodeDef->addTargetPass("rt_output");
210-
inputTargetDef->setNumPasses(1);
210+
inputTargetDef->setNumPasses(2);
211211
{
212+
// clear pass
213+
inputTargetDef->addPass(Ogre::PASS_CLEAR);
214+
212215
// quad pass
213216
Ogre::CompositorPassQuadDef *passQuad =
214217
static_cast<Ogre::CompositorPassQuadDef *>(
@@ -467,11 +470,14 @@ void Ogre2DepthCamera::CreateDepthTexture()
467470
// }
468471
// target rt0
469472
// {
473+
// pass clear
474+
// {
475+
// }
470476
// pass render_quad
471477
// {
472478
// material DepthCamera // Use copy instead of original
473-
// input 0 depthTexture0
474-
// input 1 colorTexture0
479+
// input 0 depthTexture
480+
// input 1 colorTexture
475481
// quad_normals camera_far_corners_view_space
476482
// }
477483
// }
@@ -586,8 +592,15 @@ void Ogre2DepthCamera::CreateDepthTexture()
586592
// rt0 target - converts depth to xyz
587593
Ogre::CompositorTargetDef *inTargetDef =
588594
baseNodeDef->addTargetPass("rt0");
589-
inTargetDef->setNumPasses(1);
595+
inTargetDef->setNumPasses(2);
590596
{
597+
// clear pass
598+
Ogre::CompositorPassClearDef *passClear =
599+
static_cast<Ogre::CompositorPassClearDef *>(
600+
inTargetDef->addPass(Ogre::PASS_CLEAR));
601+
passClear->mColourValue = Ogre::ColourValue(this->FarClipPlane(),
602+
this->FarClipPlane(), this->FarClipPlane());
603+
591604
// quad pass
592605
Ogre::CompositorPassQuadDef *passQuad =
593606
static_cast<Ogre::CompositorPassQuadDef *>(
@@ -613,6 +626,9 @@ void Ogre2DepthCamera::CreateDepthTexture()
613626
//
614627
// target rt_output
615628
// {
629+
// pass clear
630+
// {
631+
// }
616632
// pass render_quad
617633
// {
618634
// material DepthCameraFinal // Use copy instead of original
@@ -636,8 +652,15 @@ void Ogre2DepthCamera::CreateDepthTexture()
636652
// rt_output target - converts depth to xyz
637653
Ogre::CompositorTargetDef *outputTargetDef =
638654
finalNodeDef->addTargetPass("rt_output");
639-
outputTargetDef->setNumPasses(1);
655+
outputTargetDef->setNumPasses(2);
640656
{
657+
// clear pass
658+
Ogre::CompositorPassClearDef *passClear =
659+
static_cast<Ogre::CompositorPassClearDef *>(
660+
outputTargetDef->addPass(Ogre::PASS_CLEAR));
661+
passClear->mColourValue = Ogre::ColourValue(this->FarClipPlane(),
662+
this->FarClipPlane(), this->FarClipPlane());
663+
641664
// quad pass
642665
Ogre::CompositorPassQuadDef *passQuad =
643666
static_cast<Ogre::CompositorPassQuadDef *>(
@@ -739,7 +762,7 @@ void Ogre2DepthCamera::PostRender()
739762

740763
// blit data from gpu to cpu
741764
auto rt = this->dataPtr->ogreDepthTexture->getBuffer()->getRenderTarget();
742-
rt->copyContentsToMemory(dstBox, Ogre::RenderTarget::FB_FRONT);
765+
rt->copyContentsToMemory(dstBox, Ogre::RenderTarget::FB_AUTO);
743766

744767
if (!this->dataPtr->depthImage)
745768
{

0 commit comments

Comments
 (0)