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