SDF rendering engine thingy.
If debugging, run with environment variable RUST_BACKTRACE=1
to see anyhow error backtrace.
If running in debug mode you need vulkan validation layers installed (I haven't got around to writing code that can detect the presence of layers on different platorms...)
Don't forget to clone the submodules!
git submodule update --init
- colored-term: (default) enables colored terminal log messages.
- include-spirv-bytes: (default) load spirv bytecode at compile-time. if disabled, the engine will attempt to read spirv files from the
./assets
directory at runtime (relative to the executable location). - shader-compile: enables a build script to compile spirv binaries whenever shader source is changed. NOTE: will add a notable increase to the build time if you don't already have shaderc libraries installed on your system.
Source split into three directories:
- user interface - intuitive, responsive and clear feedback.
- renderer - optimized and portable.
- engine - idk tbh. extensible? low-coupling? connecting glue between user interface and backend.
┆
┌───┐ ┆ ┌───┐ ┌───┐ ┌───┐
│ G │──>│ L │──>│ O │──>│ E │
└───┘ ┆ └───┘ └───┘ └───┘
┆ ╰------┬------╯
subpass ┆ subpass gui
0 ┆ 1
- G = Geometry pass
- vert shader - bounding boxes
- frag shader - signed distance field sphere tracing
- L = Lighting pass
- vert shader - full screen triangle
- frag shader - shading
- reads input attachment g-buffers
- O = Overlay pass - rendered ui elements e.g. coordinate indicators
- E = Egui pass - egui stuff
Subpass outputs:
- Subpass 0 - g-buffers:
- rgba8 - normal.xyz, 0
- u32 - object-id, primitive-id
- Subpass 1 - swapchain image