Traces sur un rendu de Shader Graph

Questions à propos du scripting Shader.
Avatar de l’utilisateur
jmhoubre
Messages : 461
Inscription : 05 Oct 2019 22:05

Traces sur un rendu de Shader Graph

Message par jmhoubre » 05 Juin 2021 21:45

Bonjour,

j'ai souhaité réaliser une shader avec Shader Graph, pour aller un peu plus loin. Ce shader avait pour but d'animer des objets de type étoiles à récupérer, potions, etc : petites oscillations de bas en haut, et une rotation sur l'axe Y. J'ai pris un cube pour tester le shader.

Question 1 (en fait, c'est un pack de trois...) : juste pour confirmer ce que j'ai lu, grâce au shader, les opérations d'oscillations et de rotation vont être effectuées par le GPU ? Par rapport à des centaines d'objets possédant un script faisant les mêmes opérations (oscillation + rotation), je devrais obtenir une amélioration (significative ?) des performances ?

Après quelques (ha ha ha) tâtonnements, le shader fonctionne. Mais j'ai un effet graphique désastreux sur mon cube :
Image

J'ai d'abord pensé au shader, mais je n'ai rien trouvé. En revanche, l'effet disparait quand :
- sur la Directional Light, on passe Shadow Type de Soft Shadows à No Shadows
- idem sur le Cube, si on passe Lightning/Cast Shadows de On à Off
De plus, l'effet est plus ou moins marqué lorsqu'on change la valeur du Bias/Depth, mais même à 0, il subsiste des traces. Idem avec Bias/Normal, ou des combinaisons de Depth et Normal. Pas d'influence visible de Near Plane.

J'ai créé un nouveau projet, et j'ai eu ... un autre problème, que j'ai résolu. J'ai fait un second sujet, car ce problème peut arriver à quelqu'un qui fait un projet 3D, et qui le passe en URP à la main.

Joie de courte durée, car le cube avec mon shader a toujours son souci. J'ai plusieurs solutions, la moins "contaminante" est de mettre sur le cube Cast Shadows à Off, mais j'aimerais bien comprendre ce qui ne va pas.
Question 4 : à priori, mon Shader Graph a besoin d'un truc en plus.
Voici le graphe :
Image
et le sous-graphe :
Image

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5599
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Traces sur un rendu de Shader Graph

Message par boubouk50 » 07 Juin 2021 08:13

Salut,

pour moi c'est plutôt du ressort des Quality Settings et de la configuration des ombres qu'autre chose.
Si tu places un cube avec un shader lambda à côté, tu as une meilleure ombre?
"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
jmhoubre
Messages : 461
Inscription : 05 Oct 2019 22:05

Re: Traces sur un rendu de Shader Graph

Message par jmhoubre » 07 Juin 2021 11:42

Bonjour,

merci de prendre le temps de regarder ce souci. Voici une petite vidéo pour montrer un shader lambda, et illustrer comment j'ai pu minimiser les traces en jouant sur différents paramètres.
Souci de traces sur un shader réalisé avec Shader Graph

Je ne sais pas si c'est lié et important, mais les traces ne sont visibles que sur 2 faces.

Avant de perdre trop de temps, j'aimerais que tu confirmes si l'utilisation d'un shader pour bouger mes objets ramassables passe par le GPU et soulage le processeur. Le gain de performances vaut-il le coût ? (je peux avoir jusqu'à 150 objets avec ce shader à l'écran).

Les statistiques disponibles dans la fenêtre Game (onglet Stats) sont-elles fiables ?

Encore merci.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5599
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Traces sur un rendu de Shader Graph

Message par boubouk50 » 08 Juin 2021 08:18

Salut,

Normalement, si ça passe par le GPU c'est plus rapide que le CPU, par contre, je ne peux te dire le gain.
Par l'animation traditionnelle, le batch va regrouper les animations et meshs pour limiter l'utilisation du CPU, c'est optimisé.
Par l'animation par shader, l'instancing va faire de même pour le GPU.
Sur un PC patate, peut être que ça se ressentira, sur un PC actuel, ce sera moins évident, surtout avec le V-Sync qui va limiter les FPS.
Souvent la question se pose pour les animations avec squelette. Faire du GPU instancing des animations est un réel gain comparé au SkinRenderer d'Unity. Mais là, on parle de bones, de skinning, de rig, bref de choses très lourdes, pour la gestion de foules ou d'armées, pas une pièce qui monte et qui descend.

Les stats d'Unity, je m'en méfie, surtout le FPS.

Concernant la vidéo, ben je n'ai pas trop d'explication en fait. Ce genre de problème, je l'ai vu avec une mauvaise résolution de la shadow maps et un bias trop élevé, donc j'étais parti sur cette explication, mais si le cube standard n'a pas ce souci, ce ne doit pas être ça. A moins qu'il ne génère pas d'ombre, du coup, la comparaison est biaisée.
"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
jmhoubre
Messages : 461
Inscription : 05 Oct 2019 22:05

Re: Traces sur un rendu de Shader Graph

Message par jmhoubre » 08 Juin 2021 10:26

Merci

Répondre

Revenir vers « les Shaders »