Le flou gaussien est généralement séparé en deux passes, verticales et horizontales en raison d'un gain de performance énorme. Si une partie de la toile n'est pas floue, cette méthode ne peut pas être appliquée directement. Ainsi, une méthode simple consiste à créer un shader de flou à passage unique auquel vous ajoutez un emplacement du focus et une taille. En fonction de la position actuelle du fragment, vous pouvez ajuster la quantité de flou à appliquer à ce pixel. Il s'agit simplement de modifier une matrice standard en utilisant progressivement moins d'échantillons autour du fragment et de réduire l'effet des pixels lointains (en ajoutant la différence au pixel central) lorsque le focus est proche.
Une solution plus intelligente consiste à mélanger la version floue de l'image avec la version originale. Ce résultat n'est peut-être pas exactement le même mais il est extrêmement proche. Il y a plusieurs façons de le faire et, si possible, il serait préférable de brouiller toute la vidéo et de préserver l'original. Vous utiliserez alors 2 textures et les fondrez ensemble sur chaque image pour obtenir l'effet désiré. MAIS si vous êtes génial, vous générez une seule vidéo qui aura à la fois la version originale et floue (par exemple original sur la moitié supérieure et floue sur le fond) qui va gagner en performance et permettra d'éliminer tous les problèmes possibles en cherchant à travers 2 différents vidéos.
Donc, pour mélanger les 2 ensemble en utilisant le focus, vous aurez à peu près la même procédure de shader mais plus facile. Utilisez un point de mise au point dans un fragment shader et une taille de focus. Calculez ensuite la distance entre le fragment actuel et le point de mise au point pour obtenir l'échelle de l'image floue qui doit être appliquée. Avec l'échelle, vous pouvez utiliser mix
pour combiner efficacement les deux.
Cette procédure est particulièrement utile si l'utilisateur peut modifier la mise au point car aucun calcul supplémentaire ne doit être effectué. Toujours flouter la vidéo entière pourrait prendre beaucoup de temps.
Tout ce qui se trouve entre les deux procédures peut être effectué. Par exemple, vous pouvez utiliser un FBO avec une texture attachée pour créer une version floue de l'échantillon en temps réel, puis utiliser mix
avec l'original et la texture FBO.
Il y a plusieurs façons de le faire mais quelle est la meilleure dépend de la situation ... La vidéo est-elle fixée au lieu de prendre des images de la caméra? L'emplacement du flou est-il fixe ou mobile en temps réel? Quel algorithme de flou essayez-vous de mettre en œuvre et à quel point le flou doit-il être précis? –
La vidéo est fixe; Le flou est animé mais pas nécessairement en temps réel, l'animation peut être précalculée/appliquée avant visualisation/toujours la même chose; Comme indiqué ci-dessus, je voudrais un flou «gaussien gaussien» où l'intensité du flou diminue à mesure que vous vous éloignez de son centre. Des idées sur où je pourrais commencer avec ceci? – raphaelrk