devmiyax / yabause

Yabause is a Sega Saturn emulator and took over as Yaba Sanshiro
http://www.uoyabause.org
GNU General Public License v2.0
207 stars 35 forks source link

Use EXT_shader_framebuffer_fetch for programmable alpha blending #6

Open devmiyax opened 9 years ago

devmiyax commented 9 years ago

Currently it's using a texture attached by target FBO for programmable alpha blending. it doesn't work at Adreno 320.

When a target device can use EXT_shader_framebuffer_fetch, it should be used.

devmiyax commented 9 years ago

https://developer.apple.com/library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/BestPracticesforShaders/BestPracticesforShaders.html

ADormant commented 9 years ago

On desktop you can use a texture barrier like this: https://github.com/PCSX2/pcsx2/commit/c5341a27113b9627cb36bbe6fb9ff62579564055 https://github.com/PCSX2/pcsx2/pull/688/files https://github.com/PCSX2/pcsx2/pull/672/files https://github.com/PCSX2/pcsx2/commit/839003467e4193e66e74857816fa910a536f7088 https://www.opengl.org/registry/specs/ARB/texture_barrier.txt https://www.opengl.org/registry/specs/NV/texture_barrier.txt https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_framebuffer_fetch.txt https://www.khronos.org/registry/gles/extensions/ARM/ARM_shader_framebuffer_fetch.txt https://www.khronos.org/registry/gles/extensions/ARM/ARM_shader_framebuffer_fetch_depth_stencil.txt https://github.com/PCSX2/pcsx2/commit/5565544ba625bc11c474f7b8a07207631ae73682 https://github.com/PCSX2/pcsx2/pull/533/files https://github.com/PCSX2/pcsx2/commit/3d35e4f8ecef17fed9fa765006b7d74b442baca5 https://github.com/PCSX2/pcsx2/commit/b89f0cfa4cff5a94fa1bf583ec3d3fb3bfc5af4e https://github.com/PCSX2/pcsx2/commit/380e420cdde46dcc016ece0613645f728a9ff71c https://github.com/PCSX2/pcsx2/commit/11708486d8786a18b5c8986ced2790ac7d4cef3e https://github.com/PCSX2/pcsx2/pull/688/files https://github.com/PCSX2/pcsx2/pull/1115/files https://github.com/PCSX2/pcsx2/pull/533/files https://github.com/Yabause/yabause/commit/46bd80bd8f076f4e60cf86d18e8a5f259e962f07 https://github.com/Yabause/yabause/pull/22/files https://github.com/Yabause/yabause/commit/b307da5386fd73950f1acb5c5824fb8c89e49e00 https://github.com/Yabause/yabause/commit/c6ffab78439de82e80cf1298b0747440c8f2a364 https://github.com/Yabause/yabause/commit/f04d3c5fcdf038e70848e0bac6140911d977fab4 @devmiyax

ADormant commented 9 years ago

There is also this https://www.khronos.org/registry/gles/extensions/ARM/ARM_shader_framebuffer_fetch_depth_stencil.txt

devmiyax commented 9 years ago

https://www.opengl.org/registry/specs/ARB/texture_barrier.txt https://www.khronos.org/registry/gles/extensions/ARM/ARM_shader_framebuffer_fetch_depth_stencil.txt

Wow! That's exactly what I'm looking for! Thanx.

ADormant commented 9 years ago

@devmiyax https://developer.nvidia.com/content/maxwell-gm204-opengl-extensions http://blog.icare3d.org/2014/09/maxwell-gm204-opengl-extensions.html http://www.g-truc.net/doc/Candidate%20features%20for%20OpenGL%205.pdf http://www.openglsuperbible.com/2013/08/20/is-order-independent-transparency-really-necessary/ http://www.g-truc.net/doc/OpenGL%204.4%20review.pdf http://www.g-truc.net/doc/OpenGL%204%20Hardware%20Matrix.pdf https://forum.beyond3d.com/threads/many-draw-calls-with-pulling-bindless-multidrawindirect-etc.55220/ http://timothylottes.blogspot.com/2014/06/bindless-and-descriptors.html http://www.slideshare.net/Mark_Kilgard/opengl-45-update-for-nvidia-gpus

ADormant commented 9 years ago

http://timothylottes.blogspot.com/2014/09/maxwell-2-extensions.html https://twitter.com/michaldrobot/status/513100190228942848 http://on-demand.gputechconf.com/gtc/2014/presentations/S4385-order-independent-transparency-opengl.pdf http://gamedev.stackexchange.com/questions/43635/what-is-the-order-less-rendering-technique-that-allows-partial-transparency https://cesiumjs.org/2014/03/14/Weighted-Blended-Order-Independent-Transparency/ http://www.jzy3d.org/documentation/DualDepthPeeling.pdf http://mmmovania.blogspot.com/2010/11/order-independent-transparency-dual.html http://luebke.us/publications/StochasticTransparency_I3D2010.pdf http://blog.bonzaisoftware.com/stochastic-order-independent-transparency/ @devmiyax

ADormant commented 9 years ago

https://github.com/PCSX2/pcsx2/pull/688/files

ADormant commented 8 years ago

@devmiyax I believe this extension can be used for more advanced programmable blending.

https://www.opengl.org/registry/specs/ARB/fragment_shader_interlock.txt https://developer.nvidia.com/sites/default/files/akamai/opengl/specs/GL_NV_fragment_shader_interlock.txt https://www.opengl.org/registry/specs/INTEL/fragment_shader_ordering.txt https://www.opengl.org/registry/specs/ARB/shader_atomic_counters.txt https://www.khronos.org/registry/gles/extensions/OES/OES_shader_image_atomic.txt