mask 3D sur autre matériau

Questions à propos du scripting Shader.
Avatar de l’utilisateur
Kaloverian
Messages : 346
Inscription : 10 Août 2016 03:03

mask 3D sur autre matériau

Message par Kaloverian » 20 Avr 2024 20:55

bonjour,

J'ai réussi un mask 3D avec 2 objets:
objet 1 : objet à cacher
objet 2: objet mask = objet cachant

Voici le shader dont le matériau est mis sur objet 1

Code : Tout sélectionner

Shader "Custom/MaskShader"
{
    SubShader
    {
        Tags {"Queue" = "Transparent" }

        Stencil
        {
            Ref 1
            Comp always
            Pass replace
        }

        Pass
        {
            ColorMask 0
        }
    }
}

1

Voici le shader dont le matériau est mis sur objet 2:

Code : Tout sélectionner

Shader "Custom/MaskedObjectShader"
{
    SubShader
    {
        Tags {"Queue" = "Transparent" }

        Stencil
        {
            Ref 1
            Comp notequal
            Pass replace
        }

        Pass
        {
            ColorMask RGB
        }
    }
}

Le problème maintenant vient du fait que si je mets un autre materiau crée par un shader graph(cf fichier joint ) sur objet 1,il ne sera plus caché par objet 2
Comment peut-on remédier à cela?

lien du shadergraph:
https://drive.google.com/file/d/1f1gvDf ... sp=sharing

merci de votre aide

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

Re: mask 3D sur autre matériau

Message par boubouk50 » 23 Avr 2024 08:50

Doc Stencil: https://docs.unity3d.com/Manual/SL-Stencil.html

Il faut que le nouveau shader ait la même configuration de Stencil que celui en cours, à savoir :

Code : Tout sélectionner

 Stencil
{
   Ref 1
   Comp always
   Pass replace
}
Apparemment, cette feature n'est encore réellement intégrée au shader graph. Elle pourrait être ajoutée via une customPass
https://forum.unity.com/threads/a-way-t ... ph.540773/
"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

Avatar de l’utilisateur
Kaloverian
Messages : 346
Inscription : 10 Août 2016 03:03

Re: mask 3D sur autre matériau

Message par Kaloverian » 23 Avr 2024 14:58

Dois-je au préalable convertir mon shadergraph en shader codé?

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

Re: mask 3D sur autre matériau

Message par boubouk50 » 23 Avr 2024 15:24

Alors là... Google est ton ami, mais la solution dépend du RenderPipeline :
Ici pour URP :
https://learn.unity.com/tutorial/custom ... s-with-urp
Le UnityLearn ne traite pas directement de ça, mais on peut voir que c'est possible et il y a une case Stencil.
Si le shaderGraph peut se convertir facilement, sinon c'est une autre possibilité.
"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 « les Shaders »