Page 1 sur 1

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

Publié : 13 Fév 2020 22:56
par jmhoubre
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.

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

Publié : 13 Fév 2020 23:24
par jmhoubre
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.

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

Publié : 14 Fév 2020 11:20
par boubouk50
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.

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

Publié : 14 Fév 2020 23:19
par jmhoubre
Merci !