https://github.com/pathogendavid/threel
An implementation of lighting via light linked list in Direct3D 12 with a side of PBR
https://github.com/pathogendavid/threel
Last synced: 10 months ago
JSON representation
An implementation of lighting via light linked list in Direct3D 12 with a side of PBR
- Host: GitHub
- URL: https://github.com/pathogendavid/threel
- Owner: PathogenDavid
- License: mit
- Created: 2023-06-29T18:29:41.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-19T05:08:06.000Z (about 2 years ago)
- Last Synced: 2024-05-01T22:09:05.368Z (about 2 years ago)
- Language: C++
- Homepage: https://pixelalchemy.dev/portfolio/threel/
- Size: 52.2 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
ThreeL: An implementation of lighting via light linked list
===============================================================================
[](LICENSE.txt)
ThreeL is an implementation of a somewhat unusual lighting algorithm, real-time lighting via light linked list.
You can read more about ThreeL and the lighting via light linked list algorithm [on my portfolio](https://pixelalchemy.dev/portfolio/threel/).
Pre-built binaries can be found [here on GitHub](https://github.com/PathogenDavid/ThreeL/releases/latest).

The project utilizes relatively thin abstractions, hopefully making it more friendly for beginners to learn something from. In this renderer you'll find:
* Direct3D 12
* Physically-based rendering (matching the [core glTF feature set](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#appendix-b-brdf-implementation))
* A forward renderer with a depth pre-pass
* Generating mipmap chains in compute
* Compute-based particle systems
* Basic glTF loading (non-conformant, it's restricted to the features needed by ThreeL)
* Bindless rendering (Specifically for textures/samplers used by PBR materials and some mesh data)
* A few little Dear ImGui-based tools for fiddling with things
## Controls
Move with WASD\*, click and drag to look around. Hold Shift to sprint, Ctrl to move slowly.
You can also use an Xbox Controller. Click in the left stick to sprint.
Various debug visualizations, settings, and tools can be accessed using the UI.
(\*Or ZWSD or ,AOE or WARS whatever your keyboard uses for those keys. Arrow keys work too.)
## Building
Building should be as simple as opening `ThreeL.sln` in Visual Studio 2022 and pressing F5.
### Build Configurations
ThreeL has three build configrations:
* Debug - Code optimizations disabled (including shaders) with debug layer & asserts – slowest
* Checked - Optimizations enabled with asserts only – faster
* Release - Optimizations enabled without asserts – fastest
The debug and checked configurations are instrumented with [WinPixEventRuntime](https://devblogs.microsoft.com/pix/winpixeventruntime/) if you're wanting to inspect the structure of the frame using [PIX](https://devblogs.microsoft.com/pix/download/) or [RenderDoc](https://renderdoc.org/).
## License
ThreeL is licensed under the MIT License. [See the license file for details](LICENSE.txt).
Additionally, ThreeL has some third-party dependencies. [See the third-party notice listing for details](THIRD-PARTY-NOTICES.md).