Oui je connais de nom, le HLSL avait été évoqué lors de ma lecture d'un tuto sur OpenGL et le GLSL (il faudrait d'ailleurs que je m'y remette un jour, car j'ai trouvé le sujet super intéressant !). En ce qui concerne les performances, il existe des objets OpenGL comme les Vertex Buffer Objects (VBO), Vertex Buffer Arrays (VBA) et Frame Buffer Objects (FBO). Les deux premiers permettent respectivement de stocker des données et appels de fonctions directement dans la carte graphique, ce qui permet de limiter les transferts "coûteux" entre le programme (RAM, voire même des données HDD, etc) et la carte graphique. Tandis que le FBO offre une efficace possibilité de rendus off-screen, y compris dans des textures (qui pourront être affichées dynamiquement dans une scène, comme à l'intérieur d'une TV).Bubu a écrit : ↑samedi 16 novembre 2019 à 9:27 Je ne sais pas si vous connaissez le HLSL. High Level Shader Language. Ils sont marrants. C'est le langage de programmation des GPUs pour DirectX (Microsoft).
En fait c'est pas le language qui est haut niveau, ce sont les GPUs.
C'est assez dingue ce qu'ils sont capables de calculer. (Une simple instruction pour calculer un produit scalaire, ou un produit vectoriel, une seule instruction pour multiplier un vecteur par une matrice. Et maintenant, ils ont des cœurs dédiés au lancer de rayon. C'est complètement fou)
EDIT : Le HLSL (DirectX) et le GLSL (OpenGL) sont très proches et très simples d'accès. Ils utilisent la syntaxe du C.
La seule chose en plus, c'est qu'ils ont des types en plus, pour représenter les vecteurs et les matrices. Et des instructions qui permettent de les manipuler.
Je préfère le GLSL perso, car le vertex shader et le pixel shader sont indépendants. Deux programmes indépendants. 2 fichiers textes indépendants. Le pixel shader est appelé fragment shader sous OpenGL, et c'est plus juste car on ne sait pas quand on calcule le fragment s'il sera visible ou pas. Et ensuite les vertex shaders il n'en faut pas beaucoup. (Skybox, objets statiques, et skin meshes en gros). Alors que les fragments shaders il peut y en avoir beaucoup. Plus d'une dizaine minimum.
Sous OpenGL, on compile les 2 programmes (Vertex et Fragment shaders) en temps réel et on les relie. (link). En temps réel. Et cela constitue après un seul programme que le GPU exécute.
Quelle que soit la plateforme, le vertex shader, et le pixel shader ne se suivent pas dans le pipeline graphique.
Il y a plein d'étapes intermédiaires.
Le vertex shader est là pour les transformations matricielles essentiellement. µPour placer les sommets des objets dans la scène.
Ensuite il peut y avoir le geometry shader, qui crée à la volée de la géométrie nouvelle.
Après il peut y avoir le shader de tesselation en plus. Je n'ai jamais utilisé.
Le plus important c'est l'unité de rastérisation. Elle transforme les sommets calculés par le vertex shader en surface sur l'écran.
Et la projection est déjà appliquée à cet étage du pipeline.
Pour simplifier : vertex shader -> rasterisation -> pixel shader.
L'unité de rastérisation rempli les triangles en fournissant les coefficients d'interpolations, via coordonnées barycentriques.
Le problème c'est que cela ne marche pas pour remplir les textures, il faut en plus prendre en compte la projection.
Plus un point est profond, et plus il est petit.
Mais pas de pb, les GPUs gèrent cela automatiquement depuis leur création.
D'ailleurs, en intelligence artificielle certains chercheurs cherchent également à réduire le "découplage" entre traitement d'informations et stockage en mémoire en utilisant de nouvelles structures moins "figées" et inspirées du fonctionnement de notre cerveau :
"Cette nouvelle capacité d’apprentissage va accélérer considérablement l’intelligence artificielle, estime Damien Ernst. Les ordinateurs actuels, même en deep learning, traitent les informations d’une part, et les stockent en mémoire d’autre part. Ce sont deux opérations distinctes. Notre cerveau effectue les deux en même temps en stockant les souvenirs dans les synapses. Avec ce nouveau modèle, les machines pourront aussi le faire." Mais bon, pas de chance Tertio, pour être pleinement efficaces, ces synapses artificielles doivent encore fonctionner à des températures proches du zéro absolu… Difficile pour une unité portable. "Brrr… Je suis probablement trop frileuse", grelotte la voix.
Source : https://www.lecho.be/culture/general/de ... 92888.html