Contents · Table des matières

Explorer les possibilitées actuelles !

Table des matières

+ Référence rapide — chaque problème courant et où le résoudre sur le site.

→ Arguments de l'application .app

→ Objective-C++ vs C++ : synthaxe

→ Couleurs prévisualitation RGB (web isn't P3)

→ Lecture documentation Objective-C

→ Make

→ Icon de l'application .app

→ Configuration VIM .vimrc

→ Configuration ZSH .zshrc

→ Configuration d'un header en haut de tes fichiers *_*

→ Affichage du HUD dans Xcode

→ Informations sur les licences des dépendances externes

→ L'Open Source, C'est quoi ?

→ C++ : L'opération ternaire

→ C++ : L'opération modulo

→ Les modes de stockage des textures : setStorageMode()

→ Usage flags textures : setUsage()

→ Les fonctions de comparaison de profondeur Z+ : setDepthCompareFunction()

Récapitulatif

Vous arrivez au bout de la partie Prise en main. À ce stade, vous savez ouvrir une fenêtre et y accrocher une CAMetalLayer, obtenir un MTLDevice et une MTLCommandQueue, compiler un fichier .metal en MTLLibrary, construire un MTLRenderPipelineState, encoder une passe de rendu, envoyer des sommets au GPU via un MTLBuffer, échantillonner une MTLTexture, et enchaîner les matrices de simd jusqu'à obtenir une scène 3D avec une caméra contrôlable.

Cela fait beaucoup de notions en peu de chapitres. Avant de continuer, prenez le temps de manipuler ce que vous avez écrit : changez les formats de pixels, cassez volontairement le descripteur de vertex pour voir ce que le validateur vous dit, remplacez un setVertexBytes par un vrai buffer, ajoutez un deuxième objet à la scène. Les erreurs que vous provoquez vous-même sont celles que vous saurez diagnostiquer plus tard.

Trois pièges qui reviennent souvent

  • Le NDC de Metal a un z compris entre 0 et 1, pas entre -1 et 1. Une matrice de projection recopiée d'un tutoriel OpenGL donnera une profondeur fausse.
  • L'origine des coordonnées de texture est en haut à gauche. Si vos textures apparaissent à l'envers, c'est presque toujours ça.
  • Les ressources sont liées par numéro de slot ([[buffer(1)]]), jamais par nom. Décaler un index d'un cran ne produit aucune erreur de compilation, seulement un rendu absurde.

Quand vous vous sentez à l'aise avec l'ensemble, passez à la partie Éclairage.

Glossaire

Fondations

Soumission du travail

Pipeline et état

Ressources

Shaders et MSL

Mathématiques et espaces