I have defined an MUserRenderOperation in order to render to a depth map in Viewport 2.0. I created a description for the render target which is
renderTargetDesc = new MHWRender::MRenderTargetDescription(MString("DepthMap"),
2048, // width
2048, // height
1,
MHWRender::MRasterFormat::kD24X8, // raster format - 24 bit depth
5, // number of layers
false // is cubemap
);
I then acquire the render target using the following code:
MHWRender::MRenderer *theRenderer = MHWRender::MRenderer::theRenderer();
const MHWRender::MRenderTargetManager* targetManager = theRenderer->getRenderTargetManager();
renderTarget[0] = targetManager->acquireRenderTarget(*renderTargetDesc);
Once acquired I set it each frame in my implementation of MHWRender::MRenderTarget** ShadowRenderer::targetOverrideList(unsigned int &listSize).
When I set the render target the MUserRenderOperation.execute() is never called. Strangly, if I return NULL from targetOverrideList() instead of setting a render target execute() is called and I can perform rendering to the frame buffer.
Can anyone explain how to set a custom render target in a user operation?
I attached the full class source code.