Comment puis-je créer un shader de floraison efficace avec GLSL?

12

J'ai cherché sur le net des ressources liées au rendu d'un effet de floraison à l'aide de GLSL, mais je n'ai rien trouvé. Bien que le tutoriel sur le site Web de Philip Rideout soit bon, il fonctionne très mal sur mon GPU Nvidia.

Quelqu'un peut-il me guider sur la façon d'aborder ce problème et de créer une mise en œuvre assez efficace d'un effet de floraison?

snape
la source
1
Ardor3d, un moteur java 3d open source, a un shader de floraison implémenté. Comme il est open source, vous pouvez facilement le vérifier (www.ardor3d.com). Mais en gros, c'est juste copier le framebuffer, downscale, blur, additive blending ..
Pjotterke
1
Quel type de GPU possédez-vous?
1
Très important de nous faire savoir quelle carte GPU / vidéo vous avez. +! @JoshPetrie
Patrick Hughes
J'ai une carte graphique Nvidia GeForce GT 230M sur mon ordinateur portable
Snape
6
@snape: Quelle est la taille d'un noyau gaussien et quelle est la résolution de votre plus grand FBO flou? La façon la plus simple d'améliorer les performances est d'utiliser un noyau plus petit et un FBO plus petit. (Dans mes affaires, je fais mon flou à l'intérieur d'une résolution FBO de 512x512, quelle que soit la résolution d'affichage)
Trevor Powell

Réponses:

3

Comme Trevor l'a mentionné dans son commentaire, votre seule option pourrait être de réduire la taille de votre noyau ou d'effectuer un sous-échantillonnage supplémentaire.

Mais avez-vous lu attentivement le tutoriel auquel vous avez lié? Il existe une astuce sur l'exploitation du filtrage matériel, que l'auteur appelle la version "sournoise". C'est probablement la meilleure astuce que vous pouvez utiliser pour optimiser votre effet de floraison sans affecter sa qualité.

Laurent Couvidou
la source
Oui, j'ai lu attentivement le tutoriel. J'ai finalement amélioré ses performances en utilisant le rendu hors ligne et je n'avais pas non plus activé la prise en charge matérielle pour l'application graphique plus tôt.
snape
0

J'ai résolu un problème très similaire (flou, mais le filtre de floraison est flou) avec deux passes.

Dans la première passe, je floue dans la direction X et dans la deuxième passe, je floue dans la direction Y.

Je ne sais pas d'où j'ai cette astuce, mais cela réduit la complexité temporelle de n² à 2n.

Cela ne fonctionne que pour les noyaux qui n'ont aucune direction (vous ne pouvez donc pas optimiser un noyau bokeh de cette façon).

Quonux
la source