This topic contains 1 reply, has 2 voices, and was last updated by  martontamas 10 months, 3 weeks ago.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
  • #54958



    I am targetting a device with a PowerVR GPU. I know these models are known for fast MSAA.
    I need to do post processing on a scene and was wondering what would be the most efficient way to do it?
    I have access to OpenGL ES 3.0.

    1) FBO + Renderbuffer MSAA -> Blit -> FBO2 Non MSAA -> Fullscreen quad -> Backbuffer
    2) FBO + Texture MSAA -> Blit -> FBO2 Non MSAA -> Fullscreen Quad -> Backbuffer
    3 FBO + Texture MSAA -> Fragment shader with texelFetch Fullscreen quad -> Backbuffer

    Whenever I use 3 the result is always worse than the blit result. I just average the 4 samples manually in a shader.
    Would very much appreciate a hint on this because I want to utilize the hardware in the best way with MSAA instead of using something like FXAA.



    Hi Dave,

    Can you elaborate on exactly what kind of post-processing would you like to do, and on what kind of input data?

    Generally (working on Low Dynamic Range, LDR data) you would resolve the MSAA render target to a non-MSAA one, and do post-processing on that.
    However with High Dynamic Range (HDR) data you can’t do that, and you have to have each sample individually tonemapped before resolving.
    Mobile (tile-based) hardware is generally good at the former one, since they use their Pixel-Local-Storage (PLS) to do essentially free MSAA resolve on-chip. However as soon as you need to do a scatter/gather kernel on your data before resolving (for example a depth of field effect), you can’t use PLS (effectively) anymore and writing data out to the main memory will always cost you bandwith. This means that you can’t have a cheap (on-chip) resolve in the latter case.


Viewing 2 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic.