Projets (15 en tout)
Voici une partie des divers projets que j'ai menés dans le passé avec DirectX / C++11 :
...[quelques codes sources sont présentés]...
Une console Quake-like :
Caractéristiques :
- possibilité de changer l'image d'arrière plan
- implémentation facile des commandes
- historique de commandes
- commande d'aide
Codes sources :
CommandsManager.h : [afficher]
Commands.h : [afficher]
Console.h : [afficher]
CommandsDefinitions.cpp : [afficher]
CommandsManager.cpp : [afficher]
Console.cpp : [afficher]
Un cube tout simple :
Caractéristiques :
- définition interne de ses vertices et indices
- une texture est appliquée au cube
Codes sources :
Cube.h : [afficher]
Cube.cpp : [afficher]
Implémentation du moteur physique Newton :
Caractéristiques :
- possibilité de lancer un cube à partir du devant de la caméra
- petite carte au format BSP chargée
- possibilité de se mouvoir avec la caméra au sein de la scène
- fait avec Irrlicht 3D 1.7
Codes sources :
PhysicsEngine.h : [afficher]
PhysicsManager.cpp : [afficher]
Main.cpp : [afficher]
Utilisation du Shader Instancing :
Caractéristiques :
- utilise DirectX 10.1
- possibilité de voir la différence avec l'affichage classique
- affichage de nombreux cubes qui tournent aléatoirement
- + cubes colorés
Codes sources :
InstancedCubeSceneNode.h : [afficher]
InstancedSceneNodeManager.h : [afficher]
InstancedCubeSceneNode.cpp : [afficher]
InstancedSceneNodeManager.cpp : [afficher]
Shader eau de type I :
Caractéristiques :
- Utilise une render target projetée pour la réflexion
Codes sources :
Water.h : [afficher]
Water.cpp : [afficher]
Water.fx : [afficher]
Raak Scene Editor (non terminé) :
Caractéristiques :
- possibilité d'importer des objets au format de fichier .mesh
- écrit avec Qt et Ogre3D
- possibilité de se mouvoir dans la scène de l'éditeur
- possibilité de déplacer, pivoter, agrandir les objets placés
Codes sources :
ModulePreview.h : [afficher]
ModulesList.cpp : [afficher]
Ecrire du texte à l'écran :
Caractéristiques :
- possibilité d'écrire directement du texte à l'écran à partir d'un shader approprié
- utilisation du format de fichier police de caractères avec le programme AngelFont
- utilisation des textures de polices de font en format de texture .png
- n'utilise pas la librairie D3DX
Code source :
FontTextManager.h : [afficher]
FontTextManager.cpp : [afficher]
FontText.fx : [afficher]
Afficher le Z-Buffer :
Caractéristiques :
- affiche le contenu du Z-Buffer sous forme de texture de post-process
Codes sources :
ZbufferRenderer.cpp : [afficher]
ZBufferPostProcess.fx : [afficher]
Labyrinthe 3D autogénéré :
Caractéristiques :
- un labyrinthe 3D complet généré procéduralement avec un algorithme adapté trouvé sur Internet
Codes sources :
Arrow Quest Billboard :
Caractéristiques :
- des billboards affichés à l'aide d'un Geometry Shader
- des TextSceneNodes style MMORPG
- les points d'interrogation font un mouvement périodique de bas vers le haut
- les flèches tournent autour d'elles-mêmes
Codes sources :
ArrowBillboardSceneNode.h : [afficher]
BillboardTextSceneNode.h : [afficher]
QuestBillboardSceneNode.h : [afficher]
ArrowBillboardSceneNode.cpp : [afficher]
BillboardTextSceneNode.cpp : [afficher]
QuestBillboardSceneNode.cpp : [afficher]
Graphical User Interface :
Caractéristiques :
- GUIWidget
- GUIImage
- GUIButton
- GUIDialog
- GUIDraggableWidget
- GUILabel
- GUIScrollBar
- GUITextArea
Codes sources :
GUIButton.h : [afficher]
GUIWidget.h : [afficher]
GUIButton.cpp : [afficher]
GUIWidget.cpp : [afficher]
Multiples nuages en haut du ciel :
Caractéristiques :
- 3 couches de nuages appliqués avec une texture possédant un canal alpha
- la structure des nuages est un dôme un peu aplati
Codes sources :
CloudsSceneNode.h : [afficher]
CloudsSceneNode.cpp : [afficher]
Sphere Mesh :
Caractéristiques :
- génération procédurale d'une sphère
Codes sources :
SphereMeshSceneNode.cpp : [afficher]
Ciel :
Caractéristiques :
- génération d'une skybox avec Cube Map
- type de structure : dôme ou cube
Codes sources :
SkyBoxSceneNode.h : [afficher]
SkyBoxSceneNode.cpp : [afficher]
Effets post-traitements :
Caractéristiques :
- implémentation de plusieurs effets post-traitements
- avec l'utilisation d'une FullScreen Texture Quad avec Rendertarget
- effets : inversion des couleurs, noir et blanc, vignette, radial glow, etc...
Codes sources :
PostEffectManager.h : [afficher]
PostEffectManager.cpp : [afficher]
ShaderTechnique_PostEffect.cpp : [afficher]
Lumières multiples :
Caractéristiques :
- implémentation de plusieurs lumières avec couleurs différentes
- les lumières font et exercent un effet de révolution autour d'un centre
- le modèle "Suzanne" reçoit un mélange de couleurs et de lumières différentes
Codes sources :
MultipleLights.cpp : [afficher]
Savoir-faire (14 en tout)
Voici les divers savoir-faire que je maitrise avec DirectX / C++11 :
1 - Utilisation de TinyXML :
- Importation des données d'un fichier XML
- Exportation et création d'un fichier XML
2 - Matrice pour afficher un billboard :
- Une matrice liée à la position de la caméra
- On construit la matrice à partir de 3 vecteurs : Right, LookAt et Up
3 - Fonctions delegates en C++11 :
- Utilisation de std::function et std::bind
- Utilisation des fonctions anonymes
- Utilisation du paramètre par défaut std::placeholders::_1
4 - Taux d'occupation du CPU :
- Consommation total du CPU du système
- Taux de consommation du CPU du processus d'une application
5 - Utilisation de la librairie Zlib :
- Importation du fichier d'entête avec #include <zlib.h>
- Compression et décompression d'un fichier quelconque à la volée
6 - Compétences en mathématiques :
- Niveau première et terminale S acquis
- Objets et opérations généralistes : matrices, vecteurs, transformations de repères, etc...
- Opérations ensemblistes sur R, C et les autres ensembles
- Relations d'équivalence, d'ordre...
- Equations, fonctions exp et ln
- Trigonométrie : cercle, sinus, cosinus...
7 - Maîtrise de DirectX :
- Initialisation de DirectX 11 : SwapChain, Back Buffer, DepthStencilView, etc...
- Une classe TextureScreenQuad compatible avec les RenderTarget
- Changement de rendu fullscreen vers fenetré et vice-versa
- Acquisition des informations de la carte graphique et des modes d'affichage associés
- Gestion de la transparence avec ID3D11BlendState
- Affichage de ligne en 3D colorisée
8 - Compréhension de DirectX :
- Backface culling (ignorer le rendu des triangles qui ne sont pas visibles)
- Matrices World, View, Projection pour transformer les primitives à l'écran
- Vertex, Index buffers et Vertex Input Layout
- D3D11_FILL_MODE : Wireframe et Solid
9 - Programmation Shader avec HLSL 5.0 :
- Gestion du deboggage avec l'interface ID3DBlob
- Compilation avec D3DX11CompileFromFile
- Texturage, effets post-traitements, déplacement de primitives et ombrage
- Etapes vertex, geometry et pixel shaders maîtrisées
- Fonctions intrinsèques
10 - C++ :
- Gestion des exceptions
- Utilisation du logiciel de documentation Doxygen
- Utilisation de la STL
- Flags avec enum
- Pointeurs intelligents
- Connaissance des nouvelles possibilités C++11
- Utilisation du préprocesseur : __FUNCTION__, __LINE__, etc ...
- Design patterns : Singleton
11 - Gameplay et système :
- Caméra classique FPS (First Person Shooter)
- Calcul du FPS (Frame Per Second)
- Icone du curseur de la souris personnalisée
- Un Performance Timer pour synchroniser les évenements
- Une caméra à la 3ème personne trigonométrique
12 - Affichage du texte :
- Utilisation de AngelFont
13 - Entrées utilisateur :
- Une classe InputManager générique
- Utilisant WndProc
- Utilisant DirectInput
14 - Graphisme :
- Une Skybox et un Skydome pour afficher le ciel