Alors… qu’est-ce qui se passe avec ces pauvres ports PC ? – Programmation graphique et GPU

whitwhoa a dit :
Cependant, et c’est probablement de la naïveté de ma part, mais pourquoi ne pré-chargent-ils pas tous les shaders avant que la scène ne commence ?

Beaucoup de jeux le font. Au premier lancement, ils précompilent tous les shaders, ils sont donc mis en cache et prêts une fois nécessaires.
Cependant, cela peut prendre 10 minutes facilement. Je pense souvent que le jeu se bloque et le termine. Ensuite, au deuxième lancement, ils démarrent rapidement, mais il reste probablement du travail de compilation et cela se produit plus tard pendant le jeu.
Je ne sais même pas si cela est lié à la compilation des shaders. Nous devrions probablement donner des commentaires et une barre de progression pour empêcher les utilisateurs de l’interrompre.

Pour mon propre projet, la compilation des shaders a même pris plus de 30 minutes sur NVidia, ce qui m’a empêché de trouver les variantes d’algorithme les plus performantes sur le GPU spécifique que je voulais optimiser. Il a simplement fallu trop de temps pour tester toutes les combinaisons. (C’est parce que j’utilise un shader par niveau d’arborescence, donc le niveau peut être une constante de temps de compilation. Ainsi, de nombreux shaders génèrent 20 permutations autrement égales. J’ai besoin d’essayer des alternatives pour empêcher ces permutations…)
Fait intéressant, sur AMD, je n’ai eu aucun problème – c’était une question de secondes pour recompiler.
Cependant, c’était il y a de nombreuses années, en utilisant Vulkan. Je ne sais pas ce qui a changé depuis, comment cela dépend de l’API, des fournisseurs, etc.
(Je n’ai pas non plus de problèmes avec Elden Ring et je me demande pourquoi les gens se plaignent. J’ai joué 1 à 2 heures, je suis sorti pour ouvrir le monde, mais aucun problème pour le moment.)

Voici un fil de discussion complet sur le problème, que je n’ai pas suivi : https://forum.beyond3d.com/threads/shader-complilation-on-pc-about-to-become-a-bigger-bottleneck.61929 /

Personnellement, je pense que nous devrions moins traiter les shaders comme des assets, permettant aux artistes d’en créer des milliers. Je ne sais pas si nous avons vraiment besoin d’autant de variantes.
D’un autre côté, les permutations concernent généralement l’optimisation, donc ce n’est pas facile.
De plus, avec les mondes ouverts en streaming, il n’y a plus de solution simple pour le faire en charge de niveau :/

Commentaires