This proposition for AMD engineers.
In modern games blur techniс very popular.
Today texture resolution 4096 × 3072 or more big. For example 16k x 16k. Such resolutions create a lot of problems for blurring. And greatly reduces FPS.
My vision GPU hardware blur its independent additional processors. Performs work only blurring texture. And very fast do this.
Benefit from hardware blur:
+ Driver not change shaders. We not write any shaders for GPU hardware blur processors. No any 2D samplers using.
+ GPU shaders conveyor not change and does not delay GPU shaders conveyor work.
+ One pass. On time read\write on video memory. Its more faster than usual method.
+ Very fast work because not burdened rules of GPU shaders conveyor.
+ Has direct access to back buffer (means buffer flip on screen or SwapChain) and direct access to depth buffer.
+ Because GPU render in depth buffer we have opportunity do depth of field blur !
+ Variance shadow map blur.
+ Very fast and comfortable for one call blur many textures and different blur methods.
Hardware blur not need to initialize. Do not load any shaders to GPU !
Using very simple. Call from CPU:
GPUBlur(t,float value blur percent from 0.001 to 1.0,style blur flag,image mask or NULL); //and we got blurred texture.
Or for many textures:
GPUBlurArray(pointer to array textures, number textures from array, pointer to array percent blur, pointer to array style flags blur, pointer to array images masks); //and we got blurred texture.
t (this texture in\out) its simple 2d texture in GPU memory. It can be back buffer or any other texture.
style blur flag its gaussin blur or depth of field blur or motion blur.
image mask its second texture(or depth) to mask zones for bluring. Pixel bright say how strong or less blur.
We simple do render and before do SwapBuffer to screen we can blurring back buffer simple call GPUBlur !
Moder APi-s not have direct access to back buffer. And usual we need copy back buffer to another texture or do render to texture, set blur shaders, do 2 passes for blur, set again shaders to render on 2d plane blurring image.
PBR shading very heavily loads texture blocks. Sometimes one model have 8 or more textures.
Independent GPU hardware blur can help to unload GPU shaders conveyor.
Because GPU render in depth buffer similarly way we can do Screen Space AO.
This is the way how to increase speed modern GPU.
For example in 3d scene we need do for per frame:
1) Blur depth of field
2) Motion blur helicopter propeller. He will take 40% of screen place.
3) In left-bottom corner(400x200) of the screen we need draw GUI. And this GUI should bllur back ground render.
4) Blur Variance Shadow Map
GPU hardware independent blur method, very handy for this task. In comparison with the usual way blur shader.