@@ -186,6 +186,82 @@ this in action!
186
186
187
187
## Library & Tooling Updates
188
188
189
+ ### [ Rafx] [ rafx-github ]
190
+
191
+ ![ Screenshot from Rafx Rendering Framework] ( rafx-screenshot.png )
192
+
193
+ Rafx is a multi-backend renderer that optionally integrates with the
194
+ [ distill] [ rafx-distill ] asset pipeline. Rafx is divided into three tiers of
195
+ functionality:
196
+
197
+ ` rafx-api ` provides a custom GPU API abstraction layer that currently supports
198
+ vulkan and metal. ([ API in rust psuedocode] [ rafx-api-design ] )
199
+
200
+ ` rafx-framework ` builds on the API layer using ideas found in modern shipping
201
+ AAA titles. Rendering is pipelined in a separate thread in three phases, using
202
+ jobs to extract data from the main thread, process the data on the render
203
+ thread, and write the draw calls to command buffers.
204
+ [[ Tatarchuk 2015] [ rafx-gdc-2015 ]] A render graph ensures correct
205
+ synchronization. [[ O'Donnell 2017] [ rafx-gdc-2017 ]] The framework also provides
206
+ a material abstraction and shader pipeline.
207
+
208
+ ` rafx-assets ` adds integration with the [ distill] [ rafx-distill ] asset pipeline.
209
+ This ensures that when an asset like a mesh is loaded, other related assets
210
+ like textures/material/vertex data are loaded. By integrating with distill,
211
+ rafx provides advanced features like streaming live asset updates to remote
212
+ devices.
213
+
214
+ More information about rafx:
215
+
216
+ - [ Github] [ rafx-github ]
217
+ - [ Documentation] [ rafx-documentation ]
218
+ - [ Why Rafx?] [ why-rafx ] (includes similarities/differences with other rust
219
+ and non-rust alternatives)
220
+
221
+ [ rafx-github ] : https://github.com/aclysma/rafx
222
+ [ rafx-documentation ] : https://github.com/aclysma/rafx/blob/master/docs/index.md
223
+ [ why-rafx ] : https://github.com/aclysma/rafx/blob/master/docs/why_rafx.md
224
+ [ rafx-api-design ] : https://github.com/aclysma/rafx/blob/master/docs/api/api_design_in_rust_psuedocode.rs
225
+ [ rafx-api-triangle-example ] : https://github.com/aclysma/rafx/blob/master/rafx/examples/api_triangle/api_triangle.rs
226
+ [ rafx-gdc-2015 ] : http://advances.realtimerendering.com/destiny/gdc_2015/Tatarchuk_GDC_2015__Destiny_Renderer_web.pdf
227
+ [ rafx-gdc-2017 ] : https://www.gdcvault.com/play/1024612/FrameGraph-Extensible-Rendering-Architecture-in
228
+ [ rafx-distill ] : https://github.com/amethyst/distill
229
+
230
+ ### [ basis-universal-rs]
231
+
232
+ ` basis-universal ` provides bindings for [ Binomial LLC] [ binomial-llc ] 's
233
+ [ Basis Universal texture codec] [ basis-universal-upstream ] .
234
+
235
+ Basis Universal is a state-of-the art
236
+ [ supercompressed] [ basis-universal-supercompression ] texture codec that
237
+ was recently [ open-sourced] [ basis-universal-open-sourced ] by Binomial in
238
+ partnership with Google. It was
239
+ [ contributed] [ basis-universal-contributed-kronos ] to the Khronos glTF
240
+ 3D Transmission Open Standard.
241
+
242
+ The library has two primary uses:
243
+
244
+ - Compresses and encode textures "offline" to a custom format
245
+ - Transcoding: Unpack the custom format directly to GPU-friendly compressed
246
+ formats. The final format can be chosen at game runtime to be compatible
247
+ with available GPU hardware.
248
+
249
+ Basis universal format can also store mipmapped textures and cubemaps,
250
+ neither of which is possible with "normal" file formats. Mipmaps can be
251
+ generated by the library during compression.
252
+
253
+ Compression is very slow (around 7-10s for a 2k texture) but transcoding is
254
+ relatively fast (around 5-40ms for a 2k texture depending on quality). Memory
255
+ savings at runtime are generally >= 75% (depending on the transcode format
256
+ and quality)
257
+
258
+ [ binomial-llc ] : http://www.binomial.info
259
+ [ basis-universal-rs ] : https://github.com/aclysma/basis-universal-rs
260
+ [ basis-universal-upstream ] : https://github.com/BinomialLLC/basis_universal
261
+ [ basis-universal-supercompression ] : http://gamma.cs.unc.edu/GST/gst.pdf
262
+ [ basis-universal-open-sourced ] : https://opensource.googleblog.com/2019/05/google-and-binomial-partner-to-open.html
263
+ [ basis-universal-contributed-kronos ] : https://www.khronos.org/blog/google-and-binomial-contribute-basis-universal-texture-format-to-khronos-gltf-3d-transmission-open-standard
264
+
189
265
### [ egui]
190
266
191
267
![ The plot thickens] ( egui-plot.gif )
0 commit comments