cglm
sse2neon
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cglm
-
converting a vec4 into a mat4
It's too bad you are using C. If you were using C++, you could use teh fantastic GLM library, which implements the vector math stuff from GLSL as CPU/C++ code. you might want to have a look at CLGM: https://github.com/recp/cglm
-
Matrix multiplication in C
There's cglm, but I don't know how good it is. Really though for hobby OpenGL stuff, it's going to be 3x3, 4x4, 1x4 matrices, so rolling one's own stuff is not that terrible, if it proves to be a bottleneck (probably won't), you can drop in some fancy SIMD bullshit later.
- Portable SIMD library
- Looking for fast, generalized lin alg library
-
In what way should I write a matrix library for my OpenGL game?
There is a cglm: repo
-
What can I replace the C++ code "Vector3f" with?
Check out https://github.com/recp/cglm I use it judiciously.
-
I want to make a game for Linux. Where do I even start?
GLM and CGLM should probably be mentioned as well since you'll probably want a good linear algebra library if you are going with just a rendering library instead of a full game engine.
-
What would be the best way to implement a (algebra) vector in C (for OpenGL purposes)?
cglm has two options for representing a vector: using a struct and using an array. The default one is using an array, but I'm not seeing what are the benefits of using an array instead of a struct. When using an array, you need to use out parameters, which make the code much more ugly when doing multiple operations. Using a struct, I can simply return the struct from the function. The only advantage of using an array would be that it's easier to iterate through it, but I could do the same using structs like this
-
Using CGLM, why does the value of this vec4 affect the mat4?
It has been a while since I've written any C so it's very likely I'm missing something very simple. But I'm using CGLM and I have this simple program:
-
Anyone is using plain C?
https://github.com/recp/cglm is a C version of GLM
sse2neon
- sse2neon - A C/C++ header file that converts Intel SSE intrinsics to Aarch64 NEON intrinsic
- A C/C++ header file that converts Intel SSE intrinsics to Aarch64 NEON intrinsic
-
Porting Architecture Specific C/C++ Intrinsics to Graviton
The sse2neon project is a quick way to get C/C++ applications compiling and running on Graviton. The sse2neon header file provides NEON implementations for x64 intrinsics so no source code changes are needed. Each function call (intrinsic) is simply replaced with NEON instructions and will just work on Graviton.
-
An AWS Community Builder Story
To continue our collaboration I contributed some small changes to KasmVNC on GitHub to use sse2neon for a performance critical part of the application which uses SSE intrinsics and needed to be changed to NEON intrinsics.
-
Deserializing JSON Fast
I think the talk is very clearly laid out as an incremental journey, and each stepping stone involves contextual decision-making. I don't think Andreas is saying "you must end up with the SSE2 implementation at the end". Using machine-specific intrinsics is another dependency decision very similar to deciding to use a given library. I would have loved the talk and probably still thought of it and posted it, even if it ended before the intrinsics (but I think he does an excellent job at that part too).
And porting SSE2 to Neon is actually pretty easy -- if you use https://github.com/DLTcollab/sse2neon, IME it's very easy to do incrementally (or avoid or postpone indefinitely, depending on your needs).
-
PortableGL: An MIT licensed implementation of OpenGL 3.x-ish in clean C
I have a private cross-platform port, I’m waiting on the resolution of his latest GitHub issue to submit my changes. sse2neon (https://github.com/DLTcollab/sse2neon) was a big help - I also wrote a very primitive sse2scalar for raspbian builds where neon is unavailable. Honestly SIMD doesn’t help much, as you’re usually memory bound under SWGL. The biggest perf win is any amount of asynchronous execution - running off the main thread is good enough and could be applied to your library externally through a command buffer without any changes to your code.
-
Success porting VCV into aarch64 linux! (Usable on Android Devices)
You should go to /include/simd and download sse2neon.h into the folder. Replace appearing in any source files in that directory with "sse2neon.h". You will still encounter errors; remove the lines causing problems, typically containing the phrase ZERO_MODE. ARM processors does not require it.
What are some alternatives?
GLM - OpenGL Mathematics (GLM)
yenten-arm-miner-yespowerr16 - ARM 64 CPU miner for Yespower variant algorithms
linmath.h - a lean linear math library, aimed at graphics programming. Supports vec3, vec4, mat4x4 and quaternions
KasmVNC - Modern VNC Server and client, web based and secure
raylib - A simple and easy-to-use library to enjoy videogames programming
simde - Implementations of SIMD instruction sets for systems which don't natively support them.
plutovg - Tiny 2D vector graphics library in C
Tow-Boot - An opinionated distribution of U-Boot. — https://matrix.to/#/#Tow-Boot:matrix.org?via=matrix.org
simd_utils - A header only library implementing common mathematical functions using SIMD intrinsics
libsamplerate - An audio Sample Rate Conversion library
Mathc - A simple and clean, glsl like, math (linear algebra) header only library for C.
aws-graviton-getting-started - Helping developers to use AWS Graviton2 and Graviton3 processors which power the 6th and 7th generation of Amazon EC2 instances (C6g[d], M6g[d], R6g[d], T4g, X2gd, C6gn, I4g, Im4gn, Is4gen, G5g, C7g[d][n], M7g[d], R7g[d]).