Quel est le moyen le plus efficace d'implémenter un filtre de convolution dans un pixel shader?

La mise en œuvre de convolution dans un pixel shader est un peu plus onéreuse que le nombre très élevé de récupérations de texture.

Une façon directe de la mise en œuvre d'un filtre de convolution est de faire N x N recherches par fragment à l'aide de deux cycles par fragment. Un simple calcul indique qu'une image de 1024x1024 floue avec un 4x4 noyau Gaussien aurait besoin 1024 x 1024 x 4 x 4 = 16M recherches.

Que peut-on faire à ce sujet?

  1. Peut-on utiliser certains d'optimisation qui aurait besoin de moins de recherches? Je ne suis pas intéressé dans le noyau optimisations spécifiques comme ceux de la Gaussienne (ou sont-ils noyau spécifique?)
  2. Peut-on au moins faire ces recherches plus rapidement en quelque sorte l'exploitation de la localité de pixels personne pour travailler avec?

Merci!

source d'informationauteur Albus Dumbledore