[RESOLU] Accès au Rendering Mode d'un Material par script

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

[RESOLU] Accès au Rendering Mode d'un Material par script

Message par jmhoubre » 13 Fév 2020 22:56

Bonsoir,

je bloque sur un truc qui doit être enfantin, et pour lequel je n'ai trouvé qu'une réponse bien compliquée ici.

J'ai un bête GameObject avec un material standard et shader standard. Je souhaite passer son Rendering Mode de Opaque à Transparent via un script, afin de le faire progressivement disparaître avant de le détruire.

Merci d'avance.

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: [RESOLU] Accès au Rendering Mode d'un Material par script

Message par jmhoubre » 13 Fév 2020 23:24

J'ai fini par trouver un truc que j'ai adapté un peu, je l'ai mis dans une fonction que j'applique à mes materials :

Code : Tout sélectionner

private void MaterialToTransparent(Material _material) {
        _material.SetFloat ("_Mode" , 2);
        _material.SetInt ("_SrcBlend" , (int) UnityEngine.Rendering.BlendMode.SrcAlpha);
        _material.SetInt ("_DstBlend" , (int) UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
        _material.SetInt ("_ZWrite" , 0);
        _material.DisableKeyword ("_ALPHATEST_ON");
        _material.DisableKeyword ("_ALPHABLEND_ON");
        _material.EnableKeyword ("_ALPHAPREMULTIPLY_ON");
        _material.renderQueue = 3000;
    }
Je ne comprend pas trop certaines lignes (pourquoi renderQueue = 3000 et pas une autre valeur), mais cela fonctionne.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [RESOLU] Accès au Rendering Mode d'un Material par script

Message par boubouk50 » 14 Fév 2020 11:20

Le renderQueue définit l'ordre de rendu des éléments: BackGround (1000), Opaque (2000), AlphaTest (2450), Blending (3000) et Overlay (4000 de mémoire). Tu peux donc situer ton shader dans ces plages de rendus pour le tri.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation


Répondre

Revenir vers « Scripting »