gKit2light est une base de code permettant d'écrire des applications utilisant openGL.
pour l'utiliser, il faut installer quelques dépendances, selon le système que vous utilisez :
ensuite, c'est parti ! comment écrire une première application gKit :
gKit2light est composé de plusieurs utilitaires :
- window.h fournit un squelette d'application, app.h fournit une classe application de base,
- image.h et color.h permettent de charger, d'enregistrer et de manipuler des images, pixel par pixel,
- vec.h et mat.h définissent des vecteurs, des matrices pour manipuler des transformations, des points, des vecteurs,
- program.h permet de compiler facilement des shaders,
- uniforms.h permet de définir les valeurs des uniforms des shaders,
- mesh.h permet de décrire des objets 3d,
- orbiter.h permet de déplacer une caméra autour d'un objet pour l'observer,
- draw.h affiche un mesh pour le point de vue d'une caméra,
- wavefront.h permet de charger et d'enregistrer des fichiers .obj,
- texture.h permet de charger une image et de la plaquer sur un objet,
- text.h permet d'afficher directement du texte sur la fenetre de l'application,
- widgets.h permet de controler l'application avec une interface graphique minimaliste.
mais il y a aussi pas mal de tutos / exemple de code :
- introduction api 3d, openGL et pipeline graphique,
- écrire une application openGL,
- premiers objets, affichage et transformations,
- transformations, projection et textures : ombres simples et details,
- tuto7.cpp, utilise la classe App pour construire l'application,
- tuto7_camera.cpp, idem tuto7 mais utilise la classe AppCamera, qui définit une camera par défaut,
- tuto8.cpp, exemple d'utilisation de App::update() pour modifier la transformation de l'objet en fonction du temps,
- tuto9.cpp, dessine un objet Mesh avec un shader 'utilisateur', sans utiliser le shader par défaut, montre aussi comment utiliser simplement une, ou plusieurs, textures,
- tuto9_materials.cpp, dessine toutes les matières d'un objet Mesh avec un shader 'utilisateur', avec un seul
glDraw()
,
- tuto9_groups.cpp, dessiner toutes les matières d'un objet Mesh avec, ou sans shader 'utilisateur', avec un
glDraw()
par matiere,
- tuto9_buffers.cpp, complète le tuto9 avec la création des buffers et du vertex array object, pour dessiner un objet Mesh, directement avec openGL...
- lumière et matière, lumière, matière et brdf,
- lumière et reflets, matière et reflets réalistes,
- shader et brdf, écrire un shader, matière, brdf, pbr, etc.
- prototyper un shader program est un utilitaire pour prototyper rapidement des shaders.
plus ceux dédiés à openGL :
- interface C openGL,
- shaders et GLSL,
- compiler et linker un shader program,
- afficher plusieurs triangles, modifier les paramètres uniform d'un shader program,
- configurer un format de sommet, vertex array object,
- récupérer les uniforms et les attributs utilisés par un shader program,
- textures, samplers et pipeline,
- glDraw( ) et la famille,
- charger et preparer un objet wavefront .obj,
- rendu multi-passes : shadow maps, post process, framebuffer object,
- utilisation, chargement et création de cubemap,
- mesure du temps cpu et gpu,
- openGL 3.3 : uniform buffers,
- openGL 4.3 : storage buffers,
- openGL 4.3 : storage textures / images,
- openGL 4.3 : compute shaders,
- openGL 4.3 : multi draw indirect,
- ressources cpu / gpu et transfert de données.
et ceux dédiés au lancer de rayons :
et ceux dédiés à la synthèse d'images réaliste :
- synthèse réaliste et intégration numérique : l'équation de rendu,
- intégration numérique et Monte Carlo,
- Monte Carlo et équation de rendu,
- Monte Carlo et éclairage direct,
- Monte Carlo, éclairage direct : structurer le code,
- Monte Carlo, convergence et réduction de variance,
- Monte Carlo et éclairage indirect,
- Rendu et générateurs de nombres aléatoires,
et un utilitaire pour jouer avec les shaders, shader_kit.cpp prototyper un shader program.