@@ -11,9 +11,13 @@ compilateurs étaient très laxistes par rapport à la spécification qui leur
1111complexe, il pouvait être accepté par l'un et pas par l'autre, ou pire s'éxécuter différemment. Avec le format de
1212plus bas niveau qu'est SPIR-V, ces problèmes seront normalement éliminés.
1313
14- Cela ne veut cependant pas dire que nous devrons écrire ces bytecodes à la main. Khronos fournit lui- même un
14+ Cela ne veut cependant pas dire que nous devrons écrire ces bytecodes à la main. Khronos fournit même un
1515compilateur transformant GLSL en SPIR-V. Ce compilateur standard vérifiera que votre code correspond à la spécification.
16- Le compilateur est fourni avec le SDK et s'appelle ` glslangValidator ` , vous n'aurez donc rien de plus à télécharger.
16+ Vous pouvez également l'inclure comme une bibliothèque pour produire du SPIR-V au runtime, mais nous ne ferons pas cela dans ce tutoriel.
17+ Le compilateur est fourni avec le SDK et s'appelle ` glslangValidator ` , mais nous allons utiliser un autre compilateur
18+ nommé ` glslc ` , écrit par Google. L'avantage de ce dernier est qu'il utilise le même format d'options que GCC ou Clang,
19+ et inclu quelques fonctionnalités supplémentaires comme les * includes* . Les deux compilateurs sont fournis dans le SDK,
20+ vous n'avez donc rien de plus à télécharger.
1721
1822GLSL est un language possédant une syntaxe proche du C. Les programmes y ont une fonction ` main ` invoquée pour chaque
1923objet à traiter. Plutôt que d'utiliser des paramètres et des valeurs de retour, GLSL utilise des variables globales
@@ -201,40 +205,37 @@ void main() {
201205}
202206```
203207
204- Nous allons maintenant compiler ces shaders en bytecode SPIR-V à l'aide du programme ` glslangValidator ` .
208+ Nous allons maintenant compiler ces shaders en bytecode SPIR-V à l'aide du programme ` glslc ` .
205209
206210** Windows**
207211
208212Créez un fichier ` compile.bat ` et copiez ceci dedans :
209213
210214``` bash
211- C:/VulkanSDK/x.x.x.x/Bin32/glslangValidator .exe -V shader.vert
212- C:/VulkanSDK/x.x.x.x/Bin32/glslangValidator .exe -V shader.frag
215+ C:/VulkanSDK/x.x.x.x/Bin32/glslc .exe shader.vert -o vert.spv
216+ C:/VulkanSDK/x.x.x.x/Bin32/glslc .exe shader.frag -o frag.spv
213217pause
214218```
215219
216- Corrigez le chemin vers ` glslangValidator .exe` pour que le .bat pointe effectivement là où le vôtre se trouve.
220+ Corrigez le chemin vers ` glslc .exe` pour que le .bat pointe effectivement là où le vôtre se trouve.
217221Double-cliquez pour lancer ce script.
218222
219223** Linux**
220224
221225Créez un fichier ` compile.sh ` et copiez ceci dedans :
222226
223227``` bash
224- /home/user/VulkanSDK/x.x.x.x/x86_64/bin/glslangValidator -V shader.vert
225- /home/user/VulkanSDK/x.x.x.x/x86_64/bin/glslangValidator -V shader.frag
228+ /home/user/VulkanSDK/x.x.x.x/x86_64/bin/glslc shader.vert -o vert.spv
229+ /home/user/VulkanSDK/x.x.x.x/x86_64/bin/glslc shader.frag -o frag.spv
226230```
227231
228- Corrigez le chemin menant au ` glslangValidator ` pour qu'il pointe là où il est. Rendez le script exécutable avec la
232+ Corrigez le chemin menant au ` glslc ` pour qu'il pointe là où il est. Rendez le script exécutable avec la
229233commande ` chmod +x compile.sh ` et lancez-le.
230234
231235** Fin des instructions spécifiques**
232236
233- Ces deux commmandes invoquent le programme avec l'argument ` -V ` . Celui-ci indique au programme de compiler les sources
234- GLSL en bytecode SPIR-V, sinon le programme se contenterait de vérifier que les sources correspondent au standard.
235- Une fois le script exécuté vous vous retrouverez avec deux nouveaux fichiers : ` vert.spv ` et ` frag.spv ` . Les noms
236- sont automatiquement dérivés du type de shader, mais vous pouvez les renommer si vous le souhaitez. Vous aurez
237- peut-être un message parlant de fonctionnalités manquantes mais vous pouvez l'ignorer sans problème.
237+ Ces deux commandes instruisent le compilateur de lire le code GLSL source contenu dans un fichier et d'écrire
238+ le bytecode SPIR-V dans un fichier grâce à l'option ` -o ` (output).
238239
239240Si votre shader contient une erreur de syntaxe le compilateur vous indiquera le problème et la ligne à laquelle il
240241apparait. Essayez de retirer un point-virgule et voyez l'efficacité du debogueur. Essayez également de voir les
0 commit comments