[Résolu]Multipass, blend mode et GrabPass

Questions à propos du scripting Shader.
Avatar de l’utilisateur
MrBub
Messages : 8
Inscription : 04 Juil 2019 18:56

[Résolu]Multipass, blend mode et GrabPass

Message par MrBub » 07 Juil 2019 19:28

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:
Dernière édition par MrBub le 07 Juil 2019 22:26, édité 1 fois.

Avatar de l’utilisateur
Alesk
Messages : 2083
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Multipass, blend mode et GrabPass

Message par Alesk » 07 Juil 2019 21:52

Pourquoi utilises-tu Blend One One ?

Avatar de l’utilisateur
MrBub
Messages : 8
Inscription : 04 Juil 2019 18:56

Re: Multipass, blend mode et GrabPass

Message par MrBub » 07 Juil 2019 22:25

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 !

Avatar de l’utilisateur
Alesk
Messages : 2083
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

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

Message par Alesk » 08 Juil 2019 08:48

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.

Répondre

Revenir vers « les Shaders »