Priority: P2: Important
Resolution: Out of scope
Affects Version/s: 5.12.10
Fix Version/s: None
Component/s: Quick: SceneGraph
Environment:Qualcomm S820, AGL linux.
Our application handles QQuickView::afterRendering signal to add post processing for frames .
QML Items having opacity=1.0 aren't displayed if the post processing is enabled.
QML Items which have opacity<1.0 (for e.g 0.99) are drawn successfully.
Post processor creates a new FBO with color and depth components attached.
We are providing this FBO to QML using QQuickView::setRenderTarget.
Our expectations is “QML will render everything in this buffer and will able to apply our shader to this color texture”.
It works for simple scene graphs and for the Qt 3D Studio presentations but doesn’t work for the complex scene in QML.
We assume something may happen for loader component which we actively using.
For example opaque parts was drawn in separate step and QML render draws it in some cases outside of FBO bind into color buffer glBindFramebuffer(GL_FRAMEBUFFER, 0)
After this renderTarget FBO binds and transparent parts comes into it.
In regular case transparent parts will be blended with opaque data from the previous step.
(FBO bind) > (Opaque step) -> (Transparent step) -> (PostProcessor)>(swapBuffers)
Actual for complex cases
(Opaque step) > (FBO bind) -> (Transparent step) -> (PostProcessor)>(swapBuffers)