You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+44-6Lines changed: 44 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,13 @@
2
2
3
3
**dsga** is a single header-only **c++20 library** that implements the **vectors** and **matrices** from the OpenGL Shading Language 4.6 specification ([pdf](https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.60.pdf) | [html](https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.html)). It is inspired by the spec, but does deviate in some small ways, mostly to make it work well in c++20. It is not intended to be used for rendering, just for sharing the fundamental data structures and associated functions. Our requirements in general are for things like 3D CAD/CAM applications and other geometric and algebraic things. See [motivation](docs/MOTIVATION.md) for more details. This library does not use SIMD instructions or types under the hood, beyond whatever the compiler provides through optimization.
@@ -222,6 +226,43 @@ The following links to the shading specification should help with understanding
222
226
223
227
In addtion, we have added the non-GLSL convenience function ```none()```, which returns ```!any()```.
224
228
229
+
## Implemented Interfaces
230
+
231
+
To make the vectors and matrices as useful as possible in a c++ context, various c++ customization points were implemented or interfaces partially emulated, e.g., ```std::valarray<>```. For ```dsga``` vectors and matrices, we have:
232
+
233
+
* swizzling from GLSL (just vector)
234
+
* just from the set of {x, y, z, w}, e.g., ```foo.wyxz```
This is a **single header library**, where you just need the file [dsga.hxx](include/dsga.hxx). Things are defined in the ```dsga``` namespace. The types provided by this library can be seen summarized in the [documentation](docs/DOCUMENTATION.md), [using directives](docs/DOCUMENTATION.md#types-and-functions).
@@ -238,18 +279,15 @@ Remember, this is a c++20 library, so that needs to be the minimum standard that
238
279
239
280
## Status
240
281
241
-
Current version: `v0.11.0`
282
+
Current version: `v1.0.0`
242
283
243
-
* **All the intended vector and matrix functionality from the GLSL specification is implemented.** We keep refining the implementation, and we keep expanding the API to better support ```c++20``` idioms and usage as we go.
244
-
* First pass at test coverage. Everything major has some tests, but code coverage is not 100%.
Once we have detailed API documentation and better ```cmake``` support, we can think about releasing a v1.0 version.
252
-
253
291
## Usage
254
292
255
293
Use it more or less like you would use vectors and matrices in a shader program, but not necessarily for shading. We hope to be able to use it for rapid development of geometric algorithms. See the [examples](examples) directory.
0 commit comments