1 points par GN⁺ 2025-11-24 | 1 commentaires | Partager sur WhatsApp

1 commentaires

 
GN⁺ 2025-11-24
Commentaires sur Hacker News
  • L’article était intéressant, mais le diagramme présente à tort OpenGL / WebGL / WebGPU comme s’ils étaient construits sur Vulkan
    WebGL et WebGPU fonctionnent directement au-dessus de D3D et Metal, sans passer par Vulkan
    De plus, Vulkan n’est pas open source mais un standard
    WebGPU n’est pas limité au navigateur ; il existe aussi via les bibliothèques Dawn pour C++ et WGPU pour Rust, ce qui permet de l’exécuter sur Windows, macOS, Linux, iOS, Android, etc.
    Vulkan fonctionne sur un peu plus de plateformes que DirectX, mais n’est pas inclus par défaut dans Windows et ne fonctionne ni sur macOS ni sur iOS
    • Je voudrais ajouter que Vulkan n’est pas open source, mais un standard ouvert
      L’implémentation réelle est assurée par chaque fabricant de matériel, et Vulkan n’est en gros qu’un ensemble de fichiers d’en-tête
      Cela dit, il fonctionne aussi très bien sur les plateformes Apple via des couches de traduction Vulkan-vers-Metal comme MoltenVK ou KosmicKrisp
    • Vulkan n’est pas totalement cross-platform, mais il couvre un périmètre bien plus large que DirectX
      DirectX est utilisé sur Windows et Xbox, tandis que Vulkan est disponible sur Linux, Android, Windows, Nintendo Switch, Switch 2, etc.
    • Il faudrait préciser que WebGPU est une API unifiée au-dessus des API natives de chaque plateforme (DirectX, Vulkan, Metal)
    • Les API de Khronos disposent d’un grand nombre d’extensions, mais certaines sont propriétaires, ce qui réduit la portabilité
      PlayStation ne prend pas en charge Vulkan, et sur Switch, on utilise surtout NVN plutôt qu’OpenGL/Vulkan
    • Le simple fait que Vulkan fonctionne sur Windows le rend déjà plus généraliste que DirectX à mes yeux
      Le fait que Vulkan ne marche pas dans certains environnements VNC sous Linux n’a rien de représentatif
      La plupart des utilisateurs bénéficient de Vulkan via les pilotes GPU
  • La qualité du cours sur ce site est impressionnante
    Si le livre était vendu, même sous forme de précommande, j’aurais envie de soutenir le projet
    Je suis les publications depuis le premier article, et chacune est plus impressionnante que la précédente
  • Si vous voulez expérimenter avec les shaders, je recommande les IDE suivants
    • shadertoy – le plus simple et le plus populaire, directement dans le navigateur
    • Shadron – personnellement mon préféré grâce à sa bonne ergonomie, même s’il reste assez confidentiel
    • SHADERed – il faut un peu de temps pour s’habituer à l’UX, mais les fonctionnalités sont suffisantes
    • KodeLife – j’en ai entendu parler, mais je ne l’ai pas essayé moi-même
    • Cables(cables.gl) est aussi très sympa
      Il y a des œuvres impressionnantes de Kirell Benzi
    • J’ai découvert wgshadertoy dans le gestionnaire de logiciels de Mint
      Prend en charge de nombreuses plateformes, dont flatpak, AUR, macports et Windows
    • Sur macOS ou iPadOS, on peut facilement se lancer avec les shaders Metal via Playgrounds
    • Il y a aussi Bonzomatic, utilisé dans la demoscene pour les compétitions de live coding de shaders
  • Programmer consiste au fond à traduire ce qu’un humain comprend dans un langage que l’ordinateur peut comprendre
    Mais la programmation GPU est bien plus difficile
    Entre les nombreux pièges, les incohérences matériel/logiciel et le manque d’outils de débogage, l’expérience de développement est très pénible
    C’est aussi regrettable que la communauté semble peu motivée pour améliorer cet état de fait
    • OpenGL et les versions antérieures à DirectX 12 tentaient d’abstraire les détails du matériel, mais au final cette abstraction s’est révélée nuisible
  • La partie la moins intuitive quand on écrit un fragment shader, c’est l’idée de recevoir des coordonnées en entrée et de produire une couleur en sortie
    Contrairement au dessin au stylo, un shader calcule la position de chaque pixel pour en déterminer la couleur
    Il faut penser en termes de manipulation de l’espace plutôt qu’en termes de déplacement d’objets
    Les vertex shaders paraissent plus naturels, puisqu’ils produisent la position des triangles
    • Cela ne semble contre-intuitif que lorsqu’on abuse des fragment shaders
      En pratique, ils s’occupent de la dernière étape du pipeline de rendu, comme l’échantillonnage de textures et le calcul de l’éclairage
      En PBR ou en rendu différé, on partage généralement les mêmes shaders communs et on ne personnalise que les effets spéciaux
    • Il faut voir cela non comme un problème propre aux shaders, mais comme la différence entre graphismes raster et vectoriels
      Le shading ne consiste pas à tracer des contours, mais à représenter des matériaux physiques
      La peinture est plus proche du shading, contrairement au dessin au stylo
    • Utiliser un fragment shader pour dessiner un rectangle est une mauvaise approche
      Un shader sert à ombrer (shading) un rectangle, pas à le dessiner
    • En réalité, le vertex shader définit les contours et le fragment shader remplit l’intérieur
      Dans un cadre pédagogique, on omet parfois le vertex shader et on remplit tout l’écran avec un fragment shader
  • Le plus difficile quand on apprend à écrire du code GPU, c’est que la configuration initiale est complexe et obscure
    Les concepts liés aux formats de données, à l’ordre des transformations ou à la frontière CPU-GPU sont difficiles, et la documentation manque souvent
    Le système de variables globales du GPU est lui aussi déroutant
    • Je me suis posé beaucoup des mêmes questions, alors j’ai écrit des billets de blog pour apprendre WebGL
      Barebones WebGL in 75 lines,
      Barebones 3D rendering with WebGL
      Vulkan exige beaucoup plus de boilerplate que WebGL
    • Une partie de ces questions concerne moins le GPU lui-même que la conception de l’API
      Le GPU repose sur une architecture SIMT, donc la cohérence des accès aux données est importante
      Les transformations sont appliquées séquentiellement dans chaque thread, et la frontière entre CPU et GPU peut être franchie plusieurs fois selon le budget de performance
      Les variables globales sont des constantes transmises à l’identique à chaque thread, comme les uniforms
      Dans CUDA, un accès global est possible via des opérations atomiques, mais avec un coût de performance élevé
      Un cours d’introduction à WebGL ferait un bon point de départ
  • Le niveau de finition du site est étonnamment élevé
    Les diagrammes, la barre de défilement et le style sont tous excellents
    Les shaders sont apparus avant les GPU et peuvent aussi s’exécuter sur CPU
    Le cœur du GPU, c’est son modèle d’exécution SIMT/SIMD, et un shader relève essentiellement de la notion de fonction de rappel
    Je pense que le fait de pouvoir les écrire avec le même raisonnement séquentiel que sur CPU participe à la simplicité et à l’élégance des shaders
    • Le fait que toutes les illustrations aient été réalisées avec Figma est particulièrement impressionnant
    • J’ai laissé une réponse disant que le retour était excellent
  • Le travail est vraiment magnifique et très abouti
    • Entièrement d’accord. Je me demande si ce site est une application sur mesure construite avec Next.js
  • Excellent travail. J’ai pris beaucoup de plaisir à le parcourir
  • Je recommande la vidéo d’Iñigo Quilez, “This painting is a mathematical formula
    Elle montre très bien le concept des shaders où les coordonnées x et y de chaque pixel sont exprimées comme une fonction