HRE представлял собой физически основанный кластерный рендерер реального времени, созданный с использованием OpenGL и основанный на методах, описанных в статье «Кластерное отложенное и прямое затенение» Олы Олссона, Маркуса Биллетера и Ульфа Ассарссона. Целью этого проекта является создание среды тестирования для демонстрации методов отложенной и прямой графики (отсюда и гибридная часть) и изучение сильных сторон кластерного затенения. Я написал длинный пост в блоге, полный классных анимаций, которые могут послужить введением в эффективные алгоритмы рендеринга, а также подробным руководством по моей реализации кластерного затенения, поэтому обязательно ознакомьтесь с ним здесь!
Этот алгоритм был выбран из-за его двух основных преимуществ по сравнению с традиционными решениями с отсрочкой/плиточкой: он дает больше свободы в выборе прямых или отложенных путей затенения по желанию и лучше соответствует в долгосрочной перспективе современным тенденциям производительности графического процессора. Он уже был успешно реализован в некоторых из самых красивых игр за последние пару лет, например, в DOOM 2016, Just Cause 3 и Detroit: Become Human.
К сожалению, этот проект больше не поддерживается. Вскоре после публикации этой статьи меня наняли на работу в Rockstar Games в качестве графического программиста, и у меня больше нет времени работать над побочным проектом такого размера. Я планирую продолжать его (как и другой мой крупный графический проект SSGE), чтобы другие могли увидеть, чего мне стоило прорваться в индустрию. Я по-прежнему буду помогать всем, у кого возникнут какие-либо проблемы или вопросы по этому поводу. Не стесняйтесь связаться со мной здесь или в моем Твиттере по этой или любой другой теме GFX, о которой вы хотели бы поговорить! Спасибо всем, кто ознакомился с этим проектом! :D
Стабильные сборки можно найти на странице релизов HRE.
В настоящее время поддерживаются только платформы Windows.
Первый цикл разработки начался в сентябре 2018 года и завершился в декабре 2018 года включением Image Based Lighting и выпуском первой стабильной версии: HRE 0.01 «Aachen». В течение следующих нескольких месяцев я буду решать проблемы, изложенные в разделе «Проекты», начиная с исправления оставшихся некритических ошибок, а затем перейдя к серьезному переписыванию системы материалов. Ниже приводится список функций движка, которые я планирую включить в ближайшие месяцы. Очевидно, он может быть изменен и все такое.
В конце каждой важной вехи я буду писать сопроводительные сообщения в блоге, описывая новые функции и их реализации, а также любые сложности, которые я обнаружил на этом пути. Между тем, вот первая статья, которая содержит обзор других традиционных алгоритмов рендеринга и обосновывает кластерный рендеринг.
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
В моем предыдущем проекте SSGE я постарался свести количество зависимостей к минимуму. Однако на этот раз маятник качнулся в другую сторону, и я не сделал никаких ограничений (в пределах разумного) относительно того, какие библиотеки я мог бы включить в проект. Я сделал это, потому что хотел более комфортно работать с внешними библиотеками на C++.
Вот список библиотек, включенных в проект на данный момент:
Вот список библиотек, которые не включены:
Все включенные библиотеки представлены здесь под соответствующими лицензиями, которые можно найти по ссылкам выше или в документе Licenses.txt в папке libs.
На этой странице вики имеется полный индексированный список ссылок по проекту, который я поддерживаю в более или менее актуальном состоянии. Тем не менее, я постоянно возвращаюсь к некоторым из них для дальнейшего чтения или когда мне нужно вдохновение, поэтому я добавил ссылки ниже, чтобы поделиться ими и рассказать об их потрясающести. Проверьте их!
Спасибо всем 3D-художникам и художникам по текстурам, которые сделали свои ресурсы бесплатными для использования и такими красивыми на вид. Если бы не вы, ребята, я бы, наверное, до сих пор весь чертов день смотрел на один и тот же старый скучный чайник из штата Юта!
Если я неправильно признал, неверно атрибуировал или пропустил какие-либо ссылки, пожалуйста, создайте новую проблему на GitHub или отправьте мне личное сообщение в Твиттере, и я обязательно исправлю ее немедленно.
Спасибо Костасу Анагносту и Эрику Арнебеку за то, что они нашли время ответить на все мои вопросы за последние пару месяцев. Ваши объяснения значительно облегчили понимание каждой сложной темы!
Лицензия MIT
Авторские права (c) 2018 Анхель Ортис
Настоящим разрешение бесплатно предоставляется любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), на использование Программного обеспечения без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Вышеупомянутое уведомление об авторских правах и настоящее уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ В ДЕЙСТВИЯХ ПО КОНТРАКТУ, ПРАВОНАРУШЕНИЮ ИЛИ ДРУГИМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ОТ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.