rafx
Documentation
Start Here
Why Rafx?
API Design in Rust Pseudocode
API Triangle Example
Topics
Why Rafx?
Rendering Concepts
(A gentle introduction to GPU rendering - not specific to rafx)
rafx-api
API Design
API Design in Rust Pseudocode
Safety
Windowing and Swapchain Handling
Resource Binding Model
Validation and Debugging
API Triangle Example
Backend Implementation Details:
Vulkan
Metal
GL ES 2.0
GL ES 3.0
rafx-visibility
API Design
rafx-framework
Framework Architecture
Adding Features
Adding Phases
Render Graph
Render Graph Triangle Example
Visibility Resource
rafx-assets
distill
Architecture and Features
Asset Triangle Example
rafx-renderer
Renderer Architecture
Renderer Triangle Example
Shader Authoring with
rafx-shader-processor
Shader Processor
Custom Shader Markup
@[export]
@[immutable_samplers]
@[internal_buffer]
@[semantic]
@[slot_name]
Conversion from GLSL to MSL
Using the Generated Rust Code
Recommended Practices
Other Tools
Asset Packing
Profiling
Examples
API Triangle Example
Render Graph Triangle Example
Asset Triangle Example
Building for iOS
Acknowledgements and Other Resources
Diagrams
Key crate dependencies
Pipelining
Shader Processor
Visibility region
Extract, prepare, write
Other Resources
More complete list here:
Acknowledgements and Other Resources
The job/phase rendering design is inspired by the 2015 GDC talk “
Destiny’s Multithreaded Rendering Architecture
”.
The render graph is inspired by the 2017 GDC talk “
FrameGraph: Extensible Rendering Architecture in Frostbite
”
see also “
Render Graphs and Vulkan - a deep dive
” for an implementation of a render graph on vulkan
The low-level API is somewhat similar to the API from “
The Forge
”