https://github.com/k0bin/sourcerenderer
Toy game engine - Also known as dreieck.exe
https://github.com/k0bin/sourcerenderer
3d-graphics csgo rust source-engine vulkan
Last synced: 12 months ago
JSON representation
Toy game engine - Also known as dreieck.exe
- Host: GitHub
- URL: https://github.com/k0bin/sourcerenderer
- Owner: K0bin
- License: mit
- Created: 2018-11-04T23:28:20.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-03-20T01:02:36.000Z (12 months ago)
- Last Synced: 2025-03-20T01:07:21.961Z (12 months ago)
- Topics: 3d-graphics, csgo, rust, source-engine, vulkan
- Language: Rust
- Homepage:
- Size: 33.8 MB
- Stars: 47
- Watchers: 2
- Forks: 4
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# SourceRenderer
Source Engine map renderer written in Rust
It's a Rust port of https://github.com/K0bin/sourceloader and I plan to add a Vulkan renderer.
The main goal of this project is to learn Rust and Vulkan.
Features:
* rather basic Vulkan forward renderer
* temporal anti aliasing
* SSAO
* clustered forward shading (currently only supports point lights)
* incomplete PBR lighting
* Two render paths:
* Conservative:
* Frustum culling & occlusion culling (based on GPU queries)
* GPU driven:
* frustum culling in compute
* occlusion culling in compute using a hierarchical z-buffer
* bindless textures
* Vulkan ray tracing
* Soft shadows (denoising is still TODO)
* Late latching just before submission to minimize latency
* Texture streaming using a transfer queue
* Pipelined rendering
* loading Source engine maps:
* loading BSP levels
* basic brush geometry
* displacements (at least to some degree)
* light maps
* static models
* loading 2D VTF textures
* loading the most basic VMT materials
* loading GLTF levels (currently without textures and needs to be rewritten to use less memory)
Platforms:
* Desktop
* using SDL2
* tested on Linux & Windows
* shouldn't take too much work to make it work on Mac OS
* Web version
* using web workers & SharedArrayBuffers for threading
* extremely limited WebGL2 renderer
* Android version
* used the Vulkan renderer
* using Khronos Vulkan extension layers to support timeline semaphores
and synchronization2 on older drivers