HRE était un moteur de rendu clusterisé en temps réel, basé sur la physique, construit avec OpenGL et basé sur les techniques décrites dans l'article Clustered Deferred and Forward shading d'Ola Olsson, Markus Billeter et Ulf Assarsson. Le but de ce projet est de construire un cadre de test pour présenter les techniques graphiques différées et avancées (d'où la partie hybride) et d'examiner les points forts du Clustered Shading. J'ai écrit un long article de blog rempli d'animations sympas qui peuvent servir d'introduction à des algorithmes de rendu efficaces ainsi que de guide détaillé de ma mise en œuvre de Clustered Shading, alors assurez-vous de le consulter ici !
Cet algorithme a été sélectionné pour ses deux avantages majeurs par rapport aux solutions traditionnelles différées/en mosaïque : il offre plus de liberté pour choisir des chemins d'ombrage directs ou différés comme vous le souhaitez et est mieux adapté à long terme aux tendances modernes en matière de performances des GPU. Il a déjà été implémenté avec succès dans certains des jeux les plus beaux de ces dernières années, avec quelques exemples notables : DOOM 2016, Just Cause 3 et Detroit : Become Human.
Malheureusement, ce projet n'est plus maintenu. J'ai été embauché pour travailler chez Rockstar Games en tant que programmeur graphique peu de temps après avoir publié ceci et je n'ai plus le temps de travailler sur un projet parallèle de cette taille. J'ai l'intention de continuer (ainsi que mon autre projet graphique majeur SSGE) afin que d'autres puissent voir ce qu'il m'a fallu pour percer dans l'industrie. J'aiderai toujours toute personne rencontrant des problèmes ou ayant des questions à ce sujet. N'hésitez pas à me contacter ici ou sur mon Twitter à propos de ce sujet ou de tout autre sujet GFX dont vous aimeriez parler ! Merci à tous ceux qui ont vérifié ce projet ! :D
Les versions stables peuvent être trouvées sur la page des versions HRE.
Actuellement, seules les plates-formes Windows sont prises en charge.
Le premier cycle de développement a débuté en septembre 2018 et s'est terminé en décembre 2018 avec l'inclusion d'Image Based Lighting et la sortie de la première version stable : HRE 0.01 « Aachen ». Au cours des prochains mois, je m'attaquerai aux problèmes décrits dans la section Projets, en commençant par les corrections des bogues non critiques restants, puis en passant à une réécriture majeure du système matériel. Ce qui suit est une liste des fonctionnalités du moteur que j'ai l'intention d'inclure au cours des prochains mois, elle est évidemment sujette à changement et tout le reste.
J'écrirai des articles de blog à la fin de chaque étape majeure, décrivant les nouvelles fonctionnalités et leurs implémentations ainsi que toutes les complications que j'ai trouvées en cours de route. En attendant, voici le premier article qui contient un aperçu d'autres algorithmes de rendu traditionnels et plaide en faveur du rendu clusterisé.
Hybrid Rendering Engine
| -- assets
| | -- models # Meshes and textures
| | -- scenes # Scene description files in JSON format
| | -- shaders
| | | -- computeShaders # Compute shaders for clustered forward
| | | -- OldShaders # Shaders not currently in use
| | ` -- currentShaders # Shaders for the current rendering pipeline
| ` -- skyboxes # Skyboxes in either cubemap or equirectangular map form
| -- build # CMake compile
| -- include # Project header files
| -- libs # Check dependencies section for descriptions & links
| | -- ASSIMP
| | -- Dear imgui
| | -- Glad
| | -- Json c++
| | -- GLI
| | -- GLM
| | -- stb_image
| ` -- SDL2
| -- modules # CMake lib setup scripts
|-- src # C++ implementation files
` -- CMakeLists.txt # CMake build script
Dans mon projet précédent, SSGE, je me suis efforcé de réduire au minimum le nombre de dépendances. Cette fois cependant, le pendule a basculé dans l'autre sens et je n'ai imposé aucune restriction (dans des limites raisonnables) quant aux bibliothèques que je pourrais inclure dans le projet. J'ai fait cela parce que je voulais me familiariser avec le processus d'inclusion et d'utilisation de bibliothèques externes en C++.
Voici une liste des bibliothèques actuellement incluses dans le projet :
Voici une liste des bibliothèques non incluses :
Toutes les bibliothèques incluses sont représentées ici sous leurs licences respectives qui peuvent être trouvées dans les liens ci-dessus ou dans le document licenses.txt dans le dossier libs.
Il existe une liste indexée complète de références pour le projet que je garde plus ou moins à jour dans cette page du wiki. Cependant, je reviens constamment à un sous-ensemble d'entre eux pour une lecture plus approfondie ou lorsque j'ai besoin d'inspiration, j'ai donc ajouté des liens ci-dessous pour les partager et faire connaître leur génialité. Découvrez-les !
Merci à tous les artistes 3D et textures qui ont rendu leurs ressources gratuites et si belles à regarder. Sans vous, je serais probablement encore en train de regarder la même vieille théière ennuyeuse de l'Utah toute la journée !
Si j'ai mal reconnu, mal attribué ou manqué des références, veuillez créer un nouveau problème GitHub ou envoyez-moi un DM sur Twitter et je m'assurerai de le résoudre immédiatement.
Merci à Kostas Anagnostou et Eric Arnebäck pour avoir pris le temps de répondre à toutes mes questions au cours des derniers mois, vos explications ont rendu la compréhension de chaque sujet intimidant beaucoup plus facile !
Licence MIT
Copyright (c) 2018 Ange Ortiz
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.