HRE는 OpenGL로 구축되었으며 Ola Olsson, Markus Billeter 및 Ulf Assarsson의 Clustered Deferred and Forward shading 논문에 설명된 기술을 기반으로 구축된 실시간, 물리적 기반, 클러스터형 렌더러였습니다. 이 프로젝트의 목적은 지연 및 순방향 그래픽 기술(따라서 하이브리드 부분)을 보여주고 클러스터 셰이딩의 강점을 조사하기 위한 테스트 프레임워크를 구축하는 것입니다. 저는 효율적인 렌더링 알고리즘에 대한 소개와 Clustered Shading 구현에 대한 자세한 가이드 역할을 할 수 있는 멋진 애니메이션으로 가득한 긴 블로그 게시물을 작성했으므로 여기에서 꼭 확인하세요!
이 알고리즘은 기존의 지연/타일형 솔루션에 비해 두 가지 주요 이점 때문에 선택되었습니다. 즉, 원하는 대로 순방향 또는 지연 셰이딩 경로를 더 자유롭게 선택할 수 있으며 최신 GPU 성능 추세에 장기적으로 더 적합합니다. 이는 지난 몇 년 동안 가장 멋진 게임 중 일부에서 이미 성공적으로 구현되었으며, 주목할만한 예로는 DOOM 2016, Just Cause 3 및 Detroit: Be Human이 있습니다.
불행히도 이 프로젝트는 더 이상 유지 관리되지 않습니다. 저는 이 글을 게시한 직후 Rockstar Games에서 그래픽 프로그래머로 일하게 되었는데 더 이상 이 정도 규모의 사이드 프로젝트를 수행할 시간이 없습니다. 나는 다른 주요 그래픽 프로젝트 SSGE와 마찬가지로 계속해서 내가 업계에 진출하는 데 무엇이 필요했는지 다른 사람들이 볼 수 있도록 할 계획입니다. 나는 여전히 문제가 발생하거나 질문이 있는 사람을 도울 것입니다. 이 주제나 이야기하고 싶은 다른 GFX 주제에 대해 여기나 내 트위터로 언제든지 연락해 주세요! 이 프로젝트를 확인해 주신 모든 분들께 감사드립니다! :디
안정적인 빌드는 HRE 릴리스 페이지에서 찾을 수 있습니다.
현재는 Windows 플랫폼만 지원됩니다.
첫 번째 개발 주기는 2018년 9월에 시작되어 이미지 기반 조명이 포함되고 첫 번째 안정 버전인 HRE 0.01 "Aachen"이 출시되면서 2018년 12월에 종료되었습니다. 앞으로 몇 달 동안 저는 프로젝트 섹션에 설명된 문제를 해결하는 것부터 시작하여 중요하지 않은 나머지 버그에 대한 수정을 거쳐 머티리얼 시스템을 대대적으로 재작성하는 작업으로 넘어갈 것입니다. 다음은 앞으로 몇 달 동안 포함할 엔진 기능 목록입니다. 분명히 변경될 수 있습니다.
저는 각 주요 단계가 끝날 때마다 새로운 기능과 그 구현, 그리고 그 과정에서 제가 발견한 합병증을 간략하게 설명하는 블로그 게시물을 작성할 예정입니다. 한편, 다른 전통적인 렌더링 알고리즘에 대한 개요를 포함하고 클러스터링된 렌더링 사례를 구축하는 첫 번째 게시물은 다음과 같습니다.
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++에서 외부 라이브러리를 포함하고 작업하는 과정에 좀 더 익숙해지고 싶었기 때문에 이렇게 했습니다.
현재 프로젝트에 포함된 라이브러리 목록은 다음과 같습니다.
포함되지 않은 라이브러리 목록은 다음과 같습니다.
포함된 모든 라이브러리는 위의 링크나 libs 폴더의 Licenses.txt 문서에서 찾을 수 있는 해당 라이센스에 따라 여기에 표시됩니다.
위키의 이 페이지에는 내가 어느 정도 최신 상태로 유지하는 프로젝트에 대한 포괄적인 색인화된 참조 목록이 있습니다. 그러나 나는 더 읽어보거나 영감이 필요할 때 끊임없이 그 하위 집합으로 돌아가는 것을 발견했습니다. 그래서 나는 그것들을 공유하고 그 훌륭함을 널리 알리기 위해 아래 링크를 추가했습니다. 확인해 보세요!
자신의 자산을 무료로 사용하고 보기 좋게 만들어준 모든 3D 및 텍스처 아티스트에게 감사드립니다. 너희들이 아니었다면 나는 아마 하루종일 똑같은 낡고 지루한 유타주전자를 바라보고 있었을 것이다!
제가 잘못 인식했거나, 잘못 표시했거나, 참조 내용을 놓친 경우 새 GitHub 문제를 생성하거나 Twitter에서 DM을 보내주시면 즉시 수정하도록 하겠습니다.
지난 몇 달 동안 제 모든 질문에 시간을 내어 답변해 주신 Kostas Anagnostou와 Eric Arnebäck에게 감사 인사를 전합니다. 귀하의 설명 덕분에 모든 어려운 주제를 훨씬 쉽게 이해할 수 있었습니다!
MIT 라이센스
저작권 (c) 2018 엔젤 오르티즈
본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 취득한 모든 사람에게 사용, 복사, 수정, 병합에 대한 권리를 포함하되 이에 국한되지 않고 제한 없이 소프트웨어를 취급할 수 있는 권한이 무료로 부여됩니다. , 소프트웨어 사본을 게시, 배포, 재라이센스 부여 및/또는 판매하고, 소프트웨어를 제공받은 사람에게 다음 조건에 따라 그렇게 하도록 허용합니다.
위의 저작권 고지와 본 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함됩니다.
소프트웨어는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 작성자나 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 소프트웨어나 사용 또는 기타 거래와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. 소프트웨어.