Page 1 sur 1

[Résolu]Multipass, blend mode et GrabPass

Publié : 07 Juil 2019 19:28
par MrBub
Bonjour à tous,
J'ai de nouveau un souci avec les shaders, et vu que c'est un peu le domaine qui m'est parfaitement inconnu et que je souhaite bourriner actuellement, ça risque d'être assez fréquent :p

Alors voila mon souci :
J'ai fait un shader, avec 2 pass:
le premier me fait une couleur en aplat
le second applique une texture, contenant de la transparence, que voici :
Image

Avant toute chose, je précise que je le fais en deux pass car le second est dans un fichier cginc que j'inclus ensuite dans différents shaders.

Avec un Blend SrcAlpha OneMinusSrcAlpha appliqué au pass contenant la texture, ça marche impec' :
Image

Mais avec un Blend One One, j'ai l'impression qu'il ne prend plus en compte la transparence de ma texture, il remplit tout en bleu :
Image

Du coup j'ai fait un grab pass, pour récupérer le résultat du premier pass, et modifié les couleurs pour faire mon propre mode de fusion additif, ça a marché :
Image

Bon, je me suis "amusé" à faire ça sur trois materiaux
Image

Mais 3 grab pass c'est gourmand, j'ai entendu parlé de la possibilité de n'avoir qu'un grab pass pour tous en lui ajoutant un p'tit nom, genre:

Code : Tout sélectionner

GrabPass{"MonGrabPass"}
Et ça me donne :
Image

Autant dire que ça ne marche pas :\

Du coup j'ai deux questions :
Comment faire pour avoir un unique grab pass et gagner en perf?
Y avait-il un moyen plus optimisé d'obtenir un tel résultat que par grab pass ? (sachant, pour rappel, que je dois garder 2 pass)

Merci beaucoup d'avance pour vos conseils, je suis en train de manipuler pas mal de notions nouvelles pour moi sur cette expérimentation :cote:

Re: Multipass, blend mode et GrabPass

Publié : 07 Juil 2019 21:52
par Alesk
Pourquoi utilises-tu Blend One One ?

Re: Multipass, blend mode et GrabPass

Publié : 07 Juil 2019 22:25
par MrBub
Ah, merci de m'avoir réorienté vers le vrai problème, je partais dans trop compliqué

Je me suis laissé tromper par le manuel
Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency
Blend One OneMinusSrcAlpha // Premultiplied transparency
Blend One One // Additive
Blend OneMinusDstColor One // Soft Additive
Blend DstColor Zero // Multiplicative
Blend DstColor SrcColor // 2x Multiplicative
J'ai l'habitude d'un photoshop qui prend en compte l'opacité de mon calque quand je le met en Additive. :pascontent:

Du coup en regardant plus en détail les facteurs je me suis rendu compte qu'il fallait partir sur un blend personnel :

Code : Tout sélectionner

Blend SrcAlpha One
Et pour cette histoire de grab pass, j'ai trouvé ma solution également (qui me servira pour d'autres shaders sans doute :-D ). Je marque comme résolu, merci encore !

Re: [Résolu]Multipass, blend mode et GrabPass

Publié : 08 Juil 2019 08:48
par Alesk
Cool :)

Effectivement, si je ne dis pas de bêtise, le mode "Additive" ne tient pas compte de la couche alpha, c'est pour ça que tu avais un bleu uni.