@lisyarus I also abstracts some of the more complex aspects like resource barriers which, while important to learn at some point, may be too much for a starter course.
@lisyarus I think I lack experience using WebGPU to give you a definitive answer, but I think that going with a more modern API is definitively the way to go.
Most of these APIs share a lot of common features and WebGPU is a higher level abstraction for learning as a student.
In that regard, I prefer NEON a lot. It has a few extensions but I don't need them as the ISA already has a ton of features.
Maybe ARM was able to design it a lot better thanks to insight from the x86 mess. Also they didn't need to make two manufacturers agree to common specs.
While I'm at it, I want to rant a bit about how bad the SIMD support is for x86_64 processors IMO. By default, only SSE2 is assumed to be supported, but then a lot of features actually require additionnal ISA support.
I've been doing some background work on my engine for the last few weeks. I added Github workflow support to make sure I push less breaking changes to the codebase. Testing both the build of the engine core, its modules, and the samples; then I run all available unit tests.
But maybe it doesn't, I'm not sure. And I don't like to be unsure about this sort of thing for code that is on the hot path; where performance is critical.
For instance you can arbitrarly shuffle vectors in SSE at a very low cost, while NEON only has a few specific shuffle-like functions, with hard-coded shuffle patterns. For esoteric shuffles, you often need to do a few additional steps in NEON.
I've been doing some background work on my engine for the last few weeks. I added Github workflow support to make sure I push less breaking changes to the codebase. Testing both the build of the engine core, its modules, and the samples; then I run all available unit tests.
That took a lot of work. Most SSE and NEON features have direct parallel, but not all. To avoid performance loss due to abstraction, you need specific paths for certain functions.
My erosion filter is out! Video, blog post, and shader source.
It emulates erosion without simulation, so it's fast, GPU friendly, and trivial to generate in chunks.
Explainer video:
https://t.co/4PbOmFNfDf
Companion blog post:
https://t.co/JkLbHHdMBC
#ProcGen#vfx#GameDev
As expected, something fishy was going on. Turn out only a part of the glyph MSDF bitmpas where packed into the file. With fixed version, a 64 font size MSDF bitmap compressed version of the file is 3.5MB, much more coherent. (uncompressed version is 8.9MB)
Well, at least I got it working well. And file sizes are pretty good:
Original .ttf: 277KB
Uncompressed(MSDF (64px font size) + outlines): 832KB (+200%)
Compressed(M+O): 391KB (+41%)
Compressed(M): 120KB (-57%)
Compressed(O): 236KB (-15%)
Well, at least I got it working well. And file sizes are pretty good:
Original .ttf: 277KB
Uncompressed(MSDF (64px font size) + outlines): 832KB (+200%)
Compressed(M+O): 391KB (+41%)
Compressed(M): 120KB (-57%)
Compressed(O): 236KB (-15%)
I'm actually very plesantly surprised by the file size reduction from the MSDF bitmap version. And it makes me nervous that there is some underlying bug...