@@ -76,6 +76,49 @@ If needed, a section can be split into subsections with a "------" delimiter.
76
76
77
77
## Library Updates
78
78
79
+ ### [ rust-gpu-sdf]
80
+
81
+ ![ 3d-distance-field] ( rust-gpu-sdf.gif )
82
+ _ An implicit surface defined compositionally, raymarched, and shaded entirely in Rust_
83
+
84
+ Announcing [ rust-gpu-sdf] , by [ @Shfty ] ; a ` no-std ` signed distance field library designed for use across both CPU and GPU.
85
+
86
+ At time of writing, this library is the primary consumer of [ bevy-rust-gpu] , and is in a heavy-development pre-release state.
87
+ Its main goal is to enumerate the distance field domain to the fullest extent allowed by Rust's type system;
88
+ this covers a great many applications, such as collision detection, rendering, mesh generation,
89
+ and volume modeling. And, contrary to its working title, is [ rust-gpu] -agnostic, so can be used anywhere Rust can!
90
+
91
+ But what is a distance field? In short, it's a function that defines a shape in terms of its distance from a point.
92
+ This can be used as an alternative to traditional meshing approaches in order to achieve perfectly smooth surfaces,
93
+ the dynamic morphing depicted above, and many other effects that would traditionally require a powerful modeling package.
94
+
95
+ On paper, this also makes SDFs a great fit for accelerated rendering via GPU;
96
+ a given distance function can be encoded directly in a shading language,
97
+ and rendered by evaluating it on a per-fragment basis.
98
+ In practice however, this presents a pipeline problem;
99
+ distance fields (such as the ones found in [ Inigo Quilez' excellent reference] ( inigo-quilez ) )
100
+ are generally defined in mathematical form, i.e. as a single monolithic function.
101
+
102
+ Thus, in order to effectively leverage SDFs for CGI, an artist must also be both a competent mathematician
103
+ and shader programmer. Even then, organization via abstraction eventually becomes necessary,
104
+ which is often limited in shading languages. This is often solved by introducing a preprocessor,
105
+ but forks away from the base language, introducing more machinery, specification,
106
+ and points of failure to the process.
107
+
108
+ [ rust-gpu] allows us to sidestep this problem, using Rust's language features
109
+ to model powerful abstractions that can be compiled directly into SPIR-V.
110
+ This is ideal for SDFs, since the algorithms involved can often be decomposed into reusable,
111
+ generalizable operators that lend themselves well to functional composition.
112
+ [ rust-gpu-sdf] aims to do this, and provide a go-to library able to compose complex SDFs for any use-case. Watch this space!
113
+
114
+
115
+
116
+ [ @Shfty ] : https://github.com/Shfty
117
+ [ rust-gpu-sdf ] : https://github.com/bevy-rust-gpu/rust-gpu-sdf
118
+ [ bevy-rust-gpu ] : https://github.com/bevy-rust-gpu
119
+ [ rust-gpu ] : https://github.com/EmbarkStudios/rust-gpu
120
+ [ inigo-quilez ] : https://iquilezles.org/articles/distfunctions/
121
+
79
122
## Popular Workgroup Issues in Github
80
123
81
124
<!-- Up to 10 links to interesting issues -->
0 commit comments